aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiles Bader2007-04-24 21:56:25 +0000
committerMiles Bader2007-04-24 21:56:25 +0000
commit991a760232de757d71d8dbbed47ee12d81e29d53 (patch)
tree2440730c37ae3f167a50f5c3ac5eaeab9b72b7b0
parent0bb328f8f6fce06a7fc65670c7d5c011b613e1c5 (diff)
parent3851329262d6558d5e1a93157d44777d0a39e38e (diff)
downloademacs-991a760232de757d71d8dbbed47ee12d81e29d53.tar.gz
emacs-991a760232de757d71d8dbbed47ee12d81e29d53.zip
Merge from emacs--devo--0
Patches applied: * emacs--devo--0 (patch 698-710) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 216) - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-196
-rw-r--r--AUTHORS104
-rw-r--r--ChangeLog23
-rw-r--r--FTP236
-rw-r--r--INSTALL25
-rw-r--r--README2
-rw-r--r--admin/FOR-RELEASE19
-rw-r--r--admin/notes/copyright22
-rwxr-xr-xconfigure22
-rw-r--r--configure.in12
-rw-r--r--etc/COOKIES2
-rw-r--r--etc/ChangeLog28
-rw-r--r--etc/DEBUG4
-rw-r--r--etc/DEVEL.HUMOR6
-rw-r--r--etc/FTP8
-rw-r--r--etc/MACHINES12
-rw-r--r--etc/MORE.STUFF29
-rw-r--r--etc/NEWS1031
-rw-r--r--etc/ORDERS2
-rw-r--r--etc/PROBLEMS36
-rw-r--r--etc/SERVICE1376
-rw-r--r--etc/TODO28
-rw-r--r--etc/emacs.167
-rw-r--r--etc/images/icons/emacs_16.pngbin783 -> 705 bytes
-rw-r--r--etc/images/icons/emacs_24.pngbin1068 -> 988 bytes
-rw-r--r--etc/images/icons/emacs_32.pngbin2488 -> 2404 bytes
-rw-r--r--etc/images/icons/emacs_48.pngbin3526 -> 3431 bytes
-rw-r--r--lib-src/makefile.w32-in2
-rw-r--r--lisp/ChangeLog392
-rw-r--r--lisp/arc-mode.el55
-rw-r--r--lisp/button.el2
-rw-r--r--lisp/calc/README4
-rw-r--r--lisp/calc/calc-aent.el2
-rw-r--r--lisp/calc/calc-alg.el2
-rw-r--r--lisp/calc/calc-arith.el2
-rw-r--r--lisp/calc/calc-bin.el2
-rw-r--r--lisp/calc/calc-comb.el2
-rw-r--r--lisp/calc/calc-cplx.el2
-rw-r--r--lisp/calc/calc-embed.el2
-rw-r--r--lisp/calc/calc-ext.el2
-rw-r--r--lisp/calc/calc-fin.el2
-rw-r--r--lisp/calc/calc-forms.el2
-rw-r--r--lisp/calc/calc-frac.el2
-rw-r--r--lisp/calc/calc-funcs.el2
-rw-r--r--lisp/calc/calc-graph.el2
-rw-r--r--lisp/calc/calc-help.el2
-rw-r--r--lisp/calc/calc-incom.el2
-rw-r--r--lisp/calc/calc-keypd.el2
-rw-r--r--lisp/calc/calc-lang.el2
-rw-r--r--lisp/calc/calc-macs.el2
-rw-r--r--lisp/calc/calc-map.el2
-rw-r--r--lisp/calc/calc-math.el2
-rw-r--r--lisp/calc/calc-misc.el2
-rw-r--r--lisp/calc/calc-mode.el2
-rw-r--r--lisp/calc/calc-mtx.el2
-rw-r--r--lisp/calc/calc-poly.el2
-rw-r--r--lisp/calc/calc-prog.el2
-rw-r--r--lisp/calc/calc-rewr.el2
-rw-r--r--lisp/calc/calc-rules.el2
-rw-r--r--lisp/calc/calc-sel.el2
-rw-r--r--lisp/calc/calc-stat.el2
-rw-r--r--lisp/calc/calc-store.el2
-rw-r--r--lisp/calc/calc-stuff.el2
-rw-r--r--lisp/calc/calc-trail.el2
-rw-r--r--lisp/calc/calc-undo.el2
-rw-r--r--lisp/calc/calc-units.el2
-rw-r--r--lisp/calc/calc-vec.el2
-rw-r--r--lisp/calc/calc-yank.el2
-rw-r--r--lisp/calc/calc.el12
-rw-r--r--lisp/calc/calcalg2.el2
-rw-r--r--lisp/calc/calcalg3.el2
-rw-r--r--lisp/calc/calccomp.el2
-rw-r--r--lisp/calc/calcsel2.el2
-rw-r--r--lisp/calendar/appt.el8
-rw-r--r--lisp/calendar/cal-china.el6
-rw-r--r--lisp/calendar/cal-coptic.el6
-rw-r--r--lisp/calendar/cal-dst.el18
-rw-r--r--lisp/calendar/cal-french.el6
-rw-r--r--lisp/calendar/cal-hebrew.el6
-rw-r--r--lisp/calendar/cal-islam.el6
-rw-r--r--lisp/calendar/cal-iso.el6
-rw-r--r--lisp/calendar/cal-julian.el6
-rw-r--r--lisp/calendar/cal-mayan.el2
-rw-r--r--lisp/calendar/cal-menu.el6
-rw-r--r--lisp/calendar/cal-move.el6
-rw-r--r--lisp/calendar/cal-persia.el10
-rw-r--r--lisp/calendar/cal-x.el6
-rw-r--r--lisp/calendar/calendar.el6
-rw-r--r--lisp/calendar/diary-lib.el25
-rw-r--r--lisp/calendar/holidays.el6
-rw-r--r--lisp/calendar/lunar.el6
-rw-r--r--lisp/calendar/parse-time.el3
-rw-r--r--lisp/calendar/solar.el6
-rw-r--r--lisp/calendar/todo-mode.el22
-rw-r--r--lisp/complete.el32
-rw-r--r--lisp/cus-edit.el4
-rw-r--r--lisp/desktop.el94
-rw-r--r--lisp/dired-x.el13
-rw-r--r--lisp/dired.el56
-rw-r--r--lisp/dnd.el2
-rw-r--r--lisp/emacs-lisp/byte-opt.el48
-rw-r--r--lisp/emacs-lisp/bytecomp.el31
-rw-r--r--lisp/emacs-lisp/easy-mmode.el9
-rw-r--r--lisp/emacs-lisp/edebug.el46
-rw-r--r--lisp/files.el28
-rw-r--r--lisp/font-lock.el1
-rw-r--r--lisp/gnus/ChangeLog12
-rw-r--r--lisp/gnus/gnus-art.el69
-rw-r--r--lisp/gnus/mm-view.el10
-rw-r--r--lisp/hi-lock.el59
-rw-r--r--lisp/ido.el4
-rw-r--r--lisp/image-dired.el (renamed from lisp/tumme.el)1772
-rw-r--r--lisp/info.el22
-rw-r--r--lisp/international/mule.el6
-rw-r--r--lisp/ldefs-boot.el150
-rw-r--r--lisp/locate.el153
-rw-r--r--lisp/mail/footnote.el19
-rw-r--r--lisp/outline.el22
-rw-r--r--lisp/paren.el9
-rw-r--r--lisp/progmodes/cc-cmds.el28
-rw-r--r--lisp/progmodes/cc-mode.el5
-rw-r--r--lisp/progmodes/compile.el2
-rw-r--r--lisp/progmodes/cperl-mode.el1
-rw-r--r--lisp/progmodes/ebnf2ps.el4
-rw-r--r--lisp/progmodes/gud.el8
-rw-r--r--lisp/progmodes/idlw-shell.el23
-rw-r--r--lisp/progmodes/mantemp.el18
-rw-r--r--lisp/progmodes/perl-mode.el5
-rw-r--r--lisp/progmodes/python.el8
-rw-r--r--lisp/progmodes/vhdl-mode.el22
-rw-r--r--lisp/replace.el10
-rw-r--r--lisp/simple.el39
-rw-r--r--lisp/subr.el11
-rw-r--r--lisp/t-mouse.el2
-rw-r--r--lisp/term.el54
-rw-r--r--lisp/textmodes/bibtex.el62
-rw-r--r--lisp/textmodes/fill.el1
-rw-r--r--lisp/textmodes/flyspell.el2
-rw-r--r--lisp/thumbs.el2
-rw-r--r--lisp/tmm.el6
-rw-r--r--lisp/url/ChangeLog19
-rw-r--r--lisp/url/url-http.el52
-rw-r--r--lisp/url/url-parse.el36
-rw-r--r--lisp/url/url-vars.el6
-rw-r--r--lisp/wid-edit.el2
-rw-r--r--lispref/ChangeLog60
-rw-r--r--lispref/anti.texi9
-rw-r--r--lispref/display.texi11
-rw-r--r--lispref/elisp.texi15
-rw-r--r--lispref/files.texi14
-rw-r--r--lispref/frames.texi15
-rw-r--r--lispref/keymaps.texi21
-rw-r--r--lispref/lists.texi31
-rw-r--r--lispref/minibuf.texi2
-rw-r--r--lispref/nonascii.texi14
-rw-r--r--lispref/processes.texi7
-rw-r--r--lispref/searching.texi21
-rw-r--r--lispref/syntax.texi5
-rw-r--r--lispref/text.texi33
-rw-r--r--mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings4
-rw-r--r--mac/src/Emacs.r6
-rw-r--r--man/ChangeLog119
-rw-r--r--man/ack.texi4
-rw-r--r--man/ada-mode.texi9
-rw-r--r--man/anti.texi6
-rw-r--r--man/autotype.texi4
-rw-r--r--man/buffers.texi8
-rw-r--r--man/calc.texi970
-rw-r--r--man/calendar.texi11
-rw-r--r--man/cc-mode.texi11
-rw-r--r--man/cl.texi9
-rw-r--r--man/cmdargs.texi2
-rw-r--r--man/dired-x.texi59
-rw-r--r--man/dired.texi82
-rw-r--r--man/display.texi62
-rw-r--r--man/doclicense.texi2
-rw-r--r--man/ebrowse.texi14
-rw-r--r--man/ediff.texi14
-rw-r--r--man/emacs-mime.texi4
-rw-r--r--man/emacs.texi14
-rw-r--r--man/erc.texi18
-rw-r--r--man/eshell.texi5
-rw-r--r--man/eudc.texi9
-rw-r--r--man/faq.texi4
-rw-r--r--man/files.texi24
-rw-r--r--man/flymake.texi6
-rw-r--r--man/forms.texi9
-rw-r--r--man/frames.texi9
-rw-r--r--man/glossary.texi4
-rw-r--r--man/gnu.texi16
-rw-r--r--man/gnus.texi5
-rw-r--r--man/idlwave.texi9
-rw-r--r--man/killing.texi4
-rw-r--r--man/macos.texi7
-rw-r--r--man/message.texi4
-rw-r--r--man/misc.texi78
-rw-r--r--man/mule.texi3
-rw-r--r--man/newsticker.texi6
-rw-r--r--man/org.texi13
-rw-r--r--man/pcl-cvs.texi11
-rw-r--r--man/pgg.texi9
-rw-r--r--man/programs.texi14
-rw-r--r--man/rcirc.texi10
-rw-r--r--man/reftex.texi11
-rw-r--r--man/rmail.texi7
-rw-r--r--man/sc.texi15
-rw-r--r--man/search.texi9
-rw-r--r--man/sending.texi8
-rw-r--r--man/ses.texi7
-rw-r--r--man/sieve.texi6
-rw-r--r--man/smtpmail.texi5
-rw-r--r--man/speedbar.texi10
-rw-r--r--man/tramp.texi6
-rw-r--r--man/url.texi5
-rw-r--r--man/vip.texi7
-rw-r--r--man/viper.texi7
-rw-r--r--man/widget.texi9
-rw-r--r--man/woman.texi10
-rw-r--r--man/xresources.texi17
-rw-r--r--nt/emacs.rc8
-rw-r--r--src/ChangeLog83
-rw-r--r--src/abbrev.c2
-rw-r--r--src/alloc.c4
-rw-r--r--src/buffer.c9
-rw-r--r--src/dispnew.c35
-rw-r--r--src/keymap.c3
-rw-r--r--src/mac.c7
-rw-r--r--src/macterm.c212
-rw-r--r--src/minibuf.c10
-rw-r--r--src/process.c14
-rw-r--r--src/sysdep.c4
-rw-r--r--src/xdisp.c62
231 files changed, 4285 insertions, 5168 deletions
diff --git a/AUTHORS b/AUTHORS
index 27bfa50bd1c..f77b5e0ac8d 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -33,9 +33,9 @@ Alakazam Petrofsky: changed hanoi.el
33 33
34Alan Mackenzie: wrote cc-awk.el 34Alan Mackenzie: wrote cc-awk.el
35and changed cc-cmds.el cc-mode.el cc-engine.el cc-defs.el cc-vars.el 35and changed cc-cmds.el cc-mode.el cc-engine.el cc-defs.el cc-vars.el
36 cc-langs.el cc-mode.texi cc-styles.el cc-align.el lread.c cc-fonts.el 36 cc-langs.el cc-mode.texi cc-styles.el cc-align.el cc-fonts.el lread.c
37 programs.texi cc-subword.el isearch.el lisp.el search.texi subr.el 37 programs.texi cc-subword.el isearch.el lisp.el search.texi startup.el
38 text.texi buffers.texi cc-fix.el cc-mode-19.el and 17 other files 38 subr.el text.texi buffers.texi cc-fix.el and 18 other files
39 39
40Alan Shutko: changed diary-lib.el calendar.el bindings.el cal-hebrew.el 40Alan Shutko: changed diary-lib.el calendar.el bindings.el cal-hebrew.el
41 easy-mmode.el gnus-sum.el ibuf-ext.el ibuffer.el lunar.el macros.el 41 easy-mmode.el gnus-sum.el ibuf-ext.el ibuffer.el lunar.el macros.el
@@ -332,11 +332,11 @@ Charlie Martin: wrote autoinsert.el
332Cheng Gao: changed MORE.STUFF flymake.el tips.texi url-dired.el 332Cheng Gao: changed MORE.STUFF flymake.el tips.texi url-dired.el
333 url-file.el url-handlers.el url-http.el url-nfs.el 333 url-file.el url-handlers.el url-http.el url-nfs.el
334 334
335Chong Yidong: changed cus-edit.el simple.el custom.el files.el 335Chong Yidong: changed cus-edit.el simple.el files.el custom.el
336 display.texi longlines.el keyboard.c custom.texi info.el text.texi 336 display.texi longlines.el xdisp.c files.texi keyboard.c compile.el
337 compile.el files.texi image-mode.el mouse.el xdisp.c frames.texi 337 custom.texi info.el text.texi frames.texi image-mode.el mouse.el
338 startup.el wid-edit.el xterm.c cus-theme.el faces.el 338 misc.texi startup.el wid-edit.el xterm.c cus-theme.el
339 and 244 other files 339 and 296 other files
340 340
341Chris Hanson: changed xscheme.el scheme.el xterm.c hpux.h x11term.c 341Chris Hanson: changed xscheme.el scheme.el xterm.c hpux.h x11term.c
342 hp9000s300.h keyboard.c process.c texinfmt.el emacsclient.c sort.el 342 hp9000s300.h keyboard.c process.c texinfmt.el emacsclient.c sort.el
@@ -418,7 +418,7 @@ Dan Nicolaescu: wrote iris-ansi.el romanian.el
418and changed term.el xterm.el hideshow.el isearch.el icon.el lisp.h 418and changed term.el xterm.el hideshow.el isearch.el icon.el lisp.h
419 cus-edit.el faces.el font-lock.el grep.el sh-script.el eterm-color.ti 419 cus-edit.el faces.el font-lock.el grep.el sh-script.el eterm-color.ti
420 ibuffer.el rxvt.el vhdl-mode.el xterm.c bindings.el compile.el 420 ibuffer.el rxvt.el vhdl-mode.el xterm.c bindings.el compile.el
421 dabbrev.el imenu.el outline.el and 164 other files 421 dabbrev.el imenu.el outline.el and 166 other files
422 422
423Daniel Brockman: changed cus-start.el format-spec.el ibuffer.el rcirc.el 423Daniel Brockman: changed cus-start.el format-spec.el ibuffer.el rcirc.el
424 424
@@ -463,7 +463,7 @@ Dave Love: wrote autoarg.el autoconf.el benchmark.el cfengine.el
463and changed configure.in Makefile.in help.el fortran.el browse-url.el 463and changed configure.in Makefile.in help.el fortran.el browse-url.el
464 mule-cmds.el simple.el xterm.c cus-edit.el files.el info.el mule.el 464 mule-cmds.el simple.el xterm.c cus-edit.el files.el info.el mule.el
465 wid-edit.el fns.c vc.el rfc2047.el bindings.el cus-start.el buffer.c 465 wid-edit.el fns.c vc.el rfc2047.el bindings.el cus-start.el buffer.c
466 byte-opt.el bytecomp.el and 729 other files 466 byte-opt.el bytecomp.el and 727 other files
467 467
468Dave Pearson: wrote 5x5.el quickurl.el 468Dave Pearson: wrote 5x5.el quickurl.el
469 469
@@ -492,7 +492,7 @@ David Gillespie: wrote calc-aent.el calc-alg.el calc-arith.el calc-bin.el
492 cl.texinfo complete.el edmacro.el 492 cl.texinfo complete.el edmacro.el
493and changed info.el bytecomp.el 493and changed info.el bytecomp.el
494 494
495David Hansen: changed nnrss.el lisp.el pcomplete.el tempo.el 495David Hansen: changed nnrss.el cc-cmds.el lisp.el pcomplete.el tempo.el
496 496
497David Hedbor: changed gnus-art.el mm-decode.el mm-view.el gnus-agent.el 497David Hedbor: changed gnus-art.el mm-decode.el mm-view.el gnus-agent.el
498 gnus-cite.el gnus-cus.el gnus-eform.el gnus-group.el gnus-msg.el 498 gnus-cite.el gnus-cus.el gnus-eform.el gnus-group.el gnus-msg.el
@@ -522,8 +522,9 @@ David Lawrence: changed loaddefs.el comint.el simple.el files.el
522 522
523David M. Brown: wrote array.el 523David M. Brown: wrote array.el
524 524
525David M. Koppelman: wrote hi-lock.el 525David M. Koppelman: changed hi-lock.el display.texi
526and changed display.texi 526
527David M. Koppelman, Koppel@Ece.Lsu.Edu: wrote hi-lock.el
527 528
528David M. Smith: wrote ielm.el 529David M. Smith: wrote ielm.el
529and changed imenu.el 530and changed imenu.el
@@ -649,7 +650,7 @@ Eli Tziperman: wrote rmail-spam-filter.el
649Eli Zaretskii: wrote codepage.el rxvt.el tty-colors.el 650Eli Zaretskii: wrote codepage.el rxvt.el tty-colors.el
650and changed msdos.c Makefile.in makefile.w32-in files.el info.el fileio.c 651and changed msdos.c Makefile.in makefile.w32-in files.el info.el fileio.c
651 startup.el mainmake.v2 config.bat menu-bar.el pc-win.el rmail.el 652 startup.el mainmake.v2 config.bat menu-bar.el pc-win.el rmail.el
652 msdos.h simple.el internal.el xfaces.c emacs.c frame.c dosfns.c 653 simple.el msdos.h internal.el xfaces.c emacs.c frame.c dosfns.c
653 faces.el frame.el and 531 other files 654 faces.el frame.el and 531 other files
654 655
655Emanuele Giaquinta: changed rxvt.el configure.in etags.c frame.el 656Emanuele Giaquinta: changed rxvt.el configure.in etags.c frame.el
@@ -747,7 +748,7 @@ Francesco Potort,Al(B: wrote cmacexp.el
747and changed etags.c man.el delta.h undigest.el etags.1 comint.el 748and changed etags.c man.el delta.h undigest.el etags.1 comint.el
748 configure.in uniquify.el latin-post.el rmail.el Makefile.in etags.el 749 configure.in uniquify.el latin-post.el rmail.el Makefile.in etags.el
749 latin-alt.el maintaining.texi sgml-mode.el data.c european.el 750 latin-alt.el maintaining.texi sgml-mode.el data.c european.el
750 filelock.c files.el generic-x.el gud.el and 42 other files 751 filelock.c files.el generic-x.el gud.el and 43 other files
751 752
752Francis J. Wright: wrote woman.el 753Francis J. Wright: wrote woman.el
753and changed dired.el comint.el files.el 754and changed dired.el comint.el files.el
@@ -851,9 +852,9 @@ Giuseppe Scrivano: changed buffer.c configure.in sysdep.c xsmfns.c
851 852
852Glenn Morris: changed f90.el diary-lib.el calendar.el fortran.el 853Glenn Morris: changed f90.el diary-lib.el calendar.el fortran.el
853 calendar.texi appt.el sh-script.el Makefile.in timeclock.el cal-menu.el 854 calendar.texi appt.el sh-script.el Makefile.in timeclock.el cal-menu.el
854 startup.el abbrevs.texi cal-hebrew.el cal-islam.el complete.el 855 files.el complete.el configure.in startup.el MACHINES abbrevs.texi
855 emacs.texi files.el fr-refcard.tex holidays.el orgcard.tex os.texi 856 cal-hebrew.el cal-islam.el emacs.texi fr-refcard.tex holidays.el
856 and 120 other files 857 and 145 other files
857 858
858Glynn Clements: wrote gamegrid.el snake.el tetris.el 859Glynn Clements: wrote gamegrid.el snake.el tetris.el
859 860
@@ -878,7 +879,8 @@ Gregory Chernov: changed nnslashdot.el
878 879
879Gregory Neil Shapiro: changed mailabbrev.el 880Gregory Neil Shapiro: changed mailabbrev.el
880 881
881Guanpeng Xu: changed add-log.el TUTORIAL.cn mouse.el type-break.el 882Guanpeng Xu: changed add-log.el TUTORIAL.cn display.texi mouse.el
883 type-break.el
882 884
883Guillermo J. Rozas: wrote fakemail.c 885Guillermo J. Rozas: wrote fakemail.c
884 886
@@ -1175,8 +1177,8 @@ Joev Dubach: changed nntp.el
1175Johan Bockg,Ae(Brd: changed erc.el erc-backend.el cl-macs.el erc-match.el 1177Johan Bockg,Ae(Brd: changed erc.el erc-backend.el cl-macs.el erc-match.el
1176 erc-nickserv.el erc-ring.el erc-speak.el erc-track.el simple.el 1178 erc-nickserv.el erc-ring.el erc-speak.el erc-track.el simple.el
1177 align.el bytecomp.el calendar.el cl.texi custom.el dired-aux.el 1179 align.el bytecomp.el calendar.el cl.texi custom.el dired-aux.el
1178 display.texi erc-bbdb.el erc-button.el erc-compat.el erc-dcc.el 1180 dired-x.el display.texi erc-bbdb.el erc-button.el erc-compat.el
1179 erc-list.el and 14 other files 1181 erc-dcc.el and 16 other files
1180 1182
1181Johan Vromans: wrote forms-d2.el forms.el iso-acc.el 1183Johan Vromans: wrote forms-d2.el forms.el iso-acc.el
1182and changed complete.el 1184and changed complete.el
@@ -1326,11 +1328,11 @@ Kailash C. Chowksey: changed HELLO Makefile.in ind-util.el kannada.el
1326 1328
1327Kanematsu Daiji: changed nnimap.el 1329Kanematsu Daiji: changed nnimap.el
1328 1330
1329Karl Berry: changed info.texi emacs.texi elisp.texi emacs-xtra.texi 1331Karl Berry: changed info.texi emacs.texi elisp.texi anti.texi
1330 filelock.c anti.texi building.texi cmdargs.texi copyright.el 1332 display.texi emacs-xtra.texi filelock.c gnu.texi mule.texi text.texi
1331 custom.texi customize.texi dired.c display.texi faq.texi frames.texi 1333 building.texi cmdargs.texi copyright.el custom.texi customize.texi
1332 gnu.texi help.texi lists.texi loading.texi macos.texi minibuf.texi 1334 dired.c faq.texi frames.texi help.texi lists.texi loading.texi
1333 and 70 other files 1335 and 71 other files
1334 1336
1335Karl Chen: changed files.el align.el cc-vars.el gnus-art.el help-mode.el 1337Karl Chen: changed files.el align.el cc-vars.el gnus-art.el help-mode.el
1336 jka-cmpr-hook.el make-mode.el perl-mode.el python.el tex-mode.el 1338 jka-cmpr-hook.el make-mode.el perl-mode.el python.el tex-mode.el
@@ -1360,9 +1362,9 @@ Katsuhiro Hermit Endo: changed gnus-group.el gnus-spec.el
1360 1362
1361Katsumi Yamaoka: wrote canlock.el 1363Katsumi Yamaoka: wrote canlock.el
1362and changed gnus-art.el message.el gnus-sum.el gnus.texi mm-decode.el 1364and changed gnus-art.el message.el gnus-sum.el gnus.texi mm-decode.el
1363 mm-view.el gnus-util.el mm-util.el gnus-msg.el gnus.el lpath.el 1365 mm-view.el gnus-util.el gnus-msg.el mm-util.el gnus.el lpath.el
1364 gnus-group.el gnus-start.el rfc2047.el dgnushack.el mm-uu.el nntp.el 1366 gnus-group.el gnus-start.el rfc2047.el dgnushack.el mm-uu.el nntp.el
1365 gnus-agent.el mml.el nnrss.el message.texi and 73 other files 1367 gnus-agent.el mml.el nnrss.el message.texi and 72 other files
1366 1368
1367Kaveh R. Ghazi: changed delta88k.h xterm.c 1369Kaveh R. Ghazi: changed delta88k.h xterm.c
1368 1370
@@ -1438,18 +1440,17 @@ Kevin Rodgers: changed compile.el mailabbrev.el dired-x.el files.el
1438 and 5 other files 1440 and 5 other files
1439 1441
1440Kevin Ryde: wrote info-xref.el 1442Kevin Ryde: wrote info-xref.el
1441and changed info-look.el info.el cl.texi gnus-art.el gnus-sum.el 1443and changed info-look.el info.el arc-mode.el cl.texi gnus-art.el
1442 mailcap.el os.texi text.texi MORE.STUFF cal-dst.el calendar.texi 1444 gnus-sum.el mailcap.el mule.el os.texi text.texi MORE.STUFF cal-dst.el
1443 cc-align.el cmdargs.texi compile.texi display.texi em-alias.el 1445 calendar.texi cc-align.el cmdargs.texi compile.texi display.texi
1444 em-dirs.el em-hist.el em-unix.el emacs-lisp-intro.texi etags.c 1446 em-alias.el em-dirs.el em-hist.el em-unix.el and 19 other files
1445 and 18 other files
1446 1447
1447Kim F. Storm: wrote bindat.el cua-base.el cua-gmrk.el cua-rect.el ido.el 1448Kim F. Storm: wrote bindat.el cua-base.el cua-gmrk.el cua-rect.el ido.el
1448 keypad.el kmacro.el 1449 keypad.el kmacro.el
1449and changed xdisp.c dispextern.h process.c simple.el window.c keyboard.c 1450and changed xdisp.c dispextern.h process.c simple.el window.c keyboard.c
1450 xterm.c subr.el w32term.c dispnew.c lisp.h fringe.c macterm.c 1451 xterm.c subr.el w32term.c dispnew.c lisp.h fringe.c macterm.c
1451 display.texi fns.c alloc.c xfaces.c keymap.c xfns.c xterm.h .gdbinit 1452 display.texi fns.c alloc.c xfaces.c keymap.c xfns.c xterm.h .gdbinit
1452 and 254 other files 1453 and 255 other files
1453 1454
1454Kim-Minh Kaplan: changed gnus-picon.el gnus-sum.el gnus-start.el 1455Kim-Minh Kaplan: changed gnus-picon.el gnus-sum.el gnus-start.el
1455 gnus-win.el gnus-xmas.el gnus.texi message.el nndraft.el nnml.el 1456 gnus-win.el gnus-xmas.el gnus.texi message.el nndraft.el nnml.el
@@ -1549,6 +1550,8 @@ Lennart Staflin: changed dired.el diary-ins.el diary-lib.el tq.el xdisp.c
1549Leonard H. Tower Jr.: changed rnews.el rnewspost.el emacsbug.el 1550Leonard H. Tower Jr.: changed rnews.el rnewspost.el emacsbug.el
1550 rmailout.el 1551 rmailout.el
1551 1552
1553Levin Du: changed parse-time.el
1554
1552Liam Healy: changed outline.el 1555Liam Healy: changed outline.el
1553 1556
1554Lloyd Zusman: changed mml.el pgg-gpg.el 1557Lloyd Zusman: changed mml.el pgg-gpg.el
@@ -1671,8 +1674,9 @@ and changed cus-edit.el Makefile.in files.el compile.el rmail.el
1671 mule-cmds.el rmailout.el checkdoc.el configure.in custom.el emacsbug.el 1674 mule-cmds.el rmailout.el checkdoc.el configure.in custom.el emacsbug.el
1672 gnus.el help-fns.el ls-lisp.el mwheel.el and 122 other files 1675 gnus.el help-fns.el ls-lisp.el mwheel.el and 122 other files
1673 1676
1674Markus Triska: changed doctor.el expand.el flymake.el flymake.texi 1677Markus Triska: changed byte-opt.el bytecomp.el doctor.el expand.el
1675 handwrite.el internals.texi speedbar.el subr.el tumme.el widget.texi 1678 flymake.el flymake.texi handwrite.el internals.texi speedbar.el subr.el
1679 tumme.el widget.texi
1676 1680
1677Marshall T. Vandegrift: changed gnus-fun.el 1681Marshall T. Vandegrift: changed gnus-fun.el
1678 1682
@@ -1691,11 +1695,11 @@ Martin Lorentzon: changed vc.el vc-cvs.el vc-hooks.el vc-rcs.el
1691 1695
1692Martin Neitzel: changed sc.el 1696Martin Neitzel: changed sc.el
1693 1697
1694Martin Rudalics: changed cus-edit.el wid-edit.el files.el flyspell.el 1698Martin Rudalics: changed cus-edit.el wid-edit.el cus-start.el files.el
1695 font-lock.el complete.el cus-start.el insdel.c macmenu.c syntax.c 1699 flyspell.el font-lock.el complete.el insdel.c macmenu.c syntax.c
1696 w32menu.c wdired.el whitespace.el window.el xdisp.c xmenu.c 1700 w32menu.c wdired.el whitespace.el window.el xdisp.c xmenu.c
1697 backups.texi buffer.c buffer.h casefiddle.c cperl-mode.el 1701 backups.texi buffer.c buffer.h casefiddle.c cc-mode.el
1698 and 31 other files 1702 and 36 other files
1699 1703
1700Martin Stjernholm: wrote cc-bytecomp.el 1704Martin Stjernholm: wrote cc-bytecomp.el
1701and changed cc-engine.el cc-cmds.el cc-langs.el cc-defs.el cc-mode.el 1705and changed cc-engine.el cc-cmds.el cc-langs.el cc-defs.el cc-mode.el
@@ -1723,7 +1727,7 @@ Masayuki Ataka: changed texinfmt.el texinfo.el characters.el cmuscheme.el
1723 1727
1724Masayuki Fujii: changed dnd.el w32-win.el 1728Masayuki Fujii: changed dnd.el w32-win.el
1725 1729
1726Mathias Dahl: wrote tumme.el 1730Mathias Dahl: wrote image-dired.el
1727and changed dired.el dired.texi 1731and changed dired.el dired.texi
1728 1732
1729Mathias Megyei: changed Makefile.in 1733Mathias Megyei: changed Makefile.in
@@ -1927,9 +1931,9 @@ Niall Mansfield: changed etags.c
1927 1931
1928Nick Roberts: wrote gdb-ui.el 1932Nick Roberts: wrote gdb-ui.el
1929and changed gud.el building.texi tooltip.el speedbar.el bindings.el 1933and changed gud.el building.texi tooltip.el speedbar.el bindings.el
1930 thumbs.el xt-mouse.el .gdbinit DEBUG cc-mode.el frames.texi subr.el 1934 thumbs.el xt-mouse.el .gdbinit DEBUG cc-mode.el t-mouse.el frames.texi
1931 t-mouse.el comint.el display.texi help-mode.el compile.el descr-text.el 1935 subr.el comint.el display.texi help-mode.el compile.el descr-text.el
1932 dired.el gud-display.pbm speedbar.texi and 115 other files 1936 dired.el gud-display.pbm speedbar.texi and 116 other files
1933 1937
1934Nico Francois: changed w32fns.c w32inevt.c w32menu.c 1938Nico Francois: changed w32fns.c w32inevt.c w32menu.c
1935 1939
@@ -1999,6 +2003,8 @@ Pascal Dupuis: changed octave-inf.el
1999 2003
2000Pascal Rigaux: changed rfc2231.el 2004Pascal Rigaux: changed rfc2231.el
2001 2005
2006Paul Curry: changed cc-subword.el
2007
2002Paul D. Smith: wrote snmp-mode.el 2008Paul D. Smith: wrote snmp-mode.el
2003and changed imenu.el make-mode.el 2009and changed imenu.el make-mode.el
2004 2010
@@ -2169,7 +2175,7 @@ and changed gnus-art.el gnus.texi message.el gnus-sum.el gnus.el
2169 gnus-group.el gnus-faq.texi gnus-util.el mml.el gnus-score.el 2175 gnus-group.el gnus-faq.texi gnus-util.el mml.el gnus-score.el
2170 gnus-start.el message.texi mm-util.el gnus-agent.el gnus-msg.el spam.el 2176 gnus-start.el message.texi mm-util.el gnus-agent.el gnus-msg.el spam.el
2171 files.el spam-report.el mm-decode.el nnmail.el nnweb.el 2177 files.el spam-report.el mm-decode.el nnmail.el nnweb.el
2172 and 167 other files 2178 and 166 other files
2173 2179
2174Remek Trzaska: changed gnus-ems.el 2180Remek Trzaska: changed gnus-ems.el
2175 2181
@@ -2531,8 +2537,8 @@ Theodore Jump: changed w32-win.el w32faces.c
2531Thien-Thi Nguyen: wrote hideshow.el make-mms-derivative.el 2537Thien-Thi Nguyen: wrote hideshow.el make-mms-derivative.el
2532and changed ewoc.el info.el processes.texi zone.el Makefile.in vc.el 2538and changed ewoc.el info.el processes.texi zone.el Makefile.in vc.el
2533 fileio.c lisp-mode.el scheme.el text.texi TUTORIAL.it bindat.el 2539 fileio.c lisp-mode.el scheme.el text.texi TUTORIAL.it bindat.el
2534 dcl-mode.el display.texi files.el gnus.texi pcvs.el sysdep.c vc-rcs.el 2540 dcl-mode.el display.texi files.el gnus.texi pcvs.el startup.el sysdep.c
2535 MORE.STUFF TUTORIAL.ja and 129 other files 2541 vc-rcs.el MORE.STUFF and 129 other files
2536 2542
2537Thierry Emery: changed kinsoku.el timezone.el url-http.el wid-edit.el 2543Thierry Emery: changed kinsoku.el timezone.el url-http.el wid-edit.el
2538 2544
@@ -2725,8 +2731,8 @@ Yagi Tatsuya: changed gnus-art.el gnus-start.el
2725 2731
2726Yamamoto Mitsuharu: changed macterm.c macfns.c mac-win.el mac.c macterm.h 2732Yamamoto Mitsuharu: changed macterm.c macfns.c mac-win.el mac.c macterm.h
2727 macmenu.c macgui.h image.c macselect.c keyboard.c xdisp.c makefile.MPW 2733 macmenu.c macgui.h image.c macselect.c keyboard.c xdisp.c makefile.MPW
2728 config.h emacs.c Makefile.in macos.texi xfaces.c INSTALL darwin.h 2734 config.h emacs.c Makefile.in macos.texi darwin.h xfaces.c INSTALL
2729 dispnew.c configure.in and 76 other files 2735 dispnew.c alloc.c and 77 other files
2730 2736
2731Yann Dirson: changed imenu.el 2737Yann Dirson: changed imenu.el
2732 2738
diff --git a/ChangeLog b/ChangeLog
index e6eed08e9db..058e3a0ad38 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
12007-04-24 Juanma Barranquero <lekktu@gmail.com>
2
3 * INSTALL (DETAILED BUILDING AND INSTALLATION): Fix typo.
4
52007-04-19 Glenn Morris <rgm@gnu.org>
6
7 * configure.in: Signal error if Xaw libs are missing in a Lucid
8 build.
9
102007-04-18 Glenn Morris <rgm@gnu.org>
11
12 * INSTALL: Mention CPP.
13
142007-04-15 Glenn Morris <rgm@gnu.org>
15
16 * FTP: Replace with a pointer to the web version.
17
182007-04-13 Glenn Morris <rgm@gnu.org>
19
20 * INSTALL: In lib-src, timer, wakeup, yow are removed.
21
12007-04-04 Glenn Morris <rgm@gnu.org> 222007-04-04 Glenn Morris <rgm@gnu.org>
2 23
3 * configure.in (NON_GNU_CPP): Use associated preprocessor when 24 * configure.in (NON_GNU_CPP): Use associated preprocessor when
@@ -8,7 +29,7 @@
8 * configure.in: Restore support for hp800 (removed 2007-01-27) 29 * configure.in: Restore support for hp800 (removed 2007-01-27)
9 following clarification of legal status. 30 following clarification of legal status.
10 31
112007-03-22 Joe Buehler <jbuehler@spirentcom.com> (tiny change) 322007-03-22 Joe Buehler <jbuehler@spirentcom.com> (tiny change)
12 33
13 * configure.in: Add support for AIX4.3 on IBM RS6000. 34 * configure.in: Add support for AIX4.3 on IBM RS6000.
14 35
diff --git a/FTP b/FTP
index 14a3ada7bd0..0337d464c30 100644
--- a/FTP
+++ b/FTP
@@ -1,234 +1,6 @@
1 -*- text -*- 1For information about how to obtain GNU Emacs and other GNU software
2How to get GNU Software by Internet FTP or by UUCP. Last updated 1999-01-20 2by FTP, please see <http://www.gnu.org/order/ftp.html>.
3 3
4* Please send improvements to this file to gnu@gnu.org. 4Information about Emacs is also available at
5<http://www.gnu.org/software/emacs/>.
5 6
6* No Warranties
7
8We distribute software in the hope that it will be useful, but without
9any warranty. No author or distributor of this software accepts
10responsibility to anyone for the consequences of using it or for
11whether it serves any particular purpose or works at all, unless he
12says so in writing. This is exactly the same warranty that the proprietary
13software companies offer: None. If the distribution is incomplete or the
14media fails, you can always download a replacement from any of the GNU
15mirrors, free of charge.
16
17* Updates
18
19You can always find the most recent version of this list of GNU FTP sites at
20 http://www.gnu.org/order/ftp.html
21
22* How to FTP
23
24Use the ftp program on your system (ask locally if you can't find it)
25to connect to the host you are ftping from. Unless indicated
26otherwise, login in as user "anonymous", with password: "your e-mail
27address" and set "binary" mode (to transfer all eight bits in each
28byte).
29
30ALWAYS USE BINARY/IMAGE MODE TO TRANSFER THESE FILES!
31Text mode does not work for tar files or compressed files.
32
33* GNU Software and How To FTP It
34
35GNU software is available on ftp.gnu.org under the directory /gnu.
36diff files to convert between versions exist for some of these
37programs. Some programs have misc support files as well. Have a look
38on ftp.gnu.org to see which ones. In most cases, the tar or diff
39files are compressed with the `gzip' program; this is indicated with
40the .gz suffix. Binaries for gzip can be downloaded from
41http://www.gzip.org.
42
43Descriptions of GNU software are available at
44 http://www.gnu.org/software/software.html
45 and in the Free Software Directory at
46 http://www.gnu.org/directory/index.html
47
48* Alternative Internet FTP Sources
49
50The canonical GNU ftp site is located at ftp.gnu.org/gnu.
51You should probably use one of the many mirrors of that site - the
52mirrors will be less busy, and you can find one closer to your site.
53
54* GNU FTP Site Mirror List
55
56United States:
57
58
59California - mirrors.kernel.org/gnu, http://mirrors.kernel.org/gnu
60California - gatekeeper.dec.com/pub/GNU/
61California - ftp.keystealth.org/pub/gnu/
62Illinois - uiarchive.cso.uiuc.edu/pub/ftp/ftp.gnu.org/gnu/
63Indiana - ftp.in-span.net/pub/mirrors/ftp.gnu.org/
64Kentucky - gnu.ms.uky.edu/pub/mirrors/gnu/
65Maryland - ftp.digex.net/pub/gnu/
66Massachusetts - aeneas.mit.edu/pub/gnu/
67Michigan - ftp.egr.msu.edu/pub/gnu/, http://ftp.egr.msu.edu/pub/gnu/
68Michigan - ftp.wayne.edu/gnu_mirror/
69Missouri - wuarchive.wustl.edu/systems/gnu/
70New Jersey - gnu.teleglobe.net/ftp.gnu.org/
71New York - ftp.cs.columbia.edu/archives/gnu/prep/
72New York - ftp.ece.cornell.edu/pub/mirrors/gnu/
73North Carolina - http://www.ibiblio.org/pub/gnu/
74Ohio - ftp.cis.ohio-state.edu/mirror/gnu/
75Pennsylvania - boron.club.cc.cmu.edu/gnu/
76Tennessee - sunsite.utk.edu/pub/gnu/ftp/, thales.memphis.edu/pub/gnu/
77Washington - ftp.nodomainname.net/pub/mirrors/gnu/, gnu.wwc.edu/
78Wisconsin - ftp.twtelecom.net/pub/GNU/
79
80Africa:
81
82South Africa - ftp.sun.ac.za/mirrorsites/ftp.gnu.org/pub/gnu
83
84The Americas:
85
86Brazil - ftp.unicamp.br/pub/gnu/
87Brazil - master.softaplic.com.br/pub/gnu/
88Brazil - ftp.matrix.com.br/pub/gnu/
89Canada - ftp.cs.ubc.ca/mirror2/gnu/
90Chile - ftp.inf.utfsm.cl/pub/gnu/
91Costa Rica - sunsite.ulatina.ac.cr/Mirrors/GNU/
92Mexico - www.gnu.unam.mx/pub/gnu/software/
93Mexico - gnu.cem.itesm.mx/pub/mirrors/gnu.org/
94Mexico - ftp.azc.uam.mx/mirrors/gnu/
95
96Australia:
97
98Australia - mirror.aarnet.edu.au/pub/gnu/
99Australia - gnu.mirror.pacific.net.au/gnu/
100
101Asia:
102
103China - ftp.sea9.com/pub/gnu/
104China - ftp.cs.cuhk.edu.hk/pub/gnu/gnu/
105China - sunsite.ust.hk/pub/gnu/
106China - ftp.shellhung.org/pub/gnu/
107India - ftp.kernel.org.in/gnu.org/
108India - http://kernel.org.in/mirrors/gnu.org/
109India - www.imtech.res.in/mirror/gnuftp/
110Indonesia - sapi.vlsm.org/gnu
111Indonesia - http://sapi.vlsm.org/gnu/
112Israel - ftp.cs.huji.ac.il/mirror/GNU
113Japan - tron.um.u-tokyo.ac.jp/pub/GNU/prep/
114Japan - core.ring.gr.jp/pub/GNU/
115Japan - ftp.ring.gr.jp/pub/GNU/
116Japan - mirrors.hbi.co.jp/gnu/
117Japan - ftp.ayamura.org/pub/gnu/
118Korea - cair-archive.kaist.ac.kr/pub/gnu/ (Internet address 143.248.186.3)
119Korea - ftpmirror.hanyang.ac.kr/GNU/
120Korea - ftp.linux.sarang.net/mirror/gnu/gnu/ (also mirrors alpha.gnu.org/gnu/ at ../alpha/)
121Korea - ftp.xgate.co.kr/pub/mirror/gnu/
122Saudi Arabia - ftp.isu.net.sa/pub/gnu/
123Taiwan - ftp.nctu.edu.tw/UNIX/gnu/, coda.nctu.edu.tw/UNIX/gnu/
124Taiwan - ftp1.sinica.edu.tw/pub3/GNU/gnu/
125Thailand - ftp.nectec.or.th/pub/mirrors/gnu/
126
127Europe:
128
129Austria - ftp.gnu.vbs.at/
130Austria - ftp.univie.ac.at/packages/gnu/
131Austria - gd.tuwien.ac.at/gnu/gnusrc/
132Austria - http://gd.tuwien.ac.at/gnu/gnusrc/
133Czech Republic - ftp.fi.muni.cz/pub/gnu/
134Denmark - ftp.denet.dk/mirror/ftp.gnu.org/pub/gnu
135Denmark - ftp.dkuug.dk/pub/gnu/
136Denmark - sunsite.dk/mirrors/gnu, http://mirrors.sunsite.dk/gnu
137Finland - ftp.funet.fi/pub/gnu/prep/
138France - ftp.irisa.fr/pub/gnu/
139France - ftp.medasys-digital-systems.fr/pub/gnu/
140France - ftp.cs.univ-paris8.fr/mirrors/ftp.gnu.org/
141Germany - ftp.cs.tu-berlin.de/pub/gnu/
142Germany - ftp.fh-worms.de/pub/mirror/ftp.gnu.org/
143Germany - ftp.leo.org/pub/comp/os/unix/gnu/
144Germany - ftp.informatik.rwth-aachen.de/pub/gnu/
145Germany - ftp.de.uu.net/pub/gnu/
146Germany - ftp.freenet.de/pub/ftp.gnu.org/gnu/
147Germany - ftp.cs.uni-bonn.de/pub/gnu/
148Germany - ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/
149Germany - http://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/
150Germany - ftp.stw-bonn.de/pub/mirror/ftp.gnu.org/
151Greece - ftp.forthnet.gr/pub/gnu/
152Greece - ftp.ntua.gr/pub/gnu/
153Greece - ftp.duth.gr/pub/gnu/
154Greece - ftp.physics.auth.gr/pub/gnu/
155Ireland - ftp.esat.net/pub/gnu/ (Internet address 193.120.14.241)
156Italy - ftp.oasi.gpa.it/pub/gnu/
157Italy - ftp.lugroma2.org/pub/gnu/
158Netherlands - ftp.nluug.nl/pub/gnu/
159Netherlands - ftp.mirror.nl/pub/mirror/gnu/
160Netherlands - ftp.nl.uu.net/pub/gnu/
161Netherlands - mirror.widexs.nl/pub/gnu/
162Norway - ftp.gnu.no/
163Poland - sunsite.icm.edu.pl/pub/gnu/
164Portugal - ftp.ist.utl.pt/pub/GNU/gnu/
165Romania - ftp.timisoara.roedu.net/mirrors/ftp.gnu.org/pub/gnu
166Russia - ftp.chg.ru/pub/gnu/
167Slovenia - ftp.arnes.si/software/gnu/
168Spain - ftp.etsimo.uniovi.es/pub/gnu/
169Spain - ftp.rediris.es/pub/gnu/
170Sweden - ftp.isy.liu.se/pub/gnu/
171Sweden - ftp.stacken.kth.se/pub/gnu/
172Sweden - ftp.sunet.se/pub/gnu/; also mirrors /non-gnu
173Sweden - ftp.chl.chalmers.se/pub/gnu/
174Switzerland - sunsite.cnlab-switch.ch/mirror/gnu/
175Ukraine - mirddin.farlep.net/pub/GNU/
176United Kingdom - ftp.mcc.ac.uk/pub/gnu/
177United Kingdom - ftp.mirror.ac.uk/sites/ftp.gnu.org/pub/gnu/
178United Kingdom - ftp.warwick.ac.uk/pub/gnu/ (Internet address 137.205.192.13)
179United Kingdom - ftp.hands.com/ftp.gnu.org/
180United Kingdom - gnu.teleglobe.net/ftp.gnu.org/
181
182* How to FTP GNU Emacs
183
184Emacs is in the directory /gnu/emacs on ftp.gnu.org. The emacs
185distribution itself has a filename in the form emacs-M.N.tar.gz, where
186M and N stand for the version numbers; the Emacs Lisp Reference Manual
187is in a separate file, named elisp-manual-NN.tar.gz.
188
189* Scheme and How to FTP It
190
191The latest distribution version of C Scheme is available via anonymous FTP
192from swiss-ftp.ai.mit.edu in /pub/scheme-X.X/ (where X.X is some version
193number).
194
195Read the files INSTALL and README in the top level C Scheme directory.
196
197* TeX and How to Obtain It
198
199We don't distribute TeX now, but it is free software.
200
201TeX is a document formatter that is used, among other things, by the FSF
202for all its documentation. You will need it if you want to make printed
203manuals.
204
205TeX is freely redistributable. You can get it by ftp, tape, or CD/ROM.
206
207** For FTP instructions, retrieve the file
208ftp.cs.umb.edu/pub/tex/unixtex.ftp. (We don't include it here because it
209changes relatively frequently. Sorry.)
210
211** A minimal TeX collection (enough to process Texinfo files, anyway)
212is included on the GNU source CD-ROM. See the file ORDERS in this
213directory for more information.
214
215* GNU Software for VMS
216
217 - http://www.lp.se/gnu-vms/- lots of GNU ports to VMS,
218including Emacs 19, GCC, Bison, Make, RCS.
219
220* If You Like The Software
221
222If you like the software developed and distributed by the Free
223Software Foundation, please express your satisfaction with a donation.
224Your donations will help to support the Foundation and make our future
225efforts successful. The Foundation continues to improve GNU programs
226and encourage the writing of new free software to enhance GNU/Linux
227and GNU/Hurd systems. For more information on GNU and the Foundation,
228see our web site at http://www.gnu.org.
229
230Ordering a GNU Source Code CD-ROM or Source Code CD-ROM Subscription
231is a good way for your organization to help support our work. You can
232also purchase printed manuals, reference cards, t-shirts, and other
233items. See our online ordering form at http://order.fsf.org for
234details.
diff --git a/INSTALL b/INSTALL
index 5b4c2bef015..82b3f46cb7f 100644
--- a/INSTALL
+++ b/INSTALL
@@ -192,7 +192,7 @@ default; they just include the files that you need to run Emacs, but
192not those you need to compile it. For example, to compile Emacs with 192not those you need to compile it. For example, to compile Emacs with
193X11 support, you may need to install the special `X11 development' 193X11 support, you may need to install the special `X11 development'
194package. For example, in April 2003, the package names to install 194package. For example, in April 2003, the package names to install
195were `XFree86-devel' and `Xaw3d-devel' on RedHat. On Debian, the 195were `XFree86-devel' and `Xaw3d-devel' on Red Hat. On Debian, the
196packages necessary to build the installed version should be 196packages necessary to build the installed version should be
197sufficient; they can be installed using `apt-get build-dep emacs21' in 197sufficient; they can be installed using `apt-get build-dep emacs21' in
198Debian 3 and above. 198Debian 3 and above.
@@ -353,7 +353,7 @@ tests in FILE instead of `config.cache'. Set FILE to `/dev/null' to
353disable caching, for debugging `configure'. 353disable caching, for debugging `configure'.
354 354
355If the description of the system configuration printed by `configure' 355If the description of the system configuration printed by `configure'
356is not right, or if it claims some of the fatures or libraries are not 356is not right, or if it claims some of the features or libraries are not
357available when you know they are, look at the `config.log' file for 357available when you know they are, look at the `config.log' file for
358the trace of the failed tests performed by `configure' to check 358the trace of the failed tests performed by `configure' to check
359whether these features are supported. Typically, some test fails 359whether these features are supported. Typically, some test fails
@@ -364,11 +364,12 @@ Some tests might fail because the compiler should look in special
364directories for some header files, or link against optional 364directories for some header files, or link against optional
365libraries, or use special compilation options. You can force 365libraries, or use special compilation options. You can force
366`configure' and the build process which follows it to do that by 366`configure' and the build process which follows it to do that by
367setting the variables CPPFLAGS, CFLAGS, LDFLAGS, LIBS, and CC before 367setting the variables CPPFLAGS, CFLAGS, LDFLAGS, LIBS, CPP and CC
368running `configure'. CPPFLAGS lists the options passed to the 368before running `configure'. CPP is the command which invokes the
369preprocessor, CFLAGS are compilation options, LDFLAGS are options used 369preprocessor, CPPFLAGS lists the options passed to it, CFLAGS are
370when linking, LIBS are libraries to link against, and CC is the 370compilation options, LDFLAGS are options used when linking, LIBS are
371command which invokes the compiler. 371libraries to link against, and CC is the command which invokes the
372compiler.
372 373
373Here's an example of a `configure' invocation, assuming a Bourne-like 374Here's an example of a `configure' invocation, assuming a Bourne-like
374shell such as Bash, which uses these variables: 375shell such as Bash, which uses these variables:
@@ -385,7 +386,7 @@ libraries in addition to the standard ones.
385 386
386For some libraries, like Gtk+, fontconfig and ALSA, `configure' use 387For some libraries, like Gtk+, fontconfig and ALSA, `configure' use
387pkg-config to find where those libraries are installed. 388pkg-config to find where those libraries are installed.
388If you wan't pkg-config to look in special directories, you have to set 389If you want pkg-config to look in special directories, you have to set
389the environment variable PKG_CONFIG_PATH to point to the directories 390the environment variable PKG_CONFIG_PATH to point to the directories
390where the .pc-files for those libraries are. 391where the .pc-files for those libraries are.
391For example: 392For example:
@@ -703,8 +704,8 @@ the following steps.
703the paths to the values specified in `./Makefile'. 704the paths to the values specified in `./Makefile'.
704 705
7052) Go to directory `./lib-src' and run `make'. This creates 7062) Go to directory `./lib-src' and run `make'. This creates
706executables named `ctags' and `etags' and `wakeup' and `make-docfile' 707executables named `ctags' and `etags' and `make-docfile' and
707and `digest-doc' and `test-distrib'. And others. 708`digest-doc' and `test-distrib'. And others.
708 709
7093) Go to directory `./src' and Run `make'. This refers to files in 7103) Go to directory `./src' and Run `make'. This refers to files in
710the `./lisp' and `./lib-src' subdirectories using names `../lisp' and 711the `./lisp' and `./lib-src' subdirectories using names `../lisp' and
@@ -732,8 +733,8 @@ in `./lib-src' to their final destinations, as selected in `./src/paths.h'.
732 733
733Strictly speaking, not all of the executables in `./lib-src' need be copied. 734Strictly speaking, not all of the executables in `./lib-src' need be copied.
734- The programs `cvtmail', `fakemail', `hexl', 735- The programs `cvtmail', `fakemail', `hexl',
735 `movemail', `profile', `rcs2log', `timer', `vcdiff', `wakeup', 736 `movemail', `profile', `rcs2log', and `vcdiff' are used by Emacs;
736 and `yow' are used by Emacs; they do need to be copied. 737 they do need to be copied.
737- The programs `etags', `ctags', `emacsclient', `b2m', and `rcs-checkin' 738- The programs `etags', `ctags', `emacsclient', `b2m', and `rcs-checkin'
738 are intended to be run by users; they are handled below. 739 are intended to be run by users; they are handled below.
739- The programs `make-docfile' and `test-distrib' were 740- The programs `make-docfile' and `test-distrib' were
diff --git a/README b/README
index 3a2cd1b6d90..32e5b7bd924 100644
--- a/README
+++ b/README
@@ -3,7 +3,7 @@ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
3See the end of the file for license conditions. 3See the end of the file for license conditions.
4 4
5 5
6This directory tree holds version 22.0.97 of GNU Emacs, the extensible, 6This directory tree holds version 22.0.98 of GNU Emacs, the extensible,
7customizable, self-documenting real-time display editor. 7customizable, self-documenting real-time display editor.
8 8
9The file INSTALL in this directory says how to build and install GNU 9The file INSTALL in this directory says how to build and install GNU
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index b03b1e8aea1..90ca44fbc5b 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -5,8 +5,6 @@ Tasks needed before the next release.
5** Check for widow and orphan lines in manuals; 5** Check for widow and orphan lines in manuals;
6make sure all the pages really look ok in the manual as formatted. 6make sure all the pages really look ok in the manual as formatted.
7 7
8** Cleanup temporary +++/--- lines in etc/NEWS.
9
10** Regenerate the postscript files of the reference cards in etc. 8** Regenerate the postscript files of the reference cards in etc.
11 9
12** Ask maintainers of refcard translations to update them. 10** Ask maintainers of refcard translations to update them.
@@ -24,9 +22,6 @@ sk Miroslav Vaško No response
24 22
25Reminders sent out on 2006-06-08. 23Reminders sent out on 2006-06-08.
26 24
27** Send an email to the various distributions, including the GNOME
28and KDE projects, to use the new Emacs icons in etc/images/icons.
29
30* WINDOWS SUPPORT BUGS. 25* WINDOWS SUPPORT BUGS.
31 26
32These don't need to be fixed before a release, but we call the 27These don't need to be fixed before a release, but we call the
@@ -41,9 +36,19 @@ to the hack introduced on 2005-07-01 to fix some other Cleartype problem.
41 36
42* BUGS 37* BUGS
43 38
44** spurious scrolling bug 39** python.el legal problem?
40http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-04/msg00459.html
41
42** rcyeske@gmail.com, April 22: Failure to build on OpenBSD macppc.
43OpenBSD compilation works on i386.
44
45** bojohan+news@dd.chalmers.se, April 23: delete-overlay causes recentering
46(This is now the same as the spurious scrolling bug.)
47
48** finish fixing locate.el
45 49
46** crash in gc_sweep 50** angeli@caeruleus.net, April 23: Excessive refontification when setting
51 jit-lock-context-unfontify-pos
47 52
48* DOCUMENTATION 53* DOCUMENTATION
49 54
diff --git a/admin/notes/copyright b/admin/notes/copyright
index 9fddd4f63b9..d7f12bd8ad4 100644
--- a/admin/notes/copyright
+++ b/admin/notes/copyright
@@ -306,6 +306,13 @@ originally. Although we have the legal right to switch to v2 or later,
306rms prefers that we do not do so. 306rms prefers that we do not do so.
307 307
308 308
309man/*.texi - All manuals should be under GFDL, and should include a
310copy of it, so that they can be distributed separately. faq.texi has
311a different license, for some reason no-one can remember.
312http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00583.html
313http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00618.html
314
315
309msdos/is_exec.c, sigaction.c - these files are copyright DJ Delorie. 316msdos/is_exec.c, sigaction.c - these files are copyright DJ Delorie.
310Leave the copyrights alone. Leave the Eli Zaretskii copyright in 317Leave the copyrights alone. Leave the Eli Zaretskii copyright in
311is_exec.c alone. See the msdos/README file for the legal history of 318is_exec.c alone. See the msdos/README file for the legal history of
@@ -404,6 +411,17 @@ src/unexhp9k800.c (and dependent src/m/sr2k.h)
404 HP. So this file is public domain. 411 HP. So this file is public domain.
405 412
406 413
414K Rodgers changes
415 It was pointed out that K Rodgers only had assigments for VC and
416 ps-print, but had changed several other files. We tried to contact
417 him for a general assignment, but he proved uncommunicative (despite
418 initially indicating to rms he would sign an assignment). As a result, his
419 changes were removed and/or rewritten independently. For details, see
420 threads:
421http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00225.html
422http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00257.html
423
424
407** Issues that are "fixed" for the release of Emacs 22, but we may 425** Issues that are "fixed" for the release of Emacs 22, but we may
408 wish to revisit later in more detail 426 wish to revisit later in more detail
409 427
@@ -545,8 +563,8 @@ noted in this file.
545 563
546REMOVED etc/gnu.xpm, nt/icons/emacs21.ico, nt/icons/sink.ico 564REMOVED etc/gnu.xpm, nt/icons/emacs21.ico, nt/icons/sink.ico
547 - Restore if find legal info. emacs21.ico is not due to Davenport. 565 - Restore if find legal info. emacs21.ico is not due to Davenport.
548 Voelker could not immediately recall anything, but will check and 566 Geoff Voelker checked but could not find a record of where it came
549 let us know if he finds anything. 567 from.
550 568
551 569
552etc/images 570etc/images
diff --git a/configure b/configure
index 684c35936e1..173d1cdceff 100755
--- a/configure
+++ b/configure
@@ -3026,6 +3026,8 @@ _ACEOF
3026 ;; 3026 ;;
3027 *-sunos5* | *-solaris* ) 3027 *-sunos5* | *-solaris* )
3028 opsys=sol2-6 3028 opsys=sol2-6
3029## FIXME: make this into a proper fix that checks the compiler type,
3030## rather than relying on path. Or is /usr/ccs/lib/cpp a bad default now?
3029 if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then 3031 if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then
3030 ## -Xs prevents spurious whitespace. 3032 ## -Xs prevents spurious whitespace.
3031 NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs" 3033 NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs"
@@ -11723,7 +11725,7 @@ _ACEOF
11723 fi 11725 fi
11724fi 11726fi
11725 11727
11726if test x"${USE_X_TOOLKIT}" = xmaybe; then 11728if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
11727 if test x"${HAVE_X11R5}" = xyes; then 11729 if test x"${HAVE_X11R5}" = xyes; then
11728 { echo "$as_me:$LINENO: checking X11 version 5 with Xaw" >&5 11730 { echo "$as_me:$LINENO: checking X11 version 5 with Xaw" >&5
11729echo $ECHO_N "checking X11 version 5 with Xaw... $ECHO_C" >&6; } 11731echo $ECHO_N "checking X11 version 5 with Xaw... $ECHO_C" >&6; }
@@ -11782,9 +11784,15 @@ fi
11782echo "${ECHO_T}5 or newer, with Xaw; use toolkit by default" >&6; } 11784echo "${ECHO_T}5 or newer, with Xaw; use toolkit by default" >&6; }
11783 USE_X_TOOLKIT=LUCID 11785 USE_X_TOOLKIT=LUCID
11784 else 11786 else
11785 { echo "$as_me:$LINENO: result: before 5 or no Xaw; do not use toolkit by default" >&5 11787 if test x"${USE_X_TOOLKIT}" = xLUCID; then
11788 { { echo "$as_me:$LINENO: error: Lucid toolkit requires X11/Xaw include files" >&5
11789echo "$as_me: error: Lucid toolkit requires X11/Xaw include files" >&2;}
11790 { (exit 1); exit 1; }; }
11791 else
11792 { echo "$as_me:$LINENO: result: before 5 or no Xaw; do not use toolkit by default" >&5
11786echo "${ECHO_T}before 5 or no Xaw; do not use toolkit by default" >&6; } 11793echo "${ECHO_T}before 5 or no Xaw; do not use toolkit by default" >&6; }
11787 USE_X_TOOLKIT=none 11794 USE_X_TOOLKIT=none
11795 fi
11788 fi 11796 fi
11789 else 11797 else
11790 USE_X_TOOLKIT=none 11798 USE_X_TOOLKIT=none
@@ -12924,13 +12932,13 @@ echo "${ECHO_T}yes" >&6; }
12924 12932
12925 { echo "$as_me:$LINENO: checking FREETYPE_CFLAGS" >&5 12933 { echo "$as_me:$LINENO: checking FREETYPE_CFLAGS" >&5
12926echo $ECHO_N "checking FREETYPE_CFLAGS... $ECHO_C" >&6; } 12934echo $ECHO_N "checking FREETYPE_CFLAGS... $ECHO_C" >&6; }
12927 FREETYPE_CFLAGS=`$PKG_CONFIG --cflags "freetype2"` 12935 FREETYPE_CFLAGS=`$PKG_CONFIG --cflags "freetype2"|sed -e 's,///*,/,g'`
12928 { echo "$as_me:$LINENO: result: $FREETYPE_CFLAGS" >&5 12936 { echo "$as_me:$LINENO: result: $FREETYPE_CFLAGS" >&5
12929echo "${ECHO_T}$FREETYPE_CFLAGS" >&6; } 12937echo "${ECHO_T}$FREETYPE_CFLAGS" >&6; }
12930 12938
12931 { echo "$as_me:$LINENO: checking FREETYPE_LIBS" >&5 12939 { echo "$as_me:$LINENO: checking FREETYPE_LIBS" >&5
12932echo $ECHO_N "checking FREETYPE_LIBS... $ECHO_C" >&6; } 12940echo $ECHO_N "checking FREETYPE_LIBS... $ECHO_C" >&6; }
12933 FREETYPE_LIBS=`$PKG_CONFIG --libs "freetype2"` 12941 FREETYPE_LIBS=`$PKG_CONFIG --libs "freetype2"|sed -e 's,///*,/,g'`
12934 { echo "$as_me:$LINENO: result: $FREETYPE_LIBS" >&5 12942 { echo "$as_me:$LINENO: result: $FREETYPE_LIBS" >&5
12935echo "${ECHO_T}$FREETYPE_LIBS" >&6; } 12943echo "${ECHO_T}$FREETYPE_LIBS" >&6; }
12936 else 12944 else
@@ -13021,13 +13029,13 @@ echo "${ECHO_T}yes" >&6; }
13021 13029
13022 { echo "$as_me:$LINENO: checking FONTCONFIG_CFLAGS" >&5 13030 { echo "$as_me:$LINENO: checking FONTCONFIG_CFLAGS" >&5
13023echo $ECHO_N "checking FONTCONFIG_CFLAGS... $ECHO_C" >&6; } 13031echo $ECHO_N "checking FONTCONFIG_CFLAGS... $ECHO_C" >&6; }
13024 FONTCONFIG_CFLAGS=`$PKG_CONFIG --cflags "fontconfig"` 13032 FONTCONFIG_CFLAGS=`$PKG_CONFIG --cflags "fontconfig"|sed -e 's,///*,/,g'`
13025 { echo "$as_me:$LINENO: result: $FONTCONFIG_CFLAGS" >&5 13033 { echo "$as_me:$LINENO: result: $FONTCONFIG_CFLAGS" >&5
13026echo "${ECHO_T}$FONTCONFIG_CFLAGS" >&6; } 13034echo "${ECHO_T}$FONTCONFIG_CFLAGS" >&6; }
13027 13035
13028 { echo "$as_me:$LINENO: checking FONTCONFIG_LIBS" >&5 13036 { echo "$as_me:$LINENO: checking FONTCONFIG_LIBS" >&5
13029echo $ECHO_N "checking FONTCONFIG_LIBS... $ECHO_C" >&6; } 13037echo $ECHO_N "checking FONTCONFIG_LIBS... $ECHO_C" >&6; }
13030 FONTCONFIG_LIBS=`$PKG_CONFIG --libs "fontconfig"` 13038 FONTCONFIG_LIBS=`$PKG_CONFIG --libs "fontconfig"|sed -e 's,///*,/,g'`
13031 { echo "$as_me:$LINENO: result: $FONTCONFIG_LIBS" >&5 13039 { echo "$as_me:$LINENO: result: $FONTCONFIG_LIBS" >&5
13032echo "${ECHO_T}$FONTCONFIG_LIBS" >&6; } 13040echo "${ECHO_T}$FONTCONFIG_LIBS" >&6; }
13033 else 13041 else
diff --git a/configure.in b/configure.in
index b536d8dc105..46d574171e0 100644
--- a/configure.in
+++ b/configure.in
@@ -1039,6 +1039,8 @@ dnl see the `changequote' comment above.
1039 ;; 1039 ;;
1040 *-sunos5* | *-solaris* ) 1040 *-sunos5* | *-solaris* )
1041 opsys=sol2-6 1041 opsys=sol2-6
1042## FIXME: make this into a proper fix that checks the compiler type,
1043## rather than relying on path. Or is /usr/ccs/lib/cpp a bad default now?
1042 if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then 1044 if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then
1043 ## -Xs prevents spurious whitespace. 1045 ## -Xs prevents spurious whitespace.
1044 NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs" 1046 NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs"
@@ -2182,7 +2184,7 @@ fi
2182 2184
2183dnl Do not put whitespace before the #include statements below. 2185dnl Do not put whitespace before the #include statements below.
2184dnl Older compilers (eg sunos4 cc) choke on it. 2186dnl Older compilers (eg sunos4 cc) choke on it.
2185if test x"${USE_X_TOOLKIT}" = xmaybe; then 2187if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
2186 if test x"${HAVE_X11R5}" = xyes; then 2188 if test x"${HAVE_X11R5}" = xyes; then
2187 AC_MSG_CHECKING(X11 version 5 with Xaw) 2189 AC_MSG_CHECKING(X11 version 5 with Xaw)
2188 AC_CACHE_VAL(emacs_cv_x11_version_5_with_xaw, 2190 AC_CACHE_VAL(emacs_cv_x11_version_5_with_xaw,
@@ -2196,8 +2198,12 @@ if test x"${USE_X_TOOLKIT}" = xmaybe; then
2196 AC_MSG_RESULT([5 or newer, with Xaw; use toolkit by default]) 2198 AC_MSG_RESULT([5 or newer, with Xaw; use toolkit by default])
2197 USE_X_TOOLKIT=LUCID 2199 USE_X_TOOLKIT=LUCID
2198 else 2200 else
2199 AC_MSG_RESULT(before 5 or no Xaw; do not use toolkit by default) 2201 if test x"${USE_X_TOOLKIT}" = xLUCID; then
2200 USE_X_TOOLKIT=none 2202 AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files])
2203 else
2204 AC_MSG_RESULT(before 5 or no Xaw; do not use toolkit by default)
2205 USE_X_TOOLKIT=none
2206 fi
2201 fi 2207 fi
2202 else 2208 else
2203 USE_X_TOOLKIT=none 2209 USE_X_TOOLKIT=none
diff --git a/etc/COOKIES b/etc/COOKIES
index fa8894795f0..1d8c0955d42 100644
--- a/etc/COOKIES
+++ b/etc/COOKIES
@@ -26,7 +26,7 @@ Cream together: 2 cups butter
26Add: 4 eggs 26Add: 4 eggs
27 2 tsp. vanilla 27 2 tsp. vanilla
28 28
29Mis together in 29Mix together in
30separate bowl: 4 cups flour 30separate bowl: 4 cups flour
31 5 cups oatmeal (put small 31 5 cups oatmeal (put small
32 amounts of oatmeal in blender until it turns to 32 amounts of oatmeal in blender until it turns to
diff --git a/etc/ChangeLog b/etc/ChangeLog
index a93960ea9ef..cbe51839529 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,31 @@
12007-04-22 Glenn Morris <rgm@gnu.org>
2
3 * NEWS: Change to EMACS env-var was reverted, so delete this entry.
4
52007-04-19 Glenn Morris <rgm@gnu.org>
6
7 * PROBLEMS: Expand a little on Emacs not knowing fqdn.
8
92007-04-17 David Kastrup <dak@gnu.org>
10
11 * NEWS: Mention `query-replace-regexp-eval' being deprecated.
12
132007-04-15 Glenn Morris <rgm@gnu.org>
14
15 * FTP: Make it a duplicate of ../FTP.
16
172007-04-14 Glenn Morris <rgm@gnu.org>
18
19 * SERVICE: Replace with a pointer to the web version.
20
21 * emacs.1: Update some of the more obsolete information.
22
232007-04-13 Glenn Morris <rgm@gnu.org>
24
25 * MACHINES: emacserver is removed.
26
27 * MORE.STUFF: Update some links, remove some dead ones.
28
12007-04-04 Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se> 292007-04-04 Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se>
2 30
3 * emacs.py (format_exception): New function. 31 * emacs.py (format_exception): New function.
diff --git a/etc/DEBUG b/etc/DEBUG
index 97e1f015a05..ea4e14866ca 100644
--- a/etc/DEBUG
+++ b/etc/DEBUG
@@ -567,7 +567,7 @@ are involved in the crash.
567 567
568Once you discover the corrupted Lisp object or data structure, grep 568Once you discover the corrupted Lisp object or data structure, grep
569the sources for its uses and try to figure out what could cause the 569the sources for its uses and try to figure out what could cause the
570corruption. If looking at the sources doesn;t help, you could try 570corruption. If looking at the sources doesn't help, you could try
571setting a watchpoint on the corrupted data, and see what code modifies 571setting a watchpoint on the corrupted data, and see what code modifies
572it in some invalid way. (Obviously, this technique is only useful for 572it in some invalid way. (Obviously, this technique is only useful for
573data that is modified only very rarely.) 573data that is modified only very rarely.)
@@ -731,7 +731,7 @@ prints the backtrace for a crash. It is usually best to look at the
731disassembly to determine exactly what code is being run--the 731disassembly to determine exactly what code is being run--the
732disassembly will probably show several source lines followed by a 732disassembly will probably show several source lines followed by a
733block of assembler for those lines. The actual point where Emacs 733block of assembler for those lines. The actual point where Emacs
734crashes will be one of those source lines, but not neccesarily the one 734crashes will be one of those source lines, but not necessarily the one
735that the debugger reports. 735that the debugger reports.
736 736
737Another problematic area with the MS debugger is with variables that 737Another problematic area with the MS debugger is with variables that
diff --git a/etc/DEVEL.HUMOR b/etc/DEVEL.HUMOR
index 5a291c458bd..10353c6517a 100644
--- a/etc/DEVEL.HUMOR
+++ b/etc/DEVEL.HUMOR
@@ -178,3 +178,9 @@ still out about that end of time thing."
178constants with anything like the universality of e and pi." 178constants with anything like the universality of e and pi."
179 "42" 179 "42"
180 -- Alan Mackenzie and David Hansen 180 -- Alan Mackenzie and David Hansen
181
182----------------------------------------------------------------------
183
184 "[...] So please do not delete anything."
185 "Done."
186 -- RMS and David Kastrup
diff --git a/etc/FTP b/etc/FTP
index 45048af4160..0337d464c30 100644
--- a/etc/FTP
+++ b/etc/FTP
@@ -1,2 +1,6 @@
1Please refer to <http://www.gnu.org/software/emacs/> for information 1For information about how to obtain GNU Emacs and other GNU software
2about obtaining Emacs. 2by FTP, please see <http://www.gnu.org/order/ftp.html>.
3
4Information about Emacs is also available at
5<http://www.gnu.org/software/emacs/>.
6
diff --git a/etc/MACHINES b/etc/MACHINES
index 09abc4f0770..83723fccbbc 100644
--- a/etc/MACHINES
+++ b/etc/MACHINES
@@ -126,7 +126,7 @@ Apple PowerPC Macintosh running GNU/Linux
126 Emacs distribution, and remove the "#if 0" and "#endif" directives 126 Emacs distribution, and remove the "#if 0" and "#endif" directives
127 which surround the following block near the end of the file: 127 which surround the following block near the end of the file:
128 128
129 #if 0 /* This breaks things on PPC GNU/Linux ecept for Yellowdog, 129 #if 0 /* This breaks things on PPC GNU/Linux except for Yellowdog,
130 even with identical GCC, as, ld. Let's take it out until we 130 even with identical GCC, as, ld. Let's take it out until we
131 know what's really going on here. */ 131 know what's really going on here. */
132 /* GCC 2.95 and newer on GNU/Linux PPC changed the load address to 132 /* GCC 2.95 and newer on GNU/Linux PPC changed the load address to
@@ -156,9 +156,8 @@ Apollo running X Windows (m68k-apollo-bsd)
156 installations may have to edit src/Makefile manually after it is created. 156 installations may have to edit src/Makefile manually after it is created.
157 There are too many versions of both cc and X to automate this easily. 157 There are too many versions of both cc and X to automate this easily.
158 158
159 In `lib-src/Makefile', emacsclient and emacsserver compile and work fine 159 In `lib-src/Makefile', emacsclient compiles and works fine under CC 6.9.
160 under CC 6.9. They now probably work under other versions of the compiler, 160 It now probably works under other versions of the compiler, as well.
161 as well.
162 161
163 The Apollo Domain CC compiler will issue quite a few warning messages, 162 The Apollo Domain CC compiler will issue quite a few warning messages,
164 mostly complaining about incompatible pointers. In general, these are 163 mostly complaining about incompatible pointers. In general, these are
@@ -1395,7 +1394,7 @@ System V rel 3 (usg5.3)
1395 cannot be made to work. Whether or not the GNU relocating malloc is 1394 cannot be made to work. Whether or not the GNU relocating malloc is
1396 used, the symptom is that the first call Emacs makes to sbrk(0) returns 1395 used, the symptom is that the first call Emacs makes to sbrk(0) returns
1397 (char *)-1. Sorry, you're stuck with character-only mode. Try 1396 (char *)-1. Sorry, you're stuck with character-only mode. Try
1398 installing Xfree86 to fix this. 1397 installing XFree86 to fix this.
1399 1398
1400System V rel 4.0.3 and 4.0.4 (usg5.4) 1399System V rel 4.0.3 and 4.0.4 (usg5.4)
1401 1400
@@ -1499,11 +1498,10 @@ Xenix (xenix)
1499 to make the Emacs meta key work. 1498 to make the Emacs meta key work.
1500 1499
1501Local variables: 1500Local variables:
1502mode: indented-text 1501mode: text
1503fill-prefix: " " 1502fill-prefix: " "
1504End: 1503End:
1505 1504
1506
1507This file is part of GNU Emacs. 1505This file is part of GNU Emacs.
1508 1506
1509GNU Emacs is free software; you can redistribute it and/or modify 1507GNU Emacs is free software; you can redistribute it and/or modify
diff --git a/etc/MORE.STUFF b/etc/MORE.STUFF
index 80ef61ec5bf..8d05d1c4d2c 100644
--- a/etc/MORE.STUFF
+++ b/etc/MORE.STUFF
@@ -47,9 +47,6 @@ You might find bug-fixes or enhancements in these places.
47 47
48 * Battery and Info Look: <URL:http://www-cdf.fnal.gov/~sthrlnd/emacs/> 48 * Battery and Info Look: <URL:http://www-cdf.fnal.gov/~sthrlnd/emacs/>
49 49
50 * BibTeX:
51 <URL:http://www.ida.ing.tu-bs.de/people/dirk/bibtex/index.html>
52
53 * BS: <URL:http://www.geekware.de/software/emacs/index.html> 50 * BS: <URL:http://www.geekware.de/software/emacs/index.html>
54 51
55 * Calculator: <URL:http://www.barzilay.org/misc/calculator.el> 52 * Calculator: <URL:http://www.barzilay.org/misc/calculator.el>
@@ -85,26 +82,24 @@ You might find bug-fixes or enhancements in these places.
85 82
86 * MH-E: <URL:http://mh-e.sourceforge.net/> 83 * MH-E: <URL:http://mh-e.sourceforge.net/>
87 84
88 * PC Selection: <URL:ftp://ftp.thp.uni-duisburg.de/pub/source/elisp/>
89
90 * PS mode: <URL:http://odur.let.rug.nl/%7Ekleiweg/postscript/> 85 * PS mode: <URL:http://odur.let.rug.nl/%7Ekleiweg/postscript/>
91 86
92 * PS-print: <URL:http://www.cpqd.com.br/~vinicius/emacs/> 87 * PS-print: <URL:http://www.emacswiki.org/cgi-bin/wiki/PsPrintPackage>
93 88
94 * QuickURL: <URL:http://www.davep.org/emacs/> 89 * QuickURL: <URL:http://www.davep.org/emacs/>
95 90
96 * RefTeX: <URL:http://staff.science.uva.nl/~dominik/Tools/reftex/> 91 * RefTeX: <URL:http://www.gnu.org/software/auctex/reftex.html>
97 92
98 * Speedbar, Checkdoc etc: <URL:http://cedet.sourceforge.net/> 93 * Speedbar, Checkdoc etc: <URL:http://cedet.sourceforge.net/>
99 94
100 * SQL: <URL:http://www.geocities.com/TimesSquare/6120/emacs.html> 95 * SQL: <URL:http://www.emacswiki.org/cgi-bin/wiki/sql.el>
101 96
102 * Tramp: Remote file access via rsh/ssh 97 * Tramp: Remote file access via rsh/ssh
103 <URL:http://savannah.gnu.org/projects/tramp/> 98 <URL:http://savannah.gnu.org/projects/tramp/>
104 99
105 * Webjump: <URL:http://www.neilvandyke.org/webjump> 100 * Webjump: <URL:http://www.neilvandyke.org/webjump>
106 101
107 * Whitespace: <URL:http://www.dsmit.com/lisp/> 102 * Whitespace: <URL:http://www.dsmit.com/lisp/whitespace.el>
108 103
109* Auxiliary files 104* Auxiliary files
110 105
@@ -147,7 +142,7 @@ Several are for Debian GNU/Linux in particular.
147 mirrors of the `CTAN' TeX archives. 142 mirrors of the `CTAN' TeX archives.
148 143
149 * Dismal: spreadsheet: 144 * Dismal: spreadsheet:
150 <URL:http://www.gnu.org/software/dismal/dismal.html> 145 <URL:http://ritter.ist.psu.edu/dismal/dismal.html>
151 146
152 * ECB: Emacs Code Browser: <URL:http://ecb.sourceforge.net/> 147 * ECB: Emacs Code Browser: <URL:http://ecb.sourceforge.net/>
153 148
@@ -177,8 +172,7 @@ Several are for Debian GNU/Linux in particular.
177 <URL:http://emacspeak.sourceforge.net/> 172 <URL:http://emacspeak.sourceforge.net/>
178 173
179 * Emacs-w3m : <URL:http://emacs-w3m.namazu.org/> 174 * Emacs-w3m : <URL:http://emacs-w3m.namazu.org/>
180 A simple Emacs interface to w3m, which is a text-mode 175 A simple Emacs interface to w3m, which is a text-mode WWW browser
181 WWW browser
182 176
183 * Emacs Wiki Mode: <URL:http://www.mwolson.org/projects/EmacsWiki.html> 177 * Emacs Wiki Mode: <URL:http://www.mwolson.org/projects/EmacsWiki.html>
184 A wiki-like publishing tool and personal information manager 178 A wiki-like publishing tool and personal information manager
@@ -198,7 +192,7 @@ Several are for Debian GNU/Linux in particular.
198 HTML-specific editing. Can work with PSGML. 192 HTML-specific editing. Can work with PSGML.
199 193
200 * Hyperbole: 194 * Hyperbole:
201 <URL:http://ftp.gnu.org/pub/gnu/hyperbole/> 195 <URL:http://directory.fsf.org/hyperbole.html>
202 Hyperbole is an open, efficient, programmable information 196 Hyperbole is an open, efficient, programmable information
203 management and hypertext system. 197 management and hypertext system.
204 198
@@ -222,11 +216,11 @@ Several are for Debian GNU/Linux in particular.
222 nXML mode is an addon for GNU Emacs, which makes GNU Emacs into a 216 nXML mode is an addon for GNU Emacs, which makes GNU Emacs into a
223 powerful XML editor. 217 powerful XML editor.
224 218
225 * Planner Mode: <URL:http://www.plannerlove.com/> 219 * Planner Mode: <URL:http://wjsullivan.net/PlannerMode>
226 Planner is an organizer and day planner for Emacs. 220 Planner is an organizer and day planner for Emacs.
227 221
228 * Preview LaTeX: embed preview LaTeX images in source buffer. 222 * Preview LaTeX: embed preview LaTeX images in source buffer.
229 <URL:http://preview-latex.sourceforge.net/> 223 <URL:http://www.gnu.org/software/auctex/preview-latex>
230 224
231 * PSGML: <URL:http://www.lysator.liu.se/projects/about_psgml.html> 225 * PSGML: <URL:http://www.lysator.liu.se/projects/about_psgml.html>
232 DTD-aware serious SGML/XML editing. 226 DTD-aware serious SGML/XML editing.
@@ -253,7 +247,7 @@ Several are for Debian GNU/Linux in particular.
253 247
254 * Tiny Tools: <URL:http://tiny-tools.sourceforge.net/> 248 * Tiny Tools: <URL:http://tiny-tools.sourceforge.net/>
255 249
256 * VM (View Mail): <URL:http://www.wonderworks.com/vm/> Alternative 250 * VM (View Mail): <URL:http://www.nongnu.org/viewmail/> Alternative
257 mail reader. There is a VM newsgroup: <URL:news:gnu.emacs.vm.info> 251 mail reader. There is a VM newsgroup: <URL:news:gnu.emacs.vm.info>
258 252
259 * W3: <URL:http://savannah.gnu.org/projects/w3/> 253 * W3: <URL:http://savannah.gnu.org/projects/w3/>
@@ -269,8 +263,7 @@ Several are for Debian GNU/Linux in particular.
269 shell-script daemon and some LaTeX macros. 263 shell-script daemon and some LaTeX macros.
270 264
271 * X-Symbol: <URL:http://x-symbol.sourceforge.net/> 265 * X-Symbol: <URL:http://x-symbol.sourceforge.net/>
272 Quasi-WYSIWYG editing of TeX & al. (It will be improved to take 266 Quasi-WYSIWYG editing of TeX & al.
273 better advantage of Emacs 21 features.)
274 267
275Local Variables: 268Local Variables:
276mode: text 269mode: text
diff --git a/etc/NEWS b/etc/NEWS
index 33be2c7a3fa..5731dfbf5f3 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1,4 +1,4 @@
1GNU Emacs NEWS -- history of user-visible changes. 2006-06-04 1GNU Emacs NEWS -- history of user-visible changes.
2 2
3Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 3Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
4 Free Software Foundation, Inc. 4 Free Software Foundation, Inc.
@@ -110,7 +110,7 @@ any older versions of these packages to ensure that the Emacs 22
110version is used. You can use M-x list-load-path-shadows to find such 110version is used. You can use M-x list-load-path-shadows to find such
111older packages. 111older packages.
112 112
113Some specific packages which are known to cause problems are: 113Some specific packages that are known to cause problems are:
114 114
115** Semantic (used by CEDET, ECB, JDEE): upgrade to latest version. 115** Semantic (used by CEDET, ECB, JDEE): upgrade to latest version.
116** cua.el, cua-mode.el: remove old versions. 116** cua.el, cua-mode.el: remove old versions.
@@ -118,7 +118,10 @@ Some specific packages which are known to cause problems are:
118 118
119* Installation Changes in Emacs 22.1 119* Installation Changes in Emacs 22.1
120 120
121--- 121** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
122when you run configure. This requires Gtk+ 2.4 or newer. This port
123provides a way to display multilingual text in menus (with some caveats).
124
122** Emacs comes with a new set of icons. 125** Emacs comes with a new set of icons.
123These icons are displayed on the taskbar and/or titlebar when Emacs 126These icons are displayed on the taskbar and/or titlebar when Emacs
124runs in a graphical environment. Source files for these icons can be 127runs in a graphical environment. Source files for these icons can be
@@ -127,152 +130,117 @@ Emacs by changing these files directly. On X, the icon is compiled
127into the Emacs executable; see gnu.h in the source tree. On MS 130into the Emacs executable; see gnu.h in the source tree. On MS
128Windows, see nt/icons/emacs.ico.) 131Windows, see nt/icons/emacs.ico.)
129 132
130---
131** Emacs now supports new configure options `--program-prefix',
132`--program-suffix' and `--program-transform-name' that affect the names of
133installed programs.
134
135---
136** Emacs can now be built without sound support.
137
138---
139** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk'
140when you run configure. This requires Gtk+ 2.4 or newer. This port
141provides a way to display multilingual text in menus (with some caveats).
142
143---
144** The `emacsserver' program has been removed, replaced with Lisp code.
145
146---
147** The `yow' program has been removed.
148Use the corresponding Emacs feature instead.
149
150---
151** By default, Emacs now uses a setgid helper program to update game
152scores. The directory ${localstatedir}/games/emacs is the normal
153place for game scores to be stored. You can control this with the
154configure option `--with-game-dir'. The specific user that Emacs uses
155to own the game scores is controlled by `--with-game-user'. If access
156to a game user is not available, then scores will be stored separately
157in each user's home directory.
158
159---
160** Leim is now part of the Emacs distribution.
161You no longer need to download a separate tarball in order to build
162Emacs with Leim.
163
164+++
165** The Emacs Lisp Reference Manual is now part of the distribution. 133** The Emacs Lisp Reference Manual is now part of the distribution.
166 134
167The Emacs Lisp Reference Manual in Info format is built as part of the 135The Emacs Lisp Reference Manual in Info format is built as part of the
168Emacs build procedure and installed together with the Emacs User 136Emacs build procedure and installed together with the Emacs User
169Manual. A menu item was added to the menu bar that makes it easy 137Manual. A menu item was added to the menu bar to make it easily
170accessible (Help->More Manuals->Emacs Lisp Reference). 138accessible (Help->More Manuals->Emacs Lisp Reference).
171 139
172---
173** The Introduction to Programming in Emacs Lisp manual is now part of 140** The Introduction to Programming in Emacs Lisp manual is now part of
174the distribution. 141the distribution.
175 142
176This manual is now part of the standard distribution and is installed, 143This manual is now part of the standard distribution and is installed,
177together with the Emacs User Manual, into the Info directory. A menu 144together with the Emacs User Manual, into the Info directory. A menu
178item was added to the menu bar that makes it easy accessible 145item was added to the menu bar to make it easily accessible
179(Help->More Manuals->Introduction to Emacs Lisp). 146(Help->More Manuals->Introduction to Emacs Lisp).
180 147
181--- 148** Leim is now part of the Emacs distribution.
149You no longer need to download a separate tarball in order to build
150Emacs with Leim.
151
182** New translations of the Emacs Tutorial are available in the 152** New translations of the Emacs Tutorial are available in the
183following languages: Brasilian Portuguese, Bulgarian, Chinese (both 153following languages: Brasilian Portuguese, Bulgarian, Chinese (both
184with simplified and traditional characters), French, and Italian. 154with simplified and traditional characters), French, Russian, and
185Type `C-u C-h t' to choose one of them in case your language setup 155Italian. Type `C-u C-h t' to choose one of them in case your language
186doesn't automatically select the right one. 156setup doesn't automatically select the right one.
187 157
188--- 158** New translations of the Emacs reference card are available in the
189** A Portuguese translation of Emacs' reference card has been added. 159Brasilian Portuguese and Russian. The corresponding PostScript files
190Its name is `pt-br-refcard.tex'. The corresponding PostScript file is 160are also included.
191also included.
192 161
193---
194** A French translation of the `Emacs Survival Guide' is available. 162** A French translation of the `Emacs Survival Guide' is available.
195 163
196---
197** Emacs now includes support for loading image libraries on demand. 164** Emacs now includes support for loading image libraries on demand.
198(Currently this feature is only used on MS Windows.) You can configure 165(Currently this feature is only used on MS Windows.) You can configure
199the supported image types and their associated dynamic libraries by 166the supported image types and their associated dynamic libraries by
200setting the variable `image-library-alist'. 167setting the variable `image-library-alist'.
201 168
202--- 169** Support for GNU/Linux systems on X86-64 machines was added.
203** Support for a Cygwin build of Emacs was added.
204
205---
206** Support for FreeBSD/Alpha has been added.
207 170
208---
209** Support for GNU/Linux systems on S390 machines was added. 171** Support for GNU/Linux systems on S390 machines was added.
210 172
211---
212** Support for GNU/Linux systems on Tensilica Xtensa machines was added. 173** Support for GNU/Linux systems on Tensilica Xtensa machines was added.
213 174
214--- 175** Support for FreeBSD/Alpha has been added.
176
177** Support for a Cygwin build of Emacs was added.
178
215** Support for MacOS X was added. 179** Support for MacOS X was added.
216See the files mac/README and mac/INSTALL for build instructions. 180See the files mac/README and mac/INSTALL for build instructions.
217 181
218---
219** Support for GNU/Linux systems on X86-64 machines was added.
220
221---
222** Mac OS 9 port now uses the Carbon API by default. You can also 182** Mac OS 9 port now uses the Carbon API by default. You can also
223create non-Carbon build by specifying `NonCarbon' as a target. See 183create a non-Carbon build by specifying `NonCarbon' as a target. See
224the files mac/README and mac/INSTALL for build instructions. 184the files mac/README and mac/INSTALL for build instructions.
225 185
226--- 186** The `emacsserver' program has been removed, replaced with Lisp code.
187
188** The `yow' program has been removed.
189Use the corresponding Emacs feature instead.
190
191** Emacs now supports new configure options `--program-prefix',
192`--program-suffix' and `--program-transform-name' that affect the names of
193installed programs.
194
195** By default, Emacs now uses a setgid helper program to update game
196scores. The directory ${localstatedir}/games/emacs is the normal
197place for game scores to be stored. You can control this with the
198configure option `--with-game-dir'. The specific user that Emacs uses
199to own the game scores is controlled by `--with-game-user'. If access
200to a game user is not available, then scores will be stored separately
201in each user's home directory.
202
203** Emacs can now be built without sound support.
204
227** Building with -DENABLE_CHECKING does not automatically build with union 205** Building with -DENABLE_CHECKING does not automatically build with union
228types any more. Add -DUSE_LISP_UNION_TYPE if you want union types. 206types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
229 207
230---
231** When pure storage overflows while dumping, Emacs now prints how 208** When pure storage overflows while dumping, Emacs now prints how
232much pure storage it will approximately need. 209much pure storage it will approximately need.
233 210
234---
235** The script etc/emacs-buffer.gdb can be used with gdb to retrieve the 211** The script etc/emacs-buffer.gdb can be used with gdb to retrieve the
236contents of buffers from a core dump and save them to files easily, should 212contents of buffers from a core dump and save them to files easily, should
237Emacs crash. 213Emacs crash.
238 214
239---
240** The Emacs terminal emulation in term.el uses a different terminfo name. 215** The Emacs terminal emulation in term.el uses a different terminfo name.
241The Emacs terminal emulation in term.el now uses "eterm-color" as its 216The Emacs terminal emulation in term.el now uses "eterm-color" as its
242terminfo name, since term.el now supports color. 217terminfo name, since term.el now supports color.
243 218
244---
245** Emacs Lisp source files are compressed by default if `gzip' is available. 219** Emacs Lisp source files are compressed by default if `gzip' is available.
246 220
247---
248** All images used in Emacs have been consolidated in etc/images and subdirs. 221** All images used in Emacs have been consolidated in etc/images and subdirs.
249See also the changes to `find-image', documented below. 222See also the changes to `find-image', documented below.
250 223
251 224
252* Startup Changes in Emacs 22.1 225* Startup Changes in Emacs 22.1
253 226
254+++
255** New command line option -Q or --quick. 227** New command line option -Q or --quick.
256This is like using -q --no-site-file, but in addition it also disables 228This is like using -q --no-site-file, but in addition it also disables
257the fancy startup screen. 229the fancy startup screen.
258 230
259+++
260** New command line option -D or --basic-display. 231** New command line option -D or --basic-display.
261Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and 232Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
262the blinking cursor. 233the blinking cursor.
263 234
264+++
265** New command line option -nbc or --no-blinking-cursor disables 235** New command line option -nbc or --no-blinking-cursor disables
266the blinking cursor on graphical terminals. 236the blinking cursor on graphical terminals.
267 237
268+++
269** The option --script FILE runs Emacs in batch mode and loads FILE. 238** The option --script FILE runs Emacs in batch mode and loads FILE.
270It is useful for writing Emacs Lisp shell script files, because they 239It is useful for writing Emacs Lisp shell script files, because they
271can start with this line: 240can start with this line:
272 241
273 #!/usr/bin/emacs --script 242 #!/usr/bin/emacs --script
274 243
275+++
276** The option --directory DIR now modifies `load-path' immediately. 244** The option --directory DIR now modifies `load-path' immediately.
277Directories are added to the front of `load-path' in the order they 245Directories are added to the front of `load-path' in the order they
278appear on the command line. For example, with this command line: 246appear on the command line. For example, with this command line:
@@ -282,69 +250,57 @@ appear on the command line. For example, with this command line:
282Emacs looks for library `foo' in the parent directory, then in /tmp, then 250Emacs looks for library `foo' in the parent directory, then in /tmp, then
283in the other directories in `load-path'. (-L is short for --directory.) 251in the other directories in `load-path'. (-L is short for --directory.)
284 252
285+++
286** The command line option --no-windows has been changed to 253** The command line option --no-windows has been changed to
287--no-window-system. The old one still works, but is deprecated. 254--no-window-system. The old one still works, but is deprecated.
288 255
289---
290** If the environment variable DISPLAY specifies an unreachable X display, 256** If the environment variable DISPLAY specifies an unreachable X display,
291Emacs will now startup as if invoked with the --no-window-system option. 257Emacs will now startup as if invoked with the --no-window-system option.
292 258
293+++
294** The -f option, used from the command line to call a function, 259** The -f option, used from the command line to call a function,
295now reads arguments for the function interactively if it is 260now reads arguments for the function interactively if it is
296an interactively callable function. 261an interactively callable function.
297 262
298+++
299** When you specify a frame size with --geometry, the size applies to 263** When you specify a frame size with --geometry, the size applies to
300all frames you create. A position specified with --geometry only 264all frames you create. A position specified with --geometry only
301affects the initial frame. 265affects the initial frame.
302 266
303---
304** Emacs built for MS-Windows now behaves like Emacs on X does, 267** Emacs built for MS-Windows now behaves like Emacs on X does,
305wrt its frame position: if you don't specify a position (in your 268with respect to its frame position: if you don't specify a position
306.emacs init file, in the Registry, or with the --geometry command-line 269(in your .emacs init file, in the Registry, or with the --geometry
307option), Emacs leaves the frame position to the Windows' window 270command-line option), Emacs leaves the frame position to the Windows'
308manager. 271window manager.
309 272
310+++
311** Emacs can now be invoked in full-screen mode on a windowed display. 273** Emacs can now be invoked in full-screen mode on a windowed display.
312When Emacs is invoked on a window system, the new command-line options 274When Emacs is invoked on a window system, the new command-line options
313`--fullwidth', `--fullheight', and `--fullscreen' produce a frame 275`--fullwidth', `--fullheight', and `--fullscreen' produce a frame
314whose width, height, or both width and height take up the entire 276whose width, height, or both width and height take up the entire
315screen size. (For now, this does not work with some window managers.) 277screen size. (For now, this does not work with some window managers.)
316 278
317+++
318** Emacs now displays a splash screen by default even if command-line 279** Emacs now displays a splash screen by default even if command-line
319arguments were given. The new command-line option --no-splash 280arguments were given. The new command-line option --no-splash
320disables the splash screen; see also the variable 281disables the splash screen; see also the variable
321`inhibit-startup-message' (which is also aliased as 282`inhibit-splash-screen' (which is also aliased as
322`inhibit-splash-screen'). 283`inhibit-startup-message').
323 284
324+++ 285** The default is now to use a bitmap as the icon.
325** The default is now to use a bitmap as the icon, so the command-line options 286The command-line options --icon-type, -i have been replaced with
326--icon-type, -i has been replaced with options --no-bitmap-icon, -nbi to turn 287options --no-bitmap-icon, -nbi to turn the bitmap icon off.
327the bitmap icon off.
328 288
329+++
330** New user option `inhibit-startup-buffer-menu'. 289** New user option `inhibit-startup-buffer-menu'.
331When loading many files, for instance with `emacs *', Emacs normally 290When loading many files, for instance with `emacs *', Emacs normally
332displays a buffer menu. This option turns the buffer menu off. 291displays a buffer menu. This option turns the buffer menu off.
333 292
334+++
335** Init file changes 293** Init file changes
336If the init file ~/.emacs does not exist, Emacs will try 294If the init file ~/.emacs does not exist, Emacs will try
337~/.emacs.d/init.el or ~/.emacs.d/init.elc. Likewise, if the shell init file 295~/.emacs.d/init.el or ~/.emacs.d/init.elc. Likewise, if the shell init file
338~/.emacs_SHELL is not found, Emacs will try ~/.emacs.d/init_SHELL.sh. 296~/.emacs_SHELL is not found, Emacs will try ~/.emacs.d/init_SHELL.sh.
339 297
340+++
341** Emacs now reads the standard abbrevs file ~/.abbrev_defs 298** Emacs now reads the standard abbrevs file ~/.abbrev_defs
342automatically at startup, if it exists. When Emacs offers to save 299automatically at startup, if it exists. When Emacs offers to save
343modified buffers, it saves the abbrevs too if they have changed. It 300modified buffers, it saves the abbrevs too if they have changed. It
344can do this either silently or asking for confirmation first, 301can do this either silently or asking for confirmation first,
345according to the value of `save-abbrevs'. 302according to the value of `save-abbrevs'.
346 303
347+++
348** If the environment variable EMAIL is defined, Emacs now uses its value 304** If the environment variable EMAIL is defined, Emacs now uses its value
349to compute the default value of `user-mail-address', in preference to 305to compute the default value of `user-mail-address', in preference to
350concatenation of `user-login-name' with the name of your host machine. 306concatenation of `user-login-name' with the name of your host machine.
@@ -352,52 +308,42 @@ concatenation of `user-login-name' with the name of your host machine.
352 308
353* Incompatible Editing Changes in Emacs 22.1 309* Incompatible Editing Changes in Emacs 22.1
354 310
355+++ 311** You can now follow links by clicking Mouse-1 on the link.
312
313See below for more details.
314
356** M-g is now a prefix key. 315** M-g is now a prefix key.
357M-g g and M-g M-g run goto-line. 316M-g g and M-g M-g run goto-line.
358M-g n and M-g M-n run next-error (like C-x `). 317M-g n and M-g M-n run next-error (like C-x `).
359M-g p and M-g M-p run previous-error. 318M-g p and M-g M-p run previous-error.
360 319
361+++
362** C-u M-g M-g switches to the most recent previous buffer, 320** C-u M-g M-g switches to the most recent previous buffer,
363and goes to the specified line in that buffer. 321and goes to the specified line in that buffer.
364 322
365When goto-line starts to execute, if there's a number in the buffer at 323When goto-line starts to execute, if there's a number in the buffer at
366point then it acts as the default argument for the minibuffer. 324point then it acts as the default argument for the minibuffer.
367 325
368+++ 326** M-o now is the prefix key for setting text properties;
327M-o M-o requests refontification.
328
369** The old bindings C-M-delete and C-M-backspace have been deleted, 329** The old bindings C-M-delete and C-M-backspace have been deleted,
370since there are situations where one or the other will shut down 330since there are situations where one or the other will shut down
371the operating system or your X server. 331the operating system or your X server.
372 332
373+++
374** line-move-ignore-invisible now defaults to t.
375
376+++
377** When the undo information of the current command gets really large 333** When the undo information of the current command gets really large
378(beyond the value of `undo-outer-limit'), Emacs discards it and warns 334(beyond the value of `undo-outer-limit'), Emacs discards it and warns
379you about it. 335you about it.
380 336
381+++
382** `apply-macro-to-region-lines' now operates on all lines that begin
383in the region, rather than on all complete lines in the region.
384
385+++
386** A prefix argument is no longer required to repeat a jump to a
387previous mark if you set `set-mark-command-repeat-pop' to t. I.e. C-u
388C-SPC C-SPC C-SPC ... cycles through the mark ring. Use C-u C-u C-SPC
389to set the mark immediately after a jump.
390
391+++
392** The info-search bindings on C-h C-f, C-h C-k and C-h C-i
393have been moved to C-h F, C-h K and C-h S.
394
395+++
396** In incremental search, C-w is changed. M-%, C-M-w and C-M-y are special. 337** In incremental search, C-w is changed. M-%, C-M-w and C-M-y are special.
397 338
398See below under "incremental search changes". 339See below under "incremental search changes".
399 340
400--- 341** When Emacs prompts for file names, SPC no longer completes the file name.
342This is so filenames with embedded spaces could be input without the
343need to quote the space with a C-q. The underlying changes in the
344keymaps that are active in the minibuffer are described below under
345"New keymaps for typing file names".
346
401** C-x C-f RET (find-file), typing nothing in the minibuffer, is no longer 347** C-x C-f RET (find-file), typing nothing in the minibuffer, is no longer
402a special case. 348a special case.
403 349
@@ -408,28 +354,10 @@ directory with Dired.
408You can get the old behavior by typing C-x C-f M-n RET, which fetches 354You can get the old behavior by typing C-x C-f M-n RET, which fetches
409the actual file name into the minibuffer. 355the actual file name into the minibuffer.
410 356
411+++
412** The completion commands TAB, SPC and ? in the minibuffer apply only 357** The completion commands TAB, SPC and ? in the minibuffer apply only
413to the text before point. If there is text in the buffer after point, 358to the text before point. If there is text in the buffer after point,
414it remains unchanged. 359it remains unchanged.
415 360
416+++
417** When Emacs prompts for file names, SPC no longer completes the file name.
418This is so filenames with embedded spaces could be input without the
419need to quote the space with a C-q. The underlying changes in the
420keymaps that are active in the minibuffer are described below under
421"New keymaps for typing file names".
422
423+++
424** M-o now is the prefix key for setting text properties;
425M-o M-o requests refontification.
426
427+++
428** You can now follow links by clicking Mouse-1 on the link.
429
430See below for more details.
431
432+++
433** In Dired's ! command (dired-do-shell-command), `*' and `?' now 361** In Dired's ! command (dired-do-shell-command), `*' and `?' now
434control substitution of the file names only when they are surrounded 362control substitution of the file names only when they are surrounded
435by whitespace. This means you can now use them as shell wildcards 363by whitespace. This means you can now use them as shell wildcards
@@ -437,11 +365,22 @@ too. If you want to use just plain `*' as a wildcard, type `*""'; the
437doublequotes make no difference in the shell, but they prevent 365doublequotes make no difference in the shell, but they prevent
438special treatment in `dired-do-shell-command'. 366special treatment in `dired-do-shell-command'.
439 367
440--- 368** A prefix argument is no longer required to repeat a jump to a
369previous mark if you set `set-mark-command-repeat-pop' to t. I.e. C-u
370C-SPC C-SPC C-SPC ... cycles through the mark ring. Use C-u C-u C-SPC
371to set the mark immediately after a jump.
372
373** The info-search bindings on C-h C-f, C-h C-k and C-h C-i
374have been moved to C-h F, C-h K and C-h S.
375
376** `apply-macro-to-region-lines' now operates on all lines that begin
377in the region, rather than on all complete lines in the region.
378
379** line-move-ignore-invisible now defaults to t.
380
441** Adaptive filling misfeature removed. 381** Adaptive filling misfeature removed.
442It no longer treats `NNN.' or `(NNN)' as a prefix. 382It no longer treats `NNN.' or `(NNN)' as a prefix.
443 383
444---
445** The register compatibility key bindings (deprecated since Emacs 19) 384** The register compatibility key bindings (deprecated since Emacs 19)
446have been removed: 385have been removed:
447 C-x / point-to-register (Use: C-x r SPC) 386 C-x / point-to-register (Use: C-x r SPC)
@@ -452,7 +391,6 @@ have been removed:
452 391
453* Editing Changes in Emacs 22.1 392* Editing Changes in Emacs 22.1
454 393
455+++
456** !MEM FULL! at the start of the mode line indicates that Emacs 394** !MEM FULL! at the start of the mode line indicates that Emacs
457cannot get any more memory for Lisp data. This often means it could 395cannot get any more memory for Lisp data. This often means it could
458crash soon if you do things that use more memory. On most systems, 396crash soon if you do things that use more memory. On most systems,
@@ -460,71 +398,57 @@ killing buffers will get out of this state. If killing buffers does
460not make !MEM FULL! disappear, you should save your work and start 398not make !MEM FULL! disappear, you should save your work and start
461a new Emacs. 399a new Emacs.
462 400
463+++
464** The max size of buffers and integers has been doubled. 401** The max size of buffers and integers has been doubled.
465On 32bit machines, it is now 256M (i.e. 268435455). 402On 32bit machines, it is now 256M (i.e. 268435455).
466 403
467+++
468** You can now switch buffers in a cyclic order with C-x C-left 404** You can now switch buffers in a cyclic order with C-x C-left
469(previous-buffer) and C-x C-right (next-buffer). C-x left and 405(previous-buffer) and C-x C-right (next-buffer). C-x left and
470C-x right can be used as well. The functions keep a different buffer 406C-x right can be used as well. The functions keep a different buffer
471cycle for each frame, using the frame-local buffer list. 407cycle for each frame, using the frame-local buffer list.
472 408
473+++
474** `undo-only' does an undo which does not redo any previous undo. 409** `undo-only' does an undo which does not redo any previous undo.
475 410
476+++
477** M-SPC (just-one-space) when given a numeric argument N 411** M-SPC (just-one-space) when given a numeric argument N
478converts whitespace around point to N spaces. 412converts whitespace around point to N spaces.
479 413
480---
481** C-x 5 C-o displays a specified buffer in another frame 414** C-x 5 C-o displays a specified buffer in another frame
482but does not switch to that frame. It's the multi-frame 415but does not switch to that frame. It's the multi-frame
483analogue of C-x 4 C-o. 416analogue of C-x 4 C-o.
484 417
485---
486** New commands to operate on pairs of open and close characters:
487`insert-pair', `delete-pair', `raise-sexp'.
488
489+++
490** New command `kill-whole-line' kills an entire line at once. 418** New command `kill-whole-line' kills an entire line at once.
491By default, it is bound to C-S-<backspace>. 419By default, it is bound to C-S-<backspace>.
492 420
493+++
494** Yanking text now discards certain text properties that can 421** Yanking text now discards certain text properties that can
495be inconvenient when you did not expect them. The variable 422be inconvenient when you did not expect them. The variable
496`yank-excluded-properties' specifies which ones. Insertion 423`yank-excluded-properties' specifies which ones. Insertion
497of register contents and rectangles also discards these properties. 424of register contents and rectangles also discards these properties.
498 425
499+++
500** The default values of paragraph-start and indent-line-function have 426** The default values of paragraph-start and indent-line-function have
501been changed to reflect those used in Text mode rather than those used 427been changed to reflect those used in Text mode rather than those used
502in Indented-Text mode. 428in Indented-Text mode.
503 429
504+++ 430** New commands to operate on pairs of open and close characters:
431`insert-pair', `delete-pair', `raise-sexp'.
432
505** M-x setenv now expands environment variable references. 433** M-x setenv now expands environment variable references.
506 434
507Substrings of the form `$foo' and `${foo}' in the specified new value 435Substrings of the form `$foo' and `${foo}' in the specified new value
508now refer to the value of environment variable foo. To include a `$' 436now refer to the value of environment variable foo. To include a `$'
509in the value, use `$$'. 437in the value, use `$$'.
510 438
511+++
512** `special-display-buffer-names' and `special-display-regexps' now 439** `special-display-buffer-names' and `special-display-regexps' now
513understand two new boolean pseudo-frame-parameters `same-frame' and 440understand two new boolean pseudo-frame-parameters `same-frame' and
514`same-window'. 441`same-window'.
515 442
516+++
517** The default for the paper size (variable ps-paper-type) is taken 443** The default for the paper size (variable ps-paper-type) is taken
518from the locale. 444from the locale.
519 445
520** Mark command changes: 446** Mark command changes:
521 447
522+++
523*** A prefix argument is no longer required to repeat a jump to a 448*** A prefix argument is no longer required to repeat a jump to a
524previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the 449previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the
525mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump. 450mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump.
526 451
527+++
528*** Marking commands extend the region when invoked multiple times. 452*** Marking commands extend the region when invoked multiple times.
529 453
530If you type C-M-SPC (mark-sexp), M-@ (mark-word), M-h 454If you type C-M-SPC (mark-sexp), M-@ (mark-word), M-h
@@ -537,14 +461,12 @@ the last command. To start a new region with one of marking commands
537in Transient Mark mode, you can deactivate the active region with C-g, 461in Transient Mark mode, you can deactivate the active region with C-g,
538or set the new mark with C-SPC. 462or set the new mark with C-SPC.
539 463
540+++
541*** M-h (mark-paragraph) now accepts a prefix arg. 464*** M-h (mark-paragraph) now accepts a prefix arg.
542 465
543With positive arg, M-h marks the current and the following paragraphs; 466With positive arg, M-h marks the current and the following paragraphs;
544if the arg is negative, it marks the current and the preceding 467if the arg is negative, it marks the current and the preceding
545paragraphs. 468paragraphs.
546 469
547+++
548*** Some commands do something special in Transient Mark mode when the 470*** Some commands do something special in Transient Mark mode when the
549mark is active--for instance, they limit their operation to the 471mark is active--for instance, they limit their operation to the
550region. Even if you don't normally use Transient Mark mode, you might 472region. Even if you don't normally use Transient Mark mode, you might
@@ -562,14 +484,12 @@ deactivate the mark. That typically happens when you type a command
562that alters the buffer, but you can also deactivate the mark by typing 484that alters the buffer, but you can also deactivate the mark by typing
563C-g. 485C-g.
564 486
565+++
566*** Movement commands `beginning-of-buffer', `end-of-buffer', 487*** Movement commands `beginning-of-buffer', `end-of-buffer',
567`beginning-of-defun', `end-of-defun' do not set the mark if the mark 488`beginning-of-defun', `end-of-defun' do not set the mark if the mark
568is already active in Transient Mark mode. 489is already active in Transient Mark mode.
569 490
570** Help command changes: 491** Help command changes:
571 492
572+++
573*** Changes in C-h bindings: 493*** Changes in C-h bindings:
574 494
575C-h e displays the *Messages* buffer. 495C-h e displays the *Messages* buffer.
@@ -603,17 +523,14 @@ to new-kill-line, these commands now report:
603- C-h w and C-h f new-kill-line reports: 523- C-h w and C-h f new-kill-line reports:
604 new-kill-line is on C-k 524 new-kill-line is on C-k
605 525
606---
607*** Help commands `describe-function' and `describe-key' now show function 526*** Help commands `describe-function' and `describe-key' now show function
608arguments in lowercase italics on displays that support it. To change the 527arguments in lowercase italics on displays that support it. To change the
609default, customize face `help-argument-name' or redefine the function 528default, customize face `help-argument-name' or redefine the function
610`help-default-arg-highlight'. 529`help-default-arg-highlight'.
611 530
612+++
613*** C-h v and C-h f commands now include a hyperlink to the C source for 531*** C-h v and C-h f commands now include a hyperlink to the C source for
614variables and functions defined in C (if the C source is available). 532variables and functions defined in C (if the C source is available).
615 533
616+++
617*** Help mode now only makes hyperlinks for faces when the face name is 534*** Help mode now only makes hyperlinks for faces when the face name is
618preceded or followed by the word `face'. It no longer makes 535preceded or followed by the word `face'. It no longer makes
619hyperlinks for variables without variable documentation, unless 536hyperlinks for variables without variable documentation, unless
@@ -624,38 +541,32 @@ anchor' (in addition to earlier `info node' and `Info node'). In
624addition, it now makes hyperlinks to URLs as well if the URL is 541addition, it now makes hyperlinks to URLs as well if the URL is
625enclosed in single quotes and preceded by `URL'. 542enclosed in single quotes and preceded by `URL'.
626 543
627+++
628*** The new command `describe-char' (C-u C-x =) pops up a buffer with 544*** The new command `describe-char' (C-u C-x =) pops up a buffer with
629description various information about a character, including its 545description various information about a character, including its
630encodings and syntax, its text properties, how to input, overlays, and 546encodings and syntax, its text properties, how to input, overlays, and
631widgets at point. You can get more information about some of them, by 547widgets at point. You can get more information about some of them, by
632clicking on mouse-sensitive areas or moving there and pressing RET. 548clicking on mouse-sensitive areas or moving there and pressing RET.
633 549
634+++
635*** The command `list-text-properties-at' has been deleted because 550*** The command `list-text-properties-at' has been deleted because
636C-u C-x = gives the same information and more. 551C-u C-x = gives the same information and more.
637 552
638+++
639*** New command `display-local-help' displays any local help at point 553*** New command `display-local-help' displays any local help at point
640in the echo area. It is bound to `C-h .'. It normally displays the 554in the echo area. It is bound to `C-h .'. It normally displays the
641same string that would be displayed on mouse-over using the 555same string that would be displayed on mouse-over using the
642`help-echo' property, but, in certain cases, it can display a more 556`help-echo' property, but, in certain cases, it can display a more
643keyboard oriented alternative. 557keyboard oriented alternative.
644 558
645+++
646*** New user option `help-at-pt-display-when-idle' allows to 559*** New user option `help-at-pt-display-when-idle' allows to
647automatically show the help provided by `display-local-help' on 560automatically show the help provided by `display-local-help' on
648point-over, after suitable idle time. The amount of idle time is 561point-over, after suitable idle time. The amount of idle time is
649determined by the user option `help-at-pt-timer-delay' and defaults 562determined by the user option `help-at-pt-timer-delay' and defaults
650to one second. This feature is turned off by default. 563to one second. This feature is turned off by default.
651 564
652+++
653*** The apropos commands now accept a list of words to match. 565*** The apropos commands now accept a list of words to match.
654When more than one word is specified, at least two of those words must 566When more than one word is specified, at least two of those words must
655be present for an item to match. Regular expression matching is still 567be present for an item to match. Regular expression matching is still
656available. 568available.
657 569
658+++
659*** The new option `apropos-sort-by-scores' causes the matching items 570*** The new option `apropos-sort-by-scores' causes the matching items
660to be sorted according to their score. The score for an item is a 571to be sorted according to their score. The score for an item is a
661number calculated to indicate how well the item matches the words or 572number calculated to indicate how well the item matches the words or
@@ -665,77 +576,64 @@ matching item.
665 576
666** Incremental Search changes: 577** Incremental Search changes:
667 578
668+++
669*** Vertical scrolling is now possible within incremental search. 579*** Vertical scrolling is now possible within incremental search.
670To enable this feature, customize the new user option 580To enable this feature, customize the new user option
671`isearch-allow-scroll'. User written commands which satisfy stringent 581`isearch-allow-scroll'. User written commands which satisfy stringent
672constraints can be marked as "scrolling commands". See the Emacs manual 582constraints can be marked as "scrolling commands". See the Emacs manual
673for details. 583for details.
674 584
675+++
676*** C-w in incremental search now grabs either a character or a word, 585*** C-w in incremental search now grabs either a character or a word,
677making the decision in a heuristic way. This new job is done by the 586making the decision in a heuristic way. This new job is done by the
678command `isearch-yank-word-or-char'. To restore the old behavior, 587command `isearch-yank-word-or-char'. To restore the old behavior,
679bind C-w to `isearch-yank-word' in `isearch-mode-map'. 588bind C-w to `isearch-yank-word' in `isearch-mode-map'.
680 589
681+++
682*** C-y in incremental search now grabs the next line if point is already 590*** C-y in incremental search now grabs the next line if point is already
683at the end of a line. 591at the end of a line.
684 592
685+++
686*** C-M-w deletes and C-M-y grabs a character in isearch mode. 593*** C-M-w deletes and C-M-y grabs a character in isearch mode.
687Another method to grab a character is to enter the minibuffer by `M-e' 594Another method to grab a character is to enter the minibuffer by `M-e'
688and to type `C-f' at the end of the search string in the minibuffer. 595and to type `C-f' at the end of the search string in the minibuffer.
689 596
690+++
691*** M-% typed in isearch mode invokes `query-replace' or 597*** M-% typed in isearch mode invokes `query-replace' or
692`query-replace-regexp' (depending on search mode) with the current 598`query-replace-regexp' (depending on search mode) with the current
693search string used as the string to replace. 599search string used as the string to replace.
694 600
695+++
696*** Isearch no longer adds `isearch-resume' commands to the command 601*** Isearch no longer adds `isearch-resume' commands to the command
697history by default. To enable this feature, customize the new 602history by default. To enable this feature, customize the new
698user option `isearch-resume-in-command-history'. 603user option `isearch-resume-in-command-history'.
699 604
700** Replace command changes: 605** Replace command changes:
701 606
702---
703*** New user option `query-replace-skip-read-only': when non-nil, 607*** New user option `query-replace-skip-read-only': when non-nil,
704`query-replace' and related functions simply ignore 608`query-replace' and related functions simply ignore
705a match if part of it has a read-only property. 609a match if part of it has a read-only property.
706 610
707+++
708*** When used interactively, the commands `query-replace-regexp' and 611*** When used interactively, the commands `query-replace-regexp' and
709`replace-regexp' allow \,expr to be used in a replacement string, 612`replace-regexp' allow \,expr to be used in a replacement string,
710where expr is an arbitrary Lisp expression evaluated at replacement 613where expr is an arbitrary Lisp expression evaluated at replacement
711time. In many cases, this will be more convenient than using 614time. `\#' in a replacement string now refers to the count of
712`query-replace-regexp-eval'. `\#' in a replacement string now refers 615replacements already made by the replacement command. All regular
713to the count of replacements already made by the replacement command. 616expression replacement commands now allow `\?' in the replacement
714All regular expression replacement commands now allow `\?' in the 617string to specify a position where the replacement string can be
715replacement string to specify a position where the replacement string 618edited for each replacement. `query-replace-regexp-eval' is now
716can be edited for each replacement. 619deprecated since it offers no additional functionality.
717 620
718+++
719*** query-replace uses isearch lazy highlighting when the new user option 621*** query-replace uses isearch lazy highlighting when the new user option
720`query-replace-lazy-highlight' is non-nil. 622`query-replace-lazy-highlight' is non-nil.
721 623
722---
723*** The current match in query-replace is highlighted in new face 624*** The current match in query-replace is highlighted in new face
724`query-replace' which by default inherits from isearch face. 625`query-replace' which by default inherits from isearch face.
725 626
726** Local variables lists: 627** Local variables lists:
727 628
728+++
729*** In processing a local variables list, Emacs strips the prefix and 629*** In processing a local variables list, Emacs strips the prefix and
730suffix from every line before processing all the lines. 630suffix from every line before processing all the lines.
731 631
732+++
733*** Text properties in local variables. 632*** Text properties in local variables.
734 633
735A file local variables list cannot specify a string with text 634A file local variables list cannot specify a string with text
736properties--any specified text properties are discarded. 635properties--any specified text properties are discarded.
737 636
738+++
739*** If the local variables list contains any variable-value pairs that 637*** If the local variables list contains any variable-value pairs that
740are not known to be safe, Emacs shows a prompt asking whether to apply 638are not known to be safe, Emacs shows a prompt asking whether to apply
741the local variables list as a whole. In earlier versions, a prompt 639the local variables list as a whole. In earlier versions, a prompt
@@ -750,21 +648,18 @@ Variables can also be marked as safe with the existing
750However, risky variables will not be added to 648However, risky variables will not be added to
751`safe-local-variable-values' in this way. 649`safe-local-variable-values' in this way.
752 650
753+++
754*** The variable `enable-local-variables' controls how local variable 651*** The variable `enable-local-variables' controls how local variable
755lists are handled. t, the default, specifies the standard querying 652lists are handled. t, the default, specifies the standard querying
756behavior. :safe means use only safe values, and ignore the rest. 653behavior. :safe means use only safe values, and ignore the rest.
757:all means set all variables, whether or not they are safe. 654:all means set all variables, whether or not they are safe.
758nil means ignore them all. Anything else means always query. 655nil means ignore them all. Anything else means always query.
759 656
760+++
761*** The variable `safe-local-eval-forms' specifies a list of forms that 657*** The variable `safe-local-eval-forms' specifies a list of forms that
762are ok to evaluate when they appear in an `eval' local variables 658are ok to evaluate when they appear in an `eval' local variables
763specification. Normally Emacs asks for confirmation before evaluating 659specification. Normally Emacs asks for confirmation before evaluating
764such a form, but if the form appears in this list, no confirmation is 660such a form, but if the form appears in this list, no confirmation is
765needed. 661needed.
766 662
767+++
768*** If a function has a non-nil `safe-local-eval-function' property, 663*** If a function has a non-nil `safe-local-eval-function' property,
769that means it is ok to evaluate some calls to that function when it 664that means it is ok to evaluate some calls to that function when it
770appears in an `eval' local variables specification. If the property 665appears in an `eval' local variables specification. If the property
@@ -777,42 +672,34 @@ confirmation as before.
777 672
778** File operation changes: 673** File operation changes:
779 674
780+++
781*** Unquoted `$' in file names do not signal an error any more when 675*** Unquoted `$' in file names do not signal an error any more when
782the corresponding environment variable does not exist. 676the corresponding environment variable does not exist.
783Instead, the `$ENVVAR' text is left as is, so that `$$' quoting 677Instead, the `$ENVVAR' text is left as is, so that `$$' quoting
784is only rarely needed. 678is only rarely needed.
785 679
786+++
787*** find-file-read-only visits multiple files in read-only mode, 680*** find-file-read-only visits multiple files in read-only mode,
788when the file name contains wildcard characters. 681when the file name contains wildcard characters.
789 682
790+++
791*** find-alternate-file replaces the current file with multiple files, 683*** find-alternate-file replaces the current file with multiple files,
792when the file name contains wildcard characters. It now asks if you 684when the file name contains wildcard characters. It now asks if you
793wish save your changes and not just offer to kill the buffer. 685wish save your changes and not just offer to kill the buffer.
794 686
795+++
796*** Auto Compression mode is now enabled by default. 687*** Auto Compression mode is now enabled by default.
797 688
798---
799*** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case. 689*** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
800 690
801Since the default input is the current directory, this has the effect 691Since the default input is the current directory, this has the effect
802of specifying the current directory. Normally that means to visit the 692of specifying the current directory. Normally that means to visit the
803directory with Dired. 693directory with Dired.
804 694
805+++
806*** When you are root, and you visit a file whose modes specify 695*** When you are root, and you visit a file whose modes specify
807read-only, the Emacs buffer is now read-only too. Type C-x C-q if you 696read-only, the Emacs buffer is now read-only too. Type C-x C-q if you
808want to make the buffer writable. (As root, you can in fact alter the 697want to make the buffer writable. (As root, you can in fact alter the
809file.) 698file.)
810 699
811+++
812*** C-x s (save-some-buffers) now offers an option `d' to diff a buffer 700*** C-x s (save-some-buffers) now offers an option `d' to diff a buffer
813against its file, so you can see what changes you would be saving. 701against its file, so you can see what changes you would be saving.
814 702
815+++
816*** The commands copy-file, rename-file, make-symbolic-link and 703*** The commands copy-file, rename-file, make-symbolic-link and
817add-name-to-file, when given a directory as the "new name" argument, 704add-name-to-file, when given a directory as the "new name" argument,
818convert it to a file name by merging in the within-directory part of 705convert it to a file name by merging in the within-directory part of
@@ -820,27 +707,22 @@ the existing file's name. (This is the same convention that shell
820commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET 707commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET
821/tmp RET copies ~/foo to /tmp/foo. 708/tmp RET copies ~/foo to /tmp/foo.
822 709
823---
824*** When used interactively, `format-write-file' now asks for confirmation 710*** When used interactively, `format-write-file' now asks for confirmation
825before overwriting an existing file, unless a prefix argument is 711before overwriting an existing file, unless a prefix argument is
826supplied. This behavior is analogous to `write-file'. 712supplied. This behavior is analogous to `write-file'.
827 713
828---
829*** The variable `auto-save-file-name-transforms' now has a third element that 714*** The variable `auto-save-file-name-transforms' now has a third element that
830controls whether or not the function `make-auto-save-file-name' will 715controls whether or not the function `make-auto-save-file-name' will
831attempt to construct a unique auto-save name (e.g. for remote files). 716attempt to construct a unique auto-save name (e.g. for remote files).
832 717
833+++
834*** The new option `write-region-inhibit-fsync' disables calls to fsync 718*** The new option `write-region-inhibit-fsync' disables calls to fsync
835in `write-region'. This can be useful on laptops to avoid spinning up 719in `write-region'. This can be useful on laptops to avoid spinning up
836the hard drive upon each file save. Enabling this variable may result 720the hard drive upon each file save. Enabling this variable may result
837in data loss, use with care. 721in data loss, use with care.
838 722
839+++
840*** If the user visits a file larger than `large-file-warning-threshold', 723*** If the user visits a file larger than `large-file-warning-threshold',
841Emacs asks for confirmation. 724Emacs asks for confirmation.
842 725
843+++
844*** require-final-newline now has two new possible values: 726*** require-final-newline now has two new possible values:
845 727
846`visit' means add a newline (as an undoable change) if it's needed 728`visit' means add a newline (as an undoable change) if it's needed
@@ -850,7 +732,6 @@ when visiting the file.
850needed when visiting the file, and also add a newline if it's needed 732needed when visiting the file, and also add a newline if it's needed
851when saving the file. 733when saving the file.
852 734
853+++
854*** The new option mode-require-final-newline controls how certain 735*** The new option mode-require-final-newline controls how certain
855major modes enable require-final-newline. Any major mode that's 736major modes enable require-final-newline. Any major mode that's
856designed for a kind of file that should normally end in a newline 737designed for a kind of file that should normally end in a newline
@@ -860,17 +741,14 @@ modes do.
860 741
861** Minibuffer changes: 742** Minibuffer changes:
862 743
863+++
864*** The new file-name-shadow-mode is turned ON by default, so that when 744*** The new file-name-shadow-mode is turned ON by default, so that when
865entering a file name, any prefix which Emacs will ignore is dimmed. 745entering a file name, any prefix which Emacs will ignore is dimmed.
866 746
867+++
868*** There's a new face `minibuffer-prompt'. 747*** There's a new face `minibuffer-prompt'.
869Emacs adds this face to the list of text properties stored in the 748Emacs adds this face to the list of text properties stored in the
870variable `minibuffer-prompt-properties', which is used to display the 749variable `minibuffer-prompt-properties', which is used to display the
871prompt string. 750prompt string.
872 751
873---
874*** Enhanced visual feedback in `*Completions*' buffer. 752*** Enhanced visual feedback in `*Completions*' buffer.
875 753
876Completions lists use faces to highlight what all completions 754Completions lists use faces to highlight what all completions
@@ -891,7 +769,6 @@ listing is triggered at the other normal buffer, you have to pass
891the common prefix of completions to `display-completion-list' as 769the common prefix of completions to `display-completion-list' as
892its second argument. 770its second argument.
893 771
894+++
895*** File-name completion can now ignore specified directories. 772*** File-name completion can now ignore specified directories.
896If an element of the list in `completion-ignored-extensions' ends in a 773If an element of the list in `completion-ignored-extensions' ends in a
897slash `/', it indicates a subdirectory that should be ignored when 774slash `/', it indicates a subdirectory that should be ignored when
@@ -899,19 +776,16 @@ completing file names. Elements of `completion-ignored-extensions'
899which do not end in a slash are never considered when a completion 776which do not end in a slash are never considered when a completion
900candidate is a directory. 777candidate is a directory.
901 778
902+++
903*** The completion commands TAB, SPC and ? in the minibuffer apply only 779*** The completion commands TAB, SPC and ? in the minibuffer apply only
904to the text before point. If there is text in the buffer after point, 780to the text before point. If there is text in the buffer after point,
905it remains unchanged. 781it remains unchanged.
906 782
907+++
908*** New user option `history-delete-duplicates'. 783*** New user option `history-delete-duplicates'.
909If set to t when adding a new history element, all previous identical 784If set to t when adding a new history element, all previous identical
910elements are deleted from the history list. 785elements are deleted from the history list.
911 786
912** Redisplay changes: 787** Redisplay changes:
913 788
914+++
915*** Preemptive redisplay now adapts to current load and bandwidth. 789*** Preemptive redisplay now adapts to current load and bandwidth.
916 790
917To avoid preempting redisplay on fast computers, networks, and displays, 791To avoid preempting redisplay on fast computers, networks, and displays,
@@ -919,20 +793,16 @@ the arrival of new input is now performed at regular intervals during
919redisplay. The new variable `redisplay-preemption-period' specifies 793redisplay. The new variable `redisplay-preemption-period' specifies
920the period; the default is to check for input every 0.1 seconds. 794the period; the default is to check for input every 0.1 seconds.
921 795
922+++
923*** The mode line position information now comes before the major mode. 796*** The mode line position information now comes before the major mode.
924When the file is maintained under version control, that information 797When the file is maintained under version control, that information
925appears between the position information and the major mode. 798appears between the position information and the major mode.
926 799
927+++
928*** New face `escape-glyph' highlights control characters and escape glyphs. 800*** New face `escape-glyph' highlights control characters and escape glyphs.
929 801
930+++
931*** Non-breaking space and hyphens are now displayed with a special 802*** Non-breaking space and hyphens are now displayed with a special
932face, either nobreak-space or escape-glyph. You can turn this off or 803face, either nobreak-space or escape-glyph. You can turn this off or
933specify a different mode by setting the variable `nobreak-char-display'. 804specify a different mode by setting the variable `nobreak-char-display'.
934 805
935+++
936*** The parameters of automatic hscrolling can now be customized. 806*** The parameters of automatic hscrolling can now be customized.
937The variable `hscroll-margin' determines how many columns away from 807The variable `hscroll-margin' determines how many columns away from
938the window edge point is allowed to get before automatic hscrolling 808the window edge point is allowed to get before automatic hscrolling
@@ -948,21 +818,17 @@ gives the fraction of the window's width to scroll the window.
948The variable `automatic-hscrolling' was renamed to 818The variable `automatic-hscrolling' was renamed to
949`auto-hscroll-mode'. The old name is still available as an alias. 819`auto-hscroll-mode'. The old name is still available as an alias.
950 820
951---
952*** Moving or scrolling through images (and other lines) taller than 821*** Moving or scrolling through images (and other lines) taller than
953the window now works sensibly, by automatically adjusting the window's 822the window now works sensibly, by automatically adjusting the window's
954vscroll property. 823vscroll property.
955 824
956+++
957*** New customize option `overline-margin' controls the space between 825*** New customize option `overline-margin' controls the space between
958overline and text. 826overline and text.
959 827
960+++
961*** New variable `x-underline-at-descent-line' controls the relative 828*** New variable `x-underline-at-descent-line' controls the relative
962position of the underline. When set, it overrides the 829position of the underline. When set, it overrides the
963`x-use-underline-position-properties' variables. 830`x-use-underline-position-properties' variables.
964 831
965+++
966*** The new face `mode-line-inactive' is used to display the mode line 832*** The new face `mode-line-inactive' is used to display the mode line
967of non-selected windows. The `mode-line' face is now used to display 833of non-selected windows. The `mode-line' face is now used to display
968the mode line of the currently selected window. 834the mode line of the currently selected window.
@@ -970,14 +836,12 @@ the mode line of the currently selected window.
970The new variable `mode-line-in-non-selected-windows' controls whether 836The new variable `mode-line-in-non-selected-windows' controls whether
971the `mode-line-inactive' face is used. 837the `mode-line-inactive' face is used.
972 838
973+++
974*** You can now customize the use of window fringes. To control this 839*** You can now customize the use of window fringes. To control this
975for all frames, use M-x fringe-mode or the Show/Hide submenu of the 840for all frames, use M-x fringe-mode or the Show/Hide submenu of the
976top-level Options menu, or customize the `fringe-mode' variable. To 841top-level Options menu, or customize the `fringe-mode' variable. To
977control this for a specific frame, use the command M-x 842control this for a specific frame, use the command M-x
978set-fringe-style. 843set-fringe-style.
979 844
980+++
981*** Angle icons in the fringes can indicate the buffer boundaries. In 845*** Angle icons in the fringes can indicate the buffer boundaries. In
982addition, up and down arrow bitmaps in the fringe indicate which ways 846addition, up and down arrow bitmaps in the fringe indicate which ways
983the window can be scrolled. 847the window can be scrolled.
@@ -997,7 +861,6 @@ in left fringe, the bottom angle bitmap in right fringe, and both
997arrow bitmaps in right fringe. To show just the angle bitmaps in the 861arrow bitmaps in right fringe. To show just the angle bitmaps in the
998left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)). 862left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)).
999 863
1000+++
1001*** On window systems, lines which are exactly as wide as the window 864*** On window systems, lines which are exactly as wide as the window
1002(not counting the final newline character) are no longer broken into 865(not counting the final newline character) are no longer broken into
1003two lines on the display (with just the newline on the second line). 866two lines on the display (with just the newline on the second line).
@@ -1007,12 +870,10 @@ cursor will be displayed in the fringe when positioned on that newline.
1007The new user option 'overflow-newline-into-fringe' can be set to nil to 870The new user option 'overflow-newline-into-fringe' can be set to nil to
1008revert to the old behavior of continuing such lines. 871revert to the old behavior of continuing such lines.
1009 872
1010+++
1011*** When a window has display margin areas, the fringes are now 873*** When a window has display margin areas, the fringes are now
1012displayed between the margins and the buffer's text area, rather than 874displayed between the margins and the buffer's text area, rather than
1013outside those margins. 875outside those margins.
1014 876
1015+++
1016*** A window can now have individual fringe and scroll-bar settings, 877*** A window can now have individual fringe and scroll-bar settings,
1017in addition to the individual display margin settings. 878in addition to the individual display margin settings.
1018 879
@@ -1020,57 +881,46 @@ Such individual settings are now preserved when windows are split
1020horizontally or vertically, a saved window configuration is restored, 881horizontally or vertically, a saved window configuration is restored,
1021or when the frame is resized. 882or when the frame is resized.
1022 883
1023+++
1024*** The %c and %l constructs are now ignored in frame-title-format. 884*** The %c and %l constructs are now ignored in frame-title-format.
1025Due to technical limitations in how Emacs interacts with windowing 885Due to technical limitations in how Emacs interacts with windowing
1026systems, these constructs often failed to render properly, and could 886systems, these constructs often failed to render properly, and could
1027even cause Emacs to crash. 887even cause Emacs to crash.
1028 888
1029+++
1030*** If value of `auto-resize-tool-bars' is `grow-only', the tool bar 889*** If value of `auto-resize-tool-bars' is `grow-only', the tool bar
1031will expand as needed, but not contract automatically. To contract 890will expand as needed, but not contract automatically. To contract
1032the tool bar, you must type C-l. 891the tool bar, you must type C-l.
1033 892
1034** Cursor display changes: 893** Cursor display changes:
1035 894
1036+++
1037*** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is 895*** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
1038now controlled by the variable `blink-cursor-alist'. 896now controlled by the variable `blink-cursor-alist'.
1039 897
1040+++
1041*** The X resource cursorBlink can be used to turn off cursor blinking. 898*** The X resource cursorBlink can be used to turn off cursor blinking.
1042 899
1043+++
1044*** Emacs can produce an underscore-like (horizontal bar) cursor. 900*** Emacs can produce an underscore-like (horizontal bar) cursor.
1045The underscore cursor is set by putting `(cursor-type . hbar)' in 901The underscore cursor is set by putting `(cursor-type . hbar)' in
1046default-frame-alist. It supports variable heights, like the `bar' 902default-frame-alist. It supports variable heights, like the `bar'
1047cursor does. 903cursor does.
1048 904
1049+++
1050*** Display of hollow cursors now obeys the buffer-local value (if any) 905*** Display of hollow cursors now obeys the buffer-local value (if any)
1051of `cursor-in-non-selected-windows' in the buffer that the cursor 906of `cursor-in-non-selected-windows' in the buffer that the cursor
1052appears in. 907appears in.
1053 908
1054+++
1055*** The variable `cursor-in-non-selected-windows' can now be set to any 909*** The variable `cursor-in-non-selected-windows' can now be set to any
1056of the recognized cursor types. 910of the recognized cursor types.
1057 911
1058+++
1059*** On text terminals, the variable `visible-cursor' controls whether Emacs 912*** On text terminals, the variable `visible-cursor' controls whether Emacs
1060uses the "very visible" cursor (the default) or the normal cursor. 913uses the "very visible" cursor (the default) or the normal cursor.
1061 914
1062** New faces: 915** New faces:
1063 916
1064+++
1065*** `mode-line-highlight' is the standard face indicating mouse sensitive 917*** `mode-line-highlight' is the standard face indicating mouse sensitive
1066elements on mode-line (and header-line) like `highlight' face on text 918elements on mode-line (and header-line) like `highlight' face on text
1067areas. 919areas.
1068 920
1069+++
1070*** `mode-line-buffer-id' is the standard face for buffer identification 921*** `mode-line-buffer-id' is the standard face for buffer identification
1071parts of the mode line. 922parts of the mode line.
1072 923
1073+++
1074*** `shadow' face defines the appearance of the "shadowed" text, i.e. 924*** `shadow' face defines the appearance of the "shadowed" text, i.e.
1075the text which should be less noticeable than the surrounding text. 925the text which should be less noticeable than the surrounding text.
1076This can be achieved by using shades of grey in contrast with either 926This can be achieved by using shades of grey in contrast with either
@@ -1078,29 +928,13 @@ black or white default foreground color. This generic shadow face
1078allows customization of the appearance of shadowed text in one place, 928allows customization of the appearance of shadowed text in one place,
1079so package-specific faces can inherit from it. 929so package-specific faces can inherit from it.
1080 930
1081+++
1082*** `vertical-border' face is used for the vertical divider between windows. 931*** `vertical-border' face is used for the vertical divider between windows.
1083 932
1084** ebnf2ps changes: 933** Font-Lock (syntax highlighting) changes:
1085
1086+++
1087*** New option `ebnf-arrow-extra-width' which specify extra width for arrow
1088shape drawing.
1089The extra width is used to avoid that the arrowhead and the terminal border
1090overlap. It depens on `ebnf-arrow-shape' and `ebnf-line-width'.
1091 934
1092+++
1093*** New option `ebnf-arrow-scale' which specify the arrow scale.
1094Values lower than 1.0, shrink the arrow.
1095Values greater than 1.0, expand the arrow.
1096
1097** Font-Lock changes:
1098
1099+++
1100*** M-o now is the prefix key for setting text properties; 935*** M-o now is the prefix key for setting text properties;
1101M-o M-o requests refontification. 936M-o M-o requests refontification.
1102 937
1103+++
1104*** All modes now support using M-x font-lock-mode to toggle 938*** All modes now support using M-x font-lock-mode to toggle
1105fontification, even those such as Occur, Info, and comint-derived 939fontification, even those such as Occur, Info, and comint-derived
1106modes that do their own fontification in a special way. 940modes that do their own fontification in a special way.
@@ -1109,7 +943,6 @@ The variable `Info-fontify' is no longer applicable; to disable
1109fontification in Info, remove `turn-on-font-lock' from 943fontification in Info, remove `turn-on-font-lock' from
1110`Info-mode-hook'. 944`Info-mode-hook'.
1111 945
1112+++
1113*** Font-Lock mode: in major modes such as Lisp mode, where some Emacs 946*** Font-Lock mode: in major modes such as Lisp mode, where some Emacs
1114features assume that an open-paren in column 0 is always outside of 947features assume that an open-paren in column 0 is always outside of
1115any string or comment, Font-Lock now highlights any such open-paren in 948any string or comment, Font-Lock now highlights any such open-paren in
@@ -1117,19 +950,15 @@ bold-red if it is inside a string or a comment, to indicate that it
1117can cause trouble. You should rewrite the string or comment so that 950can cause trouble. You should rewrite the string or comment so that
1118the open-paren is not in column 0. 951the open-paren is not in column 0.
1119 952
1120+++
1121*** New standard font-lock face `font-lock-preprocessor-face'. 953*** New standard font-lock face `font-lock-preprocessor-face'.
1122 954
1123+++
1124*** New standard font-lock face `font-lock-comment-delimiter-face'. 955*** New standard font-lock face `font-lock-comment-delimiter-face'.
1125 956
1126+++
1127*** Easy to overlook single character negation can now be font-locked. 957*** Easy to overlook single character negation can now be font-locked.
1128You can use the new variable `font-lock-negation-char-face' and the face of 958You can use the new variable `font-lock-negation-char-face' and the face of
1129the same name to customize this. Currently the cc-modes, sh-script-mode, 959the same name to customize this. Currently the cc-modes, sh-script-mode,
1130cperl-mode and make-mode support this. 960cperl-mode and make-mode support this.
1131 961
1132---
1133*** The default settings for JIT stealth lock parameters are changed. 962*** The default settings for JIT stealth lock parameters are changed.
1134The default value for the user option jit-lock-stealth-time is now nil 963The default value for the user option jit-lock-stealth-time is now nil
1135instead of 3. This setting of jit-lock-stealth-time disables stealth 964instead of 3. This setting of jit-lock-stealth-time disables stealth
@@ -1142,7 +971,6 @@ buffers in the background when it considers the system to be idle.
1142jit-lock-stealth-nice is now 0.5 instead of 0.125 which is supposed to 971jit-lock-stealth-nice is now 0.5 instead of 0.125 which is supposed to
1143cause less load than the old defaults. 972cause less load than the old defaults.
1144 973
1145---
1146*** jit-lock can now be delayed with `jit-lock-defer-time'. 974*** jit-lock can now be delayed with `jit-lock-defer-time'.
1147 975
1148If this variable is non-nil, its value should be the amount of Emacs 976If this variable is non-nil, its value should be the amount of Emacs
@@ -1150,31 +978,25 @@ idle time in seconds to wait before starting fontification. For
1150example, if you set `jit-lock-defer-time' to 0.25, fontification will 978example, if you set `jit-lock-defer-time' to 0.25, fontification will
1151only happen after 0.25s of idle time. 979only happen after 0.25s of idle time.
1152 980
1153---
1154*** contextual refontification is now separate from stealth fontification. 981*** contextual refontification is now separate from stealth fontification.
1155 982
1156jit-lock-defer-contextually is renamed jit-lock-contextually and 983jit-lock-defer-contextually is renamed jit-lock-contextually and
1157jit-lock-context-time determines the delay after which contextual 984jit-lock-context-time determines the delay after which contextual
1158refontification takes place. 985refontification takes place.
1159 986
1160---
1161*** lazy-lock is considered obsolete. 987*** lazy-lock is considered obsolete.
1162 988
1163The `lazy-lock' package is superseded by `jit-lock' and is considered 989The `lazy-lock' package is superseded by `jit-lock' and is considered
1164obsolete. `jit-lock' is activated by default; if you wish to continue 990obsolete. `jit-lock' is activated by default; if you wish to continue
1165using `lazy-lock', activate it in your ~/.emacs like this: 991using `lazy-lock', activate it in your ~/.emacs like this:
1166
1167 (setq font-lock-support-mode 'lazy-lock-mode) 992 (setq font-lock-support-mode 'lazy-lock-mode)
1168 993
1169If you invoke `lazy-lock-mode' directly rather than through 994If you invoke `lazy-lock-mode' directly rather than through
1170`font-lock-support-mode', it now issues a warning: 995`font-lock-support-mode', it now issues a warning:
1171
1172 "Use font-lock-support-mode rather than calling lazy-lock-mode" 996 "Use font-lock-support-mode rather than calling lazy-lock-mode"
1173 997
1174
1175** Menu support: 998** Menu support:
1176 999
1177---
1178*** A menu item "Show/Hide" was added to the top-level menu "Options". 1000*** A menu item "Show/Hide" was added to the top-level menu "Options".
1179This menu allows you to turn various display features on and off (such 1001This menu allows you to turn various display features on and off (such
1180as the fringes, the tool bar, the speedbar, and the menu bar itself). 1002as the fringes, the tool bar, the speedbar, and the menu bar itself).
@@ -1182,68 +1004,44 @@ You can also move the vertical scroll bar to either side here or turn
1182it off completely. There is also a menu-item to toggle displaying of 1004it off completely. There is also a menu-item to toggle displaying of
1183current date and time, current line and column number in the mode-line. 1005current date and time, current line and column number in the mode-line.
1184 1006
1185---
1186*** Speedbar has moved from the "Tools" top level menu to "Show/Hide". 1007*** Speedbar has moved from the "Tools" top level menu to "Show/Hide".
1187 1008
1188---
1189*** You can exit dialog windows and menus by typing C-g. 1009*** You can exit dialog windows and menus by typing C-g.
1190 1010
1191---
1192*** The menu item "Open File..." has been split into two items, "New File..." 1011*** The menu item "Open File..." has been split into two items, "New File..."
1193and "Open File...". "Open File..." now opens only existing files. This is 1012and "Open File...". "Open File..." now opens only existing files. This is
1194to support existing GUI file selection dialogs better. 1013to support existing GUI file selection dialogs better.
1195 1014
1196+++ 1015*** The file selection dialog for Gtk+, Mac, W32 and Motif/LessTif can be
1197*** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be
1198disabled by customizing the variable `use-file-dialog'. 1016disabled by customizing the variable `use-file-dialog'.
1199 1017
1200---
1201*** The pop up menus for Lucid now stay up if you do a fast click and can 1018*** The pop up menus for Lucid now stay up if you do a fast click and can
1202be navigated with the arrow keys (like Gtk+, Mac and W32). 1019be navigated with the arrow keys (like Gtk+, Mac and W32).
1203 1020
1204+++ 1021*** The menu bar for Motif/LessTif/Lucid/Gtk+ can be navigated with keys.
1205*** The menu bar for Motif/Lesstif/Lucid/Gtk+ can be navigated with keys.
1206Pressing F10 shows the first menu in the menu bar. Navigation is done with 1022Pressing F10 shows the first menu in the menu bar. Navigation is done with
1207the arrow keys, select with the return key and cancel with the escape keys. 1023the arrow keys, select with the return key and cancel with the escape keys.
1208 1024
1209+++
1210*** The Lucid menus can display multilingual text in your locale. You have 1025*** The Lucid menus can display multilingual text in your locale. You have
1211to explicitly specify a fontSet resource for this to work, for example 1026to explicitly specify a fontSet resource for this to work, for example
1212`-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'. 1027`-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
1213 1028
1214--- 1029*** Dialogs for Lucid/Athena and LessTif/Motif now pop down on pressing
1215*** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
1216ESC, like they do for Gtk+, Mac and W32. 1030ESC, like they do for Gtk+, Mac and W32.
1217 1031
1218+++
1219*** For the Gtk+ version, you can make Emacs use the old file dialog 1032*** For the Gtk+ version, you can make Emacs use the old file dialog
1220by setting the variable `x-gtk-use-old-file-dialog' to t. Default is to use 1033by setting the variable `x-gtk-use-old-file-dialog' to t. Default is to use
1221the new dialog. 1034the new dialog.
1222 1035
1223** Mouse changes: 1036** Mouse changes:
1224 1037
1225+++
1226*** If you set the new variable `mouse-autoselect-window' to a non-nil
1227value, windows are automatically selected as you move the mouse from
1228one Emacs window to another, even within a frame. A minibuffer window
1229can be selected only when it is active.
1230
1231+++
1232*** On X, when the window manager requires that you click on a frame to
1233select it (give it focus), the selected window and cursor position
1234normally changes according to the mouse click position. If you set
1235the variable x-mouse-click-focus-ignore-position to t, the selected
1236window and cursor position do not change when you click on a frame
1237to give it focus.
1238
1239+++
1240*** You can now follow links by clicking Mouse-1 on the link. 1038*** You can now follow links by clicking Mouse-1 on the link.
1241 1039
1242Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2 1040Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2
1243click to follow a link, whereas most other applications use a Mouse-1 1041click to follow a link, whereas most other applications use a Mouse-1
1244click for both purposes, depending on whether you click outside or 1042click for both purposes, depending on whether you click outside or
1245inside a link. Now the behavior of a Mouse-1 click has been changed 1043inside a link. Now the behavior of a Mouse-1 click has been changed
1246to match this context-sentitive dual behavior. (If you prefer the old 1044to match this context-sensitive dual behavior. (If you prefer the old
1247behavior, set the user option `mouse-1-click-follows-link' to nil.) 1045behavior, set the user option `mouse-1-click-follows-link' to nil.)
1248 1046
1249Depending on the current mode, a Mouse-2 click in Emacs can do much 1047Depending on the current mode, a Mouse-2 click in Emacs can do much
@@ -1267,23 +1065,31 @@ drag-mouse-1 action, typically copy the text.
1267You can customize the new Mouse-1 behavior via the new user options 1065You can customize the new Mouse-1 behavior via the new user options
1268`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'. 1066`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'.
1269 1067
1270+++ 1068*** If you set the new variable `mouse-autoselect-window' to a non-nil
1069value, windows are automatically selected as you move the mouse from
1070one Emacs window to another, even within a frame. A minibuffer window
1071can be selected only when it is active.
1072
1073*** On X, when the window manager requires that you click on a frame to
1074select it (give it focus), the selected window and cursor position
1075normally changes according to the mouse click position. If you set
1076the variable x-mouse-click-focus-ignore-position to t, the selected
1077window and cursor position do not change when you click on a frame
1078to give it focus.
1079
1271*** Emacs normally highlights mouse sensitive text whenever the mouse 1080*** Emacs normally highlights mouse sensitive text whenever the mouse
1272is over the text. By setting the new variable `mouse-highlight', you 1081is over the text. By setting the new variable `mouse-highlight', you
1273can optionally enable mouse highlighting only after you move the 1082can optionally enable mouse highlighting only after you move the
1274mouse, so that highlighting disappears when you press a key. You can 1083mouse, so that highlighting disappears when you press a key. You can
1275also disable mouse highlighting. 1084also disable mouse highlighting.
1276 1085
1277+++
1278*** You can now customize if selecting a region by dragging the mouse 1086*** You can now customize if selecting a region by dragging the mouse
1279shall not copy the selected text to the kill-ring by setting the new 1087shall not copy the selected text to the kill-ring by setting the new
1280variable mouse-drag-copy-region to nil. 1088variable mouse-drag-copy-region to nil.
1281 1089
1282---
1283*** mouse-wheels can now scroll a specific fraction of the window 1090*** mouse-wheels can now scroll a specific fraction of the window
1284(rather than a fixed number of lines) and the scrolling is `progressive'. 1091(rather than a fixed number of lines) and the scrolling is `progressive'.
1285 1092
1286---
1287*** Emacs ignores mouse-2 clicks while the mouse wheel is being moved. 1093*** Emacs ignores mouse-2 clicks while the mouse wheel is being moved.
1288 1094
1289People tend to push the mouse wheel (which counts as a mouse-2 click) 1095People tend to push the mouse wheel (which counts as a mouse-2 click)
@@ -1291,12 +1097,10 @@ unintentionally while turning the wheel, so these clicks are now
1291ignored. You can customize this with the mouse-wheel-click-event and 1097ignored. You can customize this with the mouse-wheel-click-event and
1292mouse-wheel-inhibit-click-time variables. 1098mouse-wheel-inhibit-click-time variables.
1293 1099
1294+++
1295*** Under X, mouse-wheel-mode is turned on by default. 1100*** Under X, mouse-wheel-mode is turned on by default.
1296 1101
1297** Multilingual Environment (Mule) changes: 1102** Multilingual Environment (Mule) changes:
1298 1103
1299+++
1300*** You can disable character translation for a file using the -*- 1104*** You can disable character translation for a file using the -*-
1301construct. Include `enable-character-translation: nil' inside the 1105construct. Include `enable-character-translation: nil' inside the
1302-*-...-*- to disable any character translation that may happen by 1106-*-...-*- to disable any character translation that may happen by
@@ -1309,14 +1113,12 @@ following header, it is decoded by the coding system `iso-latin-1'
1309without any character translation: 1113without any character translation:
1310;; -*- coding: iso-latin-1!; -*- 1114;; -*- coding: iso-latin-1!; -*-
1311 1115
1312---
1313*** Language environment and various default coding systems are setup 1116*** Language environment and various default coding systems are setup
1314more correctly according to the current locale name. If the locale 1117more correctly according to the current locale name. If the locale
1315name doesn't specify a charset, the default is what glibc defines. 1118name doesn't specify a charset, the default is what glibc defines.
1316This change can result in using the different coding systems as 1119This change can result in using the different coding systems as
1317default in some locale (e.g. vi_VN). 1120default in some locale (e.g. vi_VN).
1318 1121
1319+++
1320*** The keyboard-coding-system is now automatically set based on your 1122*** The keyboard-coding-system is now automatically set based on your
1321current locale settings if you are not using a window system. This 1123current locale settings if you are not using a window system. This
1322can mean that the META key doesn't work but generates non-ASCII 1124can mean that the META key doesn't work but generates non-ASCII
@@ -1326,33 +1128,26 @@ keyboard-coding-system) if you prefer META to work (the old default)
1326or if the locale doesn't describe the character set actually generated 1128or if the locale doesn't describe the character set actually generated
1327by the keyboard. See Info node `Unibyte Mode'. 1129by the keyboard. See Info node `Unibyte Mode'.
1328 1130
1329+++
1330*** The new command `revert-buffer-with-coding-system' (C-x RET r) 1131*** The new command `revert-buffer-with-coding-system' (C-x RET r)
1331revisits the current file using a coding system that you specify. 1132revisits the current file using a coding system that you specify.
1332 1133
1333+++
1334*** New command `recode-region' decodes the region again by a specified 1134*** New command `recode-region' decodes the region again by a specified
1335coding system. 1135coding system.
1336 1136
1337+++
1338*** The new command `recode-file-name' changes the encoding of the name 1137*** The new command `recode-file-name' changes the encoding of the name
1339of a file. 1138of a file.
1340 1139
1341---
1342*** New command `ucs-insert' inserts a character specified by its 1140*** New command `ucs-insert' inserts a character specified by its
1343unicode. 1141unicode.
1344 1142
1345+++
1346*** The new command `set-file-name-coding-system' (C-x RET F) sets 1143*** The new command `set-file-name-coding-system' (C-x RET F) sets
1347coding system for encoding and decoding file names. A new menu item 1144coding system for encoding and decoding file names. A new menu item
1348(Options->Mule->Set Coding Systems->For File Name) invokes this 1145(Options->Mule->Set Coding Systems->For File Name) invokes this
1349command. 1146command.
1350 1147
1351+++
1352*** New command quail-show-key shows what key (or key sequence) to type 1148*** New command quail-show-key shows what key (or key sequence) to type
1353in the current input method to input a character at point. 1149in the current input method to input a character at point.
1354 1150
1355+++
1356*** Limited support for character `unification' has been added. 1151*** Limited support for character `unification' has been added.
1357Emacs now knows how to translate between different representations of 1152Emacs now knows how to translate between different representations of
1358the same characters in various Emacs charsets according to standard 1153the same characters in various Emacs charsets according to standard
@@ -1372,32 +1167,24 @@ into Unicode characters (from the latin-iso8859-1 and
1372mule-unicode-0100-24ff charsets) on decoding. Note that this mode 1167mule-unicode-0100-24ff charsets) on decoding. Note that this mode
1373will often effectively clobber data with an iso-2022 encoding. 1168will often effectively clobber data with an iso-2022 encoding.
1374 1169
1375--- 1170*** New language environments (set up automatically according to the
1376*** There is support for decoding Greek and Cyrillic characters into 1171locale): Belarusian, Bulgarian, Chinese-EUC-TW, Croatian, Esperanto,
1377either Unicode (the mule-unicode charsets) or the iso-8859 charsets, 1172French, Georgian, Italian, Latin-7, Latvian, Lithuanian, Malayalam,
1378when possible. The latter are more space-efficient. This is 1173Russian, Russian, Slovenian, Swedish, Tajik, Tamil, UTF-8,Ukrainian,
1379controlled by user option utf-fragment-on-decoding. 1174Welsh,Latin-6, Windows-1255.
1380
1381---
1382*** New language environments: French, Ukrainian, Tajik,
1383Bulgarian, Belarusian, Ukrainian, UTF-8, Windows-1255, Welsh, Latin-6,
1384Latin-7, Lithuanian, Latvian, Swedish, Slovenian, Croatian, Georgian,
1385Italian, Russian, Malayalam, Tamil, Russian, Chinese-EUC-TW,
1386Esperanto. (Set up automatically according to the locale.)
1387 1175
1388---
1389*** New input methods: latin-alt-postfix, latin-postfix, latin-prefix, 1176*** New input methods: latin-alt-postfix, latin-postfix, latin-prefix,
1390ukrainian-computer, belarusian, bulgarian-bds, russian-computer, 1177belarusian, bulgarian-bds, bulgarian-phonetic, chinese-sisheng (for
1391vietnamese-telex, lithuanian-numeric, lithuanian-keyboard, 1178Chinese Pinyin characters), croatian, dutch, georgian, latvian-keyboard,
1392latvian-keyboard, welsh, georgian, rfc1345, ucs, sgml, 1179lithuanian-numeric, lithuanian-keyboard, malayalam-inscript, rfc1345,
1393bulgarian-phonetic, dutch, slovenian, croatian, malayalam-inscript, 1180russian-computer, sgml, slovenian, tamil-inscript, ukrainian-computer,
1394tamil-inscript. 1181ucs, vietnamese-telex, welsh.
1395 1182
1396--- 1183*** There is support for decoding Greek and Cyrillic characters into
1397*** New input method chinese-sisheng for inputting Chinese Pinyin 1184either Unicode (the mule-unicode charsets) or the iso-8859 charsets,
1398characters. 1185when possible. The latter are more space-efficient.
1186 This is controlled by user option utf-fragment-on-decoding.
1399 1187
1400---
1401*** Improved Thai support. A new minor mode `thai-word-mode' (which is 1188*** Improved Thai support. A new minor mode `thai-word-mode' (which is
1402automatically activated if you select Thai as a language 1189automatically activated if you select Thai as a language
1403environment) changes key bindings of most word-oriented commands to 1190environment) changes key bindings of most word-oriented commands to
@@ -1409,17 +1196,11 @@ versions which recognize Thai words. Affected commands are
1409 M-t (transpose-words) 1196 M-t (transpose-words)
1410 M-q (fill-paragraph) 1197 M-q (fill-paragraph)
1411 1198
1412---
1413*** Indian support has been updated. 1199*** Indian support has been updated.
1414The in-is13194 coding system is now Unicode-based. CDAC fonts are 1200The in-is13194 coding system is now Unicode-based. CDAC fonts are
1415assumed. There is a framework for supporting various 1201assumed. There is a framework for supporting various Indian scripts,
1416Indian scripts, but currently only Devanagari, Malayalam and Tamil are 1202but currently only Devanagari, Malayalam and Tamil are supported.
1417supported.
1418
1419---
1420*** A UTF-7 coding system is available in the library `utf-7'.
1421 1203
1422---
1423*** The utf-8/16 coding systems have been enhanced. 1204*** The utf-8/16 coding systems have been enhanced.
1424By default, untranslatable utf-8 sequences are simply composed into 1205By default, untranslatable utf-8 sequences are simply composed into
1425single quasi-characters. User option `utf-translate-cjk-mode' (it is 1206single quasi-characters. User option `utf-translate-cjk-mode' (it is
@@ -1433,42 +1214,37 @@ coding system now also encodes characters from most of Emacs's
1433one-dimensional internal charsets, specifically the ISO-8859 ones. 1214one-dimensional internal charsets, specifically the ISO-8859 ones.
1434The utf-16 coding system is affected similarly. 1215The utf-16 coding system is affected similarly.
1435 1216
1436--- 1217*** A UTF-7 coding system is available in the library `utf-7'.
1218
1437*** A new coding system `euc-tw' has been added for traditional Chinese 1219*** A new coding system `euc-tw' has been added for traditional Chinese
1438in CNS encoding; it accepts both Big 5 and CNS as input; on saving, 1220in CNS encoding; it accepts both Big 5 and CNS as input; on saving,
1439Big 5 is then converted to CNS. 1221Big 5 is then converted to CNS.
1440 1222
1441---
1442*** Many new coding systems are available in the `code-pages' library. 1223*** Many new coding systems are available in the `code-pages' library.
1443These include complete versions of most of those in codepage.el, based 1224These include complete versions of most of those in codepage.el, based
1444on Unicode mappings. `codepage-setup' is now obsolete and is used 1225on Unicode mappings. `codepage-setup' is now obsolete and is used
1445only in the MS-DOS port of Emacs. All coding systems defined in 1226only in the MS-DOS port of Emacs. All coding systems defined in
1446`code-pages' are auto-loaded. 1227`code-pages' are auto-loaded.
1447 1228
1448---
1449*** New variable `utf-translate-cjk-unicode-range' controls which 1229*** New variable `utf-translate-cjk-unicode-range' controls which
1450Unicode characters to translate in `utf-translate-cjk-mode'. 1230Unicode characters to translate in `utf-translate-cjk-mode'.
1451 1231
1452---
1453*** iso-10646-1 (`Unicode') fonts can be used to display any range of 1232*** iso-10646-1 (`Unicode') fonts can be used to display any range of
1454characters encodable by the utf-8 coding system. Just specify the 1233characters encodable by the utf-8 coding system. Just specify the
1455fontset appropriately. 1234fontset appropriately.
1456 1235
1457** Customize changes: 1236** Customize changes:
1458 1237
1459+++
1460*** Custom themes are collections of customize options. Create a 1238*** Custom themes are collections of customize options. Create a
1461custom theme with M-x customize-create-theme. Use M-x load-theme to 1239custom theme with M-x customize-create-theme. Use M-x load-theme to
1462load and enable a theme, and M-x disable-theme to disable it. Use M-x 1240load and enable a theme, and M-x disable-theme to disable it. Use M-x
1463enable-theme to enable a disabled theme. 1241enable-theme to enable a disabled theme.
1464 1242
1465+++
1466*** The commands M-x customize-face and M-x customize-face-other-window 1243*** The commands M-x customize-face and M-x customize-face-other-window
1467now look at the character after point. If a face or faces are 1244now look at the character after point. If a face or faces are
1468specified for that character, the commands by default customize those 1245specified for that character, the commands by default customize those
1469faces. 1246faces.
1470 1247
1471---
1472*** The face-customization widget has been reworked to be less confusing. 1248*** The face-customization widget has been reworked to be less confusing.
1473In particular, when you enable a face attribute using the corresponding 1249In particular, when you enable a face attribute using the corresponding
1474check-box, there's no longer a redundant `*' option in value selection 1250check-box, there's no longer a redundant `*' option in value selection
@@ -1477,7 +1253,6 @@ sense for the attribute. When an attribute is de-selected by unchecking
1477its check-box, then the (now ignored, but still present temporarily in 1253its check-box, then the (now ignored, but still present temporarily in
1478case you re-select the attribute) value is hidden. 1254case you re-select the attribute) value is hidden.
1479 1255
1480+++
1481*** When you set or reset a variable's value in a Customize buffer, 1256*** When you set or reset a variable's value in a Customize buffer,
1482the previous value becomes the "backup value" of the variable. 1257the previous value becomes the "backup value" of the variable.
1483You can go back to that backup value by selecting "Use Backup Value" 1258You can go back to that backup value by selecting "Use Backup Value"
@@ -1485,17 +1260,14 @@ under the "[State]" button.
1485 1260
1486** Buffer Menu changes: 1261** Buffer Menu changes:
1487 1262
1488+++
1489*** New command `Buffer-menu-toggle-files-only' toggles display of file 1263*** New command `Buffer-menu-toggle-files-only' toggles display of file
1490buffers only in the Buffer Menu. It is bound to T in Buffer Menu 1264buffers only in the Buffer Menu. It is bound to T in Buffer Menu
1491mode. 1265mode.
1492 1266
1493+++
1494*** `buffer-menu' and `list-buffers' now list buffers whose names begin 1267*** `buffer-menu' and `list-buffers' now list buffers whose names begin
1495with a space, when those buffers are visiting files. Normally buffers 1268with a space, when those buffers are visiting files. Normally buffers
1496whose names begin with space are omitted. 1269whose names begin with space are omitted.
1497 1270
1498---
1499*** The new options `buffers-menu-show-directories' and 1271*** The new options `buffers-menu-show-directories' and
1500`buffers-menu-show-status' let you control how buffers are displayed 1272`buffers-menu-show-status' let you control how buffers are displayed
1501in the menu dropped down when you click "Buffers" from the menu bar. 1273in the menu dropped down when you click "Buffers" from the menu bar.
@@ -1515,24 +1287,19 @@ the Buffers menu is regenerated.
1515 1287
1516** Dired mode: 1288** Dired mode:
1517 1289
1518---
1519*** New faces dired-header, dired-mark, dired-marked, dired-flagged, 1290*** New faces dired-header, dired-mark, dired-marked, dired-flagged,
1520dired-ignored, dired-directory, dired-symlink, dired-warning 1291dired-ignored, dired-directory, dired-symlink, dired-warning
1521introduced for Dired mode instead of font-lock faces. 1292introduced for Dired mode instead of font-lock faces.
1522 1293
1523+++
1524*** New Dired command `dired-compare-directories' marks files 1294*** New Dired command `dired-compare-directories' marks files
1525with different file attributes in two dired buffers. 1295with different file attributes in two dired buffers.
1526 1296
1527+++
1528*** New Dired command `dired-do-touch' (bound to T) changes timestamps 1297*** New Dired command `dired-do-touch' (bound to T) changes timestamps
1529of marked files with the value entered in the minibuffer. 1298of marked files with the value entered in the minibuffer.
1530 1299
1531+++
1532*** The Dired command `dired-goto-file' is now bound to j, not M-g. 1300*** The Dired command `dired-goto-file' is now bound to j, not M-g.
1533This is to avoid hiding the global key binding of M-g. 1301This is to avoid hiding the global key binding of M-g.
1534 1302
1535+++
1536*** In Dired's ! command (dired-do-shell-command), `*' and `?' now 1303*** In Dired's ! command (dired-do-shell-command), `*' and `?' now
1537control substitution of the file names only when they are surrounded 1304control substitution of the file names only when they are surrounded
1538by whitespace. This means you can now use them as shell wildcards 1305by whitespace. This means you can now use them as shell wildcards
@@ -1540,11 +1307,9 @@ too. If you want to use just plain `*' as a wildcard, type `*""'; the
1540double quotes make no difference in the shell, but they prevent 1307double quotes make no difference in the shell, but they prevent
1541special treatment in `dired-do-shell-command'. 1308special treatment in `dired-do-shell-command'.
1542 1309
1543+++
1544*** In Dired, the w command now stores the current line's file name 1310*** In Dired, the w command now stores the current line's file name
1545into the kill ring. With a zero prefix arg, it stores the absolute file name. 1311into the kill ring. With a zero prefix arg, it stores the absolute file name.
1546 1312
1547+++
1548*** In Dired-x, Omitting files is now a minor mode, dired-omit-mode. 1313*** In Dired-x, Omitting files is now a minor mode, dired-omit-mode.
1549 1314
1550The mode toggling command is bound to M-o. A new command 1315The mode toggling command is bound to M-o. A new command
@@ -1552,7 +1317,6 @@ dired-mark-omitted, bound to * O, marks omitted files. The variable
1552dired-omit-files-p is obsoleted, use the mode toggling function 1317dired-omit-files-p is obsoleted, use the mode toggling function
1553instead. 1318instead.
1554 1319
1555+++
1556*** The variables dired-free-space-program and dired-free-space-args 1320*** The variables dired-free-space-program and dired-free-space-args
1557have been renamed to directory-free-space-program and 1321have been renamed to directory-free-space-program and
1558directory-free-space-args, and they now apply whenever Emacs puts a 1322directory-free-space-args, and they now apply whenever Emacs puts a
@@ -1560,7 +1324,6 @@ directory listing into a buffer.
1560 1324
1561** Comint changes: 1325** Comint changes:
1562 1326
1563---
1564*** The comint prompt can now be made read-only, using the new user 1327*** The comint prompt can now be made read-only, using the new user
1565option `comint-prompt-read-only'. This is not enabled by default, 1328option `comint-prompt-read-only'. This is not enabled by default,
1566except in IELM buffers. The read-only status of IELM prompts can be 1329except in IELM buffers. The read-only status of IELM prompts can be
@@ -1582,27 +1345,23 @@ not the case, then `comint-kill-region' behaves just like
1582`kill-region' if read-only properties are involved: it copies the text 1345`kill-region' if read-only properties are involved: it copies the text
1583to the kill-ring, but does not delete it. 1346to the kill-ring, but does not delete it.
1584 1347
1585+++
1586*** The new command `comint-insert-previous-argument' in comint-derived 1348*** The new command `comint-insert-previous-argument' in comint-derived
1587modes (shell-mode, etc.) inserts arguments from previous command lines, 1349modes (shell-mode, etc.) inserts arguments from previous command lines,
1588like bash's `ESC .' binding. It is bound by default to `C-c .', but 1350like bash's `ESC .' binding. It is bound by default to `C-c .', but
1589otherwise behaves quite similarly to the bash version. 1351otherwise behaves quite similarly to the bash version.
1590 1352
1591+++
1592*** `comint-use-prompt-regexp-instead-of-fields' has been renamed 1353*** `comint-use-prompt-regexp-instead-of-fields' has been renamed
1593`comint-use-prompt-regexp'. The old name has been kept as an alias, 1354`comint-use-prompt-regexp'. The old name has been kept as an alias,
1594but declared obsolete. 1355but declared obsolete.
1595 1356
1596+++ 1357*** The new INSIDE_EMACS environment variable is set to "t" in subshells
1597*** The new INSIDE_EMACS environment variable is set to "t" in 1358running inside Emacs. This supersedes the EMACS environment variable,
1598subshells running inside Emacs. This supersedes the EMACS environment 1359which will be removed in a future Emacs release. Programs that need
1599variable, which will be removed in a future Emacs release. Programs 1360to know whether they are started inside Emacs should check INSIDE_EMACS
1600that need to know whether they are started inside Emacs should check 1361instead of EMACS.
1601INSIDE_EMACS instead of EMACS.
1602 1362
1603** M-x Compile changes: 1363** M-x Compile changes:
1604 1364
1605---
1606*** M-x compile has become more robust and reliable 1365*** M-x compile has become more robust and reliable
1607 1366
1608Quite a few more kinds of messages are recognized. Messages that are 1367Quite a few more kinds of messages are recognized. Messages that are
@@ -1622,22 +1381,18 @@ that configure outputs and -o options so you see at a glance where you are.
1622 1381
1623The new file etc/compilation.txt gives examples of each type of message. 1382The new file etc/compilation.txt gives examples of each type of message.
1624 1383
1625+++
1626*** New user option `compilation-environment'. 1384*** New user option `compilation-environment'.
1627This option allows you to specify environment variables for inferior 1385This option allows you to specify environment variables for inferior
1628compilation processes without affecting the environment that all 1386compilation processes without affecting the environment that all
1629subprocesses inherit. 1387subprocesses inherit.
1630 1388
1631+++
1632*** New user option `compilation-disable-input'. 1389*** New user option `compilation-disable-input'.
1633If this is non-nil, send end-of-file as compilation process input. 1390If this is non-nil, send end-of-file as compilation process input.
1634 1391
1635+++
1636*** New options `next-error-highlight' and `next-error-highlight-no-select' 1392*** New options `next-error-highlight' and `next-error-highlight-no-select'
1637specify the method of highlighting of the corresponding source line 1393specify the method of highlighting of the corresponding source line
1638in new face `next-error'. 1394in new face `next-error'.
1639 1395
1640+++
1641*** A new minor mode `next-error-follow-minor-mode' can be used in 1396*** A new minor mode `next-error-follow-minor-mode' can be used in
1642compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the 1397compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the
1643modes that can use `next-error'). In this mode, cursor motion in the 1398modes that can use `next-error'). In this mode, cursor motion in the
@@ -1645,33 +1400,24 @@ buffer causes automatic display in another window of the corresponding
1645matches, compilation errors, etc. This minor mode can be toggled with 1400matches, compilation errors, etc. This minor mode can be toggled with
1646C-c C-f. 1401C-c C-f.
1647 1402
1648+++
1649*** When the left fringe is displayed, an arrow points to current message in 1403*** When the left fringe is displayed, an arrow points to current message in
1650the compilation buffer. 1404the compilation buffer.
1651 1405
1652+++
1653*** The new variable `compilation-context-lines' controls lines of leading 1406*** The new variable `compilation-context-lines' controls lines of leading
1654context before the current message. If nil and the left fringe is displayed, 1407context before the current message. If nil and the left fringe is displayed,
1655it doesn't scroll the compilation output window. If there is no left fringe, 1408it doesn't scroll the compilation output window. If there is no left fringe,
1656no arrow is displayed and a value of nil means display the message at the top 1409no arrow is displayed and a value of nil means display the message at the top
1657of the window. 1410of the window.
1658 1411
1659+++
1660*** The EMACS environment variable now defaults to Emacs's absolute
1661file name, instead of to "t".
1662
1663** Occur mode changes: 1412** Occur mode changes:
1664 1413
1665+++
1666*** In the *Occur* buffer, `o' switches to it in another window, and 1414*** In the *Occur* buffer, `o' switches to it in another window, and
1667C-o displays the current line's occurrence in another window without 1415C-o displays the current line's occurrence in another window without
1668switching to it. 1416switching to it.
1669 1417
1670+++
1671*** You can now use next-error (C-x `) and previous-error to advance to 1418*** You can now use next-error (C-x `) and previous-error to advance to
1672the next/previous matching line found by M-x occur. 1419the next/previous matching line found by M-x occur.
1673 1420
1674+++
1675*** The new command `multi-occur' is just like `occur', except it can 1421*** The new command `multi-occur' is just like `occur', except it can
1676search multiple buffers. There is also a new command 1422search multiple buffers. There is also a new command
1677`multi-occur-in-matching-buffers' which allows you to specify the 1423`multi-occur-in-matching-buffers' which allows you to specify the
@@ -1681,21 +1427,18 @@ changes.
1681 1427
1682** Grep changes: 1428** Grep changes:
1683 1429
1684+++
1685*** Grep has been decoupled from compilation mode setup. 1430*** Grep has been decoupled from compilation mode setup.
1686 1431
1687There's a new separate package grep.el, with its own submenu and 1432There's a new separate package grep.el, with its own submenu and
1688customization group. 1433customization group.
1689 1434
1690+++
1691*** `grep-find' is now also available under the name `find-grep' where 1435*** `grep-find' is now also available under the name `find-grep' where
1692people knowing `find-grep-dired' would probably expect it. 1436people knowing `find-grep-dired' would probably expect it.
1693 1437
1694+++
1695*** New commands `lgrep' (local grep) and `rgrep' (recursive grep) are 1438*** New commands `lgrep' (local grep) and `rgrep' (recursive grep) are
1696more user-friendly versions of `grep' and `grep-find', which prompt 1439more user-friendly versions of `grep' and `grep-find', which prompt
1697separately for the regular expression to match, the files to search, 1440separately for the regular expression to match, the files to search,
1698and the base directory for the search. Case sensitivitivy of the 1441and the base directory for the search. Case sensitivity of the
1699search is controlled by the current value of `case-fold-search'. 1442search is controlled by the current value of `case-fold-search'.
1700 1443
1701These commands build the shell commands based on the new variables 1444These commands build the shell commands based on the new variables
@@ -1707,17 +1450,14 @@ Subdirectories listed in `grep-find-ignored-directories' such as those
1707typically used by various version control systems, like CVS and arch, 1450typically used by various version control systems, like CVS and arch,
1708are automatically skipped by `rgrep'. 1451are automatically skipped by `rgrep'.
1709 1452
1710---
1711*** The grep commands provide highlighting support. 1453*** The grep commands provide highlighting support.
1712 1454
1713Hits are fontified in green, and hits in binary files in orange. Grep buffers 1455Hits are fontified in green, and hits in binary files in orange. Grep buffers
1714can be saved and automatically revisited. 1456can be saved and automatically revisited.
1715 1457
1716---
1717*** The new variables `grep-window-height' and `grep-scroll-output' override 1458*** The new variables `grep-window-height' and `grep-scroll-output' override
1718the corresponding compilation mode settings, for grep commands only. 1459the corresponding compilation mode settings, for grep commands only.
1719 1460
1720+++
1721*** New option `grep-highlight-matches' highlights matches in *grep* 1461*** New option `grep-highlight-matches' highlights matches in *grep*
1722buffer. It uses a special feature of some grep programs which accept 1462buffer. It uses a special feature of some grep programs which accept
1723--color option to output markers around matches. When going to the next 1463--color option to output markers around matches. When going to the next
@@ -1725,7 +1465,6 @@ match with `next-error' the exact match is highlighted in the source
1725buffer. Otherwise, if `grep-highlight-matches' is nil, the whole 1465buffer. Otherwise, if `grep-highlight-matches' is nil, the whole
1726source line is highlighted. 1466source line is highlighted.
1727 1467
1728+++
1729*** New key bindings in grep output window: 1468*** New key bindings in grep output window:
1730SPC and DEL scrolls window up and down. C-n and C-p moves to next and 1469SPC and DEL scrolls window up and down. C-n and C-p moves to next and
1731previous match in the grep window. RET jumps to the source line of 1470previous match in the grep window. RET jumps to the source line of
@@ -1734,7 +1473,6 @@ other window, but does not switch buffer. `{' and `}' jumps to the
1734previous or next file in the grep output. TAB also jumps to the next 1473previous or next file in the grep output. TAB also jumps to the next
1735file. 1474file.
1736 1475
1737+++
1738*** M-x grep now tries to avoid appending `/dev/null' to the command line 1476*** M-x grep now tries to avoid appending `/dev/null' to the command line
1739by using GNU grep `-H' option instead. M-x grep automatically 1477by using GNU grep `-H' option instead. M-x grep automatically
1740detects whether this is possible or not the first time it is invoked. 1478detects whether this is possible or not the first time it is invoked.
@@ -1744,12 +1482,10 @@ command lines to be used than was possible before.
1744 1482
1745** X Windows Support: 1483** X Windows Support:
1746 1484
1747+++
1748*** Emacs now supports drag and drop for X. Dropping a file on a window 1485*** Emacs now supports drag and drop for X. Dropping a file on a window
1749 opens it, dropping text inserts the text. Dropping a file on a dired 1486 opens it, dropping text inserts the text. Dropping a file on a dired
1750 buffer copies or moves the file to that directory. 1487 buffer copies or moves the file to that directory.
1751 1488
1752+++
1753*** Under X11, it is possible to swap Alt and Meta (and Super and Hyper). 1489*** Under X11, it is possible to swap Alt and Meta (and Super and Hyper).
1754The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym', 1490The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym',
1755and `x-super-keysym' can be used to choose which keysyms Emacs should 1491and `x-super-keysym' can be used to choose which keysyms Emacs should
@@ -1758,31 +1494,26 @@ Meta and Alt:
1758 (setq x-alt-keysym 'meta) 1494 (setq x-alt-keysym 'meta)
1759 (setq x-meta-keysym 'alt) 1495 (setq x-meta-keysym 'alt)
1760 1496
1761+++
1762*** The X resource useXIM can be used to turn off use of XIM, which can 1497*** The X resource useXIM can be used to turn off use of XIM, which can
1763speed up Emacs with slow networking to the X server. 1498speed up Emacs with slow networking to the X server.
1764 1499
1765If the configure option `--without-xim' was used to turn off use of 1500If the configure option `--without-xim' was used to turn off use of
1766XIM by default, the X resource useXIM can be used to turn it on. 1501XIM by default, the X resource useXIM can be used to turn it on.
1767 1502
1768---
1769*** The new variable `x-select-request-type' controls how Emacs 1503*** The new variable `x-select-request-type' controls how Emacs
1770requests X selection. The default value is nil, which means that 1504requests X selection. The default value is nil, which means that
1771Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING, 1505Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING,
1772and use the more appropriately result. 1506and use the more appropriately result.
1773 1507
1774---
1775*** The scrollbar under LessTif or Motif has a smoother drag-scrolling. 1508*** The scrollbar under LessTif or Motif has a smoother drag-scrolling.
1776On the other hand, the size of the thumb does not represent the actual 1509On the other hand, the size of the thumb does not represent the actual
1777amount of text shown any more (only a crude approximation of it). 1510amount of text shown any more (only a crude approximation of it).
1778 1511
1779** Xterm support: 1512** Xterm support:
1780 1513
1781---
1782*** If you enable Xterm Mouse mode, Emacs will respond to mouse clicks 1514*** If you enable Xterm Mouse mode, Emacs will respond to mouse clicks
1783on the mode line, header line and display margin, when run in an xterm. 1515on the mode line, header line and display margin, when run in an xterm.
1784 1516
1785---
1786*** Improved key bindings support when running in an xterm. 1517*** Improved key bindings support when running in an xterm.
1787When Emacs is running in an xterm more key bindings are available. 1518When Emacs is running in an xterm more key bindings are available.
1788The following should work: 1519The following should work:
@@ -1795,7 +1526,6 @@ resource is set are also supported.
1795 1526
1796** Character terminal color support changes: 1527** Character terminal color support changes:
1797 1528
1798+++
1799*** The new command-line option --color=MODE lets you specify a standard 1529*** The new command-line option --color=MODE lets you specify a standard
1800mode for a tty color support. It is meant to be used on character 1530mode for a tty color support. It is meant to be used on character
1801terminals whose capabilities are not set correctly in the terminal 1531terminals whose capabilities are not set correctly in the terminal
@@ -1806,26 +1536,33 @@ when invoked with "ls --color", so if your terminal can support colors
1806in "ls --color", it will support "emacs --color" as well. See the 1536in "ls --color", it will support "emacs --color" as well. See the
1807user manual for the possible values of the MODE parameter. 1537user manual for the possible values of the MODE parameter.
1808 1538
1809---
1810*** Emacs now supports several character terminals which provide more 1539*** Emacs now supports several character terminals which provide more
1811than 8 colors. For example, for `xterm', 16-color, 88-color, and 1540than 8 colors. For example, for `xterm', 16-color, 88-color, and
1812256-color modes are supported. Emacs automatically notes at startup 1541256-color modes are supported. Emacs automatically notes at startup
1813the extended number of colors, and defines the appropriate entries for 1542the extended number of colors, and defines the appropriate entries for
1814all of these colors. 1543all of these colors.
1815 1544
1816+++
1817*** Emacs now uses the full range of available colors for the default 1545*** Emacs now uses the full range of available colors for the default
1818faces when running on a color terminal, including 16-, 88-, and 1546faces when running on a color terminal, including 16-, 88-, and
1819256-color xterms. This means that when you run "emacs -nw" on an 1547256-color xterms. This means that when you run "emacs -nw" on an
182088-color or 256-color xterm, you will see essentially the same face 154888-color or 256-color xterm, you will see essentially the same face
1821colors as on X. 1549colors as on X.
1822 1550
1823---
1824*** There's a new support for colors on `rxvt' terminal emulator. 1551*** There's a new support for colors on `rxvt' terminal emulator.
1552
1553** ebnf2ps changes:
1554
1555*** New option `ebnf-arrow-extra-width' which specify extra width for arrow
1556shape drawing.
1557The extra width is used to avoid that the arrowhead and the terminal border
1558overlap. It depends on `ebnf-arrow-shape' and `ebnf-line-width'.
1559
1560*** New option `ebnf-arrow-scale' which specify the arrow scale.
1561Values lower than 1.0, shrink the arrow.
1562Values greater than 1.0, expand the arrow.
1825 1563
1826* New Modes and Packages in Emacs 22.1 1564* New Modes and Packages in Emacs 22.1
1827 1565
1828---
1829** ERC is now part of the Emacs distribution. 1566** ERC is now part of the Emacs distribution.
1830 1567
1831ERC is a powerful, modular, and extensible IRC client for Emacs. 1568ERC is a powerful, modular, and extensible IRC client for Emacs.
@@ -1836,7 +1573,6 @@ M-x customize-option erc-modules RET.
1836To start an IRC session with ERC, type M-x erc, and follow the prompts 1573To start an IRC session with ERC, type M-x erc, and follow the prompts
1837for server, port, and nick. 1574for server, port, and nick.
1838 1575
1839---
1840** Rcirc is now part of the Emacs distribution. 1576** Rcirc is now part of the Emacs distribution.
1841 1577
1842Rcirc is an Internet relay chat (IRC) client. It supports 1578Rcirc is an Internet relay chat (IRC) client. It supports
@@ -1850,7 +1586,6 @@ To start an IRC session using the default parameters, type M-x irc.
1850If you type C-u M-x irc, it prompts you for the server, nick, port and 1586If you type C-u M-x irc, it prompts you for the server, nick, port and
1851startup channel parameters before connecting. 1587startup channel parameters before connecting.
1852 1588
1853---
1854** Newsticker is now part of the Emacs distribution. 1589** Newsticker is now part of the Emacs distribution.
1855 1590
1856Newsticker asynchronously retrieves headlines (RSS) from a list of news 1591Newsticker asynchronously retrieves headlines (RSS) from a list of news
@@ -1858,11 +1593,9 @@ sites, prepares these headlines for reading, and allows for loading the
1858corresponding articles in a web browser. Its documentation is in a 1593corresponding articles in a web browser. Its documentation is in a
1859separate manual. 1594separate manual.
1860 1595
1861+++
1862** savehist saves minibuffer histories between sessions. 1596** savehist saves minibuffer histories between sessions.
1863To use this feature, turn on savehist-mode in your `.emacs' file. 1597To use this feature, turn on savehist-mode in your `.emacs' file.
1864 1598
1865+++
1866** Filesets are collections of files. You can define a fileset in 1599** Filesets are collections of files. You can define a fileset in
1867various ways, such as based on a directory tree or based on 1600various ways, such as based on a directory tree or based on
1868program files that include other program files. 1601program files that include other program files.
@@ -1871,7 +1604,6 @@ Once you have defined a fileset, you can perform various operations on
1871all the files in it, such as visiting them or searching and replacing 1604all the files in it, such as visiting them or searching and replacing
1872in them. 1605in them.
1873 1606
1874+++
1875** Calc is now part of the Emacs distribution. 1607** Calc is now part of the Emacs distribution.
1876 1608
1877Calc is an advanced desk calculator and mathematical tool written in 1609Calc is an advanced desk calculator and mathematical tool written in
@@ -1881,11 +1613,9 @@ Emacs manual; within Emacs, type "C-h i m calc RET" to read the
1881manual. A reference card is available in `etc/calccard.tex' and 1613manual. A reference card is available in `etc/calccard.tex' and
1882`etc/calccard.ps'. 1614`etc/calccard.ps'.
1883 1615
1884---
1885** The new package ibuffer provides a powerful, completely 1616** The new package ibuffer provides a powerful, completely
1886customizable replacement for buff-menu.el. 1617customizable replacement for buff-menu.el.
1887 1618
1888---
1889** Ido mode is now part of the Emacs distribution. 1619** Ido mode is now part of the Emacs distribution.
1890 1620
1891The ido (interactively do) package is an extension of the iswitchb 1621The ido (interactively do) package is an extension of the iswitchb
@@ -1893,11 +1623,9 @@ package to do interactive opening of files and directories in addition
1893to interactive buffer switching. Ido is a superset of iswitchb (with 1623to interactive buffer switching. Ido is a superset of iswitchb (with
1894a few exceptions), so don't enable both packages. 1624a few exceptions), so don't enable both packages.
1895 1625
1896+++
1897** Image files are normally visited in Image mode, which lets you toggle 1626** Image files are normally visited in Image mode, which lets you toggle
1898between viewing the image and viewing the text using C-c C-c. 1627between viewing the image and viewing the text using C-c C-c.
1899 1628
1900---
1901** CUA mode is now part of the Emacs distribution. 1629** CUA mode is now part of the Emacs distribution.
1902 1630
1903The new cua package provides CUA-like keybindings using C-x for 1631The new cua package provides CUA-like keybindings using C-x for
@@ -1946,7 +1674,6 @@ versions of cua.el and cua-mode.el. To ensure proper operation, you
1946must remove older versions of cua.el or cua-mode.el as well as the 1674must remove older versions of cua.el or cua-mode.el as well as the
1947loading and customization of those packages from the .emacs file. 1675loading and customization of those packages from the .emacs file.
1948 1676
1949+++
1950** Org mode is now part of the Emacs distribution 1677** Org mode is now part of the Emacs distribution
1951 1678
1952Org mode is a mode for keeping notes, maintaining ToDo lists, and 1679Org mode is a mode for keeping notes, maintaining ToDo lists, and
@@ -1961,11 +1688,9 @@ The documentation for org-mode is in a separate manual; within Emacs,
1961type "C-h i m org RET" to read that manual. A reference card is 1688type "C-h i m org RET" to read that manual. A reference card is
1962available in `etc/orgcard.tex' and `etc/orgcard.ps'. 1689available in `etc/orgcard.tex' and `etc/orgcard.ps'.
1963 1690
1964+++
1965** The new package dns-mode.el adds syntax highlighting of DNS master files. 1691** The new package dns-mode.el adds syntax highlighting of DNS master files.
1966It is a modern replacement for zone-mode.el, which is now obsolete. 1692It is a modern replacement for zone-mode.el, which is now obsolete.
1967 1693
1968---
1969** The new global minor mode `file-name-shadow-mode' modifies the way 1694** The new global minor mode `file-name-shadow-mode' modifies the way
1970filenames being entered by the user in the minibuffer are displayed, so 1695filenames being entered by the user in the minibuffer are displayed, so
1971that it's clear when part of the entered filename will be ignored due to 1696that it's clear when part of the entered filename will be ignored due to
@@ -1973,11 +1698,9 @@ Emacs' filename parsing rules. The ignored portion can be made dim,
1973invisible, or otherwise less visually noticeable. The display method can 1698invisible, or otherwise less visually noticeable. The display method can
1974be displayed by customizing the variable `file-name-shadow-properties'. 1699be displayed by customizing the variable `file-name-shadow-properties'.
1975 1700
1976+++
1977** The new package flymake.el does on-the-fly syntax checking of program 1701** The new package flymake.el does on-the-fly syntax checking of program
1978source files. See the Flymake's Info manual for more details. 1702source files. See the Flymake's Info manual for more details.
1979 1703
1980+++
1981** The new keypad setup package provides several common bindings for 1704** The new keypad setup package provides several common bindings for
1982the numeric keypad which is available on most keyboards. The numeric 1705the numeric keypad which is available on most keyboards. The numeric
1983keypad typically has the digits 0 to 9, a decimal point, keys marked 1706keypad typically has the digits 0 to 9, a decimal point, keys marked
@@ -2002,7 +1725,6 @@ where the keys work like (shifted) arrow keys, home/end, etc., and
2002are left unspecified and can be bound individually through the global 1725are left unspecified and can be bound individually through the global
2003or local keymaps. 1726or local keymaps.
2004 1727
2005+++
2006** Emacs' keyboard macro facilities have been enhanced by the new 1728** Emacs' keyboard macro facilities have been enhanced by the new
2007kmacro package. 1729kmacro package.
2008 1730
@@ -2036,16 +1758,13 @@ Keyboard macros can now be debugged and edited interactively.
2036C-x C-k SPC steps through the last keyboard macro one key sequence 1758C-x C-k SPC steps through the last keyboard macro one key sequence
2037at a time, prompting for the actions to take. 1759at a time, prompting for the actions to take.
2038 1760
2039---
2040** New minor mode, Visible mode, toggles invisibility in the current buffer. 1761** New minor mode, Visible mode, toggles invisibility in the current buffer.
2041When enabled, it makes all invisible text visible. When disabled, it 1762When enabled, it makes all invisible text visible. When disabled, it
2042restores the previous value of `buffer-invisibility-spec'. 1763restores the previous value of `buffer-invisibility-spec'.
2043 1764
2044+++
2045** The wdired.el package allows you to use normal editing commands on Dired 1765** The wdired.el package allows you to use normal editing commands on Dired
2046buffers to change filenames, permissions, etc... 1766buffers to change filenames, permissions, etc...
2047 1767
2048+++
2049** The new package longlines.el provides a minor mode for editing text 1768** The new package longlines.el provides a minor mode for editing text
2050files composed of long lines, based on the `use-hard-newlines' 1769files composed of long lines, based on the `use-hard-newlines'
2051mechanism. The long lines are broken up by inserting soft newlines, 1770mechanism. The long lines are broken up by inserting soft newlines,
@@ -2056,7 +1775,6 @@ referred to as "soft word wrap" in other text editors. This is
2056similar to Refill mode, but more reliable. To turn the word wrap 1775similar to Refill mode, but more reliable. To turn the word wrap
2057feature off, set `longlines-auto-wrap' to nil. 1776feature off, set `longlines-auto-wrap' to nil.
2058 1777
2059+++
2060** The printing package is now part of the Emacs distribution. 1778** The printing package is now part of the Emacs distribution.
2061 1779
2062If you enable the printing package by including (require 'printing) in 1780If you enable the printing package by including (require 'printing) in
@@ -2066,7 +1784,6 @@ ghostview, use ghostscript to print (if you don't have a PostScript
2066printer) or send directly to printer a PostScript code generated by 1784printer) or send directly to printer a PostScript code generated by
2067`ps-print' package. Use M-x pr-help for more information. 1785`ps-print' package. Use M-x pr-help for more information.
2068 1786
2069---
2070** The minor mode Reveal mode makes text visible on the fly as you 1787** The minor mode Reveal mode makes text visible on the fly as you
2071move your cursor into hidden regions of the buffer. 1788move your cursor into hidden regions of the buffer.
2072It should work with any package that uses overlays to hide parts 1789It should work with any package that uses overlays to hide parts
@@ -2074,23 +1791,19 @@ of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
2074 1791
2075There is also Global Reveal mode which affects all buffers. 1792There is also Global Reveal mode which affects all buffers.
2076 1793
2077---
2078** The ruler-mode.el library provides a minor mode for displaying an 1794** The ruler-mode.el library provides a minor mode for displaying an
2079"active" ruler in the header line. You can use the mouse to visually 1795"active" ruler in the header line. You can use the mouse to visually
2080change the `fill-column', `window-margins' and `tab-stop-list' 1796change the `fill-column', `window-margins' and `tab-stop-list'
2081settings. 1797settings.
2082 1798
2083+++
2084** SES mode (ses-mode) is a new major mode for creating and editing 1799** SES mode (ses-mode) is a new major mode for creating and editing
2085spreadsheet files. Besides the usual Emacs features (intuitive command 1800spreadsheet files. Besides the usual Emacs features (intuitive command
2086letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers 1801letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers
2087viral immunity and import/export of tab-separated values. 1802viral immunity and import/export of tab-separated values.
2088 1803
2089+++
2090** The new global minor mode `size-indication-mode' (off by default) 1804** The new global minor mode `size-indication-mode' (off by default)
2091shows the size of accessible part of the buffer on the mode line. 1805shows the size of accessible part of the buffer on the mode line.
2092 1806
2093+++
2094** The new package table.el implements editable, WYSIWYG, embedded 1807** The new package table.el implements editable, WYSIWYG, embedded
2095`text tables' in Emacs buffers. It simulates the effect of putting 1808`text tables' in Emacs buffers. It simulates the effect of putting
2096these tables in a special major mode. The package emulates WYSIWYG 1809these tables in a special major mode. The package emulates WYSIWYG
@@ -2098,12 +1811,11 @@ table editing available in modern word processors. The package also
2098can generate a table source in typesetting and markup languages such 1811can generate a table source in typesetting and markup languages such
2099as latex and html from the visually laid out text table. 1812as latex and html from the visually laid out text table.
2100 1813
2101+++ 1814** The image-dired.el package allows you to easily view, tag and in
2102** The tumme.el package allows you to easily view, tag and in other ways 1815other ways manipulate image files and their thumbnails, using dired as
2103manipulate image files and their thumbnails, using dired as the main interface. 1816the main interface. Image-Dired provides functionality to generate
2104Tumme provides functionality to generate simple image galleries. 1817simple image galleries.
2105 1818
2106+++
2107** Tramp is now part of the distribution. 1819** Tramp is now part of the distribution.
2108 1820
2109This package is similar to Ange-FTP: it allows you to edit remote 1821This package is similar to Ange-FTP: it allows you to edit remote
@@ -2126,14 +1838,11 @@ If you want to disable Tramp you should set
2126Removing Tramp, and re-enabling Ange-FTP, can be achieved by M-x 1838Removing Tramp, and re-enabling Ange-FTP, can be achieved by M-x
2127tramp-unload-tramp. 1839tramp-unload-tramp.
2128 1840
2129---
2130** The URL package (which had been part of W3) is now part of Emacs. 1841** The URL package (which had been part of W3) is now part of Emacs.
2131 1842
2132---
2133** `cfengine-mode' is a major mode for editing GNU Cfengine 1843** `cfengine-mode' is a major mode for editing GNU Cfengine
2134configuration files. 1844configuration files.
2135 1845
2136+++
2137** The new package conf-mode.el handles thousands of configuration files, with 1846** The new package conf-mode.el handles thousands of configuration files, with
2138varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value, 1847varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value,
2139var : value, var value or keyword var value) and sections ([section] or 1848var : value, var value or keyword var value) and sections ([section] or
@@ -2141,24 +1850,19 @@ section { }). Many files under /etc/, or with suffixes like .cf through
2141.config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are 1850.config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are
2142recognized. 1851recognized.
2143 1852
2144---
2145** GDB-Script-mode is used for files like .gdbinit. 1853** GDB-Script-mode is used for files like .gdbinit.
2146 1854
2147+++
2148** The new python.el package is used to edit Python and Jython programs. 1855** The new python.el package is used to edit Python and Jython programs.
2149 1856
2150---
2151** The TCL package tcl-mode.el was replaced by tcl.el. 1857** The TCL package tcl-mode.el was replaced by tcl.el.
2152This was actually done in Emacs-21.1, and was not documented. 1858This was actually done in Emacs-21.1, and was not documented.
2153 1859
2154---
2155** The new package scroll-lock.el provides the Scroll Lock minor mode 1860** The new package scroll-lock.el provides the Scroll Lock minor mode
2156for pager-like scrolling. Keys which normally move point by line or 1861for pager-like scrolling. Keys which normally move point by line or
2157paragraph will scroll the buffer by the respective amount of lines 1862paragraph will scroll the buffer by the respective amount of lines
2158instead and point will be kept vertically fixed relative to window 1863instead and point will be kept vertically fixed relative to window
2159boundaries during scrolling. 1864boundaries during scrolling.
2160 1865
2161+++
2162** The file t-mouse.el is now part of Emacs and provides access to mouse 1866** The file t-mouse.el is now part of Emacs and provides access to mouse
2163events from the console. It still requires gpm to work but has been updated 1867events from the console. It still requires gpm to work but has been updated
2164for Emacs 22. In particular, the mode-line is now position sensitive. 1868for Emacs 22. In particular, the mode-line is now position sensitive.
@@ -2167,23 +1871,20 @@ for Emacs 22. In particular, the mode-line is now position sensitive.
2167 1871
2168** Changes in Shell Mode 1872** Changes in Shell Mode
2169 1873
2170---
2171*** Shell output normally scrolls so that the input line is at the 1874*** Shell output normally scrolls so that the input line is at the
2172bottom of the window -- thus showing the maximum possible text. (This 1875bottom of the window -- thus showing the maximum possible text. (This
2173is similar to the way sequential output to a terminal works.) 1876is similar to the way sequential output to a terminal works.)
2174 1877
2175** Changes in Dired 1878** Changes in Dired
2176 1879
2177+++ 1880*** Bindings for Image-Dired added
2178*** Bindings for Tumme added
2179Several new keybindings, all starting with the C-t prefix, have been 1881Several new keybindings, all starting with the C-t prefix, have been
2180added to Dired. They are all bound to commands in Tumme. As a starting 1882added to Dired. They are all bound to commands in Image-Dired. As a
2181point, mark some image files in a dired buffer and do C-t d to display 1883starting point, mark some image files in a dired buffer and do C-t d
2182thumbnails of them in a separate buffer. 1884to display thumbnails of them in a separate buffer.
2183 1885
2184** Changes in Hi Lock 1886** Changes in Hi Lock
2185 1887
2186+++
2187*** hi-lock-mode now only affects a single buffer, and a new function 1888*** hi-lock-mode now only affects a single buffer, and a new function
2188`global-hi-lock-mode' enables Hi Lock in all buffers. By default, if 1889`global-hi-lock-mode' enables Hi Lock in all buffers. By default, if
2189hi-lock-mode is used in what appears to be the initialization file, a 1890hi-lock-mode is used in what appears to be the initialization file, a
@@ -2193,7 +1894,6 @@ using hi-lock-mode in an initialization file will turn on Hi Lock in all
2193buffers and no warning will be issued (for compatibility with the 1894buffers and no warning will be issued (for compatibility with the
2194behavior in older versions of Emacs). 1895behavior in older versions of Emacs).
2195 1896
2196---
2197** Changes in Allout 1897** Changes in Allout
2198 1898
2199*** Some previously rough topic-header format edge cases are reconciled. 1899*** Some previously rough topic-header format edge cases are reconciled.
@@ -2202,7 +1902,7 @@ asterisk - for instance, the comment close of some languages (eg, c's "*/"
2202or mathematica's "*)") - at the beginning of line are no longer are 1902or mathematica's "*)") - at the beginning of line are no longer are
2203interpreted as level 1 topics in those modes. 1903interpreted as level 1 topics in those modes.
2204 1904
2205*** Many or most commonly occuring "accidental" topics are disqualified. 1905*** Many or most commonly occurring "accidental" topics are disqualified.
2206Text in item bodies that looks like a low-depth topic is no longer mistaken 1906Text in item bodies that looks like a low-depth topic is no longer mistaken
2207for one unless its first offspring (or that of its next sibling with 1907for one unless its first offspring (or that of its next sibling with
2208offspring) is only one level deeper. 1908offspring) is only one level deeper.
@@ -2292,14 +1992,12 @@ handling of edits of concealed text, undo concerns, etc.
2292 - many, many other, more minor tweaks, fixes, and refinements. 1992 - many, many other, more minor tweaks, fixes, and refinements.
2293 - version number incremented to 2.2 1993 - version number incremented to 2.2
2294 1994
2295+++ 1995** The variable `woman-topic-at-point' is renamed
2296** The variable `woman-topic-at-point' was renamed
2297to `woman-use-topic-at-point' and behaves differently: if this 1996to `woman-use-topic-at-point' and behaves differently: if this
2298variable is non-nil, the `woman' command uses the word at point 1997variable is non-nil, the `woman' command uses the word at point
2299automatically, without asking for a confirmation. Otherwise, the word 1998automatically, without asking for a confirmation. Otherwise, the word
2300at point is suggested as default, but not inserted at the prompt. 1999at point is suggested as default, but not inserted at the prompt.
2301 2000
2302---
2303** Changes to cmuscheme 2001** Changes to cmuscheme
2304 2002
2305*** Emacs now offers to start Scheme if the user tries to 2003*** Emacs now offers to start Scheme if the user tries to
@@ -2315,7 +2013,6 @@ procedure calls (`scheme-trace-procedure') and to expand syntactic forms
2315subprocess are controlled by the user options `scheme-trace-command', 2013subprocess are controlled by the user options `scheme-trace-command',
2316`scheme-untrace-command' and `scheme-expand-current-form'. 2014`scheme-untrace-command' and `scheme-expand-current-form'.
2317 2015
2318---
2319** Changes in Makefile mode 2016** Changes in Makefile mode
2320 2017
2321*** Makefile mode has submodes for automake, gmake, makepp, BSD make and imake. 2018*** Makefile mode has submodes for automake, gmake, makepp, BSD make and imake.
@@ -2328,21 +2025,16 @@ faces.
2328to `makefile-query-one-target-method-function'. The old name is still 2025to `makefile-query-one-target-method-function'. The old name is still
2329available as alias. 2026available as alias.
2330 2027
2331+++
2332** In Outline mode, `hide-body' no longer hides lines at the top 2028** In Outline mode, `hide-body' no longer hides lines at the top
2333of the file that precede the first header line. 2029of the file that precede the first header line.
2334 2030
2335+++
2336** Telnet now prompts you for a port number with C-u M-x telnet. 2031** Telnet now prompts you for a port number with C-u M-x telnet.
2337 2032
2338---
2339** The terminal emulation code in term.el has been improved; it can 2033** The terminal emulation code in term.el has been improved; it can
2340run most curses applications now. 2034run most curses applications now.
2341 2035
2342+++
2343** M-x diff uses Diff mode instead of Compilation mode. 2036** M-x diff uses Diff mode instead of Compilation mode.
2344 2037
2345+++
2346** Diff mode key bindings changed. 2038** Diff mode key bindings changed.
2347 2039
2348These are the new bindings: 2040These are the new bindings:
@@ -2357,7 +2049,6 @@ To convert unified to context format, use C-u C-c C-u.
2357In addition, C-c C-u now operates on the region 2049In addition, C-c C-u now operates on the region
2358in Transient Mark mode when the mark is active. 2050in Transient Mark mode when the mark is active.
2359 2051
2360+++
2361** You can now customize `fill-nobreak-predicate' to control where 2052** You can now customize `fill-nobreak-predicate' to control where
2362filling can break lines. The value is now normally a list of 2053filling can break lines. The value is now normally a list of
2363functions, but it can also be a single function, for compatibility. 2054functions, but it can also be a single function, for compatibility.
@@ -2366,39 +2057,31 @@ Emacs provide two predicates, `fill-single-word-nobreak-p' and
2366`fill-french-nobreak-p', for use as the value of 2057`fill-french-nobreak-p', for use as the value of
2367`fill-nobreak-predicate'. 2058`fill-nobreak-predicate'.
2368 2059
2369---
2370** M-x view-file and commands that use it now avoid interfering 2060** M-x view-file and commands that use it now avoid interfering
2371with special modes such as Tar mode. 2061with special modes such as Tar mode.
2372 2062
2373---
2374** Commands `winner-redo' and `winner-undo', from winner.el, are now 2063** Commands `winner-redo' and `winner-undo', from winner.el, are now
2375bound to C-c <left> and C-c <right>, respectively. This is an 2064bound to C-c <left> and C-c <right>, respectively. This is an
2376incompatible change. 2065incompatible change.
2377 2066
2378---
2379** `global-whitespace-mode' is a new alias for `whitespace-global-mode'. 2067** `global-whitespace-mode' is a new alias for `whitespace-global-mode'.
2380 2068
2381+++
2382** M-x compare-windows now can automatically skip non-matching text to 2069** M-x compare-windows now can automatically skip non-matching text to
2383resync points in both windows. 2070resync points in both windows.
2384 2071
2385+++
2386** New user option `add-log-always-start-new-record'. 2072** New user option `add-log-always-start-new-record'.
2387 2073
2388When this option is enabled, M-x add-change-log-entry always 2074When this option is enabled, M-x add-change-log-entry always
2389starts a new record regardless of when the last record is. 2075starts a new record regardless of when the last record is.
2390 2076
2391---
2392** PO translation files are decoded according to their MIME headers 2077** PO translation files are decoded according to their MIME headers
2393when Emacs visits them. 2078when Emacs visits them.
2394 2079
2395** Info mode changes: 2080** Info mode changes:
2396 2081
2397+++
2398*** A numeric prefix argument of `info' selects an Info buffer 2082*** A numeric prefix argument of `info' selects an Info buffer
2399with the number appended to the `*info*' buffer name (e.g. "*info*<2>"). 2083with the number appended to the `*info*' buffer name (e.g. "*info*<2>").
2400 2084
2401+++
2402*** isearch in Info uses Info-search and searches through multiple nodes. 2085*** isearch in Info uses Info-search and searches through multiple nodes.
2403 2086
2404Before leaving the initial Info node isearch fails once with the error 2087Before leaving the initial Info node isearch fails once with the error
@@ -2409,82 +2092,65 @@ around the whole manual to the top/final node. The user option
2409or the default isearch search function that wraps around the current 2092or the default isearch search function that wraps around the current
2410Info node. 2093Info node.
2411 2094
2412---
2413*** New search commands: `Info-search-case-sensitively' (bound to S), 2095*** New search commands: `Info-search-case-sensitively' (bound to S),
2414`Info-search-backward', and `Info-search-next' which repeats the last 2096`Info-search-backward', and `Info-search-next' which repeats the last
2415search without prompting for a new search string. 2097search without prompting for a new search string.
2416 2098
2417+++
2418*** New command `Info-history-forward' (bound to r and new toolbar icon) 2099*** New command `Info-history-forward' (bound to r and new toolbar icon)
2419moves forward in history to the node you returned from after using 2100moves forward in history to the node you returned from after using
2420`Info-history-back' (renamed from `Info-last'). 2101`Info-history-back' (renamed from `Info-last').
2421 2102
2422---
2423*** New command `Info-history' (bound to L) displays a menu of visited nodes. 2103*** New command `Info-history' (bound to L) displays a menu of visited nodes.
2424 2104
2425---
2426*** New command `Info-toc' (bound to T) creates a node with table of contents 2105*** New command `Info-toc' (bound to T) creates a node with table of contents
2427from the tree structure of menus of the current Info file. 2106from the tree structure of menus of the current Info file.
2428 2107
2429+++
2430*** New command `info-apropos' searches the indices of the known 2108*** New command `info-apropos' searches the indices of the known
2431Info files on your system for a string, and builds a menu of the 2109Info files on your system for a string, and builds a menu of the
2432possible matches. 2110possible matches.
2433 2111
2434---
2435*** New command `Info-copy-current-node-name' (bound to w) copies 2112*** New command `Info-copy-current-node-name' (bound to w) copies
2436the current Info node name into the kill ring. With a zero prefix 2113the current Info node name into the kill ring. With a zero prefix
2437arg, puts the node name inside the `info' function call. 2114arg, puts the node name inside the `info' function call.
2438 2115
2439+++
2440*** New face `info-xref-visited' distinguishes visited nodes from unvisited 2116*** New face `info-xref-visited' distinguishes visited nodes from unvisited
2441and a new option `Info-fontify-visited-nodes' to control this. 2117and a new option `Info-fontify-visited-nodes' to control this.
2442 2118
2443---
2444*** http and ftp links in Info are now operational: they look like cross 2119*** http and ftp links in Info are now operational: they look like cross
2445references and following them calls `browse-url'. 2120references and following them calls `browse-url'.
2446 2121
2447+++
2448*** Info now hides node names in menus and cross references by default. 2122*** Info now hides node names in menus and cross references by default.
2449 2123
2450If you prefer the old behavior, you can set the new user option 2124If you prefer the old behavior, you can set the new user option
2451`Info-hide-note-references' to nil. 2125`Info-hide-note-references' to nil.
2452 2126
2453---
2454*** Images in Info pages are supported. 2127*** Images in Info pages are supported.
2455 2128
2456Info pages show embedded images, in Emacs frames with image support. 2129Info pages show embedded images, in Emacs frames with image support.
2457Info documentation that includes images, processed with makeinfo 2130Info documentation that includes images, processed with makeinfo
2458version 4.7 or newer, compiles to Info pages with embedded images. 2131version 4.7 or newer, compiles to Info pages with embedded images.
2459 2132
2460+++
2461*** The default value for `Info-scroll-prefer-subnodes' is now nil. 2133*** The default value for `Info-scroll-prefer-subnodes' is now nil.
2462 2134
2463---
2464*** `Info-index' offers completion. 2135*** `Info-index' offers completion.
2465 2136
2466** Lisp mode changes: 2137** Lisp mode changes:
2467 2138
2468---
2469*** Lisp mode now uses `font-lock-doc-face' for doc strings. 2139*** Lisp mode now uses `font-lock-doc-face' for doc strings.
2470 2140
2471+++
2472*** C-u C-M-q in Emacs Lisp mode pretty-prints the list after point. 2141*** C-u C-M-q in Emacs Lisp mode pretty-prints the list after point.
2473 2142
2474*** New features in evaluation commands 2143*** New features in evaluation commands
2475 2144
2476+++
2477**** The function `eval-defun' (C-M-x) called on defface reinitializes 2145**** The function `eval-defun' (C-M-x) called on defface reinitializes
2478the face to the value specified in the defface expression. 2146the face to the value specified in the defface expression.
2479 2147
2480+++
2481**** Typing C-x C-e twice prints the value of the integer result 2148**** Typing C-x C-e twice prints the value of the integer result
2482in additional formats (octal, hexadecimal, character) specified 2149in additional formats (octal, hexadecimal, character) specified
2483by the new function `eval-expression-print-format'. The same 2150by the new function `eval-expression-print-format'. The same
2484function also defines the result format for `eval-expression' (M-:), 2151function also defines the result format for `eval-expression' (M-:),
2485`eval-print-last-sexp' (C-j) and some edebug evaluation functions. 2152`eval-print-last-sexp' (C-j) and some edebug evaluation functions.
2486 2153
2487+++
2488** CC mode changes. 2154** CC mode changes.
2489 2155
2490*** The CC Mode manual has been extensively revised. 2156*** The CC Mode manual has been extensively revised.
@@ -2812,14 +2478,11 @@ line is left untouched.
2812The function `c-toggle-syntactic-indentation' can be used to toggle 2478The function `c-toggle-syntactic-indentation' can be used to toggle
2813syntactic indentation. 2479syntactic indentation.
2814 2480
2815---
2816** In sh-script, a continuation line is only indented if the backslash was 2481** In sh-script, a continuation line is only indented if the backslash was
2817preceded by a SPC or a TAB. 2482preceded by a SPC or a TAB.
2818 2483
2819---
2820** Perl mode has a new variable `perl-indent-continued-arguments'. 2484** Perl mode has a new variable `perl-indent-continued-arguments'.
2821 2485
2822---
2823** The old Octave mode bindings C-c f and C-c i have been changed 2486** The old Octave mode bindings C-c f and C-c i have been changed
2824to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate 2487to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate
2825bindings on control characters--thus, C-c C-i C-b is the same as 2488bindings on control characters--thus, C-c C-i C-b is the same as
@@ -2827,34 +2490,27 @@ C-c C-i b, and so on.
2827 2490
2828** Fortran mode changes: 2491** Fortran mode changes:
2829 2492
2830---
2831*** Fortran mode does more font-locking by default. Use level 3 2493*** Fortran mode does more font-locking by default. Use level 3
2832highlighting for the old default. 2494highlighting for the old default.
2833 2495
2834+++
2835*** Fortran mode has a new variable `fortran-directive-re'. 2496*** Fortran mode has a new variable `fortran-directive-re'.
2836Adapt this to match the format of any compiler directives you use. 2497Adapt this to match the format of any compiler directives you use.
2837Lines that match are never indented, and are given distinctive font-locking. 2498Lines that match are never indented, and are given distinctive font-locking.
2838 2499
2839+++
2840*** F90 mode and Fortran mode have new navigation commands 2500*** F90 mode and Fortran mode have new navigation commands
2841`f90-end-of-block', `f90-beginning-of-block', `f90-next-block', 2501`f90-end-of-block', `f90-beginning-of-block', `f90-next-block',
2842`f90-previous-block', `fortran-end-of-block', 2502`f90-previous-block', `fortran-end-of-block',
2843`fortran-beginning-of-block'. 2503`fortran-beginning-of-block'.
2844 2504
2845---
2846*** F90 mode and Fortran mode have support for `hs-minor-mode' (hideshow). 2505*** F90 mode and Fortran mode have support for `hs-minor-mode' (hideshow).
2847It cannot deal with every code format, but ought to handle a sizeable 2506It cannot deal with every code format, but ought to handle a sizeable
2848majority. 2507majority.
2849 2508
2850---
2851*** The new function `f90-backslash-not-special' can be used to change 2509*** The new function `f90-backslash-not-special' can be used to change
2852the syntax of backslashes in F90 buffers. 2510the syntax of backslashes in F90 buffers.
2853 2511
2854---
2855** Reftex mode changes 2512** Reftex mode changes
2856 2513
2857+++
2858*** Changes to RefTeX's table of contents 2514*** Changes to RefTeX's table of contents
2859 2515
2860The new command keys "<" and ">" in the TOC buffer promote/demote the 2516The new command keys "<" and ">" in the TOC buffer promote/demote the
@@ -2879,7 +2535,6 @@ key `M-%'.
2879The new command `reftex-goto-label' jumps directly to a label 2535The new command `reftex-goto-label' jumps directly to a label
2880location. 2536location.
2881 2537
2882+++
2883*** Changes related to citations and BibTeX database files 2538*** Changes related to citations and BibTeX database files
2884 2539
2885Commands that insert a citation now prompt for optional arguments when 2540Commands that insert a citation now prompt for optional arguments when
@@ -2902,13 +2557,11 @@ can be configured with the new option `reftex-bibliography-commands'.
2902 2557
2903Support for jurabib has been added. 2558Support for jurabib has been added.
2904 2559
2905+++
2906*** Global index matched may be verified with a user function 2560*** Global index matched may be verified with a user function
2907 2561
2908During global indexing, a user function can verify an index match. 2562During global indexing, a user function can verify an index match.
2909See new option `reftex-index-verify-function'. 2563See new option `reftex-index-verify-function'.
2910 2564
2911+++
2912*** Parsing documents with many labels can be sped up. 2565*** Parsing documents with many labels can be sped up.
2913 2566
2914Operating in a document with thousands of labels can be sped up 2567Operating in a document with thousands of labels can be sped up
@@ -2918,7 +2571,6 @@ from the label prefix like `eq:' or `fig:'. The option
2918this feature. While the speed-up is significant, this may reduce the 2571this feature. While the speed-up is significant, this may reduce the
2919quality of the context offered by RefTeX to describe a label. 2572quality of the context offered by RefTeX to describe a label.
2920 2573
2921+++
2922*** Miscellaneous changes 2574*** Miscellaneous changes
2923 2575
2924The macros which input a file in LaTeX (like \input, \include) can be 2576The macros which input a file in LaTeX (like \input, \include) can be
@@ -2926,17 +2578,14 @@ configured in the new option `reftex-include-file-commands'.
2926 2578
2927RefTeX supports global incremental search. 2579RefTeX supports global incremental search.
2928 2580
2929+++
2930** Prolog mode has a new variable `prolog-font-lock-keywords' 2581** Prolog mode has a new variable `prolog-font-lock-keywords'
2931to support use of font-lock. 2582to support use of font-lock.
2932 2583
2933** HTML/SGML changes: 2584** HTML/SGML changes:
2934 2585
2935---
2936*** Emacs now tries to set up buffer coding systems for HTML/XML files 2586*** Emacs now tries to set up buffer coding systems for HTML/XML files
2937automatically. 2587automatically.
2938 2588
2939+++
2940*** SGML mode has indentation and supports XML syntax. 2589*** SGML mode has indentation and supports XML syntax.
2941The new variable `sgml-xml-mode' tells SGML mode to use XML syntax. 2590The new variable `sgml-xml-mode' tells SGML mode to use XML syntax.
2942When this option is enabled, SGML tags are inserted in XML style, 2591When this option is enabled, SGML tags are inserted in XML style,
@@ -2944,33 +2593,26 @@ i.e., there is always a closing tag.
2944By default, its setting is inferred on a buffer-by-buffer basis 2593By default, its setting is inferred on a buffer-by-buffer basis
2945from the file name or buffer contents. 2594from the file name or buffer contents.
2946 2595
2947---
2948*** The variable `sgml-transformation' has been renamed to 2596*** The variable `sgml-transformation' has been renamed to
2949`sgml-transformation-function'. The old name is still available as 2597`sgml-transformation-function'. The old name is still available as
2950alias. 2598alias.
2951 2599
2952+++
2953*** `xml-mode' is now an alias for `sgml-mode', which has XML support. 2600*** `xml-mode' is now an alias for `sgml-mode', which has XML support.
2954 2601
2955** TeX modes: 2602** TeX modes:
2956 2603
2957+++
2958*** C-c C-c prompts for a command to run, and tries to offer a good default. 2604*** C-c C-c prompts for a command to run, and tries to offer a good default.
2959 2605
2960+++
2961*** The user option `tex-start-options-string' has been replaced 2606*** The user option `tex-start-options-string' has been replaced
2962by two new user options: `tex-start-options', which should hold 2607by two new user options: `tex-start-options', which should hold
2963command-line options to feed to TeX, and `tex-start-commands' which should hold 2608command-line options to feed to TeX, and `tex-start-commands' which should hold
2964TeX commands to use at startup. 2609TeX commands to use at startup.
2965 2610
2966---
2967*** verbatim environments are now highlighted in courier by font-lock 2611*** verbatim environments are now highlighted in courier by font-lock
2968and super/sub-scripts are made into super/sub-scripts. 2612and super/sub-scripts are made into super/sub-scripts.
2969 2613
2970+++
2971*** New major mode Doctex mode, for *.dtx files. 2614*** New major mode Doctex mode, for *.dtx files.
2972 2615
2973---
2974** BibTeX mode: 2616** BibTeX mode:
2975 2617
2976*** The new command `bibtex-url' browses a URL for the BibTeX entry at 2618*** The new command `bibtex-url' browses a URL for the BibTeX entry at
@@ -3027,27 +2669,22 @@ extracting the content of a BibTeX field.
3027`bibtex-autokey-titleword-case-convert-function'. The old names are 2669`bibtex-autokey-titleword-case-convert-function'. The old names are
3028still available as aliases. 2670still available as aliases.
3029 2671
3030+++
3031** In Artist mode the variable `artist-text-renderer' has been 2672** In Artist mode the variable `artist-text-renderer' has been
3032renamed to `artist-text-renderer-function'. The old name is still 2673renamed to `artist-text-renderer-function'. The old name is still
3033available as alias. 2674available as alias.
3034 2675
3035+++
3036** In Enriched mode, `set-left-margin' and `set-right-margin' are now 2676** In Enriched mode, `set-left-margin' and `set-right-margin' are now
3037by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l' 2677by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
3038and `C-c C-r'. 2678and `C-c C-r'.
3039 2679
3040** GUD changes: 2680** GUD changes:
3041 2681
3042+++
3043*** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program 2682*** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program
3044counter to the specified source line (the one where point is). 2683counter to the specified source line (the one where point is).
3045 2684
3046---
3047*** GUD mode has its own tool bar for controlling execution of the inferior 2685*** GUD mode has its own tool bar for controlling execution of the inferior
3048and other common debugger commands. 2686and other common debugger commands.
3049 2687
3050+++
3051*** The new package gdb-ui.el provides an enhanced graphical interface to 2688*** The new package gdb-ui.el provides an enhanced graphical interface to
3052GDB. You can interact with GDB through the GUD buffer in the usual way, but 2689GDB. You can interact with GDB through the GUD buffer in the usual way, but
3053there are also further buffers which control the execution and describe the 2690there are also further buffers which control the execution and describe the
@@ -3059,17 +2696,14 @@ breakpoints.
3059To use this package just type M-x gdb. See the Emacs manual if you want the 2696To use this package just type M-x gdb. See the Emacs manual if you want the
3060old behaviour. 2697old behaviour.
3061 2698
3062---
3063*** The variable tooltip-gud-tips-p has been removed. GUD tooltips can now be 2699*** The variable tooltip-gud-tips-p has been removed. GUD tooltips can now be
3064toggled independently of normal tooltips with the minor mode 2700toggled independently of normal tooltips with the minor mode
3065`gud-tooltip-mode'. 2701`gud-tooltip-mode'.
3066 2702
3067+++
3068*** In graphical mode, with a C program, GUD Tooltips have been extended to 2703*** In graphical mode, with a C program, GUD Tooltips have been extended to
3069display the #define directive associated with an identifier when program is 2704display the #define directive associated with an identifier when program is
3070not executing. 2705not executing.
3071 2706
3072---
3073** GUD mode improvements for jdb: 2707** GUD mode improvements for jdb:
3074 2708
3075*** Search for source files using jdb classpath and class information. 2709*** Search for source files using jdb classpath and class information.
@@ -3114,7 +2748,6 @@ compatibility, it prefers `starttls', but you can toggle
3114 2748
3115** Auto-Revert changes: 2749** Auto-Revert changes:
3116 2750
3117+++
3118*** You can now use Auto Revert mode to `tail' a file. 2751*** You can now use Auto Revert mode to `tail' a file.
3119 2752
3120If point is at the end of a file buffer before reverting, Auto Revert 2753If point is at the end of a file buffer before reverting, Auto Revert
@@ -3130,7 +2763,6 @@ then you can tail the file more efficiently by using the new minor
3130mode Auto Revert Tail mode. The function `auto-revert-tail-mode' 2763mode Auto Revert Tail mode. The function `auto-revert-tail-mode'
3131toggles this mode. 2764toggles this mode.
3132 2765
3133+++
3134*** Auto Revert mode is now more careful to avoid excessive reverts and 2766*** Auto Revert mode is now more careful to avoid excessive reverts and
3135other potential problems when deciding which non-file buffers to 2767other potential problems when deciding which non-file buffers to
3136revert. This matters especially if Global Auto Revert mode is enabled 2768revert. This matters especially if Global Auto Revert mode is enabled
@@ -3141,14 +2773,12 @@ decides whether the buffer should be reverted. Currently, this means
3141that auto reverting works for Dired buffers (although this may not 2773that auto reverting works for Dired buffers (although this may not
3142work properly on all operating systems) and for the Buffer Menu. 2774work properly on all operating systems) and for the Buffer Menu.
3143 2775
3144+++
3145*** If the new user option `auto-revert-check-vc-info' is non-nil, Auto 2776*** If the new user option `auto-revert-check-vc-info' is non-nil, Auto
3146Revert mode reliably updates version control info (such as the version 2777Revert mode reliably updates version control info (such as the version
3147control number in the mode line), in all version controlled buffers in 2778control number in the mode line), in all version controlled buffers in
3148which it is active. If the option is nil, the default, then this info 2779which it is active. If the option is nil, the default, then this info
3149only gets updated whenever the buffer gets reverted. 2780only gets updated whenever the buffer gets reverted.
3150 2781
3151---
3152** recentf changes. 2782** recentf changes.
3153 2783
3154The recent file list is now automatically cleaned up when recentf mode is 2784The recent file list is now automatically cleaned up when recentf mode is
@@ -3173,27 +2803,21 @@ To follow naming convention, `recentf-menu-append-commands-flag'
3173replaces the misnamed option `recentf-menu-append-commands-p'. The 2803replaces the misnamed option `recentf-menu-append-commands-p'. The
3174old name remains available as alias, but has been marked obsolete. 2804old name remains available as alias, but has been marked obsolete.
3175 2805
3176+++
3177** Desktop package 2806** Desktop package
3178 2807
3179+++
3180*** Desktop saving is now a minor mode, `desktop-save-mode'. 2808*** Desktop saving is now a minor mode, `desktop-save-mode'.
3181 2809
3182+++
3183*** The variable `desktop-enable' is obsolete. 2810*** The variable `desktop-enable' is obsolete.
3184 2811
3185Customize `desktop-save-mode' to enable desktop saving. 2812Customize `desktop-save-mode' to enable desktop saving.
3186 2813
3187---
3188*** Buffers are saved in the desktop file in the same order as that in the 2814*** Buffers are saved in the desktop file in the same order as that in the
3189buffer list. 2815buffer list.
3190 2816
3191+++
3192*** The desktop package can be customized to restore only some buffers 2817*** The desktop package can be customized to restore only some buffers
3193immediately, remaining buffers are restored lazily (when Emacs is 2818immediately, remaining buffers are restored lazily (when Emacs is
3194idle). 2819idle).
3195 2820
3196+++
3197*** New commands: 2821*** New commands:
3198 - desktop-revert reverts to the last loaded desktop. 2822 - desktop-revert reverts to the last loaded desktop.
3199 - desktop-change-dir kills current desktop and loads a new. 2823 - desktop-change-dir kills current desktop and loads a new.
@@ -3202,7 +2826,6 @@ idle).
3202 - desktop-lazy-complete runs the desktop load to completion. 2826 - desktop-lazy-complete runs the desktop load to completion.
3203 - desktop-lazy-abort aborts lazy loading of the desktop. 2827 - desktop-lazy-abort aborts lazy loading of the desktop.
3204 2828
3205---
3206*** New customizable variables: 2829*** New customizable variables:
3207 - desktop-save. Determines whether the desktop should be saved when it is 2830 - desktop-save. Determines whether the desktop should be saved when it is
3208 killed. 2831 killed.
@@ -3217,15 +2840,12 @@ idle).
3217 - desktop-lazy-verbose. Verbose reporting of lazily created buffers. 2840 - desktop-lazy-verbose. Verbose reporting of lazily created buffers.
3218 - desktop-lazy-idle-delay. Idle delay before starting to create buffers. 2841 - desktop-lazy-idle-delay. Idle delay before starting to create buffers.
3219 2842
3220+++
3221*** New command line option --no-desktop 2843*** New command line option --no-desktop
3222 2844
3223---
3224*** New hooks: 2845*** New hooks:
3225 - desktop-after-read-hook run after a desktop is loaded. 2846 - desktop-after-read-hook run after a desktop is loaded.
3226 - desktop-no-desktop-file-hook run when no desktop file is found. 2847 - desktop-no-desktop-file-hook run when no desktop file is found.
3227 2848
3228---
3229** The saveplace.el package now filters out unreadable files. 2849** The saveplace.el package now filters out unreadable files.
3230 2850
3231When you exit Emacs, the saved positions in visited files no longer 2851When you exit Emacs, the saved positions in visited files no longer
@@ -3237,25 +2857,21 @@ feature.
3237 2857
3238** EDiff changes. 2858** EDiff changes.
3239 2859
3240+++
3241*** When comparing directories. 2860*** When comparing directories.
3242Typing D brings up a buffer that lists the differences between the contents of 2861Typing D brings up a buffer that lists the differences between the contents of
3243directories. Now it is possible to use this buffer to copy the missing files 2862directories. Now it is possible to use this buffer to copy the missing files
3244from one directory to another. 2863from one directory to another.
3245 2864
3246+++
3247*** When comparing files or buffers. 2865*** When comparing files or buffers.
3248Typing the = key now offers to perform the word-by-word comparison of the 2866Typing the = key now offers to perform the word-by-word comparison of the
3249currently highlighted regions in an inferior Ediff session. If you answer 'n' 2867currently highlighted regions in an inferior Ediff session. If you answer 'n'
3250then it reverts to the old behavior and asks the user to select regions for 2868then it reverts to the old behavior and asks the user to select regions for
3251comparison. 2869comparison.
3252 2870
3253+++
3254*** The new command `ediff-backup' compares a file with its most recent 2871*** The new command `ediff-backup' compares a file with its most recent
3255backup using `ediff'. If you specify the name of a backup file, 2872backup using `ediff'. If you specify the name of a backup file,
3256`ediff-backup' compares it with the file of which it is a backup. 2873`ediff-backup' compares it with the file of which it is a backup.
3257 2874
3258+++
3259** Etags changes. 2875** Etags changes.
3260 2876
3261*** New regular expressions features 2877*** New regular expressions features
@@ -3358,7 +2974,6 @@ struct members in C, members variables in C++ and variables in PHP.
3358 2974
3359** VC Changes 2975** VC Changes
3360 2976
3361+++
3362*** The key C-x C-q only changes the read-only state of the buffer 2977*** The key C-x C-q only changes the read-only state of the buffer
3363(toggle-read-only). It no longer checks files in or out. 2978(toggle-read-only). It no longer checks files in or out.
3364 2979
@@ -3371,7 +2986,6 @@ behavior, you can bind `vc-toggle-read-only' to C-x C-q in your
3371 2986
3372The function `vc-toggle-read-only' will continue to exist. 2987The function `vc-toggle-read-only' will continue to exist.
3373 2988
3374+++
3375*** The new variable `vc-cvs-global-switches' specifies switches that 2989*** The new variable `vc-cvs-global-switches' specifies switches that
3376are passed to any CVS command invoked by VC. 2990are passed to any CVS command invoked by VC.
3377 2991
@@ -3379,10 +2993,8 @@ These switches are used as "global options" for CVS, which means they
3379are inserted before the command name. For example, this allows you to 2993are inserted before the command name. For example, this allows you to
3380specify a compression level using the `-z#' option for CVS. 2994specify a compression level using the `-z#' option for CVS.
3381 2995
3382+++
3383*** New backends for Subversion and Meta-CVS. 2996*** New backends for Subversion and Meta-CVS.
3384 2997
3385+++
3386*** VC-Annotate mode enhancements 2998*** VC-Annotate mode enhancements
3387 2999
3388In VC-Annotate mode, you can now use the following key bindings for 3000In VC-Annotate mode, you can now use the following key bindings for
@@ -3399,23 +3011,19 @@ to view diffs or log entries directly from vc-annotate-mode:
3399 3011
3400** pcl-cvs changes: 3012** pcl-cvs changes:
3401 3013
3402+++
3403*** In pcl-cvs mode, there is a new `d y' command to view the diffs 3014*** In pcl-cvs mode, there is a new `d y' command to view the diffs
3404between the local version of the file and yesterday's head revision 3015between the local version of the file and yesterday's head revision
3405in the repository. 3016in the repository.
3406 3017
3407+++
3408*** In pcl-cvs mode, there is a new `d r' command to view the changes 3018*** In pcl-cvs mode, there is a new `d r' command to view the changes
3409anyone has committed to the repository since you last executed 3019anyone has committed to the repository since you last executed
3410`checkout', `update' or `commit'. That means using cvs diff options 3020`checkout', `update' or `commit'. That means using cvs diff options
3411-rBASE -rHEAD. 3021-rBASE -rHEAD.
3412 3022
3413+++
3414** The new variable `mail-default-directory' specifies 3023** The new variable `mail-default-directory' specifies
3415`default-directory' for mail buffers. This directory is used for 3024`default-directory' for mail buffers. This directory is used for
3416auto-save files of mail buffers. It defaults to "~/". 3025auto-save files of mail buffers. It defaults to "~/".
3417 3026
3418+++
3419** The mode line can indicate new mail in a directory or file. 3027** The mode line can indicate new mail in a directory or file.
3420 3028
3421See the documentation of the user option 3029See the documentation of the user option
@@ -3423,15 +3031,12 @@ See the documentation of the user option
3423 3031
3424** Rmail changes: 3032** Rmail changes:
3425 3033
3426---
3427*** Rmail now displays 5-digit message ids in its summary buffer. 3034*** Rmail now displays 5-digit message ids in its summary buffer.
3428 3035
3429+++
3430*** The new commands rmail-end-of-message and rmail-summary end-of-message, 3036*** The new commands rmail-end-of-message and rmail-summary end-of-message,
3431by default bound to `/', go to the end of the current mail message in 3037by default bound to `/', go to the end of the current mail message in
3432Rmail and Rmail summary buffers. 3038Rmail and Rmail summary buffers.
3433 3039
3434+++
3435*** Support for `movemail' from GNU mailutils was added to Rmail. 3040*** Support for `movemail' from GNU mailutils was added to Rmail.
3436 3041
3437This version of `movemail' allows to read mail from a wide range of 3042This version of `movemail' allows to read mail from a wide range of
@@ -3442,18 +3047,15 @@ used instead of the native one.
3442 3047
3443** Gnus package 3048** Gnus package
3444 3049
3445---
3446*** Gnus now includes Sieve and PGG 3050*** Gnus now includes Sieve and PGG
3447 3051
3448Sieve is a library for managing Sieve scripts. PGG is a library to handle 3052Sieve is a library for managing Sieve scripts. PGG is a library to handle
3449PGP/MIME. 3053PGP/MIME.
3450 3054
3451---
3452*** There are many news features, bug fixes and improvements. 3055*** There are many news features, bug fixes and improvements.
3453 3056
3454See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details. 3057See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details.
3455 3058
3456---
3457** MH-E changes. 3059** MH-E changes.
3458 3060
3459Upgraded to MH-E version 8.0.3. There have been major changes since 3061Upgraded to MH-E version 8.0.3. There have been major changes since
@@ -3461,23 +3063,18 @@ version 5.0.2; see MH-E-NEWS for details.
3461 3063
3462** Calendar changes: 3064** Calendar changes:
3463 3065
3464+++
3465*** The meanings of C-x < and C-x > have been interchanged. 3066*** The meanings of C-x < and C-x > have been interchanged.
3466< means to scroll backward in time, and > means to scroll forward. 3067< means to scroll backward in time, and > means to scroll forward.
3467 3068
3468+++
3469*** You can now use < and >, instead of C-x < and C-x >, to scroll 3069*** You can now use < and >, instead of C-x < and C-x >, to scroll
3470the calendar left or right. 3070the calendar left or right.
3471 3071
3472+++
3473*** There is a new calendar package, icalendar.el, that can be used to 3072*** There is a new calendar package, icalendar.el, that can be used to
3474convert Emacs diary entries to/from the iCalendar format. 3073convert Emacs diary entries to/from the iCalendar format.
3475 3074
3476+++
3477*** The new package cal-html.el writes HTML files with calendar and 3075*** The new package cal-html.el writes HTML files with calendar and
3478diary entries. 3076diary entries.
3479 3077
3480+++
3481*** Diary sexp entries can have custom marking in the calendar. 3078*** Diary sexp entries can have custom marking in the calendar.
3482Diary sexp functions which only apply to certain days (such as 3079Diary sexp functions which only apply to certain days (such as
3483`diary-block' or `diary-cyclic') now take an optional parameter MARK, 3080`diary-block' or `diary-cyclic') now take an optional parameter MARK,
@@ -3488,45 +3085,37 @@ day in the calendar. Specifying a face highlights the day with that
3488face. This lets you have different colors or markings for vacations, 3085face. This lets you have different colors or markings for vacations,
3489appointments, paydays or anything else using a sexp. 3086appointments, paydays or anything else using a sexp.
3490 3087
3491+++
3492*** The new function `calendar-goto-day-of-year' (g D) prompts for a 3088*** The new function `calendar-goto-day-of-year' (g D) prompts for a
3493year and day number, and moves to that date. Negative day numbers 3089year and day number, and moves to that date. Negative day numbers
3494count backward from the end of the year. 3090count backward from the end of the year.
3495 3091
3496+++
3497*** The new Calendar function `calendar-goto-iso-week' (g w) 3092*** The new Calendar function `calendar-goto-iso-week' (g w)
3498prompts for a year and a week number, and moves to the first 3093prompts for a year and a week number, and moves to the first
3499day of that ISO week. 3094day of that ISO week.
3500 3095
3501---
3502*** The new variable `calendar-minimum-window-height' affects the 3096*** The new variable `calendar-minimum-window-height' affects the
3503window generated by the function `generate-calendar-window'. 3097window generated by the function `generate-calendar-window'.
3504 3098
3505---
3506*** The functions `holiday-easter-etc' and `holiday-advent' now take 3099*** The functions `holiday-easter-etc' and `holiday-advent' now take
3507optional arguments, in order to only report on the specified holiday 3100optional arguments, in order to only report on the specified holiday
3508rather than all. This makes customization of variables such as 3101rather than all. This makes customization of variables such as
3509`christian-holidays' simpler. 3102`christian-holidays' simpler.
3510 3103
3511---
3512*** The function `simple-diary-display' now by default sets a header line. 3104*** The function `simple-diary-display' now by default sets a header line.
3513This can be controlled through the variables `diary-header-line-flag' 3105This can be controlled through the variables `diary-header-line-flag'
3514and `diary-header-line-format'. 3106and `diary-header-line-format'.
3515 3107
3516+++
3517*** The procedure for activating appointment reminders has changed: 3108*** The procedure for activating appointment reminders has changed:
3518use the new function `appt-activate'. The new variable 3109use the new function `appt-activate'. The new variable
3519`appt-display-format' controls how reminders are displayed, replacing 3110`appt-display-format' controls how reminders are displayed, replacing
3520`appt-issue-message', `appt-visible', and `appt-msg-window'. 3111`appt-issue-message', `appt-visible', and `appt-msg-window'.
3521 3112
3522+++
3523*** The new functions `diary-from-outlook', `diary-from-outlook-gnus', 3113*** The new functions `diary-from-outlook', `diary-from-outlook-gnus',
3524and `diary-from-outlook-rmail' can be used to import diary entries 3114and `diary-from-outlook-rmail' can be used to import diary entries
3525from Outlook-format appointments in mail messages. The variable 3115from Outlook-format appointments in mail messages. The variable
3526`diary-outlook-formats' can be customized to recognize additional 3116`diary-outlook-formats' can be customized to recognize additional
3527formats. 3117formats.
3528 3118
3529+++
3530** Speedbar changes: 3119** Speedbar changes:
3531 3120
3532*** Speedbar items can now be selected by clicking mouse-1, based on 3121*** Speedbar items can now be selected by clicking mouse-1, based on
@@ -3570,7 +3159,6 @@ should use `dframe-attached-frame' instead of
3570`speedbar-update-speed' and `speedbar-navigating-speed' are also 3159`speedbar-update-speed' and `speedbar-navigating-speed' are also
3571obsolete; use `dframe-update-speed' instead. 3160obsolete; use `dframe-update-speed' instead.
3572 3161
3573---
3574** sql changes. 3162** sql changes.
3575 3163
3576*** The variable `sql-product' controls the highlighting of different 3164*** The variable `sql-product' controls the highlighting of different
@@ -3644,12 +3232,10 @@ defaults.
3644appropriate `sql-interactive-mode' wrapper for the current setting of 3232appropriate `sql-interactive-mode' wrapper for the current setting of
3645`sql-product'. 3233`sql-product'.
3646 3234
3647---
3648*** sql.el supports the SQLite interpreter--call 'sql-sqlite'. 3235*** sql.el supports the SQLite interpreter--call 'sql-sqlite'.
3649 3236
3650** FFAP changes: 3237** FFAP changes:
3651 3238
3652+++
3653*** New ffap commands and keybindings: 3239*** New ffap commands and keybindings:
3654 3240
3655C-x C-r (`ffap-read-only'), 3241C-x C-r (`ffap-read-only'),
@@ -3657,13 +3243,11 @@ C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'),
3657C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'), 3243C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'),
3658C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame'). 3244C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame').
3659 3245
3660---
3661*** FFAP accepts wildcards in a file name by default. 3246*** FFAP accepts wildcards in a file name by default.
3662 3247
3663C-x C-f passes the file name to `find-file' with non-nil WILDCARDS 3248C-x C-f passes the file name to `find-file' with non-nil WILDCARDS
3664argument, which visits multiple files, and C-x d passes it to `dired'. 3249argument, which visits multiple files, and C-x d passes it to `dired'.
3665 3250
3666---
3667** Changes in Skeleton 3251** Changes in Skeleton
3668 3252
3669*** In skeleton.el, `-' marks the `skeleton-point' without interregion interaction. 3253*** In skeleton.el, `-' marks the `skeleton-point' without interregion interaction.
@@ -3680,7 +3264,6 @@ with other details of skeleton construction.
3680`skeleton-pair-filter-function'. The old names are still available 3264`skeleton-pair-filter-function'. The old names are still available
3681as aliases. 3265as aliases.
3682 3266
3683---
3684** Hideshow mode changes 3267** Hideshow mode changes
3685 3268
3686*** New variable `hs-set-up-overlay' allows customization of the overlay 3269*** New variable `hs-set-up-overlay' allows customization of the overlay
@@ -3692,28 +3275,23 @@ temporary overlay showing in the course of an isearch operation.
3692not discard the hidden state of any "internal" blocks; when the parent 3275not discard the hidden state of any "internal" blocks; when the parent
3693block is later shown, the internal blocks remain hidden. Default is nil. 3276block is later shown, the internal blocks remain hidden. Default is nil.
3694 3277
3695+++
3696** `hide-ifdef-mode' now uses overlays rather than selective-display 3278** `hide-ifdef-mode' now uses overlays rather than selective-display
3697to hide its text. This should be mostly transparent but slightly 3279to hide its text. This should be mostly transparent but slightly
3698changes the behavior of motion commands like C-e and C-p. 3280changes the behavior of motion commands like C-e and C-p.
3699 3281
3700---
3701** `partial-completion-mode' now handles partial completion on directory names. 3282** `partial-completion-mode' now handles partial completion on directory names.
3702 3283
3703---
3704** The type-break package now allows `type-break-file-name' to be nil 3284** The type-break package now allows `type-break-file-name' to be nil
3705and if so, doesn't store any data across sessions. This is handy if 3285and if so, doesn't store any data across sessions. This is handy if
3706you don't want the `.type-break' file in your home directory or are 3286you don't want the `.type-break' file in your home directory or are
3707annoyed by the need for interaction when you kill Emacs. 3287annoyed by the need for interaction when you kill Emacs.
3708 3288
3709---
3710** `ps-print' can now print characters from the mule-unicode charsets. 3289** `ps-print' can now print characters from the mule-unicode charsets.
3711 3290
3712Printing text with characters from the mule-unicode-* sets works with 3291Printing text with characters from the mule-unicode-* sets works with
3713`ps-print', provided that you have installed the appropriate BDF 3292`ps-print', provided that you have installed the appropriate BDF
3714fonts. See the file INSTALL for URLs where you can find these fonts. 3293fonts. See the file INSTALL for URLs where you can find these fonts.
3715 3294
3716---
3717** New command `strokes-global-set-stroke-string'. 3295** New command `strokes-global-set-stroke-string'.
3718This is like `strokes-global-set-stroke', but it allows you to bind 3296This is like `strokes-global-set-stroke', but it allows you to bind
3719the stroke directly to a string to insert. This is convenient for 3297the stroke directly to a string to insert. This is convenient for
@@ -3721,7 +3299,6 @@ using strokes as an input method.
3721 3299
3722** Emacs server changes: 3300** Emacs server changes:
3723 3301
3724+++
3725*** You can have several Emacs servers on the same machine. 3302*** You can have several Emacs servers on the same machine.
3726 3303
3727 % emacs --eval '(setq server-name "foo")' -f server-start & 3304 % emacs --eval '(setq server-name "foo")' -f server-start &
@@ -3729,36 +3306,29 @@ using strokes as an input method.
3729 % emacsclient -s foo file1 3306 % emacsclient -s foo file1
3730 % emacsclient -s bar file2 3307 % emacsclient -s bar file2
3731 3308
3732+++
3733*** The `emacsclient' command understands the options `--eval' and 3309*** The `emacsclient' command understands the options `--eval' and
3734`--display' which tell Emacs respectively to evaluate the given Lisp 3310`--display' which tell Emacs respectively to evaluate the given Lisp
3735expression and to use the given display when visiting files. 3311expression and to use the given display when visiting files.
3736 3312
3737+++
3738*** User option `server-mode' can be used to start a server process. 3313*** User option `server-mode' can be used to start a server process.
3739 3314
3740---
3741** LDAP support now defaults to ldapsearch from OpenLDAP version 2. 3315** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
3742 3316
3743+++
3744** You can now disable pc-selection-mode after enabling it. 3317** You can now disable pc-selection-mode after enabling it.
3745 3318
3746M-x pc-selection-mode behaves like a proper minor mode, and with no 3319M-x pc-selection-mode behaves like a proper minor mode, and with no
3747argument it toggles the mode. Turning off PC-Selection mode restores 3320argument it toggles the mode. Turning off PC-Selection mode restores
3748the global key bindings that were replaced by turning on the mode. 3321the global key bindings that were replaced by turning on the mode.
3749 3322
3750---
3751** `uniquify-strip-common-suffix' tells uniquify to prefer 3323** `uniquify-strip-common-suffix' tells uniquify to prefer
3752`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'. 3324`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
3753 3325
3754---
3755** Support for `magic cookie' standout modes has been removed. 3326** Support for `magic cookie' standout modes has been removed.
3756 3327
3757Emacs still works on terminals that require magic cookies in order to 3328Emacs still works on terminals that require magic cookies in order to
3758use standout mode, but they can no longer display mode-lines in 3329use standout mode, but they can no longer display mode-lines in
3759inverse-video. 3330inverse-video.
3760 3331
3761---
3762** The game `mpuz' is enhanced. 3332** The game `mpuz' is enhanced.
3763 3333
3764`mpuz' now allows the 2nd factor not to have two identical digits. By 3334`mpuz' now allows the 2nd factor not to have two identical digits. By
@@ -3767,13 +3337,10 @@ automatically. The game uses faces for better visual feedback.
3767 3337
3768** battery.el changes: 3338** battery.el changes:
3769 3339
3770---
3771*** display-battery-mode replaces display-battery. 3340*** display-battery-mode replaces display-battery.
3772 3341
3773---
3774*** battery.el now works on recent versions of OS X. 3342*** battery.el now works on recent versions of OS X.
3775 3343
3776---
3777** calculator.el now has radix grouping mode. 3344** calculator.el now has radix grouping mode.
3778 3345
3779To enable this, set `calculator-output-radix' non-nil. In this mode a 3346To enable this, set `calculator-output-radix' non-nil. In this mode a
@@ -3781,19 +3348,14 @@ separator character is used every few digits, making it easier to see
3781byte boundaries etc. For more info, see the documentation of the 3348byte boundaries etc. For more info, see the documentation of the
3782variable `calculator-radix-grouping-mode'. 3349variable `calculator-radix-grouping-mode'.
3783 3350
3784---
3785** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead. 3351** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead.
3786 3352
3787---
3788** iso-acc.el is now obsolete. Use one of the latin input methods instead. 3353** iso-acc.el is now obsolete. Use one of the latin input methods instead.
3789 3354
3790---
3791** zone-mode.el is now obsolete. Use dns-mode.el instead. 3355** zone-mode.el is now obsolete. Use dns-mode.el instead.
3792 3356
3793---
3794** cplus-md.el has been deleted. 3357** cplus-md.el has been deleted.
3795 3358
3796---
3797** Ewoc changes 3359** Ewoc changes
3798 3360
3799*** The new function `ewoc-delete' deletes specified nodes. 3361*** The new function `ewoc-delete' deletes specified nodes.
@@ -3816,7 +3378,6 @@ For example, these two sequences of expressions behave identically:
3816 3378
3817** Locate changes 3379** Locate changes
3818 3380
3819---
3820*** By default, reverting the *Locate* buffer now just runs the last 3381*** By default, reverting the *Locate* buffer now just runs the last
3821`locate' command back over again without offering to update the locate 3382`locate' command back over again without offering to update the locate
3822database (which normally only works if you have root privileges). If 3383database (which normally only works if you have root privileges). If
@@ -3826,7 +3387,6 @@ you prefer the old behavior, set the new customizable option
3826 3387
3827* Changes in Emacs 22.1 on non-free operating systems 3388* Changes in Emacs 22.1 on non-free operating systems
3828 3389
3829+++
3830** The HOME directory defaults to Application Data under the user profile. 3390** The HOME directory defaults to Application Data under the user profile.
3831 3391
3832If you used a previous version of Emacs without setting the HOME 3392If you used a previous version of Emacs without setting the HOME
@@ -3841,7 +3401,6 @@ This change means that users can now have their own `.emacs' files on
3841shared computers, and the default HOME directory is less likely to be 3401shared computers, and the default HOME directory is less likely to be
3842read-only on computers that are administered by someone else. 3402read-only on computers that are administered by someone else.
3843 3403
3844+++
3845** Passing resources on the command line now works on MS Windows. 3404** Passing resources on the command line now works on MS Windows.
3846 3405
3847You can use --xrm to pass resource settings to Emacs, overriding any 3406You can use --xrm to pass resource settings to Emacs, overriding any
@@ -3852,7 +3411,6 @@ existing values. For example:
3852will start up Emacs on an initial frame of 100x20 with red background, 3411will start up Emacs on an initial frame of 100x20 with red background,
3853irrespective of geometry or background setting on the Windows registry. 3412irrespective of geometry or background setting on the Windows registry.
3854 3413
3855---
3856** On MS Windows, the "system caret" now follows the cursor. 3414** On MS Windows, the "system caret" now follows the cursor.
3857 3415
3858This enables Emacs to work better with programs that need to track the 3416This enables Emacs to work better with programs that need to track the
@@ -3862,12 +3420,10 @@ instead of Emacs drawing its own cursor. This seems to be required by
3862some programs. The new variable w32-use-visible-system-caret allows 3420some programs. The new variable w32-use-visible-system-caret allows
3863the caret visibility to be manually toggled. 3421the caret visibility to be manually toggled.
3864 3422
3865---
3866** Tooltips now work on MS Windows. 3423** Tooltips now work on MS Windows.
3867 3424
3868See the Emacs 21.1 NEWS entry for tooltips for details. 3425See the Emacs 21.1 NEWS entry for tooltips for details.
3869 3426
3870---
3871** Images are now supported on MS Windows. 3427** Images are now supported on MS Windows.
3872 3428
3873PBM and XBM images are supported out of the box. Other image formats 3429PBM and XBM images are supported out of the box. Other image formats
@@ -3877,7 +3433,6 @@ http://gnuwin32.sourceforge.net/. Note that libpng also depends on
3877zlib, and tiff depends on the version of jpeg that it was compiled 3433zlib, and tiff depends on the version of jpeg that it was compiled
3878against. For additional information, see nt/INSTALL. 3434against. For additional information, see nt/INSTALL.
3879 3435
3880---
3881** Sound is now supported on MS Windows. 3436** Sound is now supported on MS Windows.
3882 3437
3883WAV format is supported on all versions of Windows, other formats such 3438WAV format is supported on all versions of Windows, other formats such
@@ -3885,19 +3440,16 @@ as AU, AIFF and MP3 may be supported in the more recent versions of
3885Windows, or when other software provides hooks into the system level 3440Windows, or when other software provides hooks into the system level
3886sound support for those formats. 3441sound support for those formats.
3887 3442
3888---
3889** Different shaped mouse pointers are supported on MS Windows. 3443** Different shaped mouse pointers are supported on MS Windows.
3890 3444
3891The mouse pointer changes shape depending on what is under the pointer. 3445The mouse pointer changes shape depending on what is under the pointer.
3892 3446
3893---
3894** Pointing devices with more than 3 buttons are now supported on MS Windows. 3447** Pointing devices with more than 3 buttons are now supported on MS Windows.
3895 3448
3896The new variable `w32-pass-extra-mouse-buttons-to-system' controls 3449The new variable `w32-pass-extra-mouse-buttons-to-system' controls
3897whether Emacs should handle the extra buttons itself (the default), or 3450whether Emacs should handle the extra buttons itself (the default), or
3898pass them to Windows to be handled with system-wide functions. 3451pass them to Windows to be handled with system-wide functions.
3899 3452
3900---
3901** Emacs takes note of colors defined in Control Panel on MS-Windows. 3453** Emacs takes note of colors defined in Control Panel on MS-Windows.
3902 3454
3903The Control Panel defines some default colors for applications in much 3455The Control Panel defines some default colors for applications in much
@@ -3908,7 +3460,6 @@ some of them to initialize some of the default faces.
3908`list-colors-display' shows the list of System color names, in case 3460`list-colors-display' shows the list of System color names, in case
3909you wish to use them in other faces. 3461you wish to use them in other faces.
3910 3462
3911---
3912** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations. 3463** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations.
3913 3464
3914Those systems use Unicode internally, so this allows Emacs to share 3465Those systems use Unicode internally, so this allows Emacs to share
@@ -3917,7 +3468,6 @@ MS Windows, Emacs now uses the appropriate locale coding-system, so
3917the clipboard should work correctly for your local language without 3468the clipboard should work correctly for your local language without
3918any customizations. 3469any customizations.
3919 3470
3920---
3921** Running in a console window in Windows now uses the console size. 3471** Running in a console window in Windows now uses the console size.
3922 3472
3923Previous versions of Emacs erred on the side of having a usable Emacs 3473Previous versions of Emacs erred on the side of having a usable Emacs
@@ -3931,46 +3481,37 @@ defaults to 80x25. If you use such a telnet server regularly at a size
3931other than 80x25, you can still manually set 3481other than 80x25, you can still manually set
3932w32-use-full-screen-buffer to t. 3482w32-use-full-screen-buffer to t.
3933 3483
3934---
3935** On Mac OS, `keyboard-coding-system' changes based on the keyboard script. 3484** On Mac OS, `keyboard-coding-system' changes based on the keyboard script.
3936 3485
3937---
3938** The variable `mac-keyboard-text-encoding' and the constants 3486** The variable `mac-keyboard-text-encoding' and the constants
3939`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and 3487`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
3940`kTextEncodingISOLatin2' are obsolete. 3488`kTextEncodingISOLatin2' are obsolete.
3941 3489
3942+++
3943** The variable `mac-command-key-is-meta' is obsolete. Use 3490** The variable `mac-command-key-is-meta' is obsolete. Use
3944`mac-command-modifier' and `mac-option-modifier' instead. 3491`mac-command-modifier' and `mac-option-modifier' instead.
3945 3492
3946* Incompatible Lisp Changes in Emacs 22.1 3493* Incompatible Lisp Changes in Emacs 22.1
3947 3494
3948+++
3949** The `read-file-name' function now returns a null string if the 3495** The `read-file-name' function now returns a null string if the
3950user just types RET. 3496user just types RET.
3951 3497
3952+++
3953** The function find-operation-coding-system may be called with a cons 3498** The function find-operation-coding-system may be called with a cons
3954(FILENAME . BUFFER) in the second argument if the first argument 3499(FILENAME . BUFFER) in the second argument if the first argument
3955OPERATION is `insert-file-contents', and thus a function registered in 3500OPERATION is `insert-file-contents', and thus a function registered in
3956`file-coding-system-alist' is also called with such an argument. 3501`file-coding-system-alist' is also called with such an argument.
3957 3502
3958---
3959** The variables post-command-idle-hook and post-command-idle-delay have 3503** The variables post-command-idle-hook and post-command-idle-delay have
3960been removed. Use run-with-idle-timer instead. 3504been removed. Use run-with-idle-timer instead.
3961 3505
3962+++
3963** `suppress-keymap' now works by remapping `self-insert-command' to 3506** `suppress-keymap' now works by remapping `self-insert-command' to
3964the command `undefined'. (In earlier Emacs versions, it used 3507the command `undefined'. (In earlier Emacs versions, it used
3965`substitute-key-definition' to rebind self inserting characters to 3508`substitute-key-definition' to rebind self inserting characters to
3966`undefined'.) 3509`undefined'.)
3967 3510
3968+++
3969** Mode line display ignores text properties as well as the 3511** Mode line display ignores text properties as well as the
3970:propertize and :eval forms in the value of a variable whose 3512:propertize and :eval forms in the value of a variable whose
3971`risky-local-variable' property is nil. 3513`risky-local-variable' property is nil.
3972 3514
3973---
3974The function `comint-send-input' now accepts 3 optional arguments: 3515The function `comint-send-input' now accepts 3 optional arguments:
3975 3516
3976 (comint-send-input &optional no-newline artificial) 3517 (comint-send-input &optional no-newline artificial)
@@ -3979,23 +3520,18 @@ Callers sending input not from the user should use bind the 3rd
3979argument `artificial' to a non-nil value, to prevent Emacs from 3520argument `artificial' to a non-nil value, to prevent Emacs from
3980deleting the part of subprocess output that matches the input. 3521deleting the part of subprocess output that matches the input.
3981 3522
3982---
3983** Support for Mocklisp has been removed. 3523** Support for Mocklisp has been removed.
3984 3524
3985+++
3986** The variable `memory-full' now remains t until 3525** The variable `memory-full' now remains t until
3987there is no longer a shortage of memory. 3526there is no longer a shortage of memory.
3988 3527
3989+++
3990** When Emacs receives a USR1 or USR2 signal, this generates 3528** When Emacs receives a USR1 or USR2 signal, this generates
3991input events: sigusr1 or sigusr2. Use special-event-map to 3529input events: sigusr1 or sigusr2. Use special-event-map to
3992handle these events. 3530handle these events.
3993 3531
3994+++
3995** A hex or octal escape in a string constant forces the string to 3532** A hex or octal escape in a string constant forces the string to
3996be multibyte or unibyte, respectively. 3533be multibyte or unibyte, respectively.
3997 3534
3998+++
3999** The explicit method of creating a display table element by 3535** The explicit method of creating a display table element by
4000combining a face number and a character code into a numeric 3536combining a face number and a character code into a numeric
4001glyph code is deprecated. 3537glyph code is deprecated.
@@ -4009,45 +3545,36 @@ display tables.
4009 3545
4010** General Lisp changes: 3546** General Lisp changes:
4011 3547
4012+++
4013*** The function `expt' handles negative exponents differently. 3548*** The function `expt' handles negative exponents differently.
4014The value for `(expt A B)', if both A and B are integers and B is 3549The value for `(expt A B)', if both A and B are integers and B is
4015negative, is now a float. For example: (expt 2 -2) => 0.25. 3550negative, is now a float. For example: (expt 2 -2) => 0.25.
4016 3551
4017+++
4018*** The function `eql' is now available without requiring the CL package. 3552*** The function `eql' is now available without requiring the CL package.
4019 3553
4020+++
4021*** The new function `memql' is like `memq', but uses `eql' for comparison, 3554*** The new function `memql' is like `memq', but uses `eql' for comparison,
4022that is, floats are compared by value and other elements with `eq'. 3555that is, floats are compared by value and other elements with `eq'.
4023 3556
4024+++
4025*** `makehash' is now obsolete. Use `make-hash-table' instead. 3557*** `makehash' is now obsolete. Use `make-hash-table' instead.
4026 3558
4027+++
4028*** `add-to-list' takes an optional third argument, APPEND. 3559*** `add-to-list' takes an optional third argument, APPEND.
4029 3560
4030If APPEND is non-nil, the new element gets added at the end of the 3561If APPEND is non-nil, the new element gets added at the end of the
4031list instead of at the beginning. This change actually occurred in 3562list instead of at the beginning. This change actually occurred in
4032Emacs 21.1, but was not documented then. 3563Emacs 21.1, but was not documented then.
4033 3564
4034+++
4035*** New function `add-to-ordered-list' is like `add-to-list' but 3565*** New function `add-to-ordered-list' is like `add-to-list' but
4036associates a numeric ordering of each element added to the list. 3566associates a numeric ordering of each element added to the list.
4037 3567
4038+++
4039*** New function `copy-tree' makes a copy of a tree. 3568*** New function `copy-tree' makes a copy of a tree.
4040 3569
4041It recursively copies through both CARs and CDRs. 3570It recursively copies through both CARs and CDRs.
4042 3571
4043+++
4044*** New function `delete-dups' deletes `equal' duplicate elements from a list. 3572*** New function `delete-dups' deletes `equal' duplicate elements from a list.
4045 3573
4046It modifies the list destructively, like `delete'. Of several `equal' 3574It modifies the list destructively, like `delete'. Of several `equal'
4047occurrences of an element in the list, the one that's kept is the 3575occurrences of an element in the list, the one that's kept is the
4048first one. 3576first one.
4049 3577
4050+++
4051*** New function `add-to-history' adds an element to a history list. 3578*** New function `add-to-history' adds an element to a history list.
4052 3579
4053Lisp packages should use this function to add elements to their 3580Lisp packages should use this function to add elements to their
@@ -4056,13 +3583,11 @@ history lists.
4056If `history-delete-duplicates' is non-nil, it removes duplicates of 3583If `history-delete-duplicates' is non-nil, it removes duplicates of
4057the new element from the history list it updates. 3584the new element from the history list it updates.
4058 3585
4059+++
4060*** New function `rassq-delete-all'. 3586*** New function `rassq-delete-all'.
4061 3587
4062(rassq-delete-all VALUE ALIST) deletes, from ALIST, each element whose 3588(rassq-delete-all VALUE ALIST) deletes, from ALIST, each element whose
4063CDR is `eq' to the specified value. 3589CDR is `eq' to the specified value.
4064 3590
4065+++
4066*** The function `number-sequence' makes a list of equally-separated numbers. 3591*** The function `number-sequence' makes a list of equally-separated numbers.
4067 3592
4068For instance, (number-sequence 4 9) returns (4 5 6 7 8 9). By 3593For instance, (number-sequence 4 9) returns (4 5 6 7 8 9). By
@@ -4070,30 +3595,25 @@ default, the separation is 1, but you can specify a different
4070separation as the third argument. (number-sequence 1.5 6 2) returns 3595separation as the third argument. (number-sequence 1.5 6 2) returns
4071(1.5 3.5 5.5). 3596(1.5 3.5 5.5).
4072 3597
4073+++
4074*** New variables `most-positive-fixnum' and `most-negative-fixnum'. 3598*** New variables `most-positive-fixnum' and `most-negative-fixnum'.
4075 3599
4076They hold the largest and smallest possible integer values. 3600They hold the largest and smallest possible integer values.
4077 3601
4078+++
4079*** Minor change in the function `format'. 3602*** Minor change in the function `format'.
4080 3603
4081Some flags that were accepted but not implemented (such as "*") are no 3604Some flags that were accepted but not implemented (such as "*") are no
4082longer accepted. 3605longer accepted.
4083 3606
4084+++
4085*** Functions `get' and `plist-get' no longer give errors for bad plists. 3607*** Functions `get' and `plist-get' no longer give errors for bad plists.
4086 3608
4087They return nil for a malformed property list or if the list is 3609They return nil for a malformed property list or if the list is
4088cyclic. 3610cyclic.
4089 3611
4090+++
4091*** New functions `lax-plist-get' and `lax-plist-put'. 3612*** New functions `lax-plist-get' and `lax-plist-put'.
4092 3613
4093They are like `plist-get' and `plist-put', except that they compare 3614They are like `plist-get' and `plist-put', except that they compare
4094the property name using `equal' rather than `eq'. 3615the property name using `equal' rather than `eq'.
4095 3616
4096+++
4097*** New variable `print-continuous-numbering'. 3617*** New variable `print-continuous-numbering'.
4098 3618
4099When this is non-nil, successive calls to print functions use a single 3619When this is non-nil, successive calls to print functions use a single
@@ -4103,21 +3623,18 @@ relevant when `print-circle' is non-nil.
4103When you bind `print-continuous-numbering' to t, you should 3623When you bind `print-continuous-numbering' to t, you should
4104also bind `print-number-table' to nil. 3624also bind `print-number-table' to nil.
4105 3625
4106+++
4107*** New function `macroexpand-all' expands all macros in a form. 3626*** New function `macroexpand-all' expands all macros in a form.
4108 3627
4109It is similar to the Common-Lisp function of the same name. 3628It is similar to the Common-Lisp function of the same name.
4110One difference is that it guarantees to return the original argument 3629One difference is that it guarantees to return the original argument
4111if no expansion is done, which can be tested using `eq'. 3630if no expansion is done, which can be tested using `eq'.
4112 3631
4113+++
4114*** The function `atan' now accepts an optional second argument. 3632*** The function `atan' now accepts an optional second argument.
4115 3633
4116When called with 2 arguments, as in `(atan Y X)', `atan' returns the 3634When called with 2 arguments, as in `(atan Y X)', `atan' returns the
4117angle in radians between the vector [X, Y] and the X axis. (This is 3635angle in radians between the vector [X, Y] and the X axis. (This is
4118equivalent to the standard C library function `atan2'.) 3636equivalent to the standard C library function `atan2'.)
4119 3637
4120+++
4121*** A function or macro's doc string can now specify the calling pattern. 3638*** A function or macro's doc string can now specify the calling pattern.
4122 3639
4123You put this info in the doc string's last line. It should be 3640You put this info in the doc string's last line. It should be
@@ -4125,7 +3642,6 @@ formatted so as to match the regexp "\n\n(fn .*)\\'". If you don't
4125specify this explicitly, Emacs determines it from the actual argument 3642specify this explicitly, Emacs determines it from the actual argument
4126names. Usually that default is right, but not always. 3643names. Usually that default is right, but not always.
4127 3644
4128+++
4129*** New macro `with-local-quit' temporarily allows quitting. 3645*** New macro `with-local-quit' temporarily allows quitting.
4130 3646
4131A quit inside the body of `with-local-quit' is caught by the 3647A quit inside the body of `with-local-quit' is caught by the
@@ -4135,55 +3651,45 @@ the code that has inhibited quitting exits.
4135This is for use around potentially blocking or long-running code 3651This is for use around potentially blocking or long-running code
4136inside timer functions and `post-command-hook' functions. 3652inside timer functions and `post-command-hook' functions.
4137 3653
4138+++
4139*** New macro `define-obsolete-function-alias'. 3654*** New macro `define-obsolete-function-alias'.
4140 3655
4141This combines `defalias' and `make-obsolete'. 3656This combines `defalias' and `make-obsolete'.
4142 3657
4143+++
4144*** New macro `with-case-table' 3658*** New macro `with-case-table'
4145 3659
4146This executes the body with the case table temporarily set to a given 3660This executes the body with the case table temporarily set to a given
4147case table. 3661case table.
4148 3662
4149+++
4150*** New function `unsafep' determines whether a Lisp form is safe. 3663*** New function `unsafep' determines whether a Lisp form is safe.
4151 3664
4152It returns nil if the given Lisp form can't possibly do anything 3665It returns nil if the given Lisp form can't possibly do anything
4153dangerous; otherwise it returns a reason why the form might be unsafe 3666dangerous; otherwise it returns a reason why the form might be unsafe
4154(calls unknown function, alters global variable, etc.). 3667(calls unknown function, alters global variable, etc.).
4155 3668
4156+++
4157*** New macro `eval-at-startup' specifies expressions to 3669*** New macro `eval-at-startup' specifies expressions to
4158evaluate when Emacs starts up. If this is done after startup, 3670evaluate when Emacs starts up. If this is done after startup,
4159it evaluates those expressions immediately. 3671it evaluates those expressions immediately.
4160 3672
4161This is useful in packages that can be preloaded. 3673This is useful in packages that can be preloaded.
4162 3674
4163+++
4164*** `list-faces-display' takes an optional argument, REGEXP. 3675*** `list-faces-display' takes an optional argument, REGEXP.
4165 3676
4166If it is non-nil, the function lists only faces matching this regexp. 3677If it is non-nil, the function lists only faces matching this regexp.
4167 3678
4168+++
4169*** New functions `string-or-null-p' and `booleanp'. 3679*** New functions `string-or-null-p' and `booleanp'.
4170 3680
4171`string-or-null-p' returns non-nil iff OBJECT is a string or nil. 3681`string-or-null-p' returns non-nil iff OBJECT is a string or nil.
4172`booleanp' returns non-nil iff OBJECT is t or nil. 3682`booleanp' returns non-nil iff OBJECT is t or nil.
4173 3683
4174+++
4175*** New hook `command-error-function'. 3684*** New hook `command-error-function'.
4176 3685
4177By setting this variable to a function, you can control 3686By setting this variable to a function, you can control
4178how the editor command loop shows the user an error message. 3687how the editor command loop shows the user an error message.
4179 3688
4180+++ 3689*** `debug-on-entry' accepts primitive functions that are not special forms.
4181*** `debug-on-entry' accepts primitive functions that are not special forms
4182now.
4183 3690
4184** Lisp code indentation features: 3691** Lisp code indentation features:
4185 3692
4186+++
4187*** The `defmacro' form can contain indentation and edebug declarations. 3693*** The `defmacro' form can contain indentation and edebug declarations.
4188 3694
4189These declarations specify how to indent the macro calls in Lisp mode 3695These declarations specify how to indent the macro calls in Lisp mode
@@ -4202,12 +3708,10 @@ possible declaration specifiers are:
4202 equivalent to writing a `def-edebug-spec' for the macro, 3708 equivalent to writing a `def-edebug-spec' for the macro,
4203 but this is cleaner.) 3709 but this is cleaner.)
4204 3710
4205---
4206*** cl-indent now allows customization of Indentation of backquoted forms. 3711*** cl-indent now allows customization of Indentation of backquoted forms.
4207 3712
4208See the new user option `lisp-backquote-indentation'. 3713See the new user option `lisp-backquote-indentation'.
4209 3714
4210---
4211*** cl-indent now handles indentation of simple and extended `loop' forms. 3715*** cl-indent now handles indentation of simple and extended `loop' forms.
4212 3716
4213The new user options `lisp-loop-keyword-indentation', 3717The new user options `lisp-loop-keyword-indentation',
@@ -4215,7 +3719,6 @@ The new user options `lisp-loop-keyword-indentation',
4215be used to customize the indentation of keywords and forms in loop 3719be used to customize the indentation of keywords and forms in loop
4216forms. 3720forms.
4217 3721
4218+++
4219** Variable aliases: 3722** Variable aliases:
4220 3723
4221*** New function: defvaralias ALIAS-VAR BASE-VAR [DOCSTRING] 3724*** New function: defvaralias ALIAS-VAR BASE-VAR [DOCSTRING]
@@ -4237,64 +3740,52 @@ defined as an alias, the function returns VARIABLE.
4237It might be noteworthy that variables aliases work for all kinds of 3740It might be noteworthy that variables aliases work for all kinds of
4238variables, including buffer-local and frame-local variables. 3741variables, including buffer-local and frame-local variables.
4239 3742
4240+++
4241*** The macro `define-obsolete-variable-alias' combines `defvaralias' and 3743*** The macro `define-obsolete-variable-alias' combines `defvaralias' and
4242`make-obsolete-variable'. 3744`make-obsolete-variable'.
4243 3745
4244** defcustom changes: 3746** defcustom changes:
4245 3747
4246+++
4247*** The package-version keyword has been added to provide 3748*** The package-version keyword has been added to provide
4248`customize-changed-options' functionality to packages in the future. 3749`customize-changed-options' functionality to packages in the future.
4249Developers who make use of this keyword must also update the new 3750Developers who make use of this keyword must also update the new
4250variable `customize-package-emacs-version-alist'. 3751variable `customize-package-emacs-version-alist'.
4251 3752
4252+++
4253*** The new customization type `float' requires a floating point number. 3753*** The new customization type `float' requires a floating point number.
4254 3754
4255** String changes: 3755** String changes:
4256 3756
4257+++
4258*** The escape sequence \s is now interpreted as a SPACE character. 3757*** The escape sequence \s is now interpreted as a SPACE character.
4259 3758
4260Exception: In a character constant, if it is followed by a `-' in a 3759Exception: In a character constant, if it is followed by a `-' in a
4261character constant (e.g. ?\s-A), it is still interpreted as the super 3760character constant (e.g. ?\s-A), it is still interpreted as the super
4262modifier. In strings, \s is always interpreted as a space. 3761modifier. In strings, \s is always interpreted as a space.
4263 3762
4264+++
4265*** A hex escape in a string constant forces the string to be multibyte. 3763*** A hex escape in a string constant forces the string to be multibyte.
4266 3764
4267+++
4268*** An octal escape in a string constant forces the string to be unibyte. 3765*** An octal escape in a string constant forces the string to be unibyte.
4269 3766
4270+++
4271*** `split-string' now includes null substrings in the returned list if 3767*** `split-string' now includes null substrings in the returned list if
4272the optional argument SEPARATORS is non-nil and there are matches for 3768the optional argument SEPARATORS is non-nil and there are matches for
4273SEPARATORS at the beginning or end of the string. If SEPARATORS is 3769SEPARATORS at the beginning or end of the string. If SEPARATORS is
4274nil, or if the new optional third argument OMIT-NULLS is non-nil, all 3770nil, or if the new optional third argument OMIT-NULLS is non-nil, all
4275empty matches are omitted from the returned list. 3771empty matches are omitted from the returned list.
4276 3772
4277+++
4278*** New function `string-to-multibyte' converts a unibyte string to a 3773*** New function `string-to-multibyte' converts a unibyte string to a
4279multibyte string with the same individual character codes. 3774multibyte string with the same individual character codes.
4280 3775
4281+++
4282*** New function `substring-no-properties' returns a substring without 3776*** New function `substring-no-properties' returns a substring without
4283text properties. 3777text properties.
4284 3778
4285+++
4286*** The new function `assoc-string' replaces `assoc-ignore-case' and 3779*** The new function `assoc-string' replaces `assoc-ignore-case' and
4287`assoc-ignore-representation', which are still available, but have 3780`assoc-ignore-representation', which are still available, but have
4288been declared obsolete. 3781been declared obsolete.
4289 3782
4290+++
4291*** New syntax: \uXXXX and \UXXXXXXXX specify Unicode code points in hex. 3783*** New syntax: \uXXXX and \UXXXXXXXX specify Unicode code points in hex.
4292Use "\u0428" to specify a string consisting of CYRILLIC CAPITAL LETTER SHA, 3784Use "\u0428" to specify a string consisting of CYRILLIC CAPITAL LETTER SHA,
4293or "\U0001D6E2" to specify one consisting of MATHEMATICAL ITALIC CAPITAL 3785or "\U0001D6E2" to specify one consisting of MATHEMATICAL ITALIC CAPITAL
4294ALPHA (the latter is greater than #xFFFF and thus needs the longer 3786ALPHA (the latter is greater than #xFFFF and thus needs the longer
4295syntax). Also available for characters. 3787syntax). Also available for characters.
4296 3788
4297+++
4298** Displaying warnings to the user. 3789** Displaying warnings to the user.
4299 3790
4300See the functions `warn' and `display-warning', or the Lisp Manual. 3791See the functions `warn' and `display-warning', or the Lisp Manual.
@@ -4302,7 +3793,6 @@ If you want to be sure the warning will not be overlooked, this
4302facility is much better than using `message', since it displays 3793facility is much better than using `message', since it displays
4303warnings in a separate window. 3794warnings in a separate window.
4304 3795
4305+++
4306** Progress reporters. 3796** Progress reporters.
4307 3797
4308These provide a simple and uniform way for commands to present 3798These provide a simple and uniform way for commands to present
@@ -4314,85 +3804,70 @@ See the new functions `make-progress-reporter',
4314 3804
4315** Buffer positions: 3805** Buffer positions:
4316 3806
4317+++
4318*** Function `compute-motion' now calculates the usable window 3807*** Function `compute-motion' now calculates the usable window
4319width if the WIDTH argument is nil. If the TOPOS argument is nil, 3808width if the WIDTH argument is nil. If the TOPOS argument is nil,
4320the usable window height and width is used. 3809the usable window height and width is used.
4321 3810
4322+++
4323*** The `line-move', `scroll-up', and `scroll-down' functions will now 3811*** The `line-move', `scroll-up', and `scroll-down' functions will now
4324modify the window vscroll to scroll through display rows that are 3812modify the window vscroll to scroll through display rows that are
4325taller that the height of the window, for example in the presence of 3813taller that the height of the window, for example in the presence of
4326large images. To disable this feature, bind the new variable 3814large images. To disable this feature, bind the new variable
4327`auto-window-vscroll' to nil. 3815`auto-window-vscroll' to nil.
4328 3816
4329+++
4330*** The argument to `forward-word', `backward-word' is optional. 3817*** The argument to `forward-word', `backward-word' is optional.
4331 3818
4332It defaults to 1. 3819It defaults to 1.
4333 3820
4334+++
4335*** Argument to `forward-to-indentation' and `backward-to-indentation' is optional. 3821*** Argument to `forward-to-indentation' and `backward-to-indentation' is optional.
4336 3822
4337It defaults to 1. 3823It defaults to 1.
4338 3824
4339+++
4340*** New function `mouse-on-link-p' tests if a position is in a clickable link. 3825*** New function `mouse-on-link-p' tests if a position is in a clickable link.
4341 3826
4342This is the function used by the new `mouse-1-click-follows-link' 3827This is the function used by the new `mouse-1-click-follows-link'
4343functionality. 3828functionality.
4344 3829
4345+++
4346*** New function `line-number-at-pos' returns the line number of a position. 3830*** New function `line-number-at-pos' returns the line number of a position.
4347 3831
4348It an optional buffer position argument that defaults to point. 3832It an optional buffer position argument that defaults to point.
4349 3833
4350+++
4351*** `field-beginning' and `field-end' take new optional argument, LIMIT. 3834*** `field-beginning' and `field-end' take new optional argument, LIMIT.
4352 3835
4353This argument tells them not to search beyond LIMIT. Instead they 3836This argument tells them not to search beyond LIMIT. Instead they
4354give up and return LIMIT. 3837give up and return LIMIT.
4355 3838
4356+++
4357*** Function `pos-visible-in-window-p' now returns the pixel coordinates 3839*** Function `pos-visible-in-window-p' now returns the pixel coordinates
4358and partial visibility state of the corresponding row, if the PARTIALLY 3840and partial visibility state of the corresponding row, if the PARTIALLY
4359arg is non-nil. 3841arg is non-nil.
4360 3842
4361+++
4362*** New function `window-line-height' is an efficient way to get 3843*** New function `window-line-height' is an efficient way to get
4363information about a specific text line in a window provided that the 3844information about a specific text line in a window provided that the
4364window's display is up-to-date. 3845window's display is up-to-date.
4365 3846
4366+++
4367*** New functions `posn-at-point' and `posn-at-x-y' return 3847*** New functions `posn-at-point' and `posn-at-x-y' return
4368click-event-style position information for a given visible buffer 3848click-event-style position information for a given visible buffer
4369position or for a given window pixel coordinate. 3849position or for a given window pixel coordinate.
4370 3850
4371** Text modification: 3851** Text modification:
4372 3852
4373+++
4374*** The new function `buffer-chars-modified-tick' returns a buffer's 3853*** The new function `buffer-chars-modified-tick' returns a buffer's
4375tick counter for changes to characters. Each time text in that buffer 3854tick counter for changes to characters. Each time text in that buffer
4376is inserted or deleted, the character-change counter is updated to the 3855is inserted or deleted, the character-change counter is updated to the
4377tick counter (`buffer-modified-tick'). Text property changes leave it 3856tick counter (`buffer-modified-tick'). Text property changes leave it
4378unchanged. 3857unchanged.
4379 3858
4380+++
4381*** The new function `insert-for-yank' normally works like `insert', but 3859*** The new function `insert-for-yank' normally works like `insert', but
4382removes the text properties in the `yank-excluded-properties' list 3860removes the text properties in the `yank-excluded-properties' list
4383and handles the `yank-handler' text property. 3861and handles the `yank-handler' text property.
4384 3862
4385+++
4386*** The new function `insert-buffer-substring-as-yank' is like 3863*** The new function `insert-buffer-substring-as-yank' is like
4387`insert-for-yank' except that it gets the text from another buffer as 3864`insert-for-yank' except that it gets the text from another buffer as
4388in `insert-buffer-substring'. 3865in `insert-buffer-substring'.
4389 3866
4390+++
4391*** The new function `insert-buffer-substring-no-properties' is like 3867*** The new function `insert-buffer-substring-no-properties' is like
4392`insert-buffer-substring', but removes all text properties from the 3868`insert-buffer-substring', but removes all text properties from the
4393inserted substring. 3869inserted substring.
4394 3870
4395+++
4396*** The new function `filter-buffer-substring' extracts a buffer 3871*** The new function `filter-buffer-substring' extracts a buffer
4397substring, passes it through a set of filter functions, and returns 3872substring, passes it through a set of filter functions, and returns
4398the filtered substring. Use it instead of `buffer-substring' or 3873the filtered substring. Use it instead of `buffer-substring' or
@@ -4404,33 +3879,27 @@ The list of filter function is specified by the new variable
4404`buffer-substring-filters' to remove soft newlines from the copied 3879`buffer-substring-filters' to remove soft newlines from the copied
4405text. 3880text.
4406 3881
4407+++
4408*** Function `translate-region' accepts also a char-table as TABLE 3882*** Function `translate-region' accepts also a char-table as TABLE
4409argument. 3883argument.
4410 3884
4411+++
4412*** The new translation table `translation-table-for-input' 3885*** The new translation table `translation-table-for-input'
4413is used for customizing self-insertion. The character to 3886is used for customizing self-insertion. The character to
4414be inserted is translated through it. 3887be inserted is translated through it.
4415 3888
4416---
4417*** Text clones. 3889*** Text clones.
4418 3890
4419The new function `text-clone-create'. Text clones are chunks of text 3891The new function `text-clone-create'. Text clones are chunks of text
4420that are kept identical by transparently propagating changes from one 3892that are kept identical by transparently propagating changes from one
4421clone to the other. 3893clone to the other.
4422 3894
4423---
4424*** The function `insert-string' is now obsolete. 3895*** The function `insert-string' is now obsolete.
4425 3896
4426** Filling changes. 3897** Filling changes.
4427 3898
4428+++
4429*** In determining an adaptive fill prefix, Emacs now tries the function in 3899*** In determining an adaptive fill prefix, Emacs now tries the function in
4430`adaptive-fill-function' _before_ matching the buffer line against 3900`adaptive-fill-function' _before_ matching the buffer line against
4431`adaptive-fill-regexp' rather than _after_ it. 3901`adaptive-fill-regexp' rather than _after_ it.
4432 3902
4433+++
4434** Atomic change groups. 3903** Atomic change groups.
4435 3904
4436To perform some changes in the current buffer "atomically" so that 3905To perform some changes in the current buffer "atomically" so that
@@ -4490,21 +3959,17 @@ finished.
4490 3959
4491** Buffer-related changes: 3960** Buffer-related changes:
4492 3961
4493---
4494*** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST. 3962*** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST.
4495 3963
4496If it is non-nil, it specifies which buffers to list. 3964If it is non-nil, it specifies which buffers to list.
4497 3965
4498+++
4499*** `kill-buffer-hook' is now a permanent local. 3966*** `kill-buffer-hook' is now a permanent local.
4500 3967
4501+++
4502*** The new function `buffer-local-value' returns the buffer-local 3968*** The new function `buffer-local-value' returns the buffer-local
4503binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not 3969binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not
4504have a buffer-local binding in buffer BUFFER, it returns the default 3970have a buffer-local binding in buffer BUFFER, it returns the default
4505value of VARIABLE instead. 3971value of VARIABLE instead.
4506 3972
4507---
4508*** The function `frame-or-buffer-changed-p' now lets you maintain 3973*** The function `frame-or-buffer-changed-p' now lets you maintain
4509various status records in parallel. 3974various status records in parallel.
4510 3975
@@ -4524,7 +3989,6 @@ If the variable is itself nil, then `frame-or-buffer-changed-p' uses,
4524for compatibility, an internal variable which exists only for this 3989for compatibility, an internal variable which exists only for this
4525purpose. 3990purpose.
4526 3991
4527+++
4528*** The function `read-buffer' follows the convention for reading from 3992*** The function `read-buffer' follows the convention for reading from
4529the minibuffer with a default value: if DEF is non-nil, the minibuffer 3993the minibuffer with a default value: if DEF is non-nil, the minibuffer
4530prompt provided in PROMPT is edited to show the default value provided 3994prompt provided in PROMPT is edited to show the default value provided
@@ -4532,12 +3996,10 @@ in DEF before the terminal colon and space.
4532 3996
4533** Searching and matching changes: 3997** Searching and matching changes:
4534 3998
4535+++
4536*** New function `looking-back' checks whether a regular expression matches 3999*** New function `looking-back' checks whether a regular expression matches
4537the text before point. Specifying the LIMIT argument bounds how far 4000the text before point. Specifying the LIMIT argument bounds how far
4538back the match can start; this is a way to keep it from taking too long. 4001back the match can start; this is a way to keep it from taking too long.
4539 4002
4540+++
4541*** The new variable `search-spaces-regexp' controls how to search 4003*** The new variable `search-spaces-regexp' controls how to search
4542for spaces in a regular expression. If it is non-nil, it should be a 4004for spaces in a regular expression. If it is non-nil, it should be a
4543regular expression, and any series of spaces stands for that regular 4005regular expression, and any series of spaces stands for that regular
@@ -4546,36 +4008,29 @@ expression. If it is nil, spaces stand for themselves.
4546Spaces inside of constructs such as `[..]' and inside loops such as 4008Spaces inside of constructs such as `[..]' and inside loops such as
4547`*', `+', and `?' are never replaced with `search-spaces-regexp'. 4009`*', `+', and `?' are never replaced with `search-spaces-regexp'.
4548 4010
4549+++
4550*** New regular expression operators, `\_<' and `\_>'. 4011*** New regular expression operators, `\_<' and `\_>'.
4551 4012
4552These match the beginning and end of a symbol. A symbol is a 4013These match the beginning and end of a symbol. A symbol is a
4553non-empty sequence of either word or symbol constituent characters, as 4014non-empty sequence of either word or symbol constituent characters, as
4554specified by the syntax table. 4015specified by the syntax table.
4555 4016
4556---
4557*** rx.el has new corresponding `symbol-start' and `symbol-end' elements. 4017*** rx.el has new corresponding `symbol-start' and `symbol-end' elements.
4558 4018
4559+++
4560*** `skip-chars-forward' and `skip-chars-backward' now handle 4019*** `skip-chars-forward' and `skip-chars-backward' now handle
4561character classes such as `[:alpha:]', along with individual 4020character classes such as `[:alpha:]', along with individual
4562characters and ranges. 4021characters and ranges.
4563 4022
4564---
4565*** In `replace-match', the replacement text no longer inherits 4023*** In `replace-match', the replacement text no longer inherits
4566properties from surrounding text. 4024properties from surrounding text.
4567 4025
4568+++
4569*** The list returned by `(match-data t)' now has the buffer as a final 4026*** The list returned by `(match-data t)' now has the buffer as a final
4570element, if the last match was on a buffer. `set-match-data' 4027element, if the last match was on a buffer. `set-match-data'
4571accepts such a list for restoring the match state. 4028accepts such a list for restoring the match state.
4572 4029
4573+++
4574*** Functions `match-data' and `set-match-data' now have an optional 4030*** Functions `match-data' and `set-match-data' now have an optional
4575argument `reseat'. When non-nil, all markers in the match data list 4031argument `reseat'. When non-nil, all markers in the match data list
4576passed to these functions will be reseated to point to nowhere. 4032passed to these functions will be reseated to point to nowhere.
4577 4033
4578+++
4579*** The default value of `sentence-end' is now defined using the new 4034*** The default value of `sentence-end' is now defined using the new
4580variable `sentence-end-without-space', which contains such characters 4035variable `sentence-end-without-space', which contains such characters
4581that end a sentence without following spaces. 4036that end a sentence without following spaces.
@@ -4588,7 +4043,6 @@ this function returns the regexp constructed from the variables
4588 4043
4589** Undo changes: 4044** Undo changes:
4590 4045
4591+++
4592*** `buffer-undo-list' allows programmable elements. 4046*** `buffer-undo-list' allows programmable elements.
4593 4047
4594These elements have the form (apply FUNNAME . ARGS), where FUNNAME is 4048These elements have the form (apply FUNNAME . ARGS), where FUNNAME is
@@ -4599,12 +4053,10 @@ These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS)
4599which indicates that the change which took place was limited to the 4053which indicates that the change which took place was limited to the
4600range BEG...END and increased the buffer size by DELTA. 4054range BEG...END and increased the buffer size by DELTA.
4601 4055
4602+++
4603*** If the buffer's undo list for the current command gets longer than 4056*** If the buffer's undo list for the current command gets longer than
4604`undo-outer-limit', garbage collection empties it. This is to prevent 4057`undo-outer-limit', garbage collection empties it. This is to prevent
4605it from using up the available memory and choking Emacs. 4058it from using up the available memory and choking Emacs.
4606 4059
4607+++
4608** New `yank-handler' text property can be used to control how 4060** New `yank-handler' text property can be used to control how
4609previously killed text on the kill ring is reinserted. 4061previously killed text on the kill ring is reinserted.
4610 4062
@@ -4649,70 +4101,56 @@ string. The old behavior is available if you call
4649 4101
4650** Syntax table changes: 4102** Syntax table changes:
4651 4103
4652+++
4653*** The macro `with-syntax-table' no longer copies the syntax table. 4104*** The macro `with-syntax-table' no longer copies the syntax table.
4654 4105
4655+++
4656*** The new function `syntax-after' returns the syntax code 4106*** The new function `syntax-after' returns the syntax code
4657of the character after a specified buffer position, taking account 4107of the character after a specified buffer position, taking account
4658of text properties as well as the character code. 4108of text properties as well as the character code.
4659 4109
4660+++
4661*** `syntax-class' extracts the class of a syntax code (as returned 4110*** `syntax-class' extracts the class of a syntax code (as returned
4662by `syntax-after'). 4111by `syntax-after').
4663 4112
4664+++
4665*** The new function `syntax-ppss' provides an efficient way to find the 4113*** The new function `syntax-ppss' provides an efficient way to find the
4666current syntactic context at point. 4114current syntactic context at point.
4667 4115
4668** File operation changes: 4116** File operation changes:
4669 4117
4670+++
4671*** New vars `exec-suffixes' and `load-suffixes' used when 4118*** New vars `exec-suffixes' and `load-suffixes' used when
4672searching for an executable or an Emacs Lisp file. 4119searching for an executable or an Emacs Lisp file.
4673 4120
4674+++
4675*** The new primitive `set-file-times' sets a file's access and 4121*** The new primitive `set-file-times' sets a file's access and
4676modification times. Magic file name handlers can handle this 4122modification times. Magic file name handlers can handle this
4677operation. 4123operation.
4678 4124
4679+++
4680*** The new function `file-remote-p' tests a file name and returns 4125*** The new function `file-remote-p' tests a file name and returns
4681non-nil if it specifies a remote file (one that Emacs accesses using 4126non-nil if it specifies a remote file (one that Emacs accesses using
4682its own special methods and not directly through the file system). 4127its own special methods and not directly through the file system).
4683The value in that case is an identifier for the remote file system. 4128The value in that case is an identifier for the remote file system.
4684 4129
4685+++
4686*** `buffer-auto-save-file-format' is the new name for what was 4130*** `buffer-auto-save-file-format' is the new name for what was
4687formerly called `auto-save-file-format'. It is now a permanent local. 4131formerly called `auto-save-file-format'. It is now a permanent local.
4688 4132
4689+++
4690*** Functions `file-name-sans-extension' and `file-name-extension' now 4133*** Functions `file-name-sans-extension' and `file-name-extension' now
4691ignore the leading dots in file names, so that file names such as 4134ignore the leading dots in file names, so that file names such as
4692`.emacs' are treated as extensionless. 4135`.emacs' are treated as extensionless.
4693 4136
4694+++
4695*** `visited-file-modtime' and `calendar-time-from-absolute' now return 4137*** `visited-file-modtime' and `calendar-time-from-absolute' now return
4696a list of two integers, instead of a cons. 4138a list of two integers, instead of a cons.
4697 4139
4698+++
4699*** `file-chase-links' now takes an optional second argument LIMIT which 4140*** `file-chase-links' now takes an optional second argument LIMIT which
4700specifies the maximum number of links to chase through. If after that 4141specifies the maximum number of links to chase through. If after that
4701many iterations the file name obtained is still a symbolic link, 4142many iterations the file name obtained is still a symbolic link,
4702`file-chase-links' returns it anyway. 4143`file-chase-links' returns it anyway.
4703 4144
4704+++
4705*** The new hook `before-save-hook' is invoked by `basic-save-buffer' 4145*** The new hook `before-save-hook' is invoked by `basic-save-buffer'
4706before saving buffers. This allows packages to perform various final 4146before saving buffers. This allows packages to perform various final
4707tasks. For example, it can be used by the copyright package to make 4147tasks. For example, it can be used by the copyright package to make
4708sure saved files have the current year in any copyright headers. 4148sure saved files have the current year in any copyright headers.
4709 4149
4710+++
4711*** If `buffer-save-without-query' is non-nil in some buffer, 4150*** If `buffer-save-without-query' is non-nil in some buffer,
4712`save-some-buffers' will always save that buffer without asking (if 4151`save-some-buffers' will always save that buffer without asking (if
4713it's modified). 4152it's modified).
4714 4153
4715+++
4716*** New function `locate-file' searches for a file in a list of directories. 4154*** New function `locate-file' searches for a file in a list of directories.
4717`locate-file' accepts a name of a file to search (a string), and two 4155`locate-file' accepts a name of a file to search (a string), and two
4718lists: a list of directories to search in and a list of suffixes to 4156lists: a list of directories to search in and a list of suffixes to
@@ -4725,7 +4163,6 @@ One advantage of using this function is that the list of suffixes in
4725`exec-suffixes' is OS-dependant, so this function will find 4163`exec-suffixes' is OS-dependant, so this function will find
4726executables without polluting Lisp code with OS dependencies. 4164executables without polluting Lisp code with OS dependencies.
4727 4165
4728---
4729*** The precedence of file name handlers has been changed. 4166*** The precedence of file name handlers has been changed.
4730 4167
4731Instead of choosing the first handler that matches, 4168Instead of choosing the first handler that matches,
@@ -4734,7 +4171,6 @@ that matches nearest the end of the file name. More precisely, the
4734handler whose (match-beginning 0) is the largest is chosen. In case 4171handler whose (match-beginning 0) is the largest is chosen. In case
4735of ties, the old "first matched" rule applies. 4172of ties, the old "first matched" rule applies.
4736 4173
4737+++
4738*** A file name handler can declare which operations it handles. 4174*** A file name handler can declare which operations it handles.
4739 4175
4740You do this by putting an `operation' property on the handler name 4176You do this by putting an `operation' property on the handler name
@@ -4745,81 +4181,66 @@ operations.
4745This is useful for autoloaded handlers, to prevent them from being 4181This is useful for autoloaded handlers, to prevent them from being
4746autoloaded when not really necessary. 4182autoloaded when not really necessary.
4747 4183
4748+++
4749*** The function `make-auto-save-file-name' is now handled by file 4184*** The function `make-auto-save-file-name' is now handled by file
4750name handlers. This will be exploited for remote files mainly. 4185name handlers. This will be exploited for remote files mainly.
4751 4186
4752+++
4753*** The function `file-name-completion' accepts an optional argument 4187*** The function `file-name-completion' accepts an optional argument
4754PREDICATE, and rejects completion candidates that don't satisfy PREDICATE. 4188PREDICATE, and rejects completion candidates that don't satisfy PREDICATE.
4755 4189
4756** Input changes: 4190** Input changes:
4757 4191
4758+++
4759*** The functions `read-event', `read-char', and `read-char-exclusive' 4192*** The functions `read-event', `read-char', and `read-char-exclusive'
4760have a new optional argument SECONDS. If non-nil, this specifies a 4193have a new optional argument SECONDS. If non-nil, this specifies a
4761maximum time to wait for input, in seconds. If no input arrives after 4194maximum time to wait for input, in seconds. If no input arrives after
4762this time elapses, the functions stop waiting and return nil. 4195this time elapses, the functions stop waiting and return nil.
4763 4196
4764+++
4765*** An interactive specification can now use the code letter `U' to get 4197*** An interactive specification can now use the code letter `U' to get
4766the up-event that was discarded in case the last key sequence read for a 4198the up-event that was discarded in case the last key sequence read for a
4767previous `k' or `K' argument was a down-event; otherwise nil is used. 4199previous `k' or `K' argument was a down-event; otherwise nil is used.
4768 4200
4769+++
4770*** The new interactive-specification `G' reads a file name 4201*** The new interactive-specification `G' reads a file name
4771much like `F', but if the input is a directory name (even defaulted), 4202much like `F', but if the input is a directory name (even defaulted),
4772it returns just the directory name. 4203it returns just the directory name.
4773 4204
4774---
4775*** Functions `y-or-n-p', `read-char', `read-key-sequence' and the like, that 4205*** Functions `y-or-n-p', `read-char', `read-key-sequence' and the like, that
4776display a prompt but don't use the minibuffer, now display the prompt 4206display a prompt but don't use the minibuffer, now display the prompt
4777using the text properties (esp. the face) of the prompt string. 4207using the text properties (esp. the face) of the prompt string.
4778 4208
4779+++
4780*** (while-no-input BODY...) runs BODY, but only so long as no input 4209*** (while-no-input BODY...) runs BODY, but only so long as no input
4781arrives. If the user types or clicks anything, BODY stops as if a 4210arrives. If the user types or clicks anything, BODY stops as if a
4782quit had occurred. `while-no-input' returns the value of BODY, if BODY 4211quit had occurred. `while-no-input' returns the value of BODY, if BODY
4783finishes. It returns nil if BODY was aborted by a quit, and t if 4212finishes. It returns nil if BODY was aborted by a quit, and t if
4784BODY was aborted by arrival of input. 4213BODY was aborted by arrival of input.
4785 4214
4786+++
4787*** `recent-keys' now returns the last 300 keys. 4215*** `recent-keys' now returns the last 300 keys.
4788 4216
4789** Minibuffer changes: 4217** Minibuffer changes:
4790 4218
4791+++
4792*** The new function `minibufferp' returns non-nil if its optional 4219*** The new function `minibufferp' returns non-nil if its optional
4793buffer argument is a minibuffer. If the argument is omitted, it 4220buffer argument is a minibuffer. If the argument is omitted, it
4794defaults to the current buffer. 4221defaults to the current buffer.
4795 4222
4796+++
4797*** New function `minibuffer-selected-window' returns the window which 4223*** New function `minibuffer-selected-window' returns the window which
4798was selected when entering the minibuffer. 4224was selected when entering the minibuffer.
4799 4225
4800+++
4801*** The `read-file-name' function now takes an additional argument which 4226*** The `read-file-name' function now takes an additional argument which
4802specifies a predicate which the file name read must satisfy. The 4227specifies a predicate which the file name read must satisfy. The
4803new variable `read-file-name-predicate' contains the predicate argument 4228new variable `read-file-name-predicate' contains the predicate argument
4804while reading the file name from the minibuffer; the predicate in this 4229while reading the file name from the minibuffer; the predicate in this
4805variable is used by read-file-name-internal to filter the completion list. 4230variable is used by read-file-name-internal to filter the completion list.
4806 4231
4807---
4808*** The new variable `read-file-name-function' can be used by Lisp code 4232*** The new variable `read-file-name-function' can be used by Lisp code
4809to override the built-in `read-file-name' function. 4233to override the built-in `read-file-name' function.
4810 4234
4811+++
4812*** The new variable `read-file-name-completion-ignore-case' specifies 4235*** The new variable `read-file-name-completion-ignore-case' specifies
4813whether completion ignores case when reading a file name with the 4236whether completion ignores case when reading a file name with the
4814`read-file-name' function. 4237`read-file-name' function.
4815 4238
4816+++
4817*** The new function `read-directory-name' is for reading a directory name. 4239*** The new function `read-directory-name' is for reading a directory name.
4818 4240
4819It is like `read-file-name' except that the defaulting works better 4241It is like `read-file-name' except that the defaulting works better
4820for directories, and completion inside it shows only directories. 4242for directories, and completion inside it shows only directories.
4821 4243
4822+++
4823*** The new variable `history-add-new-input' specifies whether to add new 4244*** The new variable `history-add-new-input' specifies whether to add new
4824elements in history. If set to nil, minibuffer reading functions don't 4245elements in history. If set to nil, minibuffer reading functions don't
4825add new elements to the history list, so it is possible to do this 4246add new elements to the history list, so it is possible to do this
@@ -4827,19 +4248,16 @@ afterwards by calling `add-to-history' explicitly.
4827 4248
4828** Completion changes: 4249** Completion changes:
4829 4250
4830+++
4831*** The new function `minibuffer-completion-contents' returns the contents 4251*** The new function `minibuffer-completion-contents' returns the contents
4832of the minibuffer just before point. That is what completion commands 4252of the minibuffer just before point. That is what completion commands
4833operate on. 4253operate on.
4834 4254
4835+++
4836*** The functions `all-completions' and `try-completion' now accept lists 4255*** The functions `all-completions' and `try-completion' now accept lists
4837of strings as well as hash-tables additionally to alists, obarrays 4256of strings as well as hash-tables additionally to alists, obarrays
4838and functions. Furthermore, the function `test-completion' is now 4257and functions. Furthermore, the function `test-completion' is now
4839exported to Lisp. The keys in alists and hash tables can be either 4258exported to Lisp. The keys in alists and hash tables can be either
4840strings or symbols, which are automatically converted with to strings. 4259strings or symbols, which are automatically converted with to strings.
4841 4260
4842+++
4843*** The new macro `dynamic-completion-table' supports using functions 4261*** The new macro `dynamic-completion-table' supports using functions
4844as a dynamic completion table. 4262as a dynamic completion table.
4845 4263
@@ -4852,7 +4270,6 @@ can ignore the value of its argument. If completion is performed in the
4852minibuffer, FUN will be called in the buffer from which the minibuffer was 4270minibuffer, FUN will be called in the buffer from which the minibuffer was
4853entered. `dynamic-completion-table' then computes the completion. 4271entered. `dynamic-completion-table' then computes the completion.
4854 4272
4855+++
4856*** The new macro `lazy-completion-table' initializes a variable 4273*** The new macro `lazy-completion-table' initializes a variable
4857as a lazy completion table. 4274as a lazy completion table.
4858 4275
@@ -4865,7 +4282,6 @@ If completion is requested in the minibuffer, FUN will be called in the buffer
4865from which the minibuffer was entered. The return value of 4282from which the minibuffer was entered. The return value of
4866`lazy-completion-table' must be used to initialize the value of VAR. 4283`lazy-completion-table' must be used to initialize the value of VAR.
4867 4284
4868+++
4869** Enhancements to keymaps. 4285** Enhancements to keymaps.
4870 4286
4871*** New keymaps for typing file names 4287*** New keymaps for typing file names
@@ -4984,12 +4400,10 @@ key-sequences, such as [(control a)].
4984 4400
4985** Abbrev changes: 4401** Abbrev changes:
4986 4402
4987+++
4988*** The new function `copy-abbrev-table' copies an abbrev table. 4403*** The new function `copy-abbrev-table' copies an abbrev table.
4989 4404
4990It returns a new abbrev table that is a copy of a given abbrev table. 4405It returns a new abbrev table that is a copy of a given abbrev table.
4991 4406
4992+++
4993*** `define-abbrev' now accepts an optional argument SYSTEM-FLAG. 4407*** `define-abbrev' now accepts an optional argument SYSTEM-FLAG.
4994 4408
4995If non-nil, this marks the abbrev as a "system" abbrev, which means 4409If non-nil, this marks the abbrev as a "system" abbrev, which means
@@ -4997,7 +4411,6 @@ that it won't be stored in the user's abbrevs file if he saves the
4997abbrevs. Major modes that predefine some abbrevs should always 4411abbrevs. Major modes that predefine some abbrevs should always
4998specify this flag. 4412specify this flag.
4999 4413
5000+++
5001** Enhancements to process support 4414** Enhancements to process support
5002 4415
5003*** Function `list-processes' now has an optional argument; if non-nil, 4416*** Function `list-processes' now has an optional argument; if non-nil,
@@ -5064,7 +4477,6 @@ to multibyte by `string-to-multibyte' then inserted in the buffer.
5064Previously, it was converted to multibyte by `string-as-multibyte', 4477Previously, it was converted to multibyte by `string-as-multibyte',
5065which was not compatible with the behavior of file reading. 4478which was not compatible with the behavior of file reading.
5066 4479
5067+++
5068** Enhanced networking support. 4480** Enhanced networking support.
5069 4481
5070*** The new `make-network-process' function makes network connections. 4482*** The new `make-network-process' function makes network connections.
@@ -5136,13 +4548,11 @@ connection is closed by the remote peer has been changed to
5136 4548
5137** Using window objects: 4549** Using window objects:
5138 4550
5139+++
5140*** New function `window-body-height'. 4551*** New function `window-body-height'.
5141 4552
5142This is like `window-height' but does not count the mode line or the 4553This is like `window-height' but does not count the mode line or the
5143header line. 4554header line.
5144 4555
5145+++
5146*** You can now make a window as short as one line. 4556*** You can now make a window as short as one line.
5147 4557
5148A window that is just one line tall does not display either a mode 4558A window that is just one line tall does not display either a mode
@@ -5151,51 +4561,41 @@ line or a header line, even if the variables `mode-line-format' and
5151cannot display both a mode line and a header line at once; if the 4561cannot display both a mode line and a header line at once; if the
5152variables call for both, only the mode line actually appears. 4562variables call for both, only the mode line actually appears.
5153 4563
5154+++
5155*** The new function `window-inside-edges' returns the edges of the 4564*** The new function `window-inside-edges' returns the edges of the
5156actual text portion of the window, not including the scroll bar or 4565actual text portion of the window, not including the scroll bar or
5157divider line, the fringes, the display margins, the header line and 4566divider line, the fringes, the display margins, the header line and
5158the mode line. 4567the mode line.
5159 4568
5160+++
5161*** The new functions `window-pixel-edges' and `window-inside-pixel-edges' 4569*** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
5162return window edges in units of pixels, rather than columns and lines. 4570return window edges in units of pixels, rather than columns and lines.
5163 4571
5164+++
5165*** The new macro `with-selected-window' temporarily switches the 4572*** The new macro `with-selected-window' temporarily switches the
5166selected window without impacting the order of `buffer-list'. 4573selected window without impacting the order of `buffer-list'.
5167It saves and restores the current buffer, too. 4574It saves and restores the current buffer, too.
5168 4575
5169+++
5170*** `select-window' takes an optional second argument NORECORD. 4576*** `select-window' takes an optional second argument NORECORD.
5171 4577
5172This is like `switch-to-buffer'. 4578This is like `switch-to-buffer'.
5173 4579
5174+++
5175*** `save-selected-window' now saves and restores the selected window 4580*** `save-selected-window' now saves and restores the selected window
5176of every frame. This way, it restores everything that can be changed 4581of every frame. This way, it restores everything that can be changed
5177by calling `select-window'. It also saves and restores the current 4582by calling `select-window'. It also saves and restores the current
5178buffer. 4583buffer.
5179 4584
5180+++
5181*** `set-window-buffer' has an optional argument KEEP-MARGINS. 4585*** `set-window-buffer' has an optional argument KEEP-MARGINS.
5182 4586
5183If non-nil, that says to preserve the window's current margin, fringe, 4587If non-nil, that says to preserve the window's current margin, fringe,
5184and scroll-bar settings. 4588and scroll-bar settings.
5185 4589
5186+++
5187*** The new function `window-tree' returns a frame's window tree. 4590*** The new function `window-tree' returns a frame's window tree.
5188 4591
5189+++
5190*** The functions `get-lru-window' and `get-largest-window' take an optional 4592*** The functions `get-lru-window' and `get-largest-window' take an optional
5191argument `dedicated'. If non-nil, those functions do not ignore 4593argument `dedicated'. If non-nil, those functions do not ignore
5192dedicated windows. 4594dedicated windows.
5193 4595
5194+++
5195*** The new function `adjust-window-trailing-edge' moves the right 4596*** The new function `adjust-window-trailing-edge' moves the right
5196or bottom edge of a window. It does not move other window edges. 4597or bottom edge of a window. It does not move other window edges.
5197 4598
5198+++
5199** Customizable fringe bitmaps 4599** Customizable fringe bitmaps
5200 4600
5201*** New buffer-local variables `fringe-indicator-alist' and 4601*** New buffer-local variables `fringe-indicator-alist' and
@@ -5231,7 +4631,6 @@ bitmaps in the display line at a given buffer position.
5231 4631
5232** Other window fringe features: 4632** Other window fringe features:
5233 4633
5234+++
5235*** Controlling the default left and right fringe widths. 4634*** Controlling the default left and right fringe widths.
5236 4635
5237The default left and right fringe widths for all windows of a frame 4636The default left and right fringe widths for all windows of a frame
@@ -5251,7 +4650,6 @@ width which is the minimum number of pixels necessary to display any
5251of the currently defined fringe bitmaps. The width of the built-in 4650of the currently defined fringe bitmaps. The width of the built-in
5252fringe bitmaps is 8 pixels. 4651fringe bitmaps is 8 pixels.
5253 4652
5254+++
5255*** Per-window fringe and scrollbar settings 4653*** Per-window fringe and scrollbar settings
5256 4654
5257**** Windows can now have their own individual fringe widths and 4655**** Windows can now have their own individual fringe widths and
@@ -5285,25 +4683,20 @@ of the display margins.
5285 4683
5286** Redisplay features: 4684** Redisplay features:
5287 4685
5288+++
5289*** `sit-for' can now be called with args (SECONDS &optional NODISP). 4686*** `sit-for' can now be called with args (SECONDS &optional NODISP).
5290 4687
5291+++
5292*** Iconifying or deiconifying a frame no longer makes sit-for return. 4688*** Iconifying or deiconifying a frame no longer makes sit-for return.
5293 4689
5294+++
5295*** New function `redisplay' causes an immediate redisplay if no input is 4690*** New function `redisplay' causes an immediate redisplay if no input is
5296available, equivalent to (sit-for 0). The call (redisplay t) forces 4691available, equivalent to (sit-for 0). The call (redisplay t) forces
5297an immediate redisplay even if input is pending. 4692an immediate redisplay even if input is pending.
5298 4693
5299+++
5300*** New function `force-window-update' can initiate a full redisplay of 4694*** New function `force-window-update' can initiate a full redisplay of
5301one or all windows. Normally, this is not needed as changes in window 4695one or all windows. Normally, this is not needed as changes in window
5302contents are detected automatically. However, certain implicit 4696contents are detected automatically. However, certain implicit
5303changes to mode lines, header lines, or display properties may require 4697changes to mode lines, header lines, or display properties may require
5304forcing an explicit window update. 4698forcing an explicit window update.
5305 4699
5306+++
5307*** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able 4700*** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able
5308to display CHAR. More precisely, if the selected frame's fontset has 4701to display CHAR. More precisely, if the selected frame's fontset has
5309a font to display the character set that CHAR belongs to. 4702a font to display the character set that CHAR belongs to.
@@ -5311,7 +4704,6 @@ a font to display the character set that CHAR belongs to.
5311Fontsets can specify a font on a per-character basis; when the fontset 4704Fontsets can specify a font on a per-character basis; when the fontset
5312does that, this value cannot be accurate. 4705does that, this value cannot be accurate.
5313 4706
5314+++
5315*** You can define multiple overlay arrows via the new 4707*** You can define multiple overlay arrows via the new
5316variable `overlay-arrow-variable-list'. 4708variable `overlay-arrow-variable-list'.
5317 4709
@@ -5325,7 +4717,6 @@ systems) to display at the corresponding overlay arrow position.
5325If either property is not set, the default `overlay-arrow-string' or 4717If either property is not set, the default `overlay-arrow-string' or
5326'overlay-arrow-fringe-bitmap' will be used. 4718'overlay-arrow-fringe-bitmap' will be used.
5327 4719
5328+++
5329*** New `line-height' and `line-spacing' properties for newline characters 4720*** New `line-height' and `line-spacing' properties for newline characters
5330 4721
5331A newline can now have `line-height' and `line-spacing' text or overlay 4722A newline can now have `line-height' and `line-spacing' text or overlay
@@ -5366,11 +4757,9 @@ the `line-spacing' variable.
5366If the `line-spacing' property is a float or cons, the line spacing 4757If the `line-spacing' property is a float or cons, the line spacing
5367is calculated as specified above for the `line-height' property. 4758is calculated as specified above for the `line-height' property.
5368 4759
5369+++
5370*** The buffer local `line-spacing' variable can now have a float value, 4760*** The buffer local `line-spacing' variable can now have a float value,
5371which is used as a height relative to the default frame line height. 4761which is used as a height relative to the default frame line height.
5372 4762
5373+++
5374*** Enhancements to stretch display properties 4763*** Enhancements to stretch display properties
5375 4764
5376The display property stretch specification form `(space PROPS)', where 4765The display property stretch specification form `(space PROPS)', where
@@ -5427,17 +4816,14 @@ height) of the specified image.
5427The form `(+ EXPR ...)' adds up the value of the expressions. 4816The form `(+ EXPR ...)' adds up the value of the expressions.
5428The form `(- EXPR ...)' negates or subtracts the value of the expressions. 4817The form `(- EXPR ...)' negates or subtracts the value of the expressions.
5429 4818
5430+++
5431*** Normally, the cursor is displayed at the end of any overlay and 4819*** Normally, the cursor is displayed at the end of any overlay and
5432text property string that may be present at the current window 4820text property string that may be present at the current window
5433position. The cursor can now be placed on any character of such 4821position. The cursor can now be placed on any character of such
5434strings by giving that character a non-nil `cursor' text property. 4822strings by giving that character a non-nil `cursor' text property.
5435 4823
5436+++
5437*** The display space :width and :align-to text properties are now 4824*** The display space :width and :align-to text properties are now
5438supported on text terminals. 4825supported on text terminals.
5439 4826
5440+++
5441*** Support for displaying image slices 4827*** Support for displaying image slices
5442 4828
5443**** New display property (slice X Y WIDTH HEIGHT) can be used with 4829**** New display property (slice X Y WIDTH HEIGHT) can be used with
@@ -5449,7 +4835,6 @@ specify image slice (X Y WIDTH HEIGHT).
5449**** New function `insert-sliced-image' inserts a given image as a 4835**** New function `insert-sliced-image' inserts a given image as a
5450specified number of evenly sized slices (rows x columns). 4836specified number of evenly sized slices (rows x columns).
5451 4837
5452+++
5453*** Images can now have an associated image map via the :map property. 4838*** Images can now have an associated image map via the :map property.
5454 4839
5455An image map is an alist where each element has the format (AREA ID PLIST). 4840An image map is an alist where each element has the format (AREA ID PLIST).
@@ -5472,7 +4857,6 @@ When you click the mouse when the mouse pointer is over a hot-spot,
5472an event is composed by combining the ID of the hot-spot with the 4857an event is composed by combining the ID of the hot-spot with the
5473mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'. 4858mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'.
5474 4859
5475+++
5476*** The function `find-image' now searches in etc/images/ and etc/. 4860*** The function `find-image' now searches in etc/images/ and etc/.
5477The new variable `image-load-path' is a list of locations in which to 4861The new variable `image-load-path' is a list of locations in which to
5478search for image files. The default is to search in etc/images, then 4862search for image files. The default is to search in etc/images, then
@@ -5486,80 +4870,62 @@ explicitly; for example, if an image is put in etc/images/foo/bar.xpm:
5486Note that all images formerly located in the lisp directory have been 4870Note that all images formerly located in the lisp directory have been
5487moved to etc/images. 4871moved to etc/images.
5488 4872
5489+++
5490*** New function `image-load-path-for-library' returns a suitable 4873*** New function `image-load-path-for-library' returns a suitable
5491search path for images relative to library. This function is useful in 4874search path for images relative to library. This function is useful in
5492external packages to save users from having to update 4875external packages to save users from having to update
5493`image-load-path'. 4876`image-load-path'.
5494 4877
5495+++
5496*** The new variable `max-image-size' defines the maximum size of 4878*** The new variable `max-image-size' defines the maximum size of
5497images that Emacs will load and display. 4879images that Emacs will load and display.
5498 4880
5499+++
5500*** The new variable `display-mm-dimensions-alist' can be used to 4881*** The new variable `display-mm-dimensions-alist' can be used to
5501override incorrect graphical display dimensions returned by functions 4882override incorrect graphical display dimensions returned by functions
5502`display-mm-height' and `display-mm-width'. 4883`display-mm-height' and `display-mm-width'.
5503 4884
5504** Mouse pointer features: 4885** Mouse pointer features:
5505 4886
5506+++ (lispref)
5507--- (man)
5508*** The mouse pointer shape in void text areas (i.e. after the end of a 4887*** The mouse pointer shape in void text areas (i.e. after the end of a
5509line or below the last line in the buffer) of the text window is now 4888line or below the last line in the buffer) of the text window is now
5510controlled by the new variable `void-text-area-pointer'. The default 4889controlled by the new variable `void-text-area-pointer'. The default
5511is to use the `arrow' (non-text) pointer. Other choices are `text' 4890is to use the `arrow' (non-text) pointer. Other choices are `text'
5512(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'. 4891(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'.
5513 4892
5514+++
5515*** The mouse pointer shape over an image can now be controlled by the 4893*** The mouse pointer shape over an image can now be controlled by the
5516:pointer image property. 4894:pointer image property.
5517 4895
5518+++
5519*** The mouse pointer shape over ordinary text or images can now be 4896*** The mouse pointer shape over ordinary text or images can now be
5520controlled/overridden via the `pointer' text property. 4897controlled/overridden via the `pointer' text property.
5521 4898
5522** Mouse event enhancements: 4899** Mouse event enhancements:
5523 4900
5524+++
5525*** Mouse events for clicks on window fringes now specify `left-fringe' 4901*** Mouse events for clicks on window fringes now specify `left-fringe'
5526or `right-fringe' as the area. 4902or `right-fringe' as the area.
5527 4903
5528+++
5529*** All mouse events now include a buffer position regardless of where 4904*** All mouse events now include a buffer position regardless of where
5530you clicked. For mouse clicks in window margins and fringes, this is 4905you clicked. For mouse clicks in window margins and fringes, this is
5531a sensible buffer position corresponding to the surrounding text. 4906a sensible buffer position corresponding to the surrounding text.
5532 4907
5533+++
5534*** `posn-point' now returns buffer position for non-text area events. 4908*** `posn-point' now returns buffer position for non-text area events.
5535 4909
5536+++
5537*** Function `mouse-set-point' now works for events outside text area. 4910*** Function `mouse-set-point' now works for events outside text area.
5538 4911
5539+++
5540*** New function `posn-area' returns window area clicked on (nil means 4912*** New function `posn-area' returns window area clicked on (nil means
5541text area). 4913text area).
5542 4914
5543+++
5544*** Mouse events include actual glyph column and row for all event types 4915*** Mouse events include actual glyph column and row for all event types
5545and all areas. 4916and all areas.
5546 4917
5547+++
5548*** New function `posn-actual-col-row' returns the actual glyph coordinates 4918*** New function `posn-actual-col-row' returns the actual glyph coordinates
5549of the mouse event position. 4919of the mouse event position.
5550 4920
5551+++
5552*** Mouse events can now indicate an image object clicked on. 4921*** Mouse events can now indicate an image object clicked on.
5553 4922
5554+++
5555*** Mouse events include relative X and Y pixel coordinates relative to 4923*** Mouse events include relative X and Y pixel coordinates relative to
5556the top left corner of the object (image or character) clicked on. 4924the top left corner of the object (image or character) clicked on.
5557 4925
5558+++
5559*** Mouse events include the pixel width and height of the object 4926*** Mouse events include the pixel width and height of the object
5560(image or character) clicked on. 4927(image or character) clicked on.
5561 4928
5562+++
5563*** New functions 'posn-object', 'posn-object-x-y', 'posn-object-width-height'. 4929*** New functions 'posn-object', 'posn-object-x-y', 'posn-object-width-height'.
5564 4930
5565These return the image or string object of a mouse click, the X and Y 4931These return the image or string object of a mouse click, the X and Y
@@ -5568,11 +4934,9 @@ the total width and height of that object.
5568 4934
5569** Text property and overlay changes: 4935** Text property and overlay changes:
5570 4936
5571+++
5572*** Arguments for `remove-overlays' are now optional, so that you can 4937*** Arguments for `remove-overlays' are now optional, so that you can
5573remove all overlays in the buffer with just (remove-overlays). 4938remove all overlays in the buffer with just (remove-overlays).
5574 4939
5575+++
5576*** New variable `char-property-alias-alist'. 4940*** New variable `char-property-alias-alist'.
5577 4941
5578This variable allows you to create alternative names for text 4942This variable allows you to create alternative names for text
@@ -5580,14 +4944,12 @@ properties. It works at the same level as `default-text-properties',
5580although it applies to overlays as well. This variable was introduced 4944although it applies to overlays as well. This variable was introduced
5581to implement the `font-lock-face' property. 4945to implement the `font-lock-face' property.
5582 4946
5583+++
5584*** New function `get-char-property-and-overlay' accepts the same 4947*** New function `get-char-property-and-overlay' accepts the same
5585arguments as `get-char-property' and returns a cons whose car is the 4948arguments as `get-char-property' and returns a cons whose car is the
5586return value of `get-char-property' called with those arguments and 4949return value of `get-char-property' called with those arguments and
5587whose cdr is the overlay in which the property was found, or nil if 4950whose cdr is the overlay in which the property was found, or nil if
5588it was found as a text property or not found at all. 4951it was found as a text property or not found at all.
5589 4952
5590+++
5591*** The new function `remove-list-of-text-properties'. 4953*** The new function `remove-list-of-text-properties'.
5592 4954
5593It is like `remove-text-properties' except that it takes a list of 4955It is like `remove-text-properties' except that it takes a list of
@@ -5595,13 +4957,11 @@ property names as argument rather than a property list.
5595 4957
5596** Face changes 4958** Face changes
5597 4959
5598+++
5599*** The variable `facemenu-unlisted-faces' has been removed. 4960*** The variable `facemenu-unlisted-faces' has been removed.
5600Emacs has a lot more faces than in the past, and nearly all of them 4961Emacs has a lot more faces than in the past, and nearly all of them
5601needed to be excluded. The new variable `facemenu-listed-faces' lists 4962needed to be excluded. The new variable `facemenu-listed-faces' lists
5602the faces to include in the face menu. 4963the faces to include in the face menu.
5603 4964
5604+++
5605*** The new face attribute condition `min-colors' can be used to tailor 4965*** The new face attribute condition `min-colors' can be used to tailor
5606the face color to the number of colors supported by a display, and 4966the face color to the number of colors supported by a display, and
5607define the foreground and background colors accordingly so that they 4967define the foreground and background colors accordingly so that they
@@ -5609,7 +4969,6 @@ look best on a terminal that supports at least this many colors. This
5609is now the preferred method for defining default faces in a way that 4969is now the preferred method for defining default faces in a way that
5610makes a good use of the capabilities of the display. 4970makes a good use of the capabilities of the display.
5611 4971
5612+++
5613*** New function `display-supports-face-attributes-p' can be used to test 4972*** New function `display-supports-face-attributes-p' can be used to test
5614whether a given set of face attributes is actually displayable. 4973whether a given set of face attributes is actually displayable.
5615 4974
@@ -5617,43 +4976,36 @@ A new predicate `supports' has also been added to the `defface' face
5617specification language, which can be used to do this test for faces 4976specification language, which can be used to do this test for faces
5618defined with `defface'. 4977defined with `defface'.
5619 4978
5620---
5621*** The special treatment of faces whose names are of the form `fg:COLOR' 4979*** The special treatment of faces whose names are of the form `fg:COLOR'
5622or `bg:COLOR' has been removed. Lisp programs should use the 4980or `bg:COLOR' has been removed. Lisp programs should use the
5623`defface' facility for defining faces with specific colors, or use 4981`defface' facility for defining faces with specific colors, or use
5624the feature of specifying the face attributes :foreground and :background 4982the feature of specifying the face attributes :foreground and :background
5625directly in the `face' property instead of using a named face. 4983directly in the `face' property instead of using a named face.
5626 4984
5627+++
5628*** The first face specification element in a defface can specify 4985*** The first face specification element in a defface can specify
5629`default' instead of frame classification. Then its attributes act as 4986`default' instead of frame classification. Then its attributes act as
5630defaults that apply to all the subsequent cases (and can be overridden 4987defaults that apply to all the subsequent cases (and can be overridden
5631by them). 4988by them).
5632 4989
5633+++
5634*** The variable `face-font-rescale-alist' specifies how much larger 4990*** The variable `face-font-rescale-alist' specifies how much larger
5635(or smaller) font we should use. For instance, if the value is 4991(or smaller) font we should use. For instance, if the value is
5636'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10 4992'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10
5637point, we actually use a font of 13 point if the font matches 4993point, we actually use a font of 13 point if the font matches
5638SOME-FONTNAME-PATTERN. 4994SOME-FONTNAME-PATTERN.
5639 4995
5640---
5641*** The function `face-differs-from-default-p' now truly checks 4996*** The function `face-differs-from-default-p' now truly checks
5642whether the given face displays differently from the default face or 4997whether the given face displays differently from the default face or
5643not (previously it did only a very cursory check). 4998not (previously it did only a very cursory check).
5644 4999
5645+++
5646*** `face-attribute', `face-foreground', `face-background', `face-stipple'. 5000*** `face-attribute', `face-foreground', `face-background', `face-stipple'.
5647 5001
5648These now accept a new optional argument, INHERIT, which controls how 5002These now accept a new optional argument, INHERIT, which controls how
5649face inheritance is used when determining the value of a face 5003face inheritance is used when determining the value of a face
5650attribute. 5004attribute.
5651 5005
5652+++
5653*** New functions `face-attribute-relative-p' and `merge-face-attribute' 5006*** New functions `face-attribute-relative-p' and `merge-face-attribute'
5654help with handling relative face attributes. 5007help with handling relative face attributes.
5655 5008
5656+++
5657*** The priority of faces in an :inherit attribute face list is reversed. 5009*** The priority of faces in an :inherit attribute face list is reversed.
5658 5010
5659If a face contains an :inherit attribute with a list of faces, earlier 5011If a face contains an :inherit attribute with a list of faces, earlier
@@ -5662,20 +5014,17 @@ releases of Emacs, the order was the opposite. This change was made
5662so that :inherit face lists operate identically to face lists in text 5014so that :inherit face lists operate identically to face lists in text
5663`face' properties. 5015`face' properties.
5664 5016
5665---
5666*** On terminals, faces with the :inverse-video attribute are displayed 5017*** On terminals, faces with the :inverse-video attribute are displayed
5667with swapped foreground and background colors even when one of them is 5018with swapped foreground and background colors even when one of them is
5668not specified. In previous releases of Emacs, if either foreground 5019not specified. In previous releases of Emacs, if either foreground
5669or background color was unspecified, colors were not swapped. This 5020or background color was unspecified, colors were not swapped. This
5670was inconsistent with the face behavior under X. 5021was inconsistent with the face behavior under X.
5671 5022
5672---
5673*** `set-fontset-font', `fontset-info', `fontset-font' now operate on 5023*** `set-fontset-font', `fontset-info', `fontset-font' now operate on
5674the default fontset if the argument NAME is nil.. 5024the default fontset if the argument NAME is nil..
5675 5025
5676** Font-Lock changes: 5026** Font-Lock changes:
5677 5027
5678+++
5679*** New special text property `font-lock-face'. 5028*** New special text property `font-lock-face'.
5680 5029
5681This property acts like the `face' property, but it is controlled by 5030This property acts like the `face' property, but it is controlled by
@@ -5683,7 +5032,6 @@ M-x font-lock-mode. It is not, strictly speaking, a builtin text
5683property. Instead, it is implemented inside font-core.el, using the 5032property. Instead, it is implemented inside font-core.el, using the
5684new variable `char-property-alias-alist'. 5033new variable `char-property-alias-alist'.
5685 5034
5686+++
5687*** font-lock can manage arbitrary text-properties beside `face'. 5035*** font-lock can manage arbitrary text-properties beside `face'.
5688 5036
5689**** the FACENAME returned in `font-lock-keywords' can be a list of the 5037**** the FACENAME returned in `font-lock-keywords' can be a list of the
@@ -5693,7 +5041,6 @@ properties than `face'.
5693**** `font-lock-extra-managed-props' can be set to make sure those 5041**** `font-lock-extra-managed-props' can be set to make sure those
5694extra properties are automatically cleaned up by font-lock. 5042extra properties are automatically cleaned up by font-lock.
5695 5043
5696---
5697*** jit-lock obeys a new text-property `jit-lock-defer-multiline'. 5044*** jit-lock obeys a new text-property `jit-lock-defer-multiline'.
5698 5045
5699If a piece of text with that property gets contextually refontified 5046If a piece of text with that property gets contextually refontified
@@ -5720,72 +5067,58 @@ of multiline constructs so that such constructs get properly recognized.
5720 5067
5721** Major mode mechanism changes: 5068** Major mode mechanism changes:
5722 5069
5723+++
5724*** If new variable `auto-mode-case-fold' is set to a non-nil value, 5070*** If new variable `auto-mode-case-fold' is set to a non-nil value,
5725Emacs will perform a second case-insensitive search through 5071Emacs will perform a second case-insensitive search through
5726`auto-mode-alist' if the first case-sensitive search fails. 5072`auto-mode-alist' if the first case-sensitive search fails. This
5727This means that a file FILE.TXT is opened in text-mode, and a file PROG.PY 5073means that a file FILE.TXT is opened in text-mode, and a file
5728is opened in python-mode. Note however, that independent of this 5074PROG.HTML is opened in html-mode. Note however, that independent of
5729setting, *.C files are usually recognized as C++ files. 5075this setting, *.C files are usually recognized as C++ files. It also
5730It also has no effect on systems with case-insensitive file names. 5076has no effect on systems with case-insensitive file names.
5731 5077
5732+++
5733*** New variable `magic-mode-alist' determines major mode for a file by 5078*** New variable `magic-mode-alist' determines major mode for a file by
5734looking at the file contents. It takes precedence over `auto-mode-alist'. 5079looking at the file contents. It takes precedence over `auto-mode-alist'.
5735 5080
5736+++
5737*** An interpreter magic line (if present) takes precedence over the 5081*** An interpreter magic line (if present) takes precedence over the
5738file name when setting the major mode. 5082file name when setting the major mode.
5739 5083
5740+++
5741*** XML or SGML major mode is selected when file starts with an `<?xml' 5084*** XML or SGML major mode is selected when file starts with an `<?xml'
5742or `<!DOCTYPE' declaration. 5085or `<!DOCTYPE' declaration.
5743 5086
5744+++
5745*** Use the new function `run-mode-hooks' to run the major mode's mode hook. 5087*** Use the new function `run-mode-hooks' to run the major mode's mode hook.
5746 5088
5747+++
5748*** All major mode functions should now run the new normal hook 5089*** All major mode functions should now run the new normal hook
5749`after-change-major-mode-hook', at their very end, after the mode 5090`after-change-major-mode-hook', at their very end, after the mode
5750hooks. `run-mode-hooks' does this automatically. 5091hooks. `run-mode-hooks' does this automatically.
5751 5092
5752---
5753*** If a major mode function has a non-nil `no-clone-indirect' 5093*** If a major mode function has a non-nil `no-clone-indirect'
5754property, `clone-indirect-buffer' signals an error if you use 5094property, `clone-indirect-buffer' signals an error if you use
5755it in that buffer. 5095it in that buffer.
5756 5096
5757+++
5758*** Major modes can define `eldoc-documentation-function' 5097*** Major modes can define `eldoc-documentation-function'
5759locally to provide Eldoc functionality by some method appropriate to 5098locally to provide Eldoc functionality by some method appropriate to
5760the language. 5099the language.
5761 5100
5762+++
5763*** `define-derived-mode' by default creates a new empty abbrev table. 5101*** `define-derived-mode' by default creates a new empty abbrev table.
5764It does not copy abbrevs from the parent mode's abbrev table. 5102It does not copy abbrevs from the parent mode's abbrev table.
5765 5103
5766+++
5767*** The new function `run-mode-hooks' and the new macro `delay-mode-hooks' 5104*** The new function `run-mode-hooks' and the new macro `delay-mode-hooks'
5768are used by `define-derived-mode' to make sure the mode hook for the 5105are used by `define-derived-mode' to make sure the mode hook for the
5769parent mode is run at the end of the child mode. 5106parent mode is run at the end of the child mode.
5770 5107
5771** Minor mode changes: 5108** Minor mode changes:
5772 5109
5773+++
5774*** `define-minor-mode' now accepts arbitrary additional keyword arguments 5110*** `define-minor-mode' now accepts arbitrary additional keyword arguments
5775and simply passes them to `defcustom', if applicable. 5111and simply passes them to `defcustom', if applicable.
5776 5112
5777+++
5778*** `minor-mode-list' now holds a list of minor mode commands. 5113*** `minor-mode-list' now holds a list of minor mode commands.
5779 5114
5780+++ 5115*** `define-globalized-minor-mode'.
5781*** `define-global-minor-mode'.
5782 5116
5783This is a new name for what was formerly called 5117This is a new name for what was formerly called
5784`easy-mmode-define-global-mode'. The old name remains as an alias. 5118`easy-mmode-define-global-mode'. The old name remains as an alias.
5785 5119
5786** Command loop changes: 5120** Command loop changes:
5787 5121
5788+++
5789*** The new function `called-interactively-p' does what many people 5122*** The new function `called-interactively-p' does what many people
5790have mistakenly believed `interactive-p' to do: it returns t if the 5123have mistakenly believed `interactive-p' to do: it returns t if the
5791calling function was called through `call-interactively'. 5124calling function was called through `call-interactively'.
@@ -5793,14 +5126,12 @@ calling function was called through `call-interactively'.
5793Only use this when you cannot solve the problem by adding a new 5126Only use this when you cannot solve the problem by adding a new
5794INTERACTIVE argument to the command. 5127INTERACTIVE argument to the command.
5795 5128
5796+++
5797*** The function `commandp' takes an additional optional argument. 5129*** The function `commandp' takes an additional optional argument.
5798 5130
5799If it is non-nil, then `commandp' checks for a function that could be 5131If it is non-nil, then `commandp' checks for a function that could be
5800called with `call-interactively', and does not return t for keyboard 5132called with `call-interactively', and does not return t for keyboard
5801macros. 5133macros.
5802 5134
5803+++
5804*** When a command returns, the command loop moves point out from 5135*** When a command returns, the command loop moves point out from
5805within invisible text, in the same way it moves out from within text 5136within invisible text, in the same way it moves out from within text
5806covered by an image or composition property. 5137covered by an image or composition property.
@@ -5811,51 +5142,41 @@ unexpected side-effects since the property applies to everything
5811(including `goto-char', ...) whereas this new code is only run after 5142(including `goto-char', ...) whereas this new code is only run after
5812`post-command-hook' and thus does not care about intermediate states. 5143`post-command-hook' and thus does not care about intermediate states.
5813 5144
5814+++
5815*** If a command sets `transient-mark-mode' to `only', that 5145*** If a command sets `transient-mark-mode' to `only', that
5816enables Transient Mark mode for the following command only. 5146enables Transient Mark mode for the following command only.
5817During that following command, the value of `transient-mark-mode' 5147During that following command, the value of `transient-mark-mode'
5818is `identity'. If it is still `identity' at the end of the command, 5148is `identity'. If it is still `identity' at the end of the command,
5819the next return to the command loop changes to nil. 5149the next return to the command loop changes to nil.
5820 5150
5821+++
5822*** Both the variable and the function `disabled-command-hook' have 5151*** Both the variable and the function `disabled-command-hook' have
5823been renamed to `disabled-command-function'. The variable 5152been renamed to `disabled-command-function'. The variable
5824`disabled-command-hook' has been kept as an obsolete alias. 5153`disabled-command-hook' has been kept as an obsolete alias.
5825 5154
5826+++
5827*** `emacsserver' now runs `pre-command-hook' and `post-command-hook' 5155*** `emacsserver' now runs `pre-command-hook' and `post-command-hook'
5828when it receives a request from emacsclient. 5156when it receives a request from emacsclient.
5829 5157
5830+++
5831*** `current-idle-time' reports how long Emacs has been idle. 5158*** `current-idle-time' reports how long Emacs has been idle.
5832 5159
5833** Lisp file loading changes: 5160** Lisp file loading changes:
5834 5161
5835+++
5836*** `load-history' can now have elements of the form (t . FUNNAME), 5162*** `load-history' can now have elements of the form (t . FUNNAME),
5837which means FUNNAME was previously defined as an autoload (before the 5163which means FUNNAME was previously defined as an autoload (before the
5838current file redefined it). 5164current file redefined it).
5839 5165
5840+++
5841*** `load-history' now records (defun . FUNNAME) when a function is 5166*** `load-history' now records (defun . FUNNAME) when a function is
5842defined. For a variable, it records just the variable name. 5167defined. For a variable, it records just the variable name.
5843 5168
5844+++
5845*** The function `symbol-file' can now search specifically for function, 5169*** The function `symbol-file' can now search specifically for function,
5846variable or face definitions. 5170variable or face definitions.
5847 5171
5848+++
5849*** `provide' and `featurep' now accept an optional second argument 5172*** `provide' and `featurep' now accept an optional second argument
5850to test/provide subfeatures. Also `provide' now checks `after-load-alist' 5173to test/provide subfeatures. Also `provide' now checks `after-load-alist'
5851and runs any code associated with the provided feature. 5174and runs any code associated with the provided feature.
5852 5175
5853---
5854*** The variable `recursive-load-depth-limit' has been deleted. 5176*** The variable `recursive-load-depth-limit' has been deleted.
5855Emacs now signals an error if the same file is loaded with more 5177Emacs now signals an error if the same file is loaded with more
5856than 3 levels of nesting. 5178than 3 levels of nesting.
5857 5179
5858+++
5859** Byte compiler changes: 5180** Byte compiler changes:
5860 5181
5861*** The byte compiler now displays the actual line and character 5182*** The byte compiler now displays the actual line and character
@@ -5892,36 +5213,30 @@ you anything.
5892 5213
5893*** The local variable `no-byte-compile' in Lisp files is now obeyed. 5214*** The local variable `no-byte-compile' in Lisp files is now obeyed.
5894 5215
5895---
5896*** When a Lisp file uses CL functions at run-time, compiling the file 5216*** When a Lisp file uses CL functions at run-time, compiling the file
5897now issues warnings about these calls, unless the file performs 5217now issues warnings about these calls, unless the file performs
5898(require 'cl) when loaded. 5218(require 'cl) when loaded.
5899 5219
5900** Frame operations: 5220** Frame operations:
5901 5221
5902+++
5903*** New functions `frame-current-scroll-bars' and `window-current-scroll-bars'. 5222*** New functions `frame-current-scroll-bars' and `window-current-scroll-bars'.
5904 5223
5905These functions return the current locations of the vertical and 5224These functions return the current locations of the vertical and
5906horizontal scroll bars in a frame or window. 5225horizontal scroll bars in a frame or window.
5907 5226
5908+++
5909*** The new function `modify-all-frames-parameters' modifies parameters 5227*** The new function `modify-all-frames-parameters' modifies parameters
5910for all (existing and future) frames. 5228for all (existing and future) frames.
5911 5229
5912+++
5913*** The new frame parameter `tty-color-mode' specifies the mode to use 5230*** The new frame parameter `tty-color-mode' specifies the mode to use
5914for color support on character terminal frames. Its value can be a 5231for color support on character terminal frames. Its value can be a
5915number of colors to support, or a symbol. See the Emacs Lisp 5232number of colors to support, or a symbol. See the Emacs Lisp
5916Reference manual for more detailed documentation. 5233Reference manual for more detailed documentation.
5917 5234
5918+++
5919*** When using non-toolkit scroll bars with the default width, 5235*** When using non-toolkit scroll bars with the default width,
5920the `scroll-bar-width' frame parameter value is nil. 5236the `scroll-bar-width' frame parameter value is nil.
5921 5237
5922** Mule changes: 5238** Mule changes:
5923 5239
5924+++
5925*** Already true in Emacs 21.1, but not emphasized clearly enough: 5240*** Already true in Emacs 21.1, but not emphasized clearly enough:
5926 5241
5927Multibyte buffers can now faithfully record all 256 character codes 5242Multibyte buffers can now faithfully record all 256 character codes
@@ -5937,72 +5252,58 @@ the time it takes to convert the format.
59373. For binary files where format conversion would be pointless and 52523. For binary files where format conversion would be pointless and
5938wasteful. 5253wasteful.
5939 5254
5940---
5941*** `set-buffer-file-coding-system' now takes an additional argument, 5255*** `set-buffer-file-coding-system' now takes an additional argument,
5942NOMODIFY. If it is non-nil, it means don't mark the buffer modified. 5256NOMODIFY. If it is non-nil, it means don't mark the buffer modified.
5943 5257
5944+++
5945*** The new variable `auto-coding-functions' lets you specify functions 5258*** The new variable `auto-coding-functions' lets you specify functions
5946to examine a file being visited and deduce the proper coding system 5259to examine a file being visited and deduce the proper coding system
5947for it. (If the coding system is detected incorrectly for a specific 5260for it. (If the coding system is detected incorrectly for a specific
5948file, you can put a `coding:' tags to override it.) 5261file, you can put a `coding:' tags to override it.)
5949 5262
5950+++
5951*** The new variable `ascii-case-table' stores the case table for the 5263*** The new variable `ascii-case-table' stores the case table for the
5952ascii character set. Language environments (such as Turkish) may 5264ascii character set. Language environments (such as Turkish) may
5953alter the case correspondences of ASCII characters. This variable 5265alter the case correspondences of ASCII characters. This variable
5954saves the original ASCII case table before any such changes. 5266saves the original ASCII case table before any such changes.
5955 5267
5956---
5957*** The new function `merge-coding-systems' fills in unspecified aspects 5268*** The new function `merge-coding-systems' fills in unspecified aspects
5958of one coding system from another coding system. 5269of one coding system from another coding system.
5959 5270
5960---
5961*** New coding system property `mime-text-unsuitable' indicates that 5271*** New coding system property `mime-text-unsuitable' indicates that
5962the coding system's `mime-charset' is not suitable for MIME text 5272the coding system's `mime-charset' is not suitable for MIME text
5963parts, e.g. utf-16. 5273parts, e.g. utf-16.
5964 5274
5965+++
5966*** New function `decode-coding-inserted-region' decodes a region as if 5275*** New function `decode-coding-inserted-region' decodes a region as if
5967it is read from a file without decoding. 5276it is read from a file without decoding.
5968 5277
5969---
5970*** New CCL functions `lookup-character' and `lookup-integer' access 5278*** New CCL functions `lookup-character' and `lookup-integer' access
5971hash tables defined by the Lisp function `define-translation-hash-table'. 5279hash tables defined by the Lisp function `define-translation-hash-table'.
5972 5280
5973---
5974*** New function `quail-find-key' returns a list of keys to type in the 5281*** New function `quail-find-key' returns a list of keys to type in the
5975current input method to input a character. 5282current input method to input a character.
5976 5283
5977** Mode line changes: 5284** Mode line changes:
5978 5285
5979+++
5980*** New function `format-mode-line'. 5286*** New function `format-mode-line'.
5981 5287
5982This returns the mode line or header line of the selected (or a 5288This returns the mode line or header line of the selected (or a
5983specified) window as a string with or without text properties. 5289specified) window as a string with or without text properties.
5984 5290
5985+++
5986*** The new mode-line construct `(:propertize ELT PROPS...)' can be 5291*** The new mode-line construct `(:propertize ELT PROPS...)' can be
5987used to add text properties to mode-line elements. 5292used to add text properties to mode-line elements.
5988 5293
5989+++
5990*** The new `%i' and `%I' constructs for `mode-line-format' can be used 5294*** The new `%i' and `%I' constructs for `mode-line-format' can be used
5991to display the size of the accessible part of the buffer on the mode 5295to display the size of the accessible part of the buffer on the mode
5992line. 5296line.
5993 5297
5994+++
5995*** Mouse-face on mode-line (and header-line) is now supported. 5298*** Mouse-face on mode-line (and header-line) is now supported.
5996 5299
5997** Menu manipulation changes: 5300** Menu manipulation changes:
5998 5301
5999---
6000*** To manipulate the File menu using easy-menu, you must specify the 5302*** To manipulate the File menu using easy-menu, you must specify the
6001proper name "file". In previous Emacs versions, you had to specify 5303proper name "file". In previous Emacs versions, you had to specify
6002"files", even though the menu item itself was changed to say "File" 5304"files", even though the menu item itself was changed to say "File"
6003several versions ago. 5305several versions ago.
6004 5306
6005---
6006*** The dummy function keys made by easy-menu are now always lower case. 5307*** The dummy function keys made by easy-menu are now always lower case.
6007If you specify the menu item name "Ada", for instance, it uses `ada' 5308If you specify the menu item name "Ada", for instance, it uses `ada'
6008as the "key" bound by that key binding. 5309as the "key" bound by that key binding.
@@ -6010,7 +5311,6 @@ as the "key" bound by that key binding.
6010This is relevant only if Lisp code looks for the bindings that were 5311This is relevant only if Lisp code looks for the bindings that were
6011made with easy-menu. 5312made with easy-menu.
6012 5313
6013---
6014*** `easy-menu-define' now allows you to use nil for the symbol name 5314*** `easy-menu-define' now allows you to use nil for the symbol name
6015if you don't need to give the menu a name. If you install the menu 5315if you don't need to give the menu a name. If you install the menu
6016into other keymaps right away (MAPS is non-nil), it usually doesn't 5316into other keymaps right away (MAPS is non-nil), it usually doesn't
@@ -6018,30 +5318,24 @@ need to have a name.
6018 5318
6019** Operating system access: 5319** Operating system access:
6020 5320
6021+++
6022*** The new primitive `get-internal-run-time' returns the processor 5321*** The new primitive `get-internal-run-time' returns the processor
6023run time used by Emacs since start-up. 5322run time used by Emacs since start-up.
6024 5323
6025+++
6026*** Functions `user-uid' and `user-real-uid' now return floats if the 5324*** Functions `user-uid' and `user-real-uid' now return floats if the
6027user UID doesn't fit in a Lisp integer. Function `user-full-name' 5325user UID doesn't fit in a Lisp integer. Function `user-full-name'
6028accepts a float as UID parameter. 5326accepts a float as UID parameter.
6029 5327
6030+++
6031*** New function `locale-info' accesses locale information. 5328*** New function `locale-info' accesses locale information.
6032 5329
6033---
6034*** On MS Windows, locale-coding-system is used to interact with the OS. 5330*** On MS Windows, locale-coding-system is used to interact with the OS.
6035The Windows specific variable w32-system-coding-system, which was 5331The Windows specific variable w32-system-coding-system, which was
6036formerly used for that purpose is now an alias for locale-coding-system. 5332formerly used for that purpose is now an alias for locale-coding-system.
6037 5333
6038---
6039*** New function `redirect-debugging-output' can be used to redirect 5334*** New function `redirect-debugging-output' can be used to redirect
6040debugging output on the stderr file handle to a file. 5335debugging output on the stderr file handle to a file.
6041 5336
6042** Miscellaneous: 5337** Miscellaneous:
6043 5338
6044+++
6045*** A number of hooks have been renamed to better follow the conventions: 5339*** A number of hooks have been renamed to better follow the conventions:
6046 5340
6047`find-file-hooks' to `find-file-hook', 5341`find-file-hooks' to `find-file-hook',
@@ -6054,50 +5348,41 @@ debugging output on the stderr file handle to a file.
6054 5348
6055In each case the old name remains as an alias for the moment. 5349In each case the old name remains as an alias for the moment.
6056 5350
6057+++
6058*** Variable `local-write-file-hooks' is marked obsolete. 5351*** Variable `local-write-file-hooks' is marked obsolete.
6059 5352
6060Use the LOCAL arg of `add-hook'. 5353Use the LOCAL arg of `add-hook'.
6061 5354
6062---
6063*** New function `x-send-client-message' sends a client message when 5355*** New function `x-send-client-message' sends a client message when
6064running under X. 5356running under X.
6065 5357
6066** GC changes: 5358** GC changes:
6067 5359
6068+++
6069*** New variable `gc-cons-percentage' automatically grows the GC cons threshold 5360*** New variable `gc-cons-percentage' automatically grows the GC cons threshold
6070as the heap size increases. 5361as the heap size increases.
6071 5362
6072+++
6073*** New variables `gc-elapsed' and `gcs-done' provide extra information 5363*** New variables `gc-elapsed' and `gcs-done' provide extra information
6074on garbage collection. 5364on garbage collection.
6075 5365
6076+++
6077*** The normal hook `post-gc-hook' is run at the end of garbage collection. 5366*** The normal hook `post-gc-hook' is run at the end of garbage collection.
6078 5367
6079The hook is run with GC inhibited, so use it with care. 5368The hook is run with GC inhibited, so use it with care.
6080 5369
6081* New Packages for Lisp Programming in Emacs 22.1 5370* New Packages for Lisp Programming in Emacs 22.1
6082 5371
6083+++
6084** The new library button.el implements simple and fast `clickable 5372** The new library button.el implements simple and fast `clickable
6085buttons' in Emacs buffers. Buttons are much lighter-weight than the 5373buttons' in Emacs buffers. Buttons are much lighter-weight than the
6086`widgets' implemented by widget.el, and can be used by lisp code that 5374`widgets' implemented by widget.el, and can be used by lisp code that
6087doesn't require the full power of widgets. Emacs uses buttons for 5375doesn't require the full power of widgets. Emacs uses buttons for
6088such things as help and apropos buffers. 5376such things as help and apropos buffers.
6089 5377
6090---
6091** The new library tree-widget.el provides a widget to display a set 5378** The new library tree-widget.el provides a widget to display a set
6092of hierarchical data as an outline. For example, the tree-widget is 5379of hierarchical data as an outline. For example, the tree-widget is
6093well suited to display a hierarchy of directories and files. 5380well suited to display a hierarchy of directories and files.
6094 5381
6095+++
6096** The new library bindat.el provides functions to unpack and pack 5382** The new library bindat.el provides functions to unpack and pack
6097binary data structures, such as network packets, to and from Lisp 5383binary data structures, such as network packets, to and from Lisp
6098data structures. 5384data structures.
6099 5385
6100---
6101** master-mode.el implements a minor mode for scrolling a slave 5386** master-mode.el implements a minor mode for scrolling a slave
6102buffer without leaving your current buffer, the master buffer. 5387buffer without leaving your current buffer, the master buffer.
6103 5388
@@ -6118,12 +5403,10 @@ SQL buffer.
6118 (function (lambda () 5403 (function (lambda ()
6119 (master-set-slave sql-buffer)))) 5404 (master-set-slave sql-buffer))))
6120 5405
6121+++
6122** The new library benchmark.el does timing measurements on Lisp code. 5406** The new library benchmark.el does timing measurements on Lisp code.
6123 5407
6124This includes measuring garbage collection time. 5408This includes measuring garbage collection time.
6125 5409
6126+++
6127** The new library testcover.el does test coverage checking. 5410** The new library testcover.el does test coverage checking.
6128 5411
6129This is so you can tell whether you've tested all paths in your Lisp 5412This is so you can tell whether you've tested all paths in your Lisp
diff --git a/etc/ORDERS b/etc/ORDERS
index 8c612a1b1b6..e08931e7ead 100644
--- a/etc/ORDERS
+++ b/etc/ORDERS
@@ -8,6 +8,6 @@ For more information, see the order form on the web at
8Your purchases will help support further development of Emacs and 8Your purchases will help support further development of Emacs and
9other free software programs. 9other free software programs.
10 10
11You can also make tax-deductable donations to the Free Software 11You can also make tax-deductible donations to the Free Software
12Foundation, a not-for-profit organization (assuming you pay US taxes) 12Foundation, a not-for-profit organization (assuming you pay US taxes)
13- see <http://www.gnu.org/help/donate.html>. 13- see <http://www.gnu.org/help/donate.html>.
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index be56254dcd7..f42013fc109 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -217,15 +217,15 @@ configuring your compiler to use the native linker instead of GNU ld.
217This happens because of bugs in Gtk+. Gtk+ 2.10 seems to be OK. See bug 217This happens because of bugs in Gtk+. Gtk+ 2.10 seems to be OK. See bug
218http://bugzilla.gnome.org/show_bug.cgi?id=85715. 218http://bugzilla.gnome.org/show_bug.cgi?id=85715.
219 219
220** Emacs compiled with Gtk+ crashes on startup on cygwin. 220** Emacs compiled with Gtk+ crashes on startup on Cygwin.
221 221
222A typical error message is 222A typical error message is
223 ***MEMORY-ERROR***: emacs[5172]: GSlice: failed to allocate 504 bytes 223 ***MEMORY-ERROR***: emacs[5172]: GSlice: failed to allocate 504 bytes
224 (alignment: 512): Function not implemented 224 (alignment: 512): Function not implemented
225 225
226Emacs supplies its own malloc, but glib (part of Gtk+) calls memalign and on 226Emacs supplies its own malloc, but glib (part of Gtk+) calls memalign and on
227cygwin that becomes the cygwin supplied memalign. As malloc is not the 227Cygwin, that becomes the Cygwin supplied memalign. As malloc is not the
228cygwin malloc, the cygwin memalign always returns ENOSYS. A fix for this 228Cygwin malloc, the Cygwin memalign always returns ENOSYS. A fix for this
229problem would be welcome. 229problem would be welcome.
230 230
231* General runtime problems 231* General runtime problems
@@ -390,9 +390,13 @@ again to say this:
390 390
391*** Emacs does not know your host's fully-qualified domain name. 391*** Emacs does not know your host's fully-qualified domain name.
392 392
393For example, (system-name) returns some variation on
394"localhost.localdomain", rather the name you were expecting.
395
393You need to configure your machine with a fully qualified domain name, 396You need to configure your machine with a fully qualified domain name,
394either in /etc/hosts, /etc/hostname, the NIS, or wherever your system 397(i.e. a name with at least one ".") either in /etc/hosts,
395calls for specifying this. 398/etc/hostname, the NIS, or wherever your system calls for specifying
399this.
396 400
397If you cannot fix the configuration, you can set the Lisp variable 401If you cannot fix the configuration, you can set the Lisp variable
398mail-host-address to the value you want. 402mail-host-address to the value you want.
@@ -1202,7 +1206,7 @@ The problems seem to depend on the version of LessTif and the Motif
1202emulation for which it is set up. 1206emulation for which it is set up.
1203 1207
1204Only the Motif 1.2 emulation seems to be stable enough in LessTif. 1208Only the Motif 1.2 emulation seems to be stable enough in LessTif.
1205Lesstif 0.92-17's Motif 1.2 emulation seems to work okay on FreeBSD. 1209LessTif 0.92-17's Motif 1.2 emulation seems to work okay on FreeBSD.
1206On GNU/Linux systems, lesstif-0.92.6 configured with "./configure 1210On GNU/Linux systems, lesstif-0.92.6 configured with "./configure
1207--enable-build-12 --enable-default-12" is reported to be the most 1211--enable-build-12 --enable-default-12" is reported to be the most
1208successful. The binary GNU/Linux package 1212successful. The binary GNU/Linux package
@@ -1299,7 +1303,7 @@ be carried out at the same time:
1299 improves performance dramatically, at the slight expense of correctness 1303 improves performance dramatically, at the slight expense of correctness
1300 of the X protocol. lbxproxy acheives the performance gain by grouping 1304 of the X protocol. lbxproxy acheives the performance gain by grouping
1301 several X requests in one TCP packet and sending them off together, 1305 several X requests in one TCP packet and sending them off together,
1302 instead of requiring a round-trip for each X request in a seperate 1306 instead of requiring a round-trip for each X request in a separate
1303 packet. The switches that seem to work best for emacs are: 1307 packet. The switches that seem to work best for emacs are:
1304 -noatomsfile -nowinattr -cheaterrors -cheatevents 1308 -noatomsfile -nowinattr -cheaterrors -cheatevents
1305 Note that the -nograbcmap option is known to cause problems. 1309 Note that the -nograbcmap option is known to cause problems.
@@ -1405,7 +1409,7 @@ The easy way to do this is to put
1405 1409
1406in your site-init.el file. 1410in your site-init.el file.
1407 1411
1408* Runtime problems on character termunals 1412* Runtime problems on character terminals
1409 1413
1410** Emacs spontaneously displays "I-search: " at the bottom of the screen. 1414** Emacs spontaneously displays "I-search: " at the bottom of the screen.
1411 1415
@@ -2356,7 +2360,7 @@ The relevant switch in this case is "-Xs" (``compile assuming
2356*** Building Emacs over NFS fails with ``Text file busy''. 2360*** Building Emacs over NFS fails with ``Text file busy''.
2357 2361
2358This was reported to happen when building Emacs on a GNU/Linux system 2362This was reported to happen when building Emacs on a GNU/Linux system
2359(RedHat Linux 6.2) using a build directory automounted from Solaris 2363(Red Hat Linux 6.2) using a build directory automounted from Solaris
2360(SunOS 5.6) file server, but it might not be limited to that 2364(SunOS 5.6) file server, but it might not be limited to that
2361configuration alone. Presumably, the NFS server doesn't commit the 2365configuration alone. Presumably, the NFS server doesn't commit the
2362files' data to disk quickly enough, and the Emacs executable file is 2366files' data to disk quickly enough, and the Emacs executable file is
@@ -2443,17 +2447,17 @@ files are installed. Then use:
2443 2447
2444(using the location of the 32-bit X libraries on your system). 2448(using the location of the 32-bit X libraries on your system).
2445 2449
2446*** Building the Cygwin port for MS-Windows can fail with some GCC version 2450*** Building the Cygwin port for MS-Windows can fail with some GCC versions
2447 2451
2448Building Emacs 22 with Cygwin builds of GCC 3.4.4-1 and 3.4.4-2 is 2452Building Emacs 22 with Cygwin builds of GCC 3.4.4-1 and 3.4.4-2 is
2449reported to either fail or cause Emacs to segfault at run time. In 2453reported to either fail or cause Emacs to segfault at run time. In
2450addition, the Cygwin GCC 3.4.4-2 has problems with generating debug 2454addition, the Cygwin GCC 3.4.4-2 has problems with generating debug
2451info. Cygwin users are advised not to use these versions of GCC for 2455info. Cygwin users are advised not to use these versions of GCC for
2452compiling Emacs. GCC versions 4.0.3, 4.1.1, and 4.1.2 reportedly 2456compiling Emacs. GCC versions 4.0.3, 4.0.4, 4.1.1, and 4.1.2
2453build a working Cygwin binary of Emacs, so we recommend these GCC 2457reportedly build a working Cygwin binary of Emacs, so we recommend
2454versions. Note that these three versions of GCC, 4.0.3, 4.1.1, and 2458these GCC versions. Note that these versions of GCC, 4.0.3, 4.0.4,
24554.1.2, are currently the _only_ versions known to succeed in building 24594.1.1, and 4.1.2, are currently the _only_ versions known to succeed
2456Emacs (as of v22.1). 2460in building Emacs (as of v22.1).
2457 2461
2458*** Building the native MS-Windows port with Cygwin GCC can fail. 2462*** Building the native MS-Windows port with Cygwin GCC can fail.
2459 2463
@@ -2604,7 +2608,7 @@ The fix is to install a newer version of ncurses, such as version 4.2.
2604 2608
2605*** Linux: Segfault during `make bootstrap' under certain recent versions of the Linux kernel. 2609*** Linux: Segfault during `make bootstrap' under certain recent versions of the Linux kernel.
2606 2610
2607With certain recent Linux kernels (like the one of Redhat Fedora Core 2611With certain recent Linux kernels (like the one of Red Hat Fedora Core
26081 and newer), the new "Exec-shield" functionality is enabled by default, which 26121 and newer), the new "Exec-shield" functionality is enabled by default, which
2609creates a different memory layout that breaks the emacs dumper. Emacs tries 2613creates a different memory layout that breaks the emacs dumper. Emacs tries
2610to handle this at build time, but if the workaround used fails, these 2614to handle this at build time, but if the workaround used fails, these
diff --git a/etc/SERVICE b/etc/SERVICE
index 4d6009e9f36..3a057b98af1 100644
--- a/etc/SERVICE
+++ b/etc/SERVICE
@@ -1,1378 +1,10 @@
1-*- text -*-
2GNU Service Directory 1GNU Service Directory
3--------------------- 2---------------------
4 3
5See the end of file for copyright information. 4Please see <http://www.fsf.org/resources/service/> for a list of
5people who have asked to be listed as offering support services for
6GNU software, including GNU Emacs, for a fee or in some cases at no
7charge.
6 8
7This is a list of people who have asked to be listed as offering
8support services for GNU software, including GNU Emacs, for a fee
9or in some cases at no charge.
10
11The information comes from the people who asked to be listed;
12we do not include any information we know to be false, but we
13cannot check out any of the information; we are transmitting it to
14you as it was given to us and do not promise it is correct.
15Also, this is not an endorsement of the people listed here.
16We have no opinions and usually no information about the abilities of
17any specific person. We provide this list to enable you to contact
18service providers and decide for yourself whether to hire one.
19
20Before FSF will list your name in the GNU Service Directory, we ask
21that you agree informally to the following terms:
22
231. You will not restrict (except by copyleft) the use or distribution
24of any software, documentation, or other technical information you
25supply anyone in the course of modifying, extending, or supporting GNU
26software. This includes any information specifically designed to
27ameliorate the use of GNU software.
28
292. You will not take advantage of contact made through the Service
30Directory to advertise an unrelated business (e.g., sales of
31non-GNU-related proprietary information). You may spontaneously
32mention your availability for general consulting, but you should not
33promote a specific unrelated business unless the client asks.
34
35Please include some indication of your rates, because otherwise users
36have nothing to go by. Please put each e-mail address inside "<>".
37Please put nothing else inside "<>". Thanks!
38
39For a current copy of this directory, or to have yourself listed, ask:
40 service@gnu.org
41
42** Please keep the entries in this file alphabetical **
43^_
44Aaronsen Group, Ltd. <gnu@aaronsen.com>
45600 Grant St.
46Suite 5345
47Pittsburgh, PA 15219 US
48+1 412 391 6000 voice
49+1 412 361 5991 fax
50http://www.aaronsen.com/gnu
51
52The Aaronsen Group provides several levels of service in the free software
53arena, from simple configuration and installation to large extensions and
54new development. We specialize in unique applications, but have the
55experience to handle all manner of prospects, from database-backed
56web-sites to high-end multiprocessor clusters.
57
58Our service area covers the US, with key offices in Pittsburgh, PA; San
59Jose, CA; and New York, NY.
60
61We are available for both hourly work (at $300 per hour, some qualified
62discounts are available) and fixed-price projects. Work is done on the
63client site, at our offices, or remote via Internet or telephone
64connection
65
66Updated: 2001-05-08
67^_
68Alcôve
69------
70
71Alcôve, Centre Paris Pleyel, 153 bld Anatole France
7293200 Saint-Denis France
73
74Email: <infos@alcove.fr>
75
76Web: http://www.alcove.com
77Tél.: +33 1 49 22 68 00
78Fax: +33 1 49 22 68 01
79
80Founded in 1996, Alcôve's main purpose is to promote and support the
81use of GNU/Linux and OSS on the European market.
82Expertise in OSS innovation is the foundation of all Alcôve's
83activities.
84We provide key accounts and leading businesses in the field of IT with :
85
86 Consultancy
87 Engineering
88 Training
89 Support
90 Technical watching brief
91 OSS Certification - Validation - Guarantee
92 Drivers for the linux kernel
93 Company directory and unified messaging
94 Linux Firewall Security Package
95
96Keys: support services, consulting, open source software, GNU/Linux,
97Apache, Perl, GNU, Samba, Zope, Imp, OpenLDAP
98
99Average daily rate, depending on the job : 1000 euros.
100
101Updated: 2001-06-26
102^_
103Allegro Consultants, Inc. <info@gccsupport.com>
1041072 De Anza Blvd., Suite B101
105San Jose, CA 95129-3532
106USA
107+1 408 252-2330 voice
108+1 408 252-2334 fax
109http://www.gccsupport.com
110
111Allegro Consultants, Inc, in association with DIS International, is
112now offering annual support contracts covering the GNU Compiler
113Collection and related tools, including the GCC C and C++ compilers
114for MPE/iX.
115
116The free GCC C and C++ compilers have been available on MPE/iX for
117several years now, and are used for mission-critical applications by
118many organizations including Hewlett-Packard. Until now, assistance
119was available only from Mark Klein of DIS on a limited, voluntary
120basis. Mark is the person who originally ported GCC to the HP e3000,
121and he continues to maintain the software and port new versions.
122
123Support contracts start at $1,995.00/year for an organization
124(unlimited number of HP e3000 computer systems) with two designated
125callers. Additional options are available for large organizations who
126need to designate more than two authorized callers, or who want the
127additional security of 24x7 coverage.
128
129Updated: 2001-06-12
130^_
131Amazonia Computing
132
133<rick@viclink.com>
134http://www.viclink.com/~rick
135
1361981 NW Thomsen Lane
137McMinnville, OR 97128
138503-474-0572
139
140I provide development and technical support for free software
141and open source systems including embedded programming, GNU/Linux, the
142GNU development suite..
143
144I have over 10 years experience building and maintaining systems ranging
145from medical patient monitoring systems to Linux device drivers for
146custom PCI plug in cards.
147
148Rates range from $75.00/hr to $90/hr USD. Will work for a lower rate
149if in involves working in either Brazil, Vietnam, Indonesia, or Cuba.
150I am also willing to work on fixed price contracts.
151
152Updated: 2001-05-08
153^_
154Dipl.-Inform. Gerd Aschemann <gerd@aschemann.net>
155Osannstr. 49
156D-64285 Darmstadt
157Tel.: +49 173 3264070
158http://www.aschemann.net/
159
160- Consultant
161 + Unix Network and System Administration
162 + Distributed Systems and Middleware Infrastructures
163- former System Administrator (UNIX and NT) at CS Department, TU Darmstadt, Germany
164- 20 years working in the CS field, System administration on different platforms
165- 13 years with UNIX/Networking/FreeWare/GNU/X11
166- 10 years courses on Operating Systems and Distributed Systems
167- Lectures on System and Network Administration
168- Platforms: Solaris, GNU/Linux, SunOS, Ultrix, HP-UX, Digital Unix, AIX, SCO, FreeBSDs
169- Distributed Platforms and Information Systems (CORBA, WWW, Java, SOAP)
170
171Rates are at 180,-- DM (~85 US$) per hour minimum, depending on the job.
172I am willing to travel for sufficiently large jobs.
173
174Updated: 2001-05-09
175^_
176Baker Research, Ltd.
177P. O. Box 10036, Alexandria, VA 22310
178Phone: (703) 960-9500 (Voice)
179 (703) 960-8700 (Fax)
180Web: http://www.baker-research.com
181email: <solutions@baker-research.com>
182Rate: $75.00/hr to $150.00/hr, or fixed-price projects.
183
184Services:
185
186 --Customization of systems for user needs
187 --Software product evaluation and recommendation
188 --Full-lifecycle software development
189 --Programming (C/C++, tcl/tk, bash, perl)
190 --Custom backup and archival systems
191 --GNU/Linux system installation, configuration, and management
192 --Cluster systems support
193 -Installation, configuration, and management
194 -MPI and Myrinet support
195 --Data acquisition, management, visualization, and archival
196
197Updated: 2001-05-11
198^_
199Don Barry, Ph.D. <don@astro.cornell.edu>
200Ithaca, NY
201
202Astrophysicist with extensive and varied hacker background. Substantial
203expertise in mathematical modeling, instrument interface, low-level and
204high-level hardware control, statistical analysis, automated/mathematical
205typesetting. Also fluent in opto/electro/mechanical design. I try to find
206solutions using free software when possible and specialize in GNU/Linux
207platforms. Degrees also in chemistry and mathematics.
208
209Speak: C, APL, Fortran, J, Perl, Emacs Lisp, IDL, variety of machine
210languages from CDC CYBER (!) to x86 families, TeX/LaTeX, sendmail, and
211quite a few others. Experience on platforms from PDP to present.
212
213Rates: $75--$150 per hour + travel (if required) depending on the needs of
214the project, the level of support and availability required, and its
215interest to me.
216
217Services: consulting, design, porting, lecturing, support, project definition,
218system implementation.
219
220Updated: 2001-05-09
221^_
222James Craig Burley
22397 Arrowhead Circle
224Ashland, MA 01721
225Email: <craig@jcb-sc.com>
226Web: http://world.std.com/~burley/
227
228Expertise (mainly Development and Maintenance):
229 Compilers for Imperative Languages (author of GNU Fortran, aka g77)
230 Operating System Kernels
231 Tools/Utilities
232 Microcode (mainly VLIW) and Assembler
233 Software-Development-System Architecture (including APIs, IDEs)
234 Debugging
235 Technical Writing (Manager of Documentation)
236
237Experience:
238 Programming Languages C, PL/I, Fortran, PostScript
239 Operating Systems Unix, GNU/Linux, Solaris, HP-UX, VAX/VMS, PRIMOS,
240 MIT ITS, TOPS-10, TSS/8, IBM MVS
241 Assembler/Microcode Languages for Sun SPARC, HP-PA RISC, Numerix VLIWs,
242 VAX, Pr1me, IBM 360, PDP-10, PDP-8
243 Scripting Languages (many)
244 APIs (many)
245
246Rate: $180/hour
247
248Updated: 2001-05-08
249^_
250 C2V Michel Delval <mfd@c2v.com>
251 82 bd Haussmann Jean-Alain Le Borgne <jalb@c2v.com>
252 75008 Paris
253 France
254 Tel (33 1) 40.08.07.07
255 Fax (33 1) 43.87.35.99
256 http://www.c2v.com/freesoft.htm
257 e-mail: <consult@c2v.com>
258
259 Services: we offer source or source+binary distribution,
260 installation, training, maintenance, technical support,
261 consulting, specific development and followup on the GNU software
262 development environment: Emacs, gcc/g++, binutils, gas, gdb.
263
264 Porting on new platforms, and professionally developing software
265 with the GNU tools in the Unix/X11 environment since they were
266 first available.
267
268 Experience: GNU C Compilation toolchain for the SGS-Thomson D950
269 and ST20 DSP chips.
270
271 GNU C compilation toolchain (cross-compiler, compiler, linker,
272 assembler, debugger) for SparcV7 ERC32 based space systems
273 (Sextant Avionique / Alcatel Espace).
274
275 Feasability study, analysis and prototyping of a complete
276 compilation toolchain based on the GNU programming tools for the
277 CSEM RISC microprocessor family.
278
279 Rates: from 5000 FF/day to 750 000 FF/year, 40% discount for
280 educational institutions, add taxes and expenses. Ask for list.
281
282Updated: 2001-05-09
283^_
284Cendio Systems AB <info@cendio.com>
285Teknikringen 3
286SE-583 30 Linkoping
287SWEDEN
288+46 13 21 46 00 voice
289+46 13 21 47 00 fax
290http://www.cendio.com/ <international site>
291
292Cendio Systems develops, implements and integrates solutions based on
293Open Source Software. We also develop and market the Fuego
294Firewall(TM), an award winning and easy-to-use firewall, based on
295GNU/Linux.
296
297We offer professional services, including support, maintenance,
298integration and development in the following areas:
299
300* Embedded Linux
301* Client/Server Solutions GNU/Linux/BSD
302* Professional Training GNU/Linux, certifications from SAIR Linux/GNU
303* Open Source Strategy
304* Development/Adaptation of free software
305
306Cendio Systems have deep roots in Linkoping University, and was
307founded 1992 as Signum Support. Our headquarters resides in Mjardevi
308Science Park in Linkoping and we have an office in Stockholm. We are
309currently about fifty employees at both locations.
310
311Cendio Systems won the Lotus 'Tux Award' at LotusSphere 2000 for "the
312partner who best exemplifies a unique dedication to Lotus and Linux
313technologies and has successfully executed their vision in the
314marketplace."
315
316Cendio Systems have the following certifications and memberships:
317
318Association of Computing Machinery, Professional Membership
319COMPAQ System Specialist (Intel and Alpha Systems)
320Embedded Linux Consortium, Founding Member
321IBM Value Added Reseller (Netfinity)
322IBM Solution Provider (RS/6000)
323SAIR GNU/Linux, Accredited Center for education
324SGI Systems Integrator
325
326Rates: Please request our price list.
327
328Updated: 2001-05-09
329^_
330Alex Cherepanov
331111 McDade Blvd, Apt. A-205, Folsom, PA 19033
332Phone: 610 529 3475
333email: <alexcher@erols.com>
334Web: http://users.erols.com/alexcher/
335
336Services: Support and maintenance of free PostScript and PDF
337software including Ghostscript, ps2pdf, a2ps, tiff2ps, pdfopt.
338General imaging, font, and PDL consulting.
339
340Experience: 12 years experience in software engineering, 5 years
341in PostScript and digital color printing.
342
343Rates: $50-75/hour, depending on contract length.
344
345Updated: 2001-05-22
346^_
347CodeSourcery, LLC <info@codesourcery.com>
3489978 Granite Point Ct
349Granite Bay, CA 95746
350(650) 364-5360
351http://www.codesourcery.com
352
353CodeSourcery specializes in customization of, enhancements to, and
354support for all GNU software. We have particular experience in the
355field of programming tools, and have been responsible for many
356features in the GNU C and C++ compilers including the implementation
357of member templates and type-based alias analysis. Mark Mitchell, one
358of our co-founders, is a co-maintainer of the GNU Compiler Collection.
359
360We also have experience with GNU tools ranging from emacs to binutils
361to gdb to autoconf, and are willing to work on any and all free
362software projects.
363
364Please see our web page at www.codesourcery.com for more information
365about our products, services, and prices.
366
367Updated: 2001-05-16
368^_
369Stuart Cracraft <cracraft@gnu.org>
370P.O. Box 6061
371Laguna Niguel, CA, 92607, USA
372Phone: 714-347-8106 (prefer email)
373Rate: negotiable
374
375Consultation topics:
376Entire GNU suite - porting, compilation, installation,
377user-training, administrator-training.
378
379Method: via any combination of telephone, dialup, Internet, in-person, email.
380
381Experience: supporting GNU since project inception, original port of
382GNU Emacs to Sun Solaris, original author of GNU Emacs online tutorial.
383Expertise in C, Emacs Lisp, Perl, Expect, Oracle, Informix, SunOS, Solaris,
384NIS, NFS, system-monitoring via paging. Unix System and Database
385administration or development.
386
387Updated: 2000-12-13
388^_
389Bruce Dawson - <jbd@codemeta.com>
390CodeMeta, Inc.
391Manchester, NH USA
392800-354-2209
393
394Specializing in GNU tools such as CVS, gnats, bash, gawk, fileutils...
395
396Services:
397
398 o 800 phone support.
399
400 o Modification and development.
401
402 o Training.
403
404Rate: Fixed rate deliverables or $110/hour for hourly work.
405
406http://www.codemeta.com
407
408Updated: 2001-05-09
409^_
410Martin Deen Consulting
411<sunra@mail.hypermart.net>
412426 Marietta St. #503
413Atlanta, GA 30313
414(V) 404-931-5392
415http://sunra.hypermart.net
416
417Consultant with many years supporting the GNU/Linux environment and
418working with Open Source solutions. Available for hourly and per
419project work. Hourly rates start at $100/hr. Work can be done on
420client site, offsite, or remotely via Internet. Can take engagements
421in Atlanta with little notice, call for arangements elsewhere.
422
423Updated: 2001-04-20
424^_
425DSS Distributed Systems Software, Inc.
4263253 Georgia St. <dss@dss.bc.ca>
427Richmond, British Columbia V7E 2R4 http://www.dss.bc.ca
428CANADA (604) 270-9559
429
430GNU-related services:
431 We specialize in support for GCC (mainly C and C++), including porting,
432 retargeting, and customizing.
433 Also, GNU and other free software that falls within our areas of expertise.
434
435Expertise:
436 DSS provides software design, implementation, and consulting services.
437
438 Distributed systems:
439 o Client/Server architectures, computer networking, communication
440protocols
441 o Directory systems, including X.500 and LDAP
442 o High-performance and special-purpose distributed systems and databases:
443 scalability, reliability, availability, transactions
444 o Computer systems performance analysis
445
446 Compilers, translators, and interpreters, including "small" and
447 special-purpose languages
448
449Rates:
450 Consulting rates are $65-$200 USD per hour, plus
451 applicable taxes. Fixed-cost projects are also possible.
452
453Updated: 2001-05-10
454^_
455John W. Eaton
456<jwe@gnu.org>, <jwe@net66.com>
457
458Experience: Original author and current maintainer of GNU Octave
459 (http://www.octave.org).
460
461 Derivatives of the Unix man utility that I wrote in 1990
462 are currently distributed with several GNU/Linux systems.
463
464 Improved GNU Make's support for VPATH and object
465 libraries on VMS systems.
466
467 Various other enhancements and bug fixes for other free
468 software tools.
469
470 I have more than 18 years experience programming various
471 languages and systems, more than 13 years as a user and
472 system mangler of Unix systems, including Ultrix, SunOS,
473 AIX, HP/UX, BSD, IRIX, Digital Unix, and GNU/Linux.
474 Long-time user of GNU tools on all these platforms.
475
476Programming: Octave, Matlab, C++, C, Fortran, Emacs Lisp, TeX/LaTeX,
477 AWK, M4, Autoconf, Make, Lex & YACC, Unix shell
478 programming, etc.
479
480Services: Anything related to programming and extending Octave.
481 Porting, installation, and customization of GNU/Linux and
482 GNU tools. Unix system administration.
483
484Rates: $100/hour + travel and expenses (if required). Will
485 consider travel for short periods and/or sufficiently
486 interesting jobs, but prefer to work via the net or email.
487 Lower rates for non-profits.
488
489Updated: 2001-05-14
490^_
491 Echo Labs <echo@iinet.net.au>
492 29 Weld St, http://www.iinet.net.au/~echo/
493 Nedlands, WA 6009
494 Perth, Australia
495 +61 (0) 41 356 0008
496
497 Echo Labs is a software consultancy that also provides support and
498 development skills. Specialising in GNU software, particularly Tcl/Tk
499 and Linux. We can deliver systems at a fraction of the cost of those
500 based on more traditional technologies. Internet/intranet, telephony
501 and data communications solutions, for all platforms are undertaken.
502 GUI front-ends done quickly in rapid development process.
503
504 While typically involved in engineering and technical areas, any
505 GNU/Open Source software will be supported.
506
507 For further details see: http://www.iinet.net.au/~echo/
508
509 Experience: 15+ years C/Unix, Sun, SCO, GNU/Linux, Win/NT.
510 Secure WWW servers (Apache SSL), Ecommerce solutions.
511 Systems programming, device drivers, hardware interfacing.
512 GNU tools/utilities, telephony and Embedded & realtime
513 systems. Communications protocols and implementation.
514
515 Degrees: BAppSc (CS) (Distinction), Curtin University, Perth
516
517 Rates: AUS $50-75/hr neg.
518
519Updated: 2001-05-09
520^_
521Noah Friedman <friedman@splode.com>
5226114 La Salle Ave. #739
523Oakland, CA 94611-2802
524
525Author of several Emacs Lisp packages and parts of Emacs, as well as
526numerous network and unix system utilities. Co-maintained GNU Texinfo and
527Autoconf for a couple of years. Experienced unix systems engineer.
528FSF employee Feb 1991--Sep 1994.
529
530I can perform installation, porting, and enhancement of all GNU software
531and any other free software, especially for Linux/GNU systems; design
532high-capacity hardware-redundant servers for production environments;
533provide consulting on the use of version control management with CVS; and I
534am willing to provide handholding for shell programming and Emacs Lisp
535development.
536
537Fees negotiable, averaging $100-$150/hour. I can work in the California
538bay area or anywhere accessible on the Internet. For larger jobs I may be
539willing to travel.
540
541Updated: 2001-05-08
542^_
543Brian Gough <bjg@network-theory.co.uk>
544Network Theory Limited http://www.network-theory.co.uk/
545Bristol, United Kingdom
546
547Tel: 0117 3179309 (in UK), +44 117 3179309 (outside UK)
548
549I provide support and development of free software on a contract
550basis. I can work at your site, over the internet, or by phone/email.
551I have extensive experience with many free software packages,
552particularly for web development.
553
554I can also provide specialized consulting in numerical software
555development for scientific and quantitative applications.
556
557Rate: 40-60 pounds/hour, depending on location.
558
559Updated: 2001-09-05
560^_
561Ronald F. Guilmette <rfg@monkeys.com>
562RG Consulting
5631751 East Roseville Pkwy. #1828
564Roseville, CA 95661
565Tel: +1 916 786 7945
566FAX: +1 916 786 5311
567
568Services: Development & porting of GNU software development tools.
569
570GNU Contributions:
571 Invented, designed, and implemented the protoize and
572 unprotoize tools supplied with GCC2.
573
574 Designed and developed all code to support the generation
575 of Dwarf symbolic debugging information for System V Release
576 4 in GCC2.
577
578 Performed original port of GNU compilers to SVr4 system.
579
580 Finished port of GNU compilers to Intel i860 RISC
581 processor.
582
583Experience: 13+ years UNIX systems experience, all working on compilers
584 and related tools.
585
586 7+ years working professionally on GCC, G++, and GDB under
587 contract to various firms including the Microelectronics
588 and Computer Technology Corporation (MCC), Data General (DG),
589 Network Computing Devices (NCD), and Intel Corp.
590
591Other qualifications:
592 Developer of the RoadTest (tm) C and C++ commercial
593 compiler test suites.
594
595 Former vice-chairman of UNIX International Programming
596 Languages Special Interest Group (UI/PLSIG).
597
598 Bachelor's and a Master's degrees, both in Computer Science.
599
600Rates: Variable depending upon contract duration. Call for quote.
601
602Updated: 2000-12-13
603^_
604IDEALX
60515-17 avenue de ségur
60675007 Paris
607France
608
609Tel - +33144420000 Fax - +33144420001
610http://www.IDEALX.com, http://www.IDEALX.org
611
612IDEALX is involved in the development of Open Source solutions,and
613ensures their deployment and maintenance.
614Development
615Technical support
616Technology watch
617Consulting
618Engineering
619Training
620
621Rates - Variable
622
623Updated: 2000-12-13
624^_
625Ehud Karni <kehud@iname.com>
626Israel
627
628Support of Emacs & Emacs lisp, GNU/Linux, Cygwin.
629
630Fee: $75/hour.
631
632Updated: 2001-05-09
633^_
634Bradley M. Kuhn
635<bkuhn@ebb.org>
636http://www.ebb.org/bkuhn
637
638I am available for part-time system administration, software development
639and training. I have extensive experience with system administration of
640GNU/Linux systems, and Free Software development. I have also taught
641courses in C++ and Perl. As an employee of the FSF, I have a unique
642perspective on the free software community.
643
644Please visit my homepage for more information on my background and skills.
645My resume is also available there.
646
647I am available for both 1099 and W2 on-site contracting in the Boston, MA,
648USA metropolitan area, as well as remote consulting via dialup or Internet
649connection anywhere in the USA. I am not interested in relocation.
650However, temporary (two week maximum) jobs with paid expenses at other
651locations will be considered.
652
653My rate varies greatly (between $25-$60/hour) depending on the
654circumstances. Rates for non-profit organizations will be on the lower end
655of the spectrum, if I support your cause.
656
657Updated: 2001-06-14
658^_
659Paul Gillingwater, CEO
660CSO Lanifex Unternehmensberatungs & Softwareentwicklung GmbH
661Praterstrasse 60
662A-1020 Vienna, Austria
663http://www.lanifex.com
664Phone.: +43/1/2699293-21
665Fax.: +43/1/2699293-13
666Mobile.: +43/699/19223085
667
668 CSO Lanifex is an effective team of software developers who are
669actively implementing Web-based database systems, using a variety of
670Open Source technologies, including GNU/Linux, PHP, MySQL, Perl and
671especially the Midgard Project.
672
673 Our speciality is Web development with content management, especially
674for larger Web portals and e-Commerce systems. We're very much
675in-favour of Free (as in speech) software, and have used it for almost
676all of our customers.
677
678 We have eight staff, with a variety of skills, including RHCE, PHP,
679Perl, C, Java, SQL, network design, security consulting, Internet
680routing, UMS etc. The CEO personally has over 20 years of experience
681with UNIX, and more than 10 years experience with a variety of
682Internet technologies. For a more complete list, please refer to our
683Web site listed below.
684
685For further details see: http://www.lanifex.com
686
687Rates: ATS 1.500/hr neg.
688
689Updated: 2000-12-19
690^_
691Greg Lehey
692LEMIS
693PO Box 460
694Echunga SA 5153
695Australia
696
697Phone: +61-8-8388-8286
698Fax: +61-8-8388-8725
699Mobile: +61-418-838-708
700Mail <grog@lemis.com>
701
702Services: Supply, porting, installation, consultation on all GNU
703products.
704
705Experience: 25 years OS and compiler experience, ports of most GNU
706products. Author of ported software CD-ROM for UNIX System V.4.2,
707"Porting UNIX Software" (O'Reilly), "Installing and Running FreeBSD"
708and "The Complete FreeBSD" (both Walnut Creek).
709
710Rates: Choice of AUD 300 per hour or hotline rates AUD 6 per minute.
711Outside Australia, $US 180 per hour or $US 3.50 per minute. Quick,
712well prepared questions by mail may be free.
713
714Updated: 2001-05-09
715^_
716Alan Lehotsky <apl@alum.mit.edu>
717Quality Software Management
718634 West St
719Carlisle, MA 01741
720
721Phone: (978)287-0435
722Fax: (978)287-0436
723
724Services:
725 - Support for GNU compilers, including rehost/retarget
726 - GNU Binutils rehost/retarget.
727 - cgen/sim
728 - Perl internals hacking
729 - General system software work (SW tools, O/S, device drivers)
730 - runtime library (especially floating point)
731 - project management
732 - software process improvement
733
734Experience: 20+ years of design and implementation of optimizing
735 compilers. "Mr. Bliss" at Digital in the 70's and early
736 80's. Experience with Motorola 68k, PowerPC, SPARC, Intel
737 x86 and IA64 (Merced), MIPS, NS32K, ADI SHARC DSP, VAX, PDP-11,
738 PDP-10. Wrote or maintained compilers for Ada, BLISS, C, C++,
739 FORTRAN, Pascal, Modula/2, O/S experience includes Unix (OSF/1,
740 SunOS, Solaris, AIX, HP/UX), VAX/VMS, Windows/NT, MacOS.
741
742 8 years experience with GCC internals, including major changes to
743 support 8 bit bytes on word-address Analog Devices SHARC DSP and
744 general support of PowerPC code generation. Retargetted gcc/binutils
745 cross-tools to ASIC used in optical switch. Retargeted gcc to 8 bit "internet toaster"
746 micro-computer.
747
748References available
749
750Rates: $110/hr.
751 fixed price possible for well-defined deliverables.
752
753Updated: 2001-05-08
754^_
755Reuven M. Lerner
756Lerner Communications Consulting Ltd.
757PO Box 518
758105 Nahar Ha-Yarden Street
759Modi'in 71700
760Israel <reuven@lerner.co.il>
761
762Phone: 08-973-2225 (within Israel)
763 +972-8-973-2225 (outside of Israel)
764
765Fax: 08-973-0477 (within Israel)
766 +972-8-973-0477 (outside of Israel)
767
768WWW: http://www.lerner.co.il
769
770We specialize in writing custom Web and Internet applications. In
771particular:
772
773- We create database-backed Web sites using Perl, Tcl, Python, Java,
774 Apache, mod_perl, MySQL, PostgreSQL, and (when free software doesn't
775 suffice) Oracle.
776
777- We offer support and service for system administrators who need help
778 with their GNU/Linux systems.
779
780- We offer training in a variety of programming languages (Perl, Tcl,
781 Python, and Java) and in GNU/Linux administration.
782
783Consulting rates: $150/hour, or $100/hour for non-profits
784
785Updated: 2001-05-09
786^_
787Richard Levitte (in TeX: Richard Levitte
788Levitte Programming Levitte Programming
789Spannvagen 38, I Spannv\"agen 28, I
790S-168 35 Bromma S-168 35 Bromma
791Sweden Sweden)
792Tel.nr.: +46 (8) 26 52 47 (there is an answering machine)
793Cellular: +46 (708) 26 53 44
794e-mail: <levitte@lp.se>
795
796What I do:
797 Primarily I work on GNU software for VMS, both VAX and AXP. I've
798 been porting GNU Emacs to VMS since spring 1991. I've ported a
799 bunch of other GNU programs as well. I maintain GNU vmslib.
800 For further info, see http://www.lp.se/~levitte/prof/resume.html
801
802Programs supported:
803 To a varying degree (ranging from extension and porting to
804 installation and simple questions) at the time of updating this
805 entry:
806 - GNU vmslib, emacs, autoconf, zip, diffutils, m4, patch, texinfo,
807 C/C++; on both VMS and Unix.
808 - Other GNU programs to a small degree; on Unix.
809 For further info, look at http://www.lp.se/products/gnu.html
810
811Experience:
812 Fluent in TeX/LaTeX and many programming languages.
813 Modified key elements in Emacs (e.g., memory and process management)
814 to work transparently on VMS. I have very good knowledge in the VMS
815 operating system. I'm also knowledged in the a few Unix flavors.
816 For further info, see http://www.lp.se/~levitte/prof/resume.html
817
818Your Rate:
819 $70-$100/hour (500-800 SEK in sweden), plus expenses. My rates
820 are negotiable, depending on how interesting the project is to me.
821
822Updated: 2000-05-28
823^_
824Gordon Matzigkeit <gord@gnu.org>
825Box 325 http://fig.org/~gord/
826Lumsden, Saskatchewan S0G 3C0 Voice: (306) 731-3011
827CANADA
828
829I will gladly help novice and intermediate computer users to install,
830understand, and use free software, whether or not I have prior
831experience with that software. I know my limitations well, and will
832freely give other contacts if I cannot solve your problem myself.
833
834I have over 5 years of experience with several of the major free OSes:
835GNU/Linux (Debian, Red Hat), NetBSD, FreeBSD, and GNU/Hurd. Some of
836my specialties are networking, Emacs, Automake, Autoconf, C, Perl, and
837shell script programming.
838
839My rates are negotiable depending on the task: usually $40-$60
840(Canadian) per hour. Flat rates preferred.
841
842Updated: 2000-12-19
843^_
844 NetGuide Scandinavia AB <info@netg.se>
845 Tankeg=E5ngen 4
846 S-417 56 G=F6teborg, Sweden
847 +46 31 50 79 00 voice
848 +46 31 50 79 39 fax
849 http://www.netg.se
850
851NetGuide Scandinavia AB is a company that does consultant jobs and holds
852courses in the fields of Unix software, TCP/IP networking and Internet
853applications. The people behind NetGuide Scandinavia AB have many years of
854general Unix experience, both as system administrators and as
855programmers, and also extensive experience in maintaining the GNU
856programs; in administration as well as finding and fixing bugs.
857
858Services offered:
859
860 - Installation and customizing GNU and other free software. We will
861 make free software as easy to install and use as shrink wrapped
862 programs.
863 - Service and support subscriptions.
864 - Warranty protection.
865 - Customization and porting.
866 - Subscriptions to new versions which we will send monthly or with
867 any other interval.
868 - Finding, recommending and investigating free software in any
869 area of the customers choice.
870 - Regular consulting.
871 - Support on Internet service software, especially the free
872 - Support on GNU/Linux.
873 - Freeware based courses in Unix usage, C, C++, or any GNU tools
874
875 Rates: For courses, contact us for a quote,
876 For consulting, $60-120/hour, depending on contract length.
877
878Updated: 2000-12-13
879^_
880Thien-Thi Nguyen
881ttn@glug.org
882San Diego, CA, USA
883
884 - scheme, common lisp, elisp, c, perl, verilog, sh, etc
885 - software architecture / implementation / testing
886 - hardware design / verification
887 - tools flow / environment tweaking / scripting
888 - simulators / transactors / stimulus generators
889 - glue code / integration
890
891Resume: http://www.glug.org/people/ttn/resume.html
892
893Rate: $100/hr, possibly less
894
895Updated: 2001-05-08
896^_
897David Nicol
898Post office box 45163
899Kansas City, Missouri 64171
900<david@tipjar.com>
901http://www.tipjar.com/dnconsult
902
903Unix, GNU/Linux, Perl installation, C, C++, Lisp, Perl programming.
904
905CGI programming.
906
907Installation, porting.
908
909Specification development, design, implementation, documentation.
910
911Rate: $60/hour, or fixed contract. On-site support available in
912greater Kansas City area.
913
914Updated: 2001-05-08
915^_
916Jonas Oberg (TeX: Jonas \"Oberg
917Skalangsgatan 11B Sk\"al\"angsgatan 11B
918S-723 36 Vasteras S-723 36 V\"aster\.as
919Sweden Sweden)
920
921Phone: +46-21-144831
922E-mail: <jonas@gnu.org>
923
924I offer support for most GNU software including the GNU
925Hurd and also do system administration on GNU systems.
926I can do free software development and have a good
927understanding of automake, autoconf, flex, bison, guile,
928texinfo and much more. Rates around USD$100.
929
930Updated: 2001-05-09
931^_
932 Peter Olsen
933 P.O. Box 410
934 Simpsonville, MD 21150
935
936 <p@sigmaxi.org>
937
938 What I do: Mathematical modeling and model building using Gnu
939 and other Free Software. Scientific and engineering
940 analysis, modeling, and programming in FORTRAN, C, LISP,
941 and Java. Statistical analysis. Emacs customization.
942
943 Examples of my previous work:
944 1. I built the model used predict the
945 amount of work required to clean up the Exxon Valdez oil
946 spill. Model was completed in ten days, used to allocate
947 resources for $2 billion summer cleanup, predictions were
948 accurate.
949 2. I built a model applying commercial capital
950 investment standards to a Federal Agency budget, helped
951 support $250 Million budget increase.
952
953 Credo: Engineering is the art of applying a professional
954 knowledge of mathematics and the physical sciences to
955 improve the quality of life.
956
957 Rates: $135/hour (+ travel and expenses) on site,
958 $95/hour remote access.
959
960 Notes: 1. Visiting Lecturer for Society for Industrial and Applied
961 Mathematics: Will speak without fee about Valdez model
962 (or other work) to Educational and not-for-profit
963 organizations (plus most-economical travel and living
964 expenses or travel or living arrangements in kind).
965
966 2. I do not accept offers which pose the danger
967 of conflict of interest with any present or former client
968 or employer.
969
970
971Updated: 2000-12-13
972^_
973 Open Systems Computing AS Open Systems Computing AS
974 Kongensgate 9 Rogaland Kunnskapspark, PB 8034
975 N-0153 Oslo Prof. Olav Hanssensvei 11
976 Norway N-4068 Stavanger
977 Norway
978
979Phone: Fax:
980 +47 22 20 40 50 +47 22 20 02 85
981
982Web: E-mail:
983 http://www.osc.no <gnu-support@osc.no>
984
985Open Systems Computing AS can provide programming support for all
986GNU software -- extending or adopting it to meet customer needs.
987Prices vary with software and project. Hourly fees are in the $80-120
988range. Fixed-priced projects are also available. Phone support is
989available only for customers with support contracts.
990
991Updated: 2001-05-09
992^_
993Francesco Potortì <pot@gnu.org>
994Via S.Stefano, 8
99556123 Pisa, Italy
996Tel. (050)560671
997
998Emacs: installation and maintenance, training and tutorials,
999 customisation, extensions, troubleshooting. Author of some of
1000 the packages in the emacs distribution, has made the porting
1001 of emacs to the Motorola Delta architecture.
1002
1003Other: installation and maintenance of GNU software. Experience with
1004 hylafax, RCS, gperf, etags, smail, indent, diff, gawk, gcc,
1005 screen. Is the current maintainer of etags.
1006
1007Rates: 100 E/hour.
1008 Prefer e-mail communication to telephone.
1009
1010Qualifications: Electronic Engineering degree, Pisa. Full time
1011 researcher in CNUCE-CNR.
1012 Familiar with elisp programming, porting of C programs,
1013 low-level TCP/IP programming for embedded systems.
1014
1015Updated: 2001-05-09
1016^_
1017Quoll Systems Pty Ltd, see http://quoll.com.au
10188 Brown St, Fannie Bay, Darwin, NT, Australia.
1019Phone: +61 8 8941 7150 Fax: +61 8 8941 7151 Mobile: 0409 691 399
1020e-mail: <pjm@gnu.org> or <info@quoll.com.au>
1021
1022QS is a small (4 full-time staff + 15 part-timers) which does a variety
1023of things in the *IX, technical computing area including:
1024
1025 o Systems development/maintainence (in most programming languages)
1026 o Training (GNU/Linux, FreeBSD, OpenBSD, Apache, Perl, ...)
1027 o Consulting in areas such as security, reliability,
1028
1029Recent projects have included wind turbine generator control, water
1030quality databases, remote area satelliate communications, Apache Web
1031serving, ISP configurations, *nix training. Staff have provided some
1032small contributions to the GNU and BSD projects over the years. We
1033also have a bit of expertise in the embedded(inside people) systems
1034area in addition to the standard building work.
1035
1036We can provide local (i.e. southern hemisphere/south east asia) support
1037for most of the vast range of free software systems including: GNU/Linux,
1038FreeBSD, OpenBSD , OpenSSH, Sendmail, various compilers and networking
1039tools. Remote support can also be arranged.
1040
1041Rates: vary depending on the work, period and staff provided but let
1042 us pick 100$US/hr as a starting point for senior staff.
1043
1044Updated: 2000-12-13
1045^_
1046Red Hat, Inc.
1047<embedded-info@redhat.com>
10481325 Chesapeake Terrace
1049Sunnyvale, CA 94089 USA
1050Toll free: 866-2REDHAT ext. 3005
1051+1 408 542 9600 voice
1052+1 408 542 9699 fax
1053
1054GNUPro Tools
1055Red Hat provides supported and maintained versions of gcc, g++, gdb
1056with GUI, GNU linker and GNU macro assembler. In addition, Red Hat
1057provides these GNU software development tools for well over many
1058popular host-target configurations. Support includes bug fixes and
1059semi-annual releases of the toolset. Each release is regression
1060tested and includes substantial improvements and additions to the
1061current release. Support is available through Incident support
1062packages, or Unlimited support for specific user groups. GNUPro is
1063available with standard, custom, and vintage toolchains for both
1064native and embedded application development. New target processors
1065are being added regularly. Rates for support for standard products
1066start at $12,500.
1067
1068Embedded Linux
1069Red Hat offers Red Hat Embedded Linux to companies looking for an open
1070source and royalty-free runtime solution. Red Hat Embedded Linux
1071currently supports certain ARM, StrongARM, and MIPS families of
1072processors. Embedded Linux supports multiple graphics APIs, is
1073compliant with POSIX APIs and thread support, can be configured as low
1074as 512k memory footprint including TCP/IP and NFS built into the
1075kernel, and supports journaling and transparent compression in
1076filesystems. Support for new processors is available via Red Hat
1077Professional Services.
1078
1079Updated: 2001-05-16
1080^_
1081Relogic AB
1082Pipersgatan 26
1083Box 868
1084SE-112 28 Stockholm
1085SWEDEN
1086
1087web http://www.relogic.se
1088e-mail info@relogic.se
1089phone +46 708 800 000
1090fax +46 708 800 580
1091
1092Relogic provides experienced unix developers that know and love GNU
1093products. We can take on anything from single contractor support to
1094full scale projects. We know all programming languages and all Unix
1095dialects.
1096
1097Updated: 2000-12-14
1098^_
1099Phillip Rulon
1100122 Blossom Rd.
1101Westport, MA 02790
1102USA
1103508.672.3007
1104<pjr@gnu.org>
1105
110615 years experience with GNU systems and tools. Available for any free
1107software project. Most useful for network design and construction or
1108dynamic web development. Very good Debian, Perl, and Apache.
1109
1110Boston, travel OK.
1111$100/hr, flat rate possible.
1112
1113Updated: 2000-12-18
1114^_
1115Stanislav Shalunov <shalunov@mccme.ru>
1116
1117Customizing GNU Emacs (new modes OK). Installing and troubleshooting
1118free software. Rate: $60-100/hour. NYC area, telecommuting preferred.
1119References available.
1120
1121Updated: 2000-12-12
1122^_
1123SRA (Software Research Associates, Inc., Japan) <info-wingnut@sra.co.jp>
11241-1-1, Hirakawa-cho, Chiyoda-ku
1125Tokyo 102-8605 Japan
1126
1127+81-3-3234-5610 voice
1128+81-3-3234-5556 fax
1129
1130http://www.sra.co.jp/wingnut/
1131http://www.sra.co.jp/wingnut/chirashi-e.html
1132http://www.sra.co.jp/wingnut/service.html
1133http://osb.sra.co.jp/WingnutSupport/
1134
1135We provide GNU software support at a reasonable charge,
1136aiming to promote the sound growth of free software and to
1137create a new culture in the software world.
1138
1139News:
1140
1141 We have just started "GCC and CVS membership support service".
1142 We provide various support menus. Please refer to
1143 http://osb.sra.co.jp/WingnutSupport/ for details.
1144
1145What we provide is:
1146
1147 1. Research and development of GNU software.
1148 2. Development, porting, and customization of GNU software itself.
1149 3. Helping people who are willing to port and provide GNU software
1150 to their customers, but are unable to do so due to a lack of resources.
1151 4. Providing a variety of educational and training services including
1152 how to port or to customize.
1153 5. The result of the work will become free software covered under the
1154 GNU licenses (GPL or LGPL), so it will be possible not only to share
1155 the results with others but to eliminate unnecessary investment also.
1156 6. Passing the result to the program package maintainers (if needed).
1157 7. Also, making contributions to FSF (Free Software Foundation, Inc.)
1158 which is the organization that develops and distributes GNU software
1159 worldwide.
1160
1161 Furthermore, we provide services *native to Japan*, that is,
1162 services for Japanese-speaking people --- receiving inquiries and
1163 answering in Japanese.
1164
1165Rates:
1166 Determined by estimation.
1167
1168Updated: 2001-05-21
1169^_
1170Andre Spiegel <spiegel@gnu.org>
1171Dipl.-Inform.
1172Berlin, Germany
1173
1174Maintainer of the GNU Emacs version control package (VC).
1175
1176I can provide consulting and practical help for the installation and
1177administration of GNU/Linux systems, in particular Debian. Also
1178knowledgeable on many other Unix derivates, and network technology.
1179Installation, porting and customization of GNU software is possible; I
1180have programming experience in C, C++, Java, and Emacs Lisp, among
1181others. Expertise in version control using RCS or CVS. I also give
1182seminars on the above subjects.
1183
1184Rates: 150 DM/hr (US$ 85)
1185
1186Updated: 2001-05-09
1187^_
1188Name: Julian Stacey <jhs@freebsd.org> <jhs@bim.bsn.com> <jhs@muc.de>
1189Location: Muenchen, Deutschland (Munich, Germany).
1190Qualifications: University Degree, BSc Hons Computers & Cybernetics, 1980.
1191Phone: +49.89.268616 Fax: +49.89.2608126 Data: +49.89.26023276
1192Resume: http://bim.bsn.com/~jhs/ Older: http://www.freebsd.org/~jhs/
1193Time Zone: +01:00
1194Rate: DM 200 - DM 160 / Hour.
1195Specialisation: Unix (Pref. BSD or Linux), C, X-Windows, FSF tools, firewalls,
1196 systems engineering, hardware interfacing, real time/embedded,
1197 custom design & porting. No { Emacs, Cobol, Microsoft }.
1198Free Sources: All BSD sources (updated daily), X-Windows, XFree86, FSF.
1199 Personal sources are here: http://bim.bsn.com/~jhs/src/
1200 Copy Charge dependent on time+postage+media
1201Free GCC-1.40: For Symmetric Computer Systems Model 375 (native cc is broken).
1202Languages: I am English. Ich verstehe Deutsch. Je comprend Francais,
1203 (mais je ecris une response en Anglais). Avoid dialect,
1204 (use Hoch Deutsch, not Bayerisch); Spell slowly & clearly,
1205 (umlauts are not recognised); Use single digits: avoid
1206 inverted German pairs (EG "eight hundred, two and thirty",
1207 & convoluted French ("four twenties and fifteen").
1208Contact: State aprox. days/weeks/months you want professional
1209 consultancy at full commercial rates, .. OR ..
1210Note I am NOT a free help desk !
1211 Post your questions to an Internet newsgroup, & let those with
1212 most time, best knowledge, & inclination answer. If you must
1213 phone me (& I'd much prefer you did Not), Rules apply: First
1214 ask for a few minutes advice "Free Of Charge". (Do not swamp
1215 me with your problem & leave me to deduce you are not a paying
1216 customer). Use some English. Give an email address for
1217 forwarding later info. Volunteer to phone back later to hear
1218 subsequent info/solutions I/friends/net come up with. I do not
1219 pay phone charges to call strangers.
1220
1221Updated: 2001-05-09
1222^_
1223Richard M. Stallman <rms@gnu.org>
1224545 Tech Sq, Rm 430
1225Cambridge, MA 02139
1226
1227Emacs: anything whatever
1228Is anyone interested in courses in using or extending GNU Emacs?
1229
1230Original inventor of Emacs and main author of GNU Emacs and GCC.
1231
1232Rates: $6/min or $250/hr.
1233
1234Updated: 2000-12-13
1235^_
1236Static Free Software
12374119 Alpine Road
1238Portola Valley, Ca 94028
1239(650) 851-2927
1240http://www.staticfreesoft.com
1241
1242Static Free Software developed and supports the "Electric VLSI Design
1243System". Steven Rubin, the founder of the company and author of
1244Electric, is available for enhancements, support, and training.
1245
1246Please see our web page at www.staticfreesoft.com for more information
1247about our products, services, and prices.
1248
1249Updated: 2000-12-12
1250^_
1251Swing Digital Ltd. <hello@swingdigital.com>
125215-17 Middle Street
1253Brighton
1254BN1 1AL
1255United Kingdom
1256Tel +44 (0) 1273 20 11 66
1257Fax +44 (0) 1273 20 11 68
1258http://www.swingdigital.com
1259
1260Swing Digital actively supports the development of the GNU.FREE
1261Internet Voting system. Through this support we have gained the
1262unique expertise to support, install and run GUN.FREE-based Internet
1263votes. We are also available in a consultancy basis to offer advice
1264for organisations wishing to run GNU.FREE themselves.
1265
1266Our consultancy fees start at 900 Euro (550 UK pounds) per day. We
1267are also able to securely host Internet Votes, prices on application.
1268
1269Updated: 2001-07-23
1270^_
1271Kayvan A. Sylvan <kayvan@sylvan.com>
1272Sylvan Associates, Inc.
1273879 Lewiston Drive
1274San Jose, CA 95136-1517
1275Phone: (408) 978-1407
1276Fax: (408) 978-0472
1277
1278I will help you port, install and customize GNU Emacs, GCC, G++, GNUmake,
1279bison, and other GNU tools on almost any architecture and operating
1280system. Questions answered. GNU C/C++, Java and lisp hacking available.
1281
1282I will also do ongoing support and periodic upgrades if you get on my GNU
1283software subscription list.
1284
1285Rates: $100-$125/hour, depending on type and quantity of work.
1286Substantial discounts for long-term contracts and also for educational or
1287non-profit institutions.
1288
1289Experience: Many different Unix systems (2.9BSD to 4.4BSD, Xenix, SVR3 and
1290SVR4, Solaris, Linux, FreeBSD). Systems programming and system
1291administration on all brands of Unix.
1292
1293Kernel hacking experience. Lots of porting experience.
1294
1295Updated: 2001-05-08
1296^_
1297Alfredo Tomasini
1298<alto555@earthlink.net>, <alfredo.tomasini@c-cube.com>
1299
1300GNU/Linux Intel desktop/laptop installation, setup, and networking.
1301Installation of GNU tools on SunOS and GNU/Linux.
1302Sed and Gawk script development.
1303
1304Languages: English and Italian.
1305
1306Fee: $50/hour.
1307
1308Updated: 2000-12-13
1309^_
1310Leonard H. Tower Jr. <tower@ai.mit.edu> <tower@art.net>
131136 Porter Street
1312Somerville, MA 02143-2313
1313USA
1314+1-617-623-7739
1315
1316Will work on most GNU, GPLed, and Open Source software.
1317Installation, handholding, trouble shooting, extensions, teaching, etc.
1318
1319Rates: $ 225.00/hour + travel expenses. Fixed fee quotes available.
1320 Negotiable for non-profits.
1321
1322Experience: Have hacked on over a dozen architectures in many languages. Have
1323system mothered too many varieties of Unixes. Assisted rms with the front end
1324of GCC and its back-end support. Installed and worked with many GNU
1325programs including GNU Emacs. Resume available on request.
1326
1327Updated: 2001-05-10
1328^_
1329Jody Winston
1330xprt Computer Consulting, Inc.
1331731 Voyager
1332Houston, TX, 77062
1333(281) 480-UNIX, <josephwinston@mac.com>
1334
1335We have supported, installed, and used the entire GNU software suite
1336for over 10 years on many different Unix platforms. We have written
1337character device drivers and proc file systems for custom hardware
1338running on GNU/Linux. We have developed extensions for tcl and Python.
1339In addition, we have developed a custom X11 server and X input
1340extensions. Our consulting rate is $150.00 US dollars per hour,
1341negotiable, plus a per diem for out of town work.
1342
1343Updated: 2001-05-08
1344^_
1345The Written Word
1346Web: http://thewrittenword.com
1347Email: info@thewrittenword.com
1348Tel: (800) 372-7476
1349
1350The Written Word provides CDs of pre-compiled Open Source applications
1351on popular UNIX variants. Clients can purchase a one-time CD set
1352($149/set), or a subscription, which provides four quarterly releases.
1353Two types of subscription are available: "media only" ($550/year), or
1354"media and updates" ($1459/year). The "media and updates"
1355subscription entitles the subscriber, via a web site, to patches,
1356security fixes, new releases to existing packages, new packages,
1357online documentation, and changelog information, between releases, and
1358a central bug tracking system for all packages.
1359
1360Updated: 2000-11-27
1361^_
1362
1363For a current copy of this directory, or to have yourself listed, ask:
1364 fsforder@gnu.org
1365
1366A current version should be available on our web site at http://www.gnu.org.
1367
1368** Please keep the entries in this file alphabetical **
1369
1370
1371Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
1372Free Software Foundation, Inc.
1373
1374 Verbatim copying and distribution of this document are permitted
1375 worldwide, without royalty, in any medium, provided this notice is
1376 preserved.
1377 9
1378arch-tag: 1253ce32-1cbd-428a-ac36-70ed9e3999fc 10arch-tag: 1253ce32-1cbd-428a-ac36-70ed9e3999fc
diff --git a/etc/TODO b/etc/TODO
index 427bbe511aa..cb722fdd367 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -14,6 +14,16 @@ to the FSF.
14 14
15* Small but important fixes needed in existing features: 15* Small but important fixes needed in existing features:
16 16
17** Fix compilation when Xaw3d libraries are present but libxaw is not.
18In new X11 versions, xaw3dg-dev does not depend on libxaw-dev, so the
19latter need not be installed. As a result, all the source files that
20look for include files in X11/Xaw should look in X11/Xaw3d if we are
21using Xaw3d.
22
23** Compute the list of active keymaps *after* reading the first event.
24
25** Avoid using "iff" in doc strings.
26
17** mouse-autoselect-window should wait to select the window until 27** mouse-autoselect-window should wait to select the window until
18the mouse is put to rest or after a delay or both, so that moving over 28the mouse is put to rest or after a delay or both, so that moving over
19a window doesn't select it. 29a window doesn't select it.
@@ -82,8 +92,6 @@ current buffer.
82 92
83** Add function to redraw the tool bar. 93** Add function to redraw the tool bar.
84 94
85** Modify allout.el to use overlays, like outline.el.
86
87** M-! M-n should fetch the buffer-file-name as the default. 95** M-! M-n should fetch the buffer-file-name as the default.
88 96
89** Redesign the load-history data structure so it can cope better 97** Redesign the load-history data structure so it can cope better
@@ -92,6 +100,15 @@ current buffer.
92 100
93** make back_comment use syntax-ppss or equivalent. 101** make back_comment use syntax-ppss or equivalent.
94 102
103** Improve configure's treatment of NON_GNU_CPP on Solaris.
104(patch available for after Emacs 22)
105
106** Consider improving src/sysdep.c's search for a fqdn.
107http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00782.html
108
109** Find a proper fix for rcirc multiline nick adding.
110http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00684.html
111
95* Important features: 112* Important features:
96 113
97** Provide user-friendly ways to list all available font families, 114** Provide user-friendly ways to list all available font families,
@@ -509,9 +526,6 @@ when the body only calls primitives.
509** Let LEIM handle the Mode_switch key like XIM does (i.e. a toggle like C-\ 526** Let LEIM handle the Mode_switch key like XIM does (i.e. a toggle like C-\
510but which can also be used as a modifier). 527but which can also be used as a modifier).
511 528
512** Provide the toolbar on ttys. This could map a bit like tmm-menubar
513 for the menubar and buttons could look a bit like those used by customize.
514
515** Improve Help buffers: Change the face of previously visited links (like 529** Improve Help buffers: Change the face of previously visited links (like
516 Info, but also with regard to namespace), add a forward button to make the 530 Info, but also with regard to namespace), add a forward button to make the
517 Help buffer more browser like and gives the value of lisp expressions 531 Help buffer more browser like and gives the value of lisp expressions
@@ -529,7 +543,7 @@ but which can also be used as a modifier).
529 543
530* Internal changes 544* Internal changes
531 545
532** Cleanup all the GC_ mark bit stuff -- there is no longer any distiction 546** Cleanup all the GC_ mark bit stuff -- there is no longer any distinction
533 since the mark bit is no longer stored in the Lisp_Object itself. 547 since the mark bit is no longer stored in the Lisp_Object itself.
534 548
535** Merge ibuffer.el and buff-menu.el. 549** Merge ibuffer.el and buff-menu.el.
@@ -545,7 +559,7 @@ but which can also be used as a modifier).
545 a derived mode of sendmail.el. Or arrange for messages.el to be split 559 a derived mode of sendmail.el. Or arrange for messages.el to be split
546 into a small core and "the rest" so that we use less resources as long as 560 into a small core and "the rest" so that we use less resources as long as
547 we stick to the features provided in sendmail.el. 561 we stick to the features provided in sendmail.el.
548 562
549** Replace gmalloc.c with the modified Doug Lea code from the current 563** Replace gmalloc.c with the modified Doug Lea code from the current
550 GNU libc so that the special mmapping of buffers can be removed -- 564 GNU libc so that the special mmapping of buffers can be removed --
551 that apparently loses under Solaris, at least. [fx has mostly done 565 that apparently loses under Solaris, at least. [fx has mostly done
diff --git a/etc/emacs.1 b/etc/emacs.1
index 4ebcd7c632c..7d90d5a4410 100644
--- a/etc/emacs.1
+++ b/etc/emacs.1
@@ -19,8 +19,7 @@
19.\" Boston, MA 02110-1301, USA. 19.\" Boston, MA 02110-1301, USA.
20.\" 20.\"
21'\" t 21'\" t
22.TH EMACS 1 "2001 November 23" 22.TH EMACS 1 "2007 April 13" "GNU Emacs 22.1"
23.UC 4
24.SH NAME 23.SH NAME
25emacs \- GNU project Emacs 24emacs \- GNU project Emacs
26.SH SYNOPSIS 25.SH SYNOPSIS
@@ -40,11 +39,11 @@ written by the author of the original (PDP-10)
40Richard Stallman. 39Richard Stallman.
41.br 40.br
42The primary documentation of GNU Emacs is in the GNU Emacs Manual, 41The primary documentation of GNU Emacs is in the GNU Emacs Manual,
43which you can read on line using Info, a subsystem of Emacs. Please 42which you can read using Info, either from Emacs or as a standalone
44look there for complete and up-to-date documentation. This man page 43program. Please look there for complete and up-to-date documentation.
45is updated only when someone volunteers to do so; the Emacs 44This man page is updated only when someone volunteers to do so; the
46maintainers' priority goal is to minimize the amount of time this man 45Emacs maintainers' priority goal is to minimize the amount of time
47page takes away from other more useful projects. 46this man page takes away from other more useful projects.
48.br 47.br
49The user functionality of GNU Emacs encompasses 48The user functionality of GNU Emacs encompasses
50everything other 49everything other
@@ -58,7 +57,7 @@ but the facility assumes that you know how to manipulate
58.I Emacs 57.I Emacs
59windows and buffers. 58windows and buffers.
60CTRL-h or F1 enters the Help facility. Help Tutorial (CTRL-h t) 59CTRL-h or F1 enters the Help facility. Help Tutorial (CTRL-h t)
61requests an interactive tutorial which can teach beginners the fundamentals 60starts an interactive tutorial which can teach beginners the fundamentals
62of 61of
63.I Emacs 62.I Emacs
64in a few minutes. 63in a few minutes.
@@ -77,7 +76,7 @@ outline editing (Outline), compiling (Compile), running subshells
77within 76within
78.I Emacs 77.I Emacs
79windows (Shell), running a Lisp read-eval-print loop 78windows (Shell), running a Lisp read-eval-print loop
80(Lisp-Interaction-Mode), and automated psychotherapy (Doctor). 79(Lisp-Interaction-Mode), automated psychotherapy (Doctor), and much more.
81.PP 80.PP
82There is an extensive reference manual, but 81There is an extensive reference manual, but
83users of other Emacses 82users of other Emacses
@@ -201,11 +200,6 @@ Display the
201.I Emacs 200.I Emacs
202window in reverse video. 201window in reverse video.
203.TP 202.TP
204.B \-i
205Use the "kitchen sink" bitmap icon when iconifying the
206.I Emacs
207window.
208.TP
209.BI \-font " font, " \-fn " font" 203.BI \-font " font, " \-fn " font"
210Set the 204Set the
211.I Emacs 205.I Emacs
@@ -262,8 +256,8 @@ with selecting or deselecting the tool bar and menu bar.
262.BI \-fg " color" 256.BI \-fg " color"
263On color displays, sets the color of the text. 257On color displays, sets the color of the text.
264 258
265See the file 259Use the command
266.I /usr/lib/X11/rgb.txt 260.I M-x list-colors-display
267for a list of valid 261for a list of valid
268color names. 262color names.
269.TP 263.TP
@@ -299,7 +293,6 @@ switch when invoking
299from an 293from an
300.IR xterm (1) 294.IR xterm (1)
301window, display is done in that window. 295window, display is done in that window.
302This must be the first option specified in the command line.
303.PP 296.PP
304You can set 297You can set
305.I X 298.I X
@@ -431,43 +424,31 @@ make and distribute copies of the Emacs manual. The TeX source to the
431manual is also included in the Emacs source distribution. 424manual is also included in the Emacs source distribution.
432.PP 425.PP
433.SH FILES 426.SH FILES
434/usr/local/share/info - files for the Info documentation browser 427/usr/local/share/info - files for the Info documentation browser.
435(a subsystem of Emacs) to refer to. Currently not much of Unix 428The complete text of the Emacs reference manual is included in a
436is documented here, but the complete text of the Emacs reference 429convenient tree structured form. Also includes the Emacs Lisp
437manual is included in a convenient tree structured form. 430Reference Manual, useful to anyone wishing to write programs in the
438 431Emacs Lisp extension language.
439/usr/local/share/emacs/$VERSION/src - C source files and object files
440 432
441/usr/local/share/emacs/$VERSION/lisp - Lisp source files and compiled files 433/usr/local/share/emacs/$VERSION/lisp - Lisp source files and compiled files
442that define most editing commands. Some are preloaded; 434that define most editing commands. Some are preloaded;
443others are autoloaded from this directory when used. 435others are autoloaded from this directory when used.
444 436
445/usr/local/share/emacs/$VERSION/etc - various programs that are used with 437/usr/local/libexec/emacs/$VERSION/$ARCH - various programs that are
446GNU Emacs, and some files of information. 438used with GNU Emacs.
439
440/usr/local/share/emacs/$VERSION/etc - various files of information.
447 441
448/usr/local/share/emacs/$VERSION/etc/DOC.* - contains the documentation 442/usr/local/share/emacs/$VERSION/etc/DOC.* - contains the documentation
449strings for the Lisp primitives and preloaded Lisp functions 443strings for the Lisp primitives and preloaded Lisp functions
450of GNU Emacs. They are stored here to reduce the size of 444of GNU Emacs. They are stored here to reduce the size of
451Emacs proper. 445Emacs proper.
452 446
453/usr/local/share/emacs/$VERSION/etc/OTHER.EMACSES discusses GNU Emacs
454vs. other versions of Emacs.
455.br 447.br
456/usr/local/share/emacs/$VERSION/etc/SERVICE lists people offering 448/usr/local/share/emacs/$VERSION/etc/SERVICE lists people offering
457various services to assist users of GNU Emacs, including education, 449various services to assist users of GNU Emacs, including education,
458troubleshooting, porting and customization. 450troubleshooting, porting and customization.
459.br
460These files also have information useful to anyone wishing to write
461programs in the Emacs Lisp extension language, which has not yet been fully
462documented.
463
464/usr/local/com/emacs/lock - holds lock files that are made for all
465files being modified in Emacs, to prevent simultaneous modification
466of one file by two users.
467 451
468.\" START DELETING HERE IF YOU'RE NOT USING X
469/usr/lib/X11/rgb.txt - list of valid X color names.
470.\" STOP DELETING HERE IF YOU'RE NOT USING X
471.PP 452.PP
472.SH BUGS 453.SH BUGS
473There is a mailing list, bug-gnu-emacs@gnu.org, for reporting Emacs 454There is a mailing list, bug-gnu-emacs@gnu.org, for reporting Emacs
@@ -488,9 +469,6 @@ For more information about Emacs mailing lists, see the
488file /usr/local/emacs/etc/MAILINGLISTS. Bugs tend actually to be 469file /usr/local/emacs/etc/MAILINGLISTS. Bugs tend actually to be
489fixed if they can be isolated, so it is in your interest to report 470fixed if they can be isolated, so it is in your interest to report
490them in such a way that they can be easily reproduced. 471them in such a way that they can be easily reproduced.
491.PP
492Bugs that I know about are: shell will not work with programs
493running in Raw mode on some Unix versions.
494.SH UNRESTRICTIONS 472.SH UNRESTRICTIONS
495.PP 473.PP
496.I Emacs 474.I Emacs
@@ -519,11 +497,10 @@ Richard Stallman encourages you to improve and extend
519.I Emacs, 497.I Emacs,
520and urges that 498and urges that
521you contribute your extensions to the GNU library. Eventually GNU 499you contribute your extensions to the GNU library. Eventually GNU
522(Gnu's Not Unix) will be a complete replacement for Berkeley 500(Gnu's Not Unix) will be a complete replacement for Unix.
523Unix.
524Everyone will be free to use, copy, study and change the GNU system. 501Everyone will be free to use, copy, study and change the GNU system.
525.SH SEE ALSO 502.SH SEE ALSO
526X(1), xlsfonts(1), xterm(1), xrdb(1) 503emacsclient(1), etags(1), X(1), xlsfonts(1), xterm(1), xrdb(1)
527.SH AUTHORS 504.SH AUTHORS
528.PP 505.PP
529.I Emacs 506.I Emacs
@@ -532,7 +509,7 @@ Joachim Martillo and Robert Krawitz added the X features.
532.SH COPYING 509.SH COPYING
533Copyright 510Copyright
534.if t \(co 511.if t \(co
535.if n (c) 512.if n (C)
5361995, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 5131995, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
537 2006, 2007 Free Software Foundation, Inc. 514 2006, 2007 Free Software Foundation, Inc.
538.PP 515.PP
diff --git a/etc/images/icons/emacs_16.png b/etc/images/icons/emacs_16.png
index ca5122b05b2..b419b01b4ee 100644
--- a/etc/images/icons/emacs_16.png
+++ b/etc/images/icons/emacs_16.png
Binary files differ
diff --git a/etc/images/icons/emacs_24.png b/etc/images/icons/emacs_24.png
index 95c72d3c49f..790ec7e2bff 100644
--- a/etc/images/icons/emacs_24.png
+++ b/etc/images/icons/emacs_24.png
Binary files differ
diff --git a/etc/images/icons/emacs_32.png b/etc/images/icons/emacs_32.png
index 17b4686e182..31fbb47c0d2 100644
--- a/etc/images/icons/emacs_32.png
+++ b/etc/images/icons/emacs_32.png
Binary files differ
diff --git a/etc/images/icons/emacs_48.png b/etc/images/icons/emacs_48.png
index 56c6de6f364..f0df0fb6594 100644
--- a/etc/images/icons/emacs_48.png
+++ b/etc/images/icons/emacs_48.png
Binary files differ
diff --git a/lib-src/makefile.w32-in b/lib-src/makefile.w32-in
index ed3f7b5c1ab..356e70b3102 100644
--- a/lib-src/makefile.w32-in
+++ b/lib-src/makefile.w32-in
@@ -24,7 +24,7 @@ ALL = make-docfile hexl ctags etags movemail ebrowse sorted-doc digest-doc emacs
24 24
25.PHONY: $(ALL) 25.PHONY: $(ALL)
26 26
27VERSION = 22.0.97 27VERSION = 22.0.98
28 28
29LOCAL_FLAGS = -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \ 29LOCAL_FLAGS = -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \
30 -DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \ 30 -DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index c1f5b3b6888..6dd2bc9863c 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,6 +1,367 @@
12007-04-24 J.D. Smith <jdsmith@as.arizona.edu>
2
3 * progmodes/idlw-shell.el (idlwave-shell-clear-all-bp): Don't
4 re-query for each cleared BP.
5 (idlwave-shell-clear-bp): Optionally skip BP query.
6 (idlwave-shell-update-bp-overlays): Use set-window-margins
7 instead of set-window-buffer, which incorrectly moves displayed
8 region.
9
102007-04-23 Jay Belanger <jay.p.belanger@gmail.com>
11
12 * calc/calc.el (calc-bug-address): Update maintainer's address.
13 * calc/*: Update maintainer's address.
14
152007-04-23 Richard Stallman <rms@gnu.org>
16
17 * simple.el (set-mark-command-repeat-pop): Doc fix.
18 Put in `editing-basics' group.
19
202007-04-23 Chong Yidong <cyd@stupidchicken.com>
21
22 * info.el (Info-mouse-scroll-up, Info-mouse-scroll-down): New
23 functions.
24 (Info-mode-line-node-keymap): Bind mouse commands to
25 Info-mouse-scroll-up/down instead of Info-scroll-up/down.
26
272007-04-23 Luc Teirlinck <teirllm@auburn.edu>
28
29 * locate.el (locate-local-prompt): New var.
30 (locate-prompt-for-command): Doc fix.
31 (locate-prompt-for-search-string): New function.
32 (locate): New optional arg. Make locate-local-prompt
33 buffer-local. Use locate-prompt-for-search-string.
34 (locate-with-filter): New optional arg. Use
35 locate-prompt-for-search-string.
36 (locate-update): Bind locate-prompt-for-command.
37
382007-04-23 Glenn Morris <rgm@gnu.org>
39
40 * files.el (magic-mode-alist): `<!DOCTYPE HTML' in html-mode.
41
422007-04-23 Nick Roberts <nickrob@snap.net.nz>
43
44 * button.el (button): Inherit from link face on a tty.
45
462007-04-23 Glenn Morris <rgm@gnu.org>
47
48 * button.el (button): Use color for this face on a tty.
49
50 * files.el (magic-mode-alist): Allow for carriage-returns in
51 html-mode and sgml-mode entries.
52
532007-04-22 Richard Stallman <rms@gnu.org>
54
55 * emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
56 Improve doc string of generated command.
57
58 * subr.el (read-number): Catch errors.
59
60 * hi-lock.el (hi-lock-file-patterns-policy): Doc fix.
61
622007-04-22 Chong Yidong <cyd@stupidchicken.com>
63
64 * image-dired.el: Rename from thumbnails.el. All instances of
65 "thumbnails" replaced with "image-dired".
66
67 * dired.el (dired-mode-map): Rename "thumbnails" again, to
68 "image-dired".
69
702007-04-22 Kim F. Storm <storm@cua.dk>
71
72 * ido.el (ido-kill-buffer-at-head, ido-delete-file-at-head):
73 Don't use kill-line.
74
752007-04-22 Nick Roberts <nickrob@snap.net.nz>
76
77 * t-mouse.el (t-mouse-make-event): Pass on mev's more informative
78 error message.
79
802007-04-22 Chong Yidong <cyd@stupidchicken.com>
81
82 * dired.el: Rename "tumme" to "thumbnails".
83
84 * thumbnails.el: Rename from tumme.el. All instances of "tumme"
85 replaced with "thumbnails".
86
872007-04-22 Glenn Morris <rgm@gnu.org>
88
89 * hi-lock.el (hi-lock-file-patterns-policy): Make it a defcustom,
90 and give it the risky-local-variable property.
91
92 * textmodes/flyspell.el (flyspell-define-abbrev): Downcase abbrev
93 before defining it.
94
952007-04-21 Martin Rudalics <rudalics@gmx.at>
96
97 * progmodes/cc-mode.el (c-remove-any-local-eval-or-mode-variables):
98 Use delete-region instead of kill-line.
99
1002007-04-21 Alan Mackenzie <acm@muc.de>
101
102 * progmodes/cc-cmds.el (c-electric-slash): Replace wrong use of
103 `kill-region' by `delete-region'.
104
1052007-04-21 Chong Yidong <cyd@stupidchicken.com>
106
107 * progmodes/perl-mode.el (perl-indent-command): Use delete-region
108 instead of kill-region.
109
110 * progmodes/mantemp.el (mantemp-make-mantemps-region)
111 (mantemp-insert-cxx-syntax, mantemp-sort-and-unique-lines)
112 (mantemp-remove-memfuncs): Use delete-region instead of kill-word
113 and kill-line.
114
115 * progmodes/vhdl-mode.el (vhdl-template-type)
116 (vhdl-template-record, vhdl-template-nature)
117 (vhdl-template-configuration-spec, vhdl-template-component-inst)
118 (vhdl-template-break, vhdl-regress-line, vhdl-electric-tab): Use
119 delete-region instead of kill-word and kill-line.
120
1212007-04-21 Johan Bockg,Ae(Brd <bojohan@dd.chalmers.se>
122
123 * dired-x.el (dired-virtual-mode): Doc fix.
124
1252007-04-21 Richard Stallman <rms@gnu.org>
126
127 * font-lock.el (font-lock-keywords-alist): Mark as risky.
128
129 * subr.el (read-number): Doc fix.
130
131 * simple.el (pop-to-mark-command): Display message "mark popped"
132 if point does not move.
133 (set-mark-command): Doc fix.
134
1352007-04-21 Luc Teirlinck <teirllm@auburn.edu>
136
137 * locate.el: Revert 2006-09-09 and 2007-04-20 changes.
138 (locate-local-filter, locate-local-search): New vars.
139 (locate): Make variables local.
140 (locate-update): Bind locate-buffer-name. Call locate using
141 locate-local-filter and locate-local-search.
142
1432007-04-20 David Koppelman <koppel@ece.lsu.edu>
144
145 * hi-lock.el (hi-lock-file-patterns-policy): New var.
146 (hi-lock-find-patterns): Use hi-lock-file-patterns-policy.
147 (hi-lock-mode): Update docstring.
148
1492007-04-20 Stefan Monnier <monnier@iro.umontreal.ca>
150
151 * textmodes/fill.el (fill-move-to-break-point): Don't inhibit
152 fill-nobreak-predicate when the break is past fill-column.
153
1542007-04-20 Francesco Potort,Al(B <pot@gnu.org>
155
156 * locate.el (locate): Output from shell-command should go in the
157 current buffer rather than *Shell Command Output*.
158
1592007-04-20 Chong Yidong <cyd@stupidchicken.com>
160
161 * paren.el (show-paren-function): Fix last fix.
162
1632007-04-19 Kevin Ryde <user42@zip.com.au>
164
165 * arc-mode.el (archive-find-type): lzh-exe for lzh self-extracting exe.
166 (archive-lzh-summarize): Add optional start arg for where to start
167 looking at the archive.
168 (archive-lzh-exe-summarize, archive-lzh-exe-extract): New functions.
169
170 * international/mule.el (auto-coding-alist): no-conversion for .exe
171 and .EXE.
172
1732007-04-19 Alan Mackenzie <acm@muc.de>
174
175 * progmodes/cc-cmds.el (c-in-function-trailer-p): Fix this: when a
176 function return type contains "struct", "union", etc.
177 c-end-of-defun goes too far forward.
178
1792007-04-19 Chong Yidong <cyd@stupidchicken.com>
180
181 * paren.el (show-paren-function): Reset window-start to avoid
182 recentering.
183
1842007-04-19 Glenn Morris <rgm@gnu.org>
185
186 * calendar/todo-mode.el: Fix typo: "threshhold" -> "threshold".
187
1882007-04-18 Glenn Morris <rgm@gnu.org>
189
190 * calendar/diary-lib.el (diary-header-line-format): Add a custom
191 :set function.
192 (diary-list-entries): Only switch to diary-mode from
193 default-major-mode (reverts 2007-03-21 change). Otherwise, if in
194 diary-mode set header-line-format, in case of any customization.
195
1962007-04-18 Levin Du <zslevin@gmail.com> (tiny change)
197
198 * calendar/parse-time.el (parse-time-string-chars): Check if CHAR
199 is less than the length of parse-time-syntax.
200
2012007-04-17 David Kastrup <dak@gnu.org>
202
203 * replace.el (query-replace-regexp-eval): Deprecate.
204
2052007-04-17 Alan Mackenzie <acm@muc.de>
206
207 * progmodes/cc-cmds.el (c-beginning-of-defun): With -ve arg and
208 point too close to EOB, leave point at EOB rather than last `}'.
209
2102007-04-17 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
211
212 * textmodes/bibtex.el (bibtex-include-OPTkey)
213 (bibtex-user-optional-fields, bibtex-entry-field-alist):
214 Fix defcustom.
215
2162007-04-17 Glenn Morris <rgm@gnu.org>
217
218 * calendar/cal-dst.el (calendar-dst-find-startend): If YEAR cannot
219 be encoded, fall back to current year.
220
2212007-04-14 Kevin Ryde <user42@zip.com.au>
222
223 * arc-mode.el (archive-lzh-summarize): Only apply the "downcase if
224 all upcase" rule to OS-ID 0 "generic". Always downcase for OS-ID
225 M "MSDOS".
226
2272007-04-16 Chong Yidong <cyd@stupidchicken.com>
228
229 * progmodes/python.el (python-end-of-block): Avoid looping forever
230 if python-next-statement fails.
231
2322007-04-16 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
233
234 * textmodes/bibtex.el (bibtex-entry-field-alist): Use defcustom.
235
2362007-04-16 Dan Nicolaescu <dann@ics.uci.edu>
237
238 * progmodes/perl-mode.el (perl-indent-level): Mark as safe local var.
239 * progmodes/cperl-mode.el (cperl-indent-level): Likewise.
240
2412007-04-15 Jay Belanger <belanger@truman.edu>
242
243 * calc/calc.el (calc-version): New function.
244 (calc-trail-mode): Shorten the title.
245
2462007-04-15 Chong Yidong <cyd@stupidchicken.com>
247
248 * mail/footnote.el (footnote-style): Clarify docstring to state
249 that customizing this only applies to future footnotes.
250
2512007-04-15 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
252
253 * textmodes/bibtex.el (bibtex-field-list): Use functionp.
254 (bibtex-make-field): Check that INIT is a string. Use functionp.
255
2562007-04-14 Glenn Morris <rgm@gnu.org>
257
258 * complete.el (PC-goto-end): New buffer-local variable.
259 (PC-do-completion-end): Make buffer-local.
260 (partial-completion-mode) <choose-completion-string-functions>:
261 Do not go to the end of the minibuffer if PC-goto-end is non-nil.
262 (PC-do-completion): New optional fourth argument GOTO-END. Add a
263 doc string. Set PC-goto-end for choose-completion.
264 (PC-lisp-complete-symbol): Pass non-nil GOTO-END arg to
265 PC-do-completion.
266
267 * textmodes/bibtex.el (bibtex-insert-kill): Pass non-nil NODELIM
268 arg to bibtex-make-field.
269 (bibtex-make-field): Add optional fourth arg NODELIM.
270 Insert delimiters around INIT unless this arg is non-nil.
271
2722007-04-14 Nick Roberts <nickrob@snap.net.nz>
273
274 * tmm.el (tmm-get-keybind): Use copy-sequence to ensure that the
275 global map isn't modified
276
2772007-04-14 Glenn Morris <rgm@gnu.org>
278
279 * calendar/appt.el (appt-disp-window): Do not split small windows.
280 Suggested by Jeff Miller <jmiller@cablespeed.com>.
281
2822007-04-13 Chong Yidong <cyd@stupidchicken.com>
283
284 * progmodes/compile.el (compilation-start): Revert 2007-03-25 change.
285
286 * files.el: Ditto.
287
2882007-04-13 Juanma Barranquero <lekktu@gmail.com>
289
290 * cus-edit.el (minibuffer, auto-save): Fix typos in docstrings.
291
292 * term.el (term-buffer-maximum-size, term-exec, term-escape-char)
293 (term-set-escape-char, term-termcap-format, term-get-old-input-default)
294 (term-skip-prompt, term-send-string, term-send-region, term-pager-page)
295 (term-pager-help): Fix typos in docstrings.
296
297 * wid-edit.el (widget-documentation): Fix typo in docstring.
298
299 * progmodes/ebnf2ps.el (ebnf-insert-style, ebnf-merge-style):
300 Fix typos in error messages.
301
3022007-04-13 Martin Rudalics <rudalics@gmx.at>
303
304 * emacs-lisp/edebug.el (edebug-pop-to-buffer): Don't select
305 window marked as dedicated.
306
307 * mail/footnote.el (footnote-latin-string): New variable.
308 (footnote-latin-regexp): Redefine as regexp alternative.
309 (Footnote-latin): Use footnote-latin-string instead of
310 footnote-latin-regexp.
311
3122007-04-13 Glenn Morris <rgm@gnu.org>
313
314 * tmm.el (tmm-get-keybind): Use car-safe to avoid errors with
315 inherited keymaps.
316
3172007-04-12 Chong Yidong <cyd@stupidchicken.com>
318
319 * outline.el (outline-get-next-sibling): Clarify docstring.
320 (outline-get-last-sibling): Handle case where we are at the first
321 heading. Clarify docstring.
322
3232007-04-12 Nick Roberts <nickrob@snap.net.nz>
324
325 * progmodes/gud.el (gud-minor-mode-map): Make go button same
326 length as stop button to lessen flicker.
327 (jdb): Add gud-print.
328 (gud-find-expr): Jdb prints the expression with the value, so
329 don't insert it in the output.
330
3312007-04-11 Jason Rumney <jasonr@gnu.org>
332
333 * dnd.el (dnd-get-local-file-name): Decode both upper and lower
334 case hex. Do not try to decode non-hex letters.
335
3362007-04-11 Markus Triska <markus.triska@gmx.at>
337
338 * emacs-lisp/byte-opt.el (byte-optimize-backward-char)
339 (byte-optimize-backward-word): Remove (move to bytecomp.el).
340 (byte-optimize-form-code-walker): Evaluate pure function calls if
341 possible.
342 (byte-optimize-all-constp): New function.
343
344 * emacs-lisp/bytecomp.el (byte-compile-char-before):
345 Improve numeric argument case.
346 (byte-compile-backward-char, byte-compile-backward-word):
347 New functions, performing rewriting previously done in byte-opt.el.
348 Fix their "Fixme" item (restriction to numeric arguments).
349
3502007-04-11 Stefan Monnier <monnier@iro.umontreal.ca>
351
352 * desktop.el (desktop-save, desktop-create-buffer): Replace mapcar
353 with dolist.
354 (after-init-hook): Don't quote lambda.
355 (desktop-first-buffer): Don't wrap it in eval-when-compile.
356 (desktop-internal-v2s): Remove unused var `el'.
357 (desktop-buffer-major-mode, desktop-buffer-locals): Move out of
358 desktop-restore-file-buffer.
359 (desktop-buffer-ok-count, desktop-buffer-fail-count): Move out of
360 desktop-create-buffer.
361
12007-04-10 Chong Yidong <cyd@stupidchicken.com> 3622007-04-10 Chong Yidong <cyd@stupidchicken.com>
2 363
3 * woman.el (woman-decode-buffer): Postphone macro-set check... 364 * woman.el (woman-decode-buffer): Postpone macro-set check...
4 (woman-decode-region): ...to here. 365 (woman-decode-region): ...to here.
5 366
62007-04-10 Thien-Thi Nguyen <ttn@gnu.org> 3672007-04-10 Thien-Thi Nguyen <ttn@gnu.org>
@@ -25,8 +386,8 @@
25 386
26 * emacs-lisp/byte-opt.el (byte-optimize-char-before): Remove (move 387 * emacs-lisp/byte-opt.el (byte-optimize-char-before): Remove (move
27 to bytecomp.el as byte-compile-char-before). 388 to bytecomp.el as byte-compile-char-before).
28 * emacs-lisp/bytecomp.el (byte-compile-char-before): New 389 * emacs-lisp/bytecomp.el (byte-compile-char-before):
29 function (modified replacement for byte-optimize-char-before in 390 New function (modified replacement for byte-optimize-char-before in
30 byte-opt.el). 391 byte-opt.el).
31 392
322007-04-09 Alan Mackenzie <acm@muc.de> 3932007-04-09 Alan Mackenzie <acm@muc.de>
@@ -74,10 +435,10 @@
74 435
75 * cus-start.el <scroll-preserve-screen-position>: Add choices. 436 * cus-start.el <scroll-preserve-screen-position>: Add choices.
76 437
772007-04-08 Johan Bockg,Ae(Brd <bojohan+news@dd.chalmers.se> 4382007-04-08 Johan Bockg,Ae(Brd <bojohan@dd.chalmers.se>
78 439
79 * term/xterm.el (terminal-init-xterm): Fix key definitions. Add 440 * term/xterm.el (terminal-init-xterm): Fix key definitions.
80 binding for C-M-SPC. 441 Add binding for C-M-SPC.
81 442
822007-04-08 Richard Stallman <rms@gnu.org> 4432007-04-08 Richard Stallman <rms@gnu.org>
83 444
@@ -142,8 +503,8 @@
142 503
143 * menu-bar.el (menu-bar-tools-menu): Revert 2003-07-25 change. 504 * menu-bar.el (menu-bar-tools-menu): Revert 2003-07-25 change.
144 505
145 * desktop.el (desktop-create-buffer, desktop-save): Revert 506 * desktop.el (desktop-create-buffer, desktop-save):
146 2004-11-12 change. 507 Revert 2004-11-12 change for lack of copyright papers.
147 508
148 * dired-x.el (dired-guess-shell-case-fold-search): Delete var. 509 * dired-x.el (dired-guess-shell-case-fold-search): Delete var.
149 (dired-guess-default): Respect case. 510 (dired-guess-default): Respect case.
@@ -432,7 +793,7 @@
432 * textmodes/flyspell.el (flyspell-large-region): 793 * textmodes/flyspell.el (flyspell-large-region):
433 Use ispell-call-process-region. 794 Use ispell-call-process-region.
434 795
4352007-03-26 Johan Bockg,Ae(Brd <bojohan+sf@dd.chalmers.se> 7962007-03-26 Johan Bockg,Ae(Brd <bojohan@dd.chalmers.se>
436 797
437 * emacs-lisp/bytecomp.el (byte-compile-file-form-defmumble): 798 * emacs-lisp/bytecomp.el (byte-compile-file-form-defmumble):
438 Use prin1 instead of princ. 799 Use prin1 instead of princ.
@@ -568,6 +929,13 @@
568 (number-of-diary-entries): Change :set to use diary-set-maybe-redraw. 929 (number-of-diary-entries): Change :set to use diary-set-maybe-redraw.
569 (diary-list-entries): Always run diary-mode. 930 (diary-list-entries): Always run diary-mode.
570 931
9322007-03-20 Kenichi Handa <handa@m17n.org>
933
934 * international/quail.el (quail-setup-completion-buf): Make the
935 completion buffer read-only.
936 (quail-completion): Adjusted for the above change. Leave the
937 modified flag nil.
938
5712007-03-20 David Kastrup <dak@gnu.org> 9392007-03-20 David Kastrup <dak@gnu.org>
572 940
573 * files.el (magic-mode-alist): Require literal "%!PS" string for 941 * files.el (magic-mode-alist): Require literal "%!PS" string for
@@ -5385,7 +5753,7 @@
5385 5753
5386 * dired.el (dired-build-subdir-alist): Fix previous change. 5754 * dired.el (dired-build-subdir-alist): Fix previous change.
5387 5755
53882006-10-01 Johan Bockg,Ae(Brd <bojohan+mail@dd.chalmers.se> 57562006-10-01 Johan Bockg,Ae(Brd <bojohan@dd.chalmers.se>
5389 5757
5390 * simple.el (undo-elt-crosses-region): Fix the inequalities. 5758 * simple.el (undo-elt-crosses-region): Fix the inequalities.
5391 5759
@@ -21085,7 +21453,7 @@
21085 21453
21086 * net/newsticker.el: Get rid of CVS keyword. 21454 * net/newsticker.el: Get rid of CVS keyword.
21087 21455
210882005-09-19 Johan Bockg,Ae(Brd <bojohan+sf@dd.chalmers.se> 214562005-09-19 Johan Bockg,Ae(Brd <bojohan@dd.chalmers.se>
21089 21457
21090 * dired-aux.el (dired-handle-overwrite): Don't use `format' here. 21458 * dired-aux.el (dired-handle-overwrite): Don't use `format' here.
21091 The prompt is formatted later. 21459 The prompt is formatted later.
@@ -30153,7 +30521,7 @@
30153 (mail-directory-process defvar): Doc fix. 30521 (mail-directory-process defvar): Doc fix.
30154 (mail-names): Doc fix. 30522 (mail-names): Doc fix.
30155 30523
301562005-03-25 Johan Bockg,Ae(Brd <bojohan+mail@dd.chalmers.se> (tiny change) 305242005-03-25 Johan Bockg,Ae(Brd <bojohan@dd.chalmers.se> (tiny change)
30157 30525
30158 * textmodes/flyspell.el (mail-mode-flyspell-verify): Fix regexp syntax. 30526 * textmodes/flyspell.el (mail-mode-flyspell-verify): Fix regexp syntax.
30159 30527
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index 07a48c761aa..657e2ed87d6 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -723,6 +723,10 @@ archive.
723 (string-match "\\.[aA][rR][cC]$" 723 (string-match "\\.[aA][rR][cC]$"
724 (or buffer-file-name (buffer-name)))) 724 (or buffer-file-name (buffer-name))))
725 'arc) 725 'arc)
726 ;; This pattern modelled on the BSD/GNU+Linux `file' command.
727 ;; Have seen capital "LHA's", and file has lower case "LHa's" too.
728 ;; Note this regexp is also in archive-exe-p.
729 ((looking-at "MZ\\(.\\|\n\\)\\{34\\}LH[aA]'s SFX ") 'lzh-exe)
726 (t (error "Buffer format not recognized"))))) 730 (t (error "Buffer format not recognized")))))
727;; ------------------------------------------------------------------------- 731;; -------------------------------------------------------------------------
728(defun archive-summarize (&optional shut-up) 732(defun archive-summarize (&optional shut-up)
@@ -1421,8 +1425,8 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1421;; ------------------------------------------------------------------------- 1425;; -------------------------------------------------------------------------
1422;; Section: Lzh Archives 1426;; Section: Lzh Archives
1423 1427
1424(defun archive-lzh-summarize () 1428(defun archive-lzh-summarize (&optional start)
1425 (let ((p 1) 1429 (let ((p (or start 1)) ;; 1 for .lzh, something further on for .exe
1426 (totalsize 0) 1430 (totalsize 0)
1427 (maxlen 8) 1431 (maxlen 8)
1428 files 1432 files
@@ -1438,7 +1442,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1438 (time2 (archive-l-e (+ p 17) 2)) ;and UNIX format in level 2 header.) 1442 (time2 (archive-l-e (+ p 17) 2)) ;and UNIX format in level 2 header.)
1439 (hdrlvl (byte-after (+ p 20))) ;header level 1443 (hdrlvl (byte-after (+ p 20))) ;header level
1440 thsize ;total header size (base + extensions) 1444 thsize ;total header size (base + extensions)
1441 fnlen efnname fiddle ifnname width p2 1445 fnlen efnname osid fiddle ifnname width p2
1442 neh ;beginning of next extension header (level 1 and 2) 1446 neh ;beginning of next extension header (level 1 and 2)
1443 mode modestr uid gid text dir prname 1447 mode modestr uid gid text dir prname
1444 gname uname modtime moddate) 1448 gname uname modtime moddate)
@@ -1496,7 +1500,22 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1496 (setq thsize (- neh p)))) 1500 (setq thsize (- neh p))))
1497 (if (= hdrlvl 0) ;total header size 1501 (if (= hdrlvl 0) ;total header size
1498 (setq thsize hsize)) 1502 (setq thsize hsize))
1499 (setq fiddle (if efnname (string= efnname (upcase efnname)))) 1503 ;; OS ID field not present in level 0 header, use code 0 "generic"
1504 ;; in that case as per lha program header.c get_header()
1505 (setq osid (cond ((= hdrlvl 0) 0)
1506 ((= hdrlvl 1) (char-after (+ p 22 fnlen 2)))
1507 ((= hdrlvl 2) (char-after (+ p 23)))))
1508 ;; Filename fiddling must follow the lha program, otherwise the name
1509 ;; passed to "lha pq" etc won't match (which for an extract silently
1510 ;; results in no output). As of version 1.14i it goes from the OS ID,
1511 ;; - For 'M' MSDOS: msdos_to_unix_filename() downcases always, and
1512 ;; converts "\" to "/".
1513 ;; - For 0 generic: generic_to_unix_filename() downcases if there's
1514 ;; no lower case already present, and converts "\" to "/".
1515 ;; - For 'm' MacOS: macos_to_unix_filename() changes "/" to ":" and
1516 ;; ":" to "/"
1517 (setq fiddle (cond ((= ?M osid) t)
1518 ((= 0 osid) (string= efnname (upcase efnname)))))
1500 (setq ifnname (if fiddle (downcase efnname) efnname)) 1519 (setq ifnname (if fiddle (downcase efnname) efnname))
1501 (setq prname (if dir (concat dir ifnname) ifnname)) 1520 (setq prname (if dir (concat dir ifnname) ifnname))
1502 (setq width (if prname (string-width prname) 0)) 1521 (setq width (if prname (string-width prname) 0))
@@ -1625,6 +1644,34 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1625 ;; This should work even though newmode will be dynamically accessed. 1644 ;; This should work even though newmode will be dynamically accessed.
1626 (lambda (old) (archive-calc-mode old newmode t)) 1645 (lambda (old) (archive-calc-mode old newmode t))
1627 files "a unix-style mode" 8)) 1646 files "a unix-style mode" 8))
1647
1648;; -------------------------------------------------------------------------
1649;; Section: Lzh Self-Extracting .exe Archives
1650;;
1651;; No support for modifying these files. It looks like the lha for unix
1652;; program (as of version 1.14i) can't create or retain the DOS exe part.
1653;; If you do an "lha a" on a .exe for instance it renames and writes to a
1654;; plain .lzh.
1655
1656(defun archive-lzh-exe-summarize ()
1657 "Summarize the contents of an LZH self-extracting exe, for `archive-mode'."
1658
1659 ;; Skip the initial executable code part and apply archive-lzh-summarize
1660 ;; to the archive part proper. The "-lh5-" etc regexp here for the start
1661 ;; is the same as in archive-find-type.
1662 ;;
1663 ;; The lha program (version 1.14i) does this in skip_msdos_sfx1_code() by
1664 ;; a similar scan. It looks for "..-l..-" plus for level 0 or 1 a test of
1665 ;; the header checksum, or level 2 a test of the "attribute" and size.
1666 ;;
1667 (re-search-forward "..-l[hz][0-9ds]-" nil)
1668 (archive-lzh-summarize (match-beginning 0)))
1669
1670;; `archive-lzh-extract' runs "lha pq", and that works for .exe as well as
1671;; .lzh files
1672(defalias 'archive-lzh-exe-extract 'archive-lzh-extract
1673 "Extract a member from an LZH self-extracting exe, for `archive-mode'.")
1674
1628;; ------------------------------------------------------------------------- 1675;; -------------------------------------------------------------------------
1629;; Section: Zip Archives 1676;; Section: Zip Archives
1630 1677
diff --git a/lisp/button.el b/lisp/button.el
index 423aef5f78f..8c3681854e7 100644
--- a/lisp/button.el
+++ b/lisp/button.el
@@ -52,8 +52,10 @@
52;; Globals 52;; Globals
53 53
54;; Use color for the MS-DOS port because it doesn't support underline. 54;; Use color for the MS-DOS port because it doesn't support underline.
55;; Also for the linux console.
55(defface button '((((type pc) (class color)) 56(defface button '((((type pc) (class color))
56 (:foreground "lightblue")) 57 (:foreground "lightblue"))
58 (((type tty)) (:inherit link))
57 (t :underline t)) 59 (t :underline t))
58 "Default face used for buttons." 60 "Default face used for buttons."
59 :group 'basic-faces) 61 :group 'basic-faces)
diff --git a/lisp/calc/README b/lisp/calc/README
index a93092f3b11..5dfaf57403c 100644
--- a/lisp/calc/README
+++ b/lisp/calc/README
@@ -17,7 +17,7 @@ Written by:
17 daveg@synaptics.com, uunet!synaptx!daveg 17 daveg@synaptics.com, uunet!synaptx!daveg
18 18
19Currently maintained by: 19Currently maintained by:
20 Jay Belanger <belanger@truman.edu> 20 Jay Belanger <jay.p.belanger@gmail.com>
21 21
22From the introduction to the manual: 22From the introduction to the manual:
23 23
@@ -59,7 +59,7 @@ From the introduction to the manual:
59Calc is written entirely in Emacs Lisp, for maximum portability. 59Calc is written entirely in Emacs Lisp, for maximum portability.
60 60
61I am anxious to hear about your experiences using Calc. Send mail to 61I am anxious to hear about your experiences using Calc. Send mail to
62"belanger@truman.edu". A bug report is most useful if you include the 62"jay.p.belanger@gmail.com". A bug report is most useful if you include the
63exact input and output that occurred, any modes in effect (such as the 63exact input and output that occurred, any modes in effect (such as the
64current precision), and so on. If you find Calc is difficult to operate 64current precision), and so on. If you find Calc is difficult to operate
65in any way, or if you have other suggestions, don't hesitate to let me 65in any way, or if you have other suggestions, don't hesitate to let me
diff --git a/lisp/calc/calc-aent.el b/lisp/calc/calc-aent.el
index 988b0240067..4b954fabd0c 100644
--- a/lisp/calc/calc-aent.el
+++ b/lisp/calc/calc-aent.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: Dave Gillespie <daveg@synaptics.com> 6;; Author: Dave Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-alg.el b/lisp/calc/calc-alg.el
index 2037ed099af..70900b9e5c3 100644
--- a/lisp/calc/calc-alg.el
+++ b/lisp/calc/calc-alg.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-arith.el b/lisp/calc/calc-arith.el
index 6d56365fc9c..1b291cbb84e 100644
--- a/lisp/calc/calc-arith.el
+++ b/lisp/calc/calc-arith.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-bin.el b/lisp/calc/calc-bin.el
index 07be863a99a..3963700a599 100644
--- a/lisp/calc/calc-bin.el
+++ b/lisp/calc/calc-bin.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-comb.el b/lisp/calc/calc-comb.el
index eed8124494f..6c30177a0b0 100644
--- a/lisp/calc/calc-comb.el
+++ b/lisp/calc/calc-comb.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-cplx.el b/lisp/calc/calc-cplx.el
index de2cfd8354c..0879e308a86 100644
--- a/lisp/calc/calc-cplx.el
+++ b/lisp/calc/calc-cplx.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-embed.el b/lisp/calc/calc-embed.el
index eb35b8a7a4b..a064905943f 100644
--- a/lisp/calc/calc-embed.el
+++ b/lisp/calc/calc-embed.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el
index 22b366a04d9..ca89928d46e 100644
--- a/lisp/calc/calc-ext.el
+++ b/lisp/calc/calc-ext.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-fin.el b/lisp/calc/calc-fin.el
index 24516f65535..443ab99a8fe 100644
--- a/lisp/calc/calc-fin.el
+++ b/lisp/calc/calc-fin.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-forms.el b/lisp/calc/calc-forms.el
index 3f368499395..10bbf7dc3dd 100644
--- a/lisp/calc/calc-forms.el
+++ b/lisp/calc/calc-forms.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-frac.el b/lisp/calc/calc-frac.el
index b30fcd1d145..2fa3bce8508 100644
--- a/lisp/calc/calc-frac.el
+++ b/lisp/calc/calc-frac.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-funcs.el b/lisp/calc/calc-funcs.el
index bd8aa753ddf..479116b0c76 100644
--- a/lisp/calc/calc-funcs.el
+++ b/lisp/calc/calc-funcs.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-graph.el b/lisp/calc/calc-graph.el
index 734f7615329..e5ffd2263fa 100644
--- a/lisp/calc/calc-graph.el
+++ b/lisp/calc/calc-graph.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-help.el b/lisp/calc/calc-help.el
index 90a89c079fa..9f324a67785 100644
--- a/lisp/calc/calc-help.el
+++ b/lisp/calc/calc-help.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-incom.el b/lisp/calc/calc-incom.el
index 5d1034cf2fc..ee20476938e 100644
--- a/lisp/calc/calc-incom.el
+++ b/lisp/calc/calc-incom.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-keypd.el b/lisp/calc/calc-keypd.el
index d044335e94c..1f71c648ef3 100644
--- a/lisp/calc/calc-keypd.el
+++ b/lisp/calc/calc-keypd.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-lang.el b/lisp/calc/calc-lang.el
index 5e91fe153af..79c33b473c3 100644
--- a/lisp/calc/calc-lang.el
+++ b/lisp/calc/calc-lang.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-macs.el b/lisp/calc/calc-macs.el
index 692770030fc..68b42876e94 100644
--- a/lisp/calc/calc-macs.el
+++ b/lisp/calc/calc-macs.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-map.el b/lisp/calc/calc-map.el
index 9ae9a9b5cfd..b9eb0019ab7 100644
--- a/lisp/calc/calc-map.el
+++ b/lisp/calc/calc-map.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-math.el b/lisp/calc/calc-math.el
index 32a3f0409c8..b6481d30b73 100644
--- a/lisp/calc/calc-math.el
+++ b/lisp/calc/calc-math.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-misc.el b/lisp/calc/calc-misc.el
index 178734c1f1d..e9674ff938b 100644
--- a/lisp/calc/calc-misc.el
+++ b/lisp/calc/calc-misc.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-mode.el b/lisp/calc/calc-mode.el
index 136ca2e91a9..7240009a8e8 100644
--- a/lisp/calc/calc-mode.el
+++ b/lisp/calc/calc-mode.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-mtx.el b/lisp/calc/calc-mtx.el
index 012600f86ab..0ab90a4a51d 100644
--- a/lisp/calc/calc-mtx.el
+++ b/lisp/calc/calc-mtx.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-poly.el b/lisp/calc/calc-poly.el
index 31e026e4ffe..0bcf78af861 100644
--- a/lisp/calc/calc-poly.el
+++ b/lisp/calc/calc-poly.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-prog.el b/lisp/calc/calc-prog.el
index b0a0feccec8..4dff6f04013 100644
--- a/lisp/calc/calc-prog.el
+++ b/lisp/calc/calc-prog.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-rewr.el b/lisp/calc/calc-rewr.el
index d1dc4a27f1c..bf9ac13c6cf 100644
--- a/lisp/calc/calc-rewr.el
+++ b/lisp/calc/calc-rewr.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-rules.el b/lisp/calc/calc-rules.el
index 5053a0a9fa1..09f71014a0d 100644
--- a/lisp/calc/calc-rules.el
+++ b/lisp/calc/calc-rules.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-sel.el b/lisp/calc/calc-sel.el
index 61b0dd70bd8..fe67127d649 100644
--- a/lisp/calc/calc-sel.el
+++ b/lisp/calc/calc-sel.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-stat.el b/lisp/calc/calc-stat.el
index d1c481d16fd..967d45e7ba8 100644
--- a/lisp/calc/calc-stat.el
+++ b/lisp/calc/calc-stat.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-store.el b/lisp/calc/calc-store.el
index 517106f9d7d..8fa77563211 100644
--- a/lisp/calc/calc-store.el
+++ b/lisp/calc/calc-store.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-stuff.el b/lisp/calc/calc-stuff.el
index cafe298fb0e..89cf044c097 100644
--- a/lisp/calc/calc-stuff.el
+++ b/lisp/calc/calc-stuff.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-trail.el b/lisp/calc/calc-trail.el
index 2f3de0c5e28..ba18a633c43 100644
--- a/lisp/calc/calc-trail.el
+++ b/lisp/calc/calc-trail.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-undo.el b/lisp/calc/calc-undo.el
index e1cec48abf5..9df08597956 100644
--- a/lisp/calc/calc-undo.el
+++ b/lisp/calc/calc-undo.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el
index 750dc53a54a..81062b356fa 100644
--- a/lisp/calc/calc-units.el
+++ b/lisp/calc/calc-units.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-vec.el b/lisp/calc/calc-vec.el
index d2ec77ceab7..e85d1259b5f 100644
--- a/lisp/calc/calc-vec.el
+++ b/lisp/calc/calc-vec.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc-yank.el b/lisp/calc/calc-yank.el
index 17997c1f8e1..abd78e5f926 100644
--- a/lisp/calc/calc-yank.el
+++ b/lisp/calc/calc-yank.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index 75e1c83df03..4ca5662afdc 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8;; Keywords: convenience, extensions 8;; Keywords: convenience, extensions
9;; Version: 2.1 9;; Version: 2.1
10 10
@@ -401,7 +401,7 @@ This is not required to be present for user-written mode annotations."
401 :group 'calc 401 :group 'calc
402 :type '(choice (string) (sexp))) 402 :type '(choice (string) (sexp)))
403 403
404(defvar calc-bug-address "belanger@truman.edu" 404(defvar calc-bug-address "jay.p.belanger@gmail.com"
405 "Address of the maintainer of Calc, for use by `report-calc-bug'.") 405 "Address of the maintainer of Calc, for use by `report-calc-bug'.")
406 406
407(defvar calc-scan-for-dels t 407(defvar calc-scan-for-dels t
@@ -1148,6 +1148,11 @@ If nil, selections displayed but ignored.")
1148 1148
1149(defvar calc-alg-map) ; Defined in calc-ext.el 1149(defvar calc-alg-map) ; Defined in calc-ext.el
1150 1150
1151(defun calc-version ()
1152 "Return version of this version of Calc."
1153 (interactive)
1154 (message (concat "Calc version " calc-version)))
1155
1151(defun calc-mode () 1156(defun calc-mode ()
1152 "Calculator major mode. 1157 "Calculator major mode.
1153 1158
@@ -1258,8 +1263,7 @@ commands given here will actually operate on the *Calculator* stack."
1258 (set (make-local-variable 'calc-main-buffer) buf)) 1263 (set (make-local-variable 'calc-main-buffer) buf))
1259 (when (= (buffer-size) 0) 1264 (when (= (buffer-size) 0)
1260 (let ((buffer-read-only nil)) 1265 (let ((buffer-read-only nil))
1261 (insert (propertize (concat "Emacs Calculator v" calc-version 1266 (insert (propertize (concat "Emacs Calculator Trail\n")
1262 " by Dave Gillespie\n")
1263 'font-lock-face 'italic)))) 1267 'font-lock-face 'italic))))
1264 (run-mode-hooks 'calc-trail-mode-hook)) 1268 (run-mode-hooks 'calc-trail-mode-hook))
1265 1269
diff --git a/lisp/calc/calcalg2.el b/lisp/calc/calcalg2.el
index 5bf388b7431..8b1d4a2c9b3 100644
--- a/lisp/calc/calcalg2.el
+++ b/lisp/calc/calcalg2.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calcalg3.el b/lisp/calc/calcalg3.el
index f5053689fe7..5864091614a 100644
--- a/lisp/calc/calcalg3.el
+++ b/lisp/calc/calcalg3.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calccomp.el b/lisp/calc/calccomp.el
index 1bc844af481..7b385261735 100644
--- a/lisp/calc/calccomp.el
+++ b/lisp/calc/calccomp.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calc/calcsel2.el b/lisp/calc/calcsel2.el
index f28efba30b8..afc3bb45a1e 100644
--- a/lisp/calc/calcsel2.el
+++ b/lisp/calc/calcsel2.el
@@ -4,7 +4,7 @@
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David Gillespie <daveg@synaptics.com> 6;; Author: David Gillespie <daveg@synaptics.com>
7;; Maintainer: Jay Belanger <belanger@truman.edu> 7;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com>
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el
index 82fa0e66dbf..02865c994e3 100644
--- a/lisp/calendar/appt.el
+++ b/lisp/calendar/appt.el
@@ -233,8 +233,8 @@ The variable `appt-audible' controls the audible reminder."
233 ;; vars appt-msg-window and appt-visible are dropped. 233 ;; vars appt-msg-window and appt-visible are dropped.
234 (let ((appt-display-format 234 (let ((appt-display-format
235 (if (eq appt-display-format 'ignore) 235 (if (eq appt-display-format 'ignore)
236 (cond (appt-msg-window 'window) 236 (cond (appt-msg-window 'window)
237 (appt-visible 'echo)) 237 (appt-visible 'echo))
238 appt-display-format))) 238 appt-display-format)))
239 (cond ((eq appt-display-format 'window) 239 (cond ((eq appt-display-format 'window)
240 (funcall appt-disp-window-function 240 (funcall appt-disp-window-function
@@ -457,7 +457,9 @@ NEW-TIME is a string giving the date."
457 (same-window-p (buffer-name appt-disp-buf))) 457 (same-window-p (buffer-name appt-disp-buf)))
458 ;; By default, split the bottom window and use the lower part. 458 ;; By default, split the bottom window and use the lower part.
459 (appt-select-lowest-window) 459 (appt-select-lowest-window)
460 (select-window (split-window))) 460 ;; Split the window, unless it's too small to do so.
461 (when (>= (window-height) (* 2 window-min-height))
462 (select-window (split-window))))
461 (switch-to-buffer appt-disp-buf)) 463 (switch-to-buffer appt-disp-buf))
462 (calendar-set-mode-line 464 (calendar-set-mode-line
463 (format " Appointment in %s minutes. %s " min-to-app new-time)) 465 (format " Appointment in %s minutes. %s " min-to-app new-time))
diff --git a/lisp/calendar/cal-china.el b/lisp/calendar/cal-china.el
index a838141db1c..7f6646dda64 100644
--- a/lisp/calendar/cal-china.el
+++ b/lisp/calendar/cal-china.el
@@ -43,12 +43,6 @@
43;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 43;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
44;; and Nachum Dershowitz, Cambridge University Press (2001). 44;; and Nachum Dershowitz, Cambridge University Press (2001).
45 45
46;; Comments, corrections, and improvements should be sent to
47;; Edward M. Reingold Department of Computer Science
48;; (217) 333-6733 University of Illinois at Urbana-Champaign
49;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
50;; Urbana, Illinois 61801
51
52;;; Code: 46;;; Code:
53 47
54(defvar date) 48(defvar date)
diff --git a/lisp/calendar/cal-coptic.el b/lisp/calendar/cal-coptic.el
index 23de17a16a8..b5cf96949c6 100644
--- a/lisp/calendar/cal-coptic.el
+++ b/lisp/calendar/cal-coptic.el
@@ -34,12 +34,6 @@
34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
35;; and Nachum Dershowitz, Cambridge University Press (2001). 35;; and Nachum Dershowitz, Cambridge University Press (2001).
36 36
37;; Comments, corrections, and improvements should be sent to
38;; Edward M. Reingold Department of Computer Science
39;; (217) 333-6733 University of Illinois at Urbana-Champaign
40;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
41;; Urbana, Illinois 61801
42
43;;; Code: 37;;; Code:
44 38
45(defvar date) 39(defvar date)
diff --git a/lisp/calendar/cal-dst.el b/lisp/calendar/cal-dst.el
index 3aea69b8ccf..6159d7e9dc1 100644
--- a/lisp/calendar/cal-dst.el
+++ b/lisp/calendar/cal-dst.el
@@ -31,12 +31,6 @@
31;; This collection of functions implements the features of calendar.el and 31;; This collection of functions implements the features of calendar.el and
32;; holiday.el that deal with daylight saving time. 32;; holiday.el that deal with daylight saving time.
33 33
34;; Comments, corrections, and improvements should be sent to
35;; Edward M. Reingold Department of Computer Science
36;; (217) 333-6733 University of Illinois at Urbana-Champaign
37;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
38;; Urbana, Illinois 61801
39
40;;; Code: 34;;; Code:
41 35
42(require 'calendar) 36(require 'calendar)
@@ -266,12 +260,20 @@ Returns a list (YEAR START END), where START and END are
266expressions that when evaluated return the start and end dates, 260expressions that when evaluated return the start and end dates,
267respectively. This function first attempts to use pre-calculated 261respectively. This function first attempts to use pre-calculated
268data from `calendar-dst-transition-cache', otherwise it calls 262data from `calendar-dst-transition-cache', otherwise it calls
269`calendar-dst-find-data' (and adds the results to the cache)." 263`calendar-dst-find-data' (and adds the results to the cache).
264If dates in YEAR cannot be handled by `encode-time' (e.g. if they
265are too large to be represented as a lisp integer), then rather
266than an error this function returns the result appropriate for
267the current year."
270 (let ((e (assoc year calendar-dst-transition-cache)) 268 (let ((e (assoc year calendar-dst-transition-cache))
271 f) 269 f)
272 (or e 270 (or e
273 (progn 271 (progn
274 (setq e (calendar-dst-find-data (encode-time 1 0 0 1 1 year)) 272 (setq e (calendar-dst-find-data
273 (condition-case nil
274 (encode-time 1 0 0 1 1 year)
275 (error
276 (encode-time 1 0 0 1 1 (nth 5 (decode-time))))))
275 f (nth 4 e) 277 f (nth 4 e)
276 e (list year f (nth 5 e)) 278 e (list year f (nth 5 e))
277 calendar-dst-transition-cache 279 calendar-dst-transition-cache
diff --git a/lisp/calendar/cal-french.el b/lisp/calendar/cal-french.el
index 99af7042472..439dbd34632 100644
--- a/lisp/calendar/cal-french.el
+++ b/lisp/calendar/cal-french.el
@@ -37,12 +37,6 @@
37;; E. M. Reingold, N. Dershowitz, and S. M. Clamen, Software--Practice and 37;; E. M. Reingold, N. Dershowitz, and S. M. Clamen, Software--Practice and
38;; Experience, Volume 23, Number 4 (April, 1993), pages 383-404. 38;; Experience, Volume 23, Number 4 (April, 1993), pages 383-404.
39 39
40;; Comments, corrections, and improvements should be sent to
41;; Edward M. Reingold Department of Computer Science
42;; (217) 333-6733 University of Illinois at Urbana-Champaign
43;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
44;; Urbana, Illinois 61801
45
46;;; Code: 40;;; Code:
47 41
48(defvar date) 42(defvar date)
diff --git a/lisp/calendar/cal-hebrew.el b/lisp/calendar/cal-hebrew.el
index a61bea8eacf..9f32d9df471 100644
--- a/lisp/calendar/cal-hebrew.el
+++ b/lisp/calendar/cal-hebrew.el
@@ -35,12 +35,6 @@
35;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 35;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
36;; and Nachum Dershowitz, Cambridge University Press (2001). 36;; and Nachum Dershowitz, Cambridge University Press (2001).
37 37
38;; Comments, corrections, and improvements should be sent to
39;; Edward M. Reingold Department of Computer Science
40;; (217) 333-6733 University of Illinois at Urbana-Champaign
41;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
42;; Urbana, Illinois 61801
43
44;;; Code: 38;;; Code:
45 39
46(defvar date) 40(defvar date)
diff --git a/lisp/calendar/cal-islam.el b/lisp/calendar/cal-islam.el
index 28faed4d397..57c0f9de65e 100644
--- a/lisp/calendar/cal-islam.el
+++ b/lisp/calendar/cal-islam.el
@@ -34,12 +34,6 @@
34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
35;; and Nachum Dershowitz, Cambridge University Press (2001). 35;; and Nachum Dershowitz, Cambridge University Press (2001).
36 36
37;; Comments, corrections, and improvements should be sent to
38;; Edward M. Reingold Department of Computer Science
39;; (217) 333-6733 University of Illinois at Urbana-Champaign
40;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
41;; Urbana, Illinois 61801
42
43;;; Code: 37;;; Code:
44 38
45(defvar date) 39(defvar date)
diff --git a/lisp/calendar/cal-iso.el b/lisp/calendar/cal-iso.el
index 93b39cd4d15..052087e2558 100644
--- a/lisp/calendar/cal-iso.el
+++ b/lisp/calendar/cal-iso.el
@@ -34,12 +34,6 @@
34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
35;; and Nachum Dershowitz, Cambridge University Press (2001). 35;; and Nachum Dershowitz, Cambridge University Press (2001).
36 36
37;; Comments, corrections, and improvements should be sent to
38;; Edward M. Reingold Department of Computer Science
39;; (217) 333-6733 University of Illinois at Urbana-Champaign
40;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
41;; Urbana, Illinois 61801
42
43;;; Code: 37;;; Code:
44 38
45(defvar date) 39(defvar date)
diff --git a/lisp/calendar/cal-julian.el b/lisp/calendar/cal-julian.el
index 768e57bbab5..ff6a3f72e1b 100644
--- a/lisp/calendar/cal-julian.el
+++ b/lisp/calendar/cal-julian.el
@@ -34,12 +34,6 @@
34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
35;; and Nachum Dershowitz, Cambridge University Press (2001). 35;; and Nachum Dershowitz, Cambridge University Press (2001).
36 36
37;; Comments, corrections, and improvements should be sent to
38;; Edward M. Reingold Department of Computer Science
39;; (217) 333-6733 University of Illinois at Urbana-Champaign
40;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
41;; Urbana, Illinois 61801
42
43;;; Code: 37;;; Code:
44 38
45(defvar date) 39(defvar date)
diff --git a/lisp/calendar/cal-mayan.el b/lisp/calendar/cal-mayan.el
index 20703cb85b6..2cb6d31022e 100644
--- a/lisp/calendar/cal-mayan.el
+++ b/lisp/calendar/cal-mayan.el
@@ -43,8 +43,6 @@
43;; reingold@cs.uiuc.edu 1304 West Springfield Avenue 43;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
44;; Urbana, Illinois 61801 44;; Urbana, Illinois 61801
45 45
46;; Comments, improvements, and bug reports should be sent to Reingold.
47
48;; Technical details of the Mayan calendrical calculations can be found in 46;; Technical details of the Mayan calendrical calculations can be found in
49;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 47;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
50;; and Nachum Dershowitz, Cambridge University Press (2001), and in 48;; and Nachum Dershowitz, Cambridge University Press (2001), and in
diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el
index 1320f778cc6..25929976dbd 100644
--- a/lisp/calendar/cal-menu.el
+++ b/lisp/calendar/cal-menu.el
@@ -31,12 +31,6 @@
31;; This collection of functions implements menu bar and popup menu support for 31;; This collection of functions implements menu bar and popup menu support for
32;; calendar.el. 32;; calendar.el.
33 33
34;; Comments, corrections, and improvements should be sent to
35;; Edward M. Reingold Department of Computer Science
36;; (217) 333-6733 University of Illinois at Urbana-Champaign
37;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
38;; Urbana, Illinois 61801
39
40;;; Code: 34;;; Code:
41 35
42(defvar displayed-month) 36(defvar displayed-month)
diff --git a/lisp/calendar/cal-move.el b/lisp/calendar/cal-move.el
index b12289c7456..3a08b98bf00 100644
--- a/lisp/calendar/cal-move.el
+++ b/lisp/calendar/cal-move.el
@@ -30,12 +30,6 @@
30;; This collection of functions implements movement in the calendar for 30;; This collection of functions implements movement in the calendar for
31;; calendar.el. 31;; calendar.el.
32 32
33;; Comments, corrections, and improvements should be sent to
34;; Edward M. Reingold Department of Computer Science
35;; (217) 333-6733 University of Illinois at Urbana-Champaign
36;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
37;; Urbana, Illinois 61801
38
39;;; Code: 33;;; Code:
40 34
41(defvar displayed-month) 35(defvar displayed-month)
diff --git a/lisp/calendar/cal-persia.el b/lisp/calendar/cal-persia.el
index 6055de121af..a37f9c1f27e 100644
--- a/lisp/calendar/cal-persia.el
+++ b/lisp/calendar/cal-persia.el
@@ -30,16 +30,6 @@
30;; This collection of functions implements the features of calendar.el and 30;; This collection of functions implements the features of calendar.el and
31;; diary.el that deal with the Persian calendar. 31;; diary.el that deal with the Persian calendar.
32 32
33;; Technical details of all the calendrical calculations can be found in
34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
35;; and Nachum Dershowitz, Cambridge University Press (2001).
36
37;; Comments, corrections, and improvements should be sent to
38;; Edward M. Reingold Department of Computer Science
39;; (217) 333-6733 University of Illinois at Urbana-Champaign
40;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
41;; Urbana, Illinois 61801
42
43;;; Code: 33;;; Code:
44 34
45(defvar date) 35(defvar date)
diff --git a/lisp/calendar/cal-x.el b/lisp/calendar/cal-x.el
index b7f1748ff34..5f2c89e82c5 100644
--- a/lisp/calendar/cal-x.el
+++ b/lisp/calendar/cal-x.el
@@ -31,12 +31,6 @@
31;; This collection of functions implements dedicated frames in X for 31;; This collection of functions implements dedicated frames in X for
32;; calendar.el. 32;; calendar.el.
33 33
34;; Comments, corrections, and improvements should be sent to
35;; Edward M. Reingold Department of Computer Science
36;; (217) 333-6733 University of Illinois at Urbana-Champaign
37;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
38;; Urbana, Illinois 61801
39
40;;; Code: 34;;; Code:
41 35
42(require 'calendar) 36(require 'calendar)
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 78f0ad115ec..03f9a95fe37 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -90,12 +90,6 @@
90;; reingold@cs.uiuc.edu with the SUBJECT "send-paper-cal" (no quotes) and 90;; reingold@cs.uiuc.edu with the SUBJECT "send-paper-cal" (no quotes) and
91;; the message BODY containing your mailing address (snail). 91;; the message BODY containing your mailing address (snail).
92 92
93;; Comments, corrections, and improvements should be sent to
94;; Edward M. Reingold Department of Computer Science
95;; (217) 333-6733 University of Illinois at Urbana-Champaign
96;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
97;; Urbana, Illinois 61801
98
99;;; Code: 93;;; Code:
100 94
101(defvar displayed-month) 95(defvar displayed-month)
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 2adec8750c3..ee93b60eb98 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -29,12 +29,6 @@
29;; This collection of functions implements the diary features as described 29;; This collection of functions implements the diary features as described
30;; in calendar.el. 30;; in calendar.el.
31 31
32;; Comments, corrections, and improvements should be sent to
33;; Edward M. Reingold Department of Computer Science
34;; (217) 333-6733 University of Illinois at Urbana-Champaign
35;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
36;; Urbana, Illinois 61801
37
38;;; Code: 32;;; Code:
39 33
40(require 'calendar) 34(require 'calendar)
@@ -282,6 +276,7 @@ The format of the header is specified by `diary-header-line-format'."
282 :group 'diary 276 :group 'diary
283 :type 'boolean 277 :type 'boolean
284 :initialize 'custom-initialize-default 278 :initialize 'custom-initialize-default
279 ;; FIXME overkill.
285 :set 'diary-set-maybe-redraw 280 :set 'diary-set-maybe-redraw
286 :version "22.1") 281 :version "22.1")
287 282
@@ -298,6 +293,9 @@ before edit/copy"
298Only used if `diary-header-line-flag' is non-nil." 293Only used if `diary-header-line-flag' is non-nil."
299 :group 'diary 294 :group 'diary
300 :type 'sexp 295 :type 'sexp
296 :initialize 'custom-initialize-default
297 ;; FIXME overkill.
298 :set 'diary-set-maybe-redraw
301 :version "22.1") 299 :version "22.1")
302 300
303(defvar diary-saved-point) ; internal 301(defvar diary-saved-point) ; internal
@@ -440,10 +438,17 @@ If LIST-ONLY is non-nil don't modify or display the buffer, only return a list."
440 (or (verify-visited-file-modtime diary-buffer) 438 (or (verify-visited-file-modtime diary-buffer)
441 (revert-buffer t t)))) 439 (revert-buffer t t))))
442 ;; Setup things like the header-line-format and invisibility-spec. 440 ;; Setup things like the header-line-format and invisibility-spec.
443 ;; This used to only run if the major-mode was default-major-mode, 441 (if (eq major-mode default-major-mode)
444 ;; but that meant eg changes to header-line-format did not 442 (diary-mode)
445 ;; take effect from one diary invocation to the next. 443 ;; This kludge is to make customizations to
446 (diary-mode) 444 ;; diary-header-line-flag after diary has been displayed
445 ;; take effect. Unconditionally calling (diary-mode)
446 ;; clobbers file local variables.
447 ;; http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-03/msg00363.html
448 ;; http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-04/msg00404.html
449 (if (eq major-mode 'diary-mode)
450 (setq header-line-format (and diary-header-line-flag
451 diary-header-line-format))))
447 ;; d-s-p is passed to the diary display function. 452 ;; d-s-p is passed to the diary display function.
448 (let ((diary-saved-point (point))) 453 (let ((diary-saved-point (point)))
449 (save-excursion 454 (save-excursion
diff --git a/lisp/calendar/holidays.el b/lisp/calendar/holidays.el
index 6f53a47221a..fc6e6315916 100644
--- a/lisp/calendar/holidays.el
+++ b/lisp/calendar/holidays.el
@@ -45,12 +45,6 @@
45;; reingold@cs.uiuc.edu with the SUBJECT "send-paper-cal" (no quotes) and 45;; reingold@cs.uiuc.edu with the SUBJECT "send-paper-cal" (no quotes) and
46;; the message BODY containing your mailing address (snail). 46;; the message BODY containing your mailing address (snail).
47 47
48;; Comments, corrections, and improvements should be sent to
49;; Edward M. Reingold Department of Computer Science
50;; (217) 333-6733 University of Illinois at Urbana-Champaign
51;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
52;; Urbana, Illinois 61801
53
54;;; Code: 48;;; Code:
55 49
56(defvar displayed-month) 50(defvar displayed-month)
diff --git a/lisp/calendar/lunar.el b/lisp/calendar/lunar.el
index 33da7cef8e0..8aa062d69c3 100644
--- a/lisp/calendar/lunar.el
+++ b/lisp/calendar/lunar.el
@@ -43,12 +43,6 @@
43;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 43;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
44;; and Nachum Dershowitz, Cambridge University Press (2001). 44;; and Nachum Dershowitz, Cambridge University Press (2001).
45 45
46;; Comments, corrections, and improvements should be sent to
47;; Edward M. Reingold Department of Computer Science
48;; (217) 333-6733 University of Illinois at Urbana-Champaign
49;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
50;; Urbana, Illinois 61801
51
52;;; Code: 46;;; Code:
53 47
54(defvar date) 48(defvar date)
diff --git a/lisp/calendar/parse-time.el b/lisp/calendar/parse-time.el
index 4a786da7726..0913bc92160 100644
--- a/lisp/calendar/parse-time.el
+++ b/lisp/calendar/parse-time.el
@@ -66,7 +66,8 @@
66 (aref parse-time-digits char)) 66 (aref parse-time-digits char))
67 67
68(defsubst parse-time-string-chars (char) 68(defsubst parse-time-string-chars (char)
69 (aref parse-time-syntax char)) 69 (and (< char (length parse-time-syntax))
70 (aref parse-time-syntax char)))
70 71
71(put 'parse-error 'error-conditions '(parse-error error)) 72(put 'parse-error 'error-conditions '(parse-error error))
72(put 'parse-error 'error-message "Parsing error") 73(put 'parse-error 'error-message "Parsing error")
diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el
index c4a8352a8d8..4281c0e1307 100644
--- a/lisp/calendar/solar.el
+++ b/lisp/calendar/solar.el
@@ -53,12 +53,6 @@
53;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 53;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
54;; and Nachum Dershowitz, Cambridge University Press (2001). 54;; and Nachum Dershowitz, Cambridge University Press (2001).
55 55
56;; Comments, corrections, and improvements should be sent to
57;; Edward M. Reingold Department of Computer Science
58;; (217) 333-6733 University of Illinois at Urbana-Champaign
59;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
60;; Urbana, Illinois 61801
61
62;;; Code: 56;;; Code:
63 57
64(defvar date) 58(defvar date)
diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el
index 9449c84cb2a..fc222c2d839 100644
--- a/lisp/calendar/todo-mode.el
+++ b/lisp/calendar/todo-mode.el
@@ -205,11 +205,11 @@
205;; by the binary insertion algorithm. However, you may not 205;; by the binary insertion algorithm. However, you may not
206;; really have a need for such accurate priorities amongst your 206;; really have a need for such accurate priorities amongst your
207;; TODO items. If you now think about the binary insertion 207;; TODO items. If you now think about the binary insertion
208;; halfing the size of the window each time, then the threshhold 208;; halving the size of the window each time, then the threshold
209;; is the window size at which it will stop. If you set the 209;; is the window size at which it will stop. If you set the
210;; threshhold to zero, the upper and lower bound will coincide at 210;; threshold to zero, the upper and lower bound will coincide at
211;; the end of the loop and you will insert your item just before 211;; the end of the loop and you will insert your item just before
212;; that point. If you set the threshhold to, e.g. 8, it will stop 212;; that point. If you set the threshold to, e.g. 8, it will stop
213;; as soon as the window size drops below that amount and will 213;; as soon as the window size drops below that amount and will
214;; insert the item in the approximate centre of that window. I 214;; insert the item in the approximate centre of that window. I
215;; got the idea for this feature after reading a very helpful 215;; got the idea for this feature after reading a very helpful
@@ -231,7 +231,7 @@
231;; an event (unless marked by &) 231;; an event (unless marked by &)
232;; o The optional COUNT variable of todo-forward-item should be 232;; o The optional COUNT variable of todo-forward-item should be
233;; applied to the other functions performing similar tasks 233;; applied to the other functions performing similar tasks
234;; o Modularization could be done for repeaded elements of 234;; o Modularization could be done for repeated elements of
235;; the code, like the completing-read lines of code. 235;; the code, like the completing-read lines of code.
236;; o license / version function 236;; o license / version function
237;; o export to diary file 237;; o export to diary file
@@ -241,7 +241,7 @@
241;; outline mode) 241;; outline mode)
242;; o rewrite complete package to store data as lisp objects 242;; o rewrite complete package to store data as lisp objects
243;; and have display modes for display, for diary export, 243;; and have display modes for display, for diary export,
244;; etc. (Richard Stallman pointed out this is a bad idea) 244;; etc. (Richard Stallman pointed out this is a bad idea)
245;; o so base todo-mode.el on generic-mode.el instead 245;; o so base todo-mode.el on generic-mode.el instead
246;; 246;;
247;; History and Gossip 247;; History and Gossip
@@ -254,7 +254,7 @@
254;; things to my parents' address! 254;; things to my parents' address!
255;; 255;;
256;; Oliver Seidel 256;; Oliver Seidel
257;; (Lessingstr. 8, 65760 Eschborn, Federal Republic of Germany) 257;; (Lessingstr. 8, 65760 Eschborn, Federal Republic of Germany)
258 258
259;;; Code: 259;;; Code:
260 260
@@ -280,7 +280,7 @@ in your diary file to include your todo list file as part of your
280diary. With the default value \"*/*\" the diary displays each entry 280diary. With the default value \"*/*\" the diary displays each entry
281every day and it may also be marked on every day of the calendar. 281every day and it may also be marked on every day of the calendar.
282Using \"&%%(equal (calendar-current-date) date)\" instead will only 282Using \"&%%(equal (calendar-current-date) date)\" instead will only
283show and mark todo entreis for today, but may slow down processing of 283show and mark todo entries for today, but may slow down processing of
284the diary file somewhat." 284the diary file somewhat."
285 :type 'string 285 :type 'string
286 :group 'todo) 286 :group 'todo)
@@ -306,11 +306,11 @@ the diary file somewhat."
306If you have 8 items in your TODO list, then you may get asked 4 306If you have 8 items in your TODO list, then you may get asked 4
307questions by the binary insertion algorithm. However, you may not 307questions by the binary insertion algorithm. However, you may not
308really have a need for such accurate priorities amongst your TODO 308really have a need for such accurate priorities amongst your TODO
309items. If you now think about the binary insertion halfing the size 309items. If you now think about the binary insertion halving the size
310of the window each time, then the threshhold is the window size at 310of the window each time, then the threshold is the window size at
311which it will stop. If you set the threshhold to zero, the upper and 311which it will stop. If you set the threshold to zero, the upper and
312lower bound will coincide at the end of the loop and you will insert 312lower bound will coincide at the end of the loop and you will insert
313your item just before that point. If you set the threshhold to, 313your item just before that point. If you set the threshold to,
314e.g. 8, it will stop as soon as the window size drops below that 314e.g. 8, it will stop as soon as the window size drops below that
315amount and will insert the item in the approximate center of that 315amount and will insert the item in the approximate center of that
316window." 316window."
diff --git a/lisp/complete.el b/lisp/complete.el
index 1cdff0d9acd..b1bb36f9dfa 100644
--- a/lisp/complete.el
+++ b/lisp/complete.el
@@ -190,6 +190,14 @@ If nil, means use the colon-separated path in the variable $INCPATH instead."
190(defvar PC-do-completion-end nil 190(defvar PC-do-completion-end nil
191 "Internal variable used by `PC-do-completion'.") 191 "Internal variable used by `PC-do-completion'.")
192 192
193(make-variable-buffer-local 'PC-do-completion-end)
194
195(defvar PC-goto-end nil
196 "Internal variable set in `PC-do-completion', used in
197`choose-completion-string-functions'.")
198
199(make-variable-buffer-local 'PC-goto-end)
200
193;;;###autoload 201;;;###autoload
194(define-minor-mode partial-completion-mode 202(define-minor-mode partial-completion-mode
195 "Toggle Partial Completion mode. 203 "Toggle Partial Completion mode.
@@ -242,11 +250,16 @@ second TAB brings up the `*Completions*' buffer."
242 (if partial-completion-mode 'add-hook 'remove-hook) 250 (if partial-completion-mode 'add-hook 'remove-hook)
243 'choose-completion-string-functions 251 'choose-completion-string-functions
244 (lambda (choice buffer mini-p base-size) 252 (lambda (choice buffer mini-p base-size)
245 (if mini-p (goto-char (point-max)) 253 ;; When completing M-: (lisp- ) with point before the ), it is
254 ;; not appropriate to go to point-max (unlike the filename case).
255 (if (and (not PC-goto-end)
256 mini-p)
257 (goto-char (point-max))
246 ;; Need a similar hack for the non-minibuffer-case -- gm. 258 ;; Need a similar hack for the non-minibuffer-case -- gm.
247 (when PC-do-completion-end 259 (when PC-do-completion-end
248 (goto-char PC-do-completion-end) 260 (goto-char PC-do-completion-end)
249 (setq PC-do-completion-end nil))) 261 (setq PC-do-completion-end nil)))
262 (setq PC-goto-end nil)
250 nil)) 263 nil))
251 ;; Build the env-completion and mapping table. 264 ;; Build the env-completion and mapping table.
252 (when (and partial-completion-mode (null PC-env-vars-alist)) 265 (when (and partial-completion-mode (null PC-env-vars-alist))
@@ -417,7 +430,13 @@ of `minibuffer-completion-table' and the minibuffer contents.")
417 (let ((result (try-completion string alist predicate))) 430 (let ((result (try-completion string alist predicate)))
418 (if (eq result t) string result))) 431 (if (eq result t) string result)))
419 432
420(defun PC-do-completion (&optional mode beg end) 433;; TODO document MODE magic...
434(defun PC-do-completion (&optional mode beg end goto-end)
435 "Internal function to do the work of partial completion.
436Text to be completed lies between BEG and END. Normally when
437replacing text in the minibuffer, this function replaces up to
438point-max (as is appropriate for completing a file name). If
439GOTO-END is non-nil, however, it instead replaces up to END."
421 (or beg (setq beg (minibuffer-prompt-end))) 440 (or beg (setq beg (minibuffer-prompt-end)))
422 (or end (setq end (point-max))) 441 (or end (setq end (point-max)))
423 (let* ((table minibuffer-completion-table) 442 (let* ((table minibuffer-completion-table)
@@ -753,6 +772,8 @@ of `minibuffer-completion-table' and the minibuffer contents.")
753 (let ((prompt-end (minibuffer-prompt-end))) 772 (let ((prompt-end (minibuffer-prompt-end)))
754 (with-output-to-temp-buffer "*Completions*" 773 (with-output-to-temp-buffer "*Completions*"
755 (display-completion-list (sort helpposs 'string-lessp)) 774 (display-completion-list (sort helpposs 'string-lessp))
775 (setq PC-do-completion-end end
776 PC-goto-end goto-end)
756 (with-current-buffer standard-output 777 (with-current-buffer standard-output
757 ;; Record which part of the buffer we are completing 778 ;; Record which part of the buffer we are completing
758 ;; so that choosing a completion from the list 779 ;; so that choosing a completion from the list
@@ -771,8 +792,7 @@ of `minibuffer-completion-table' and the minibuffer contents.")
771 ;; plays around with point. 792 ;; plays around with point.
772 (setq completion-base-size (if dirname 793 (setq completion-base-size (if dirname
773 dirlength 794 dirlength
774 (- beg prompt-end)) 795 (- beg prompt-end))))))
775 PC-do-completion-end end))))
776 (PC-temp-minibuffer-message " [Next char not unique]")) 796 (PC-temp-minibuffer-message " [Next char not unique]"))
777 nil))))) 797 nil)))))
778 798
@@ -886,11 +906,11 @@ or properties are considered."
886 ;; Alternatively alternatively, maybe end should be computed in 906 ;; Alternatively alternatively, maybe end should be computed in
887 ;; the same way as beg. That would change the behaviour though. 907 ;; the same way as beg. That would change the behaviour though.
888 (if (equal last-command 'PC-lisp-complete-symbol) 908 (if (equal last-command 'PC-lisp-complete-symbol)
889 (PC-do-completion nil beg PC-lisp-complete-end) 909 (PC-do-completion nil beg PC-lisp-complete-end t)
890 (if PC-lisp-complete-end 910 (if PC-lisp-complete-end
891 (move-marker PC-lisp-complete-end end) 911 (move-marker PC-lisp-complete-end end)
892 (setq PC-lisp-complete-end (copy-marker end t))) 912 (setq PC-lisp-complete-end (copy-marker end t)))
893 (PC-do-completion nil beg end)))) 913 (PC-do-completion nil beg end t))))
894 914
895(defun PC-complete-as-file-name () 915(defun PC-complete-as-file-name ()
896 "Perform completion on file names preceding point. 916 "Perform completion on file names preceding point.
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index d8fdf966374..4dae3bab018 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -422,7 +422,7 @@
422 :group 'development) 422 :group 'development)
423 423
424(defgroup minibuffer nil 424(defgroup minibuffer nil
425 "Controling the behavior of the minibuffer." 425 "Controlling the behavior of the minibuffer."
426 :link '(custom-manual "(emacs)Minibuffer") 426 :link '(custom-manual "(emacs)Minibuffer")
427 :group 'environment) 427 :group 'environment)
428 428
@@ -443,7 +443,7 @@
443 :group 'environment) 443 :group 'environment)
444 444
445(defgroup auto-save nil 445(defgroup auto-save nil
446 "Preventing accidential loss of data." 446 "Preventing accidental loss of data."
447 :group 'files) 447 :group 'files)
448 448
449(defgroup processes-basics nil 449(defgroup processes-basics nil
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 8d7776be36c..31de08bdc26 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -45,9 +45,9 @@
45;; "Saving Emacs Sessions" in the GNU Emacs Manual. 45;; "Saving Emacs Sessions" in the GNU Emacs Manual.
46 46
47;; When the desktop module is loaded, the function `desktop-kill' is 47;; When the desktop module is loaded, the function `desktop-kill' is
48;; added to the `kill-emacs-hook'. This function is responsible for 48;; added to the `kill-emacs-hook'. This function is responsible for
49;; saving the desktop when Emacs is killed. Furthermore an anonymous 49;; saving the desktop when Emacs is killed. Furthermore an anonymous
50;; function is added to the `after-init-hook'. This function is 50;; function is added to the `after-init-hook'. This function is
51;; responsible for loading the desktop when Emacs is started. 51;; responsible for loading the desktop when Emacs is started.
52 52
53;; Special handling. 53;; Special handling.
@@ -55,12 +55,12 @@
55;; Variables `desktop-buffer-mode-handlers' and `desktop-minor-mode-handlers' 55;; Variables `desktop-buffer-mode-handlers' and `desktop-minor-mode-handlers'
56;; are supplied to handle special major and minor modes respectively. 56;; are supplied to handle special major and minor modes respectively.
57;; `desktop-buffer-mode-handlers' is an alist of major mode specific functions 57;; `desktop-buffer-mode-handlers' is an alist of major mode specific functions
58;; to restore a desktop buffer. Elements must have the form 58;; to restore a desktop buffer. Elements must have the form
59;; 59;;
60;; (MAJOR-MODE . RESTORE-BUFFER-FUNCTION). 60;; (MAJOR-MODE . RESTORE-BUFFER-FUNCTION).
61;; 61;;
62;; Functions listed are called by `desktop-create-buffer' when `desktop-read' 62;; Functions listed are called by `desktop-create-buffer' when `desktop-read'
63;; evaluates the desktop file. Buffers with a major mode not specified here, 63;; evaluates the desktop file. Buffers with a major mode not specified here,
64;; are restored by the default handler `desktop-restore-file-buffer'. 64;; are restored by the default handler `desktop-restore-file-buffer'.
65;; `desktop-minor-mode-handlers' is an alist of functions to restore 65;; `desktop-minor-mode-handlers' is an alist of functions to restore
66;; non-standard minor modes. Elements must have the form 66;; non-standard minor modes. Elements must have the form
@@ -85,7 +85,7 @@
85;; '(bar-mode . bar-desktop-restore)) 85;; '(bar-mode . bar-desktop-restore))
86 86
87;; in the module itself, and make shure that the mode function is 87;; in the module itself, and make shure that the mode function is
88;; autoloaded. See the docstrings of `desktop-buffer-mode-handlers' and 88;; autoloaded. See the docstrings of `desktop-buffer-mode-handlers' and
89;; `desktop-minor-mode-handlers' for more info. 89;; `desktop-minor-mode-handlers' for more info.
90 90
91;; Minor modes. 91;; Minor modes.
@@ -100,7 +100,7 @@
100;; The variables `desktop-minor-mode-table' and `desktop-minor-mode-handlers' 100;; The variables `desktop-minor-mode-table' and `desktop-minor-mode-handlers'
101;; are used to handle non-conventional minor modes. `desktop-save' uses 101;; are used to handle non-conventional minor modes. `desktop-save' uses
102;; `desktop-minor-mode-table' to map minor mode variables to minor mode 102;; `desktop-minor-mode-table' to map minor mode variables to minor mode
103;; functions before writing `desktop-minor-modes'. If a minor mode has a 103;; functions before writing `desktop-minor-modes'. If a minor mode has a
104;; variable name that is different form its function name, an entry 104;; variable name that is different form its function name, an entry
105 105
106;; (NAME RESTORE-FUNCTION) 106;; (NAME RESTORE-FUNCTION)
@@ -619,8 +619,7 @@ QUOTE may be `may' (value may be quoted),
619 (setq newlist (cons q.txt newlist))) 619 (setq newlist (cons q.txt newlist)))
620 (setq p (cdr p))) 620 (setq p (cdr p)))
621 (if p 621 (if p
622 (let ((last (desktop-internal-v2s p)) 622 (let ((last (desktop-internal-v2s p)))
623 (el (car newlist)))
624 (or anynil (setq anynil (null (car last)))) 623 (or anynil (setq anynil (null (car last))))
625 (or anynil 624 (or anynil
626 (setq newlist (cons '(must . ".") newlist))) 625 (setq newlist (cons '(must . ".") newlist)))
@@ -782,7 +781,8 @@ See also `desktop-base-file-name'."
782 ";; Desktop file format version " desktop-file-version "\n" 781 ";; Desktop file format version " desktop-file-version "\n"
783 ";; Emacs version " emacs-version "\n\n" 782 ";; Emacs version " emacs-version "\n\n"
784 ";; Global section:\n") 783 ";; Global section:\n")
785 (mapcar (function desktop-outvar) desktop-globals-to-save) 784 (dolist (varspec desktop-globals-to-save)
785 (desktop-outvar varspec))
786 (if (memq 'kill-ring desktop-globals-to-save) 786 (if (memq 'kill-ring desktop-globals-to-save)
787 (insert 787 (insert
788 "(setq kill-ring-yank-pointer (nthcdr " 788 "(setq kill-ring-yank-pointer (nthcdr "
@@ -790,22 +790,20 @@ See also `desktop-base-file-name'."
790 " kill-ring))\n")) 790 " kill-ring))\n"))
791 791
792 (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n") 792 (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")
793 (mapcar #'(lambda (l) 793 (dolist (l info)
794 (when (apply 'desktop-save-buffer-p l) 794 (when (apply 'desktop-save-buffer-p l)
795 (insert "(" 795 (insert "("
796 (if (or (not (integerp eager)) 796 (if (or (not (integerp eager))
797 (unless (zerop eager) 797 (unless (zerop eager)
798 (setq eager (1- eager)) 798 (setq eager (1- eager))
799 t)) 799 t))
800 "desktop-create-buffer" 800 "desktop-create-buffer"
801 "desktop-append-buffer-args") 801 "desktop-append-buffer-args")
802 " " 802 " "
803 desktop-file-version) 803 desktop-file-version)
804 (mapcar #'(lambda (e) 804 (dolist (e l)
805 (insert "\n " (desktop-value-to-string e))) 805 (insert "\n " (desktop-value-to-string e)))
806 l) 806 (insert ")\n\n")))
807 (insert ")\n\n")))
808 info)
809 (setq default-directory dirname) 807 (setq default-directory dirname)
810 (let ((coding-system-for-write 'utf-8-emacs)) 808 (let ((coding-system-for-write 'utf-8-emacs))
811 (write-region (point-min) (point-max) filename nil 'nomessage))))) 809 (write-region (point-min) (point-max) filename nil 'nomessage)))))
@@ -941,14 +939,13 @@ directory DIRNAME."
941 (desktop-clear) 939 (desktop-clear)
942 (desktop-read desktop-dirname)) 940 (desktop-read desktop-dirname))
943 941
942(defvar desktop-buffer-major-mode)
943(defvar desktop-buffer-locals)
944;; ---------------------------------------------------------------------------- 944;; ----------------------------------------------------------------------------
945(defun desktop-restore-file-buffer (desktop-buffer-file-name 945(defun desktop-restore-file-buffer (desktop-buffer-file-name
946 desktop-buffer-name 946 desktop-buffer-name
947 desktop-buffer-misc) 947 desktop-buffer-misc)
948 "Restore a file buffer." 948 "Restore a file buffer."
949 (eval-when-compile ; Just to silence the byte compiler
950 (defvar desktop-buffer-major-mode)
951 (defvar desktop-buffer-locals))
952 (if desktop-buffer-file-name 949 (if desktop-buffer-file-name
953 (if (or (file-exists-p desktop-buffer-file-name) 950 (if (or (file-exists-p desktop-buffer-file-name)
954 (let ((msg (format "Desktop: File \"%s\" no longer exists." 951 (let ((msg (format "Desktop: File \"%s\" no longer exists."
@@ -985,8 +982,12 @@ directory DIRNAME."
985;; called from Desktop file only. 982;; called from Desktop file only.
986 983
987;; Just to silence the byte compiler. 984;; Just to silence the byte compiler.
988(eval-when-compile 985
989 (defvar desktop-first-buffer)) ; Dynamically bound in `desktop-read' 986(defvar desktop-first-buffer) ; Dynamically bound in `desktop-read'
987
988;; Bound locally in `desktop-read'.
989(defvar desktop-buffer-ok-count)
990(defvar desktop-buffer-fail-count)
990 991
991(defun desktop-create-buffer 992(defun desktop-create-buffer
992 (desktop-file-version 993 (desktop-file-version
@@ -1000,10 +1001,6 @@ directory DIRNAME."
1000 desktop-buffer-misc 1001 desktop-buffer-misc
1001 &optional 1002 &optional
1002 desktop-buffer-locals) 1003 desktop-buffer-locals)
1003 ;; Just to silence the byte compiler. Bound locally in `desktop-read'.
1004 (eval-when-compile
1005 (defvar desktop-buffer-ok-count)
1006 (defvar desktop-buffer-fail-count))
1007 ;; To make desktop files with relative file names possible, we cannot 1004 ;; To make desktop files with relative file names possible, we cannot
1008 ;; allow `default-directory' to change. Therefore we save current buffer. 1005 ;; allow `default-directory' to change. Therefore we save current buffer.
1009 (save-current-buffer 1006 (save-current-buffer
@@ -1045,21 +1042,22 @@ directory DIRNAME."
1045 ((equal '(nil) desktop-buffer-minor-modes) ; backwards compatible 1042 ((equal '(nil) desktop-buffer-minor-modes) ; backwards compatible
1046 (auto-fill-mode 0)) 1043 (auto-fill-mode 0))
1047 (t 1044 (t
1048 (mapcar #'(lambda (minor-mode) 1045 (dolist (minor-mode desktop-buffer-minor-modes)
1049 ;; Give minor mode module a chance to add a handler. 1046 ;; Give minor mode module a chance to add a handler.
1050 (desktop-load-file minor-mode) 1047 (desktop-load-file minor-mode)
1051 (let ((handler (cdr (assq minor-mode desktop-minor-mode-handlers)))) 1048 (let ((handler (cdr (assq minor-mode desktop-minor-mode-handlers))))
1052 (if handler 1049 (if handler
1053 (funcall handler desktop-buffer-locals) 1050 (funcall handler desktop-buffer-locals)
1054 (when (functionp minor-mode) 1051 (when (functionp minor-mode)
1055 (funcall minor-mode 1))))) 1052 (funcall minor-mode 1)))))))
1056 desktop-buffer-minor-modes))) 1053 ;; Even though point and mark are non-nil when written by
1057 ;; Even though point and mark are non-nil when written by `desktop-save', 1054 ;; `desktop-save', they may be modified by handlers wanting to set
1058 ;; they may be modified by handlers wanting to set point or mark themselves. 1055 ;; point or mark themselves.
1059 (when desktop-buffer-point 1056 (when desktop-buffer-point
1060 (goto-char 1057 (goto-char
1061 (condition-case err 1058 (condition-case err
1062 ;; Evaluate point. Thus point can be something like '(search-forward ... 1059 ;; Evaluate point. Thus point can be something like
1060 ;; '(search-forward ...
1063 (eval desktop-buffer-point) 1061 (eval desktop-buffer-point)
1064 (error (message "%s" (error-message-string err)) 1)))) 1062 (error (message "%s" (error-message-string err)) 1))))
1065 (when desktop-buffer-mark 1063 (when desktop-buffer-mark
@@ -1167,7 +1165,7 @@ If there are no buffers left to create, kill the timer."
1167;; functions are processed after `after-init-hook'. 1165;; functions are processed after `after-init-hook'.
1168(add-hook 1166(add-hook
1169 'after-init-hook 1167 'after-init-hook
1170 '(lambda () 1168 (lambda ()
1171 (let ((key "--no-desktop")) 1169 (let ((key "--no-desktop"))
1172 (when (member key command-line-args) 1170 (when (member key command-line-args)
1173 (setq command-line-args (delete key command-line-args)) 1171 (setq command-line-args (delete key command-line-args))
@@ -1176,5 +1174,5 @@ If there are no buffers left to create, kill the timer."
1176 1174
1177(provide 'desktop) 1175(provide 'desktop)
1178 1176
1179;;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9 1177;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9
1180;;; desktop.el ends here 1178;;; desktop.el ends here
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index f5e6250b475..eecb1dbb709 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -790,21 +790,18 @@ nil."
790 (revert-buffer))) 790 (revert-buffer)))
791 791
792;; A zero-arg version of dired-virtual. 792;; A zero-arg version of dired-virtual.
793;; You need my modified version of set-auto-mode for the
794;; `buffer-contents-mode-alist'.
795;; Or you use infer-mode.el and infer-mode-alist, same syntax.
796(defun dired-virtual-mode () 793(defun dired-virtual-mode ()
797 "Put current buffer into Virtual Dired mode (see `dired-virtual'). 794 "Put current buffer into Virtual Dired mode (see `dired-virtual').
798Useful on `buffer-contents-mode-alist' (which see) with the regexp 795Useful on `magic-mode-alist' with the regexp
799 796
800 \"^ \\(/[^ /]+\\)/?+:$\" 797 \"^ \\\\(/[^ /]+\\\\)+/?:$\"
801 798
802to put saved dired buffers automatically into Virtual Dired mode. 799to put saved dired buffers automatically into Virtual Dired mode.
803 800
804Also useful for `auto-mode-alist' (which see) like this: 801Also useful for `auto-mode-alist' like this:
805 802
806 \(setq auto-mode-alist (cons '(\"[^/]\\.dired\\'\" . dired-virtual-mode) 803 (add-to-list 'auto-mode-alist
807 auto-mode-alist)\)" 804 '(\"[^/]\\\\.dired\\\\'\" . dired-virtual-mode))"
808 (interactive) 805 (interactive)
809 (dired-virtual (dired-virtual-guess-dir))) 806 (dired-virtual (dired-virtual-guess-dir)))
810 807
diff --git a/lisp/dired.el b/lisp/dired.el
index 7734a9bd69f..c618eec5159 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -1251,19 +1251,19 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
1251 (define-key map "\177" 'dired-unmark-backward) 1251 (define-key map "\177" 'dired-unmark-backward)
1252 (define-key map [remap undo] 'dired-undo) 1252 (define-key map [remap undo] 'dired-undo)
1253 (define-key map [remap advertised-undo] 'dired-undo) 1253 (define-key map [remap advertised-undo] 'dired-undo)
1254 ;; thumbnail manipulation (tumme) 1254 ;; thumbnail manipulation (image-dired)
1255 (define-key map "\C-td" 'tumme-display-thumbs) 1255 (define-key map "\C-td" 'image-dired-display-thumbs)
1256 (define-key map "\C-tt" 'tumme-tag-files) 1256 (define-key map "\C-tt" 'image-dired-tag-files)
1257 (define-key map "\C-tr" 'tumme-delete-tag) 1257 (define-key map "\C-tr" 'image-dired-delete-tag)
1258 (define-key map "\C-tj" 'tumme-jump-thumbnail-buffer) 1258 (define-key map "\C-tj" 'image-dired-jump-thumbnail-buffer)
1259 (define-key map "\C-ti" 'tumme-dired-display-image) 1259 (define-key map "\C-ti" 'image-dired-dired-display-image)
1260 (define-key map "\C-tx" 'tumme-dired-display-external) 1260 (define-key map "\C-tx" 'image-dired-dired-display-external)
1261 (define-key map "\C-ta" 'tumme-display-thumbs-append) 1261 (define-key map "\C-ta" 'image-dired-display-thumbs-append)
1262 (define-key map "\C-t." 'tumme-display-thumb) 1262 (define-key map "\C-t." 'image-dired-display-thumb)
1263 (define-key map "\C-tc" 'tumme-dired-comment-files) 1263 (define-key map "\C-tc" 'image-dired-dired-comment-files)
1264 (define-key map "\C-tf" 'tumme-mark-tagged-files) 1264 (define-key map "\C-tf" 'image-dired-mark-tagged-files)
1265 (define-key map "\C-t\C-t" 'tumme-dired-insert-marked-thumbs) 1265 (define-key map "\C-t\C-t" 'image-dired-dired-insert-marked-thumbs)
1266 (define-key map "\C-te" 'tumme-dired-edit-comment-and-tags) 1266 (define-key map "\C-te" 'image-dired-dired-edit-comment-and-tags)
1267 1267
1268 ;; Make menu bar items. 1268 ;; Make menu bar items.
1269 1269
@@ -1310,12 +1310,12 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
1310 (cons "Immediate" (make-sparse-keymap "Immediate"))) 1310 (cons "Immediate" (make-sparse-keymap "Immediate")))
1311 1311
1312 (define-key map 1312 (define-key map
1313 [menu-bar immediate tumme-dired-display-external] 1313 [menu-bar immediate image-dired-dired-display-external]
1314 '(menu-item "Display Image Externally" tumme-dired-display-external 1314 '(menu-item "Display Image Externally" image-dired-dired-display-external
1315 :help "Display image in external viewer")) 1315 :help "Display image in external viewer"))
1316 (define-key map 1316 (define-key map
1317 [menu-bar immediate tumme-dired-display-image] 1317 [menu-bar immediate image-dired-dired-display-image]
1318 '(menu-item "Display Image" tumme-dired-display-image 1318 '(menu-item "Display Image" image-dired-dired-display-image
1319 :help "Display sized image in a separate window")) 1319 :help "Display sized image in a separate window"))
1320 1320
1321 (define-key map [menu-bar immediate dashes-4] 1321 (define-key map [menu-bar immediate dashes-4]
@@ -1358,8 +1358,8 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
1358 (cons "Regexp" (make-sparse-keymap "Regexp"))) 1358 (cons "Regexp" (make-sparse-keymap "Regexp")))
1359 1359
1360 (define-key map 1360 (define-key map
1361 [menu-bar regexp tumme-mark-tagged-files] 1361 [menu-bar regexp image-dired-mark-tagged-files]
1362 '(menu-item "Mark From Image Tag..." tumme-mark-tagged-files 1362 '(menu-item "Mark From Image Tag..." image-dired-mark-tagged-files
1363 :help "Mark files whose image tags matches regexp")) 1363 :help "Mark files whose image tags matches regexp"))
1364 1364
1365 (define-key map [menu-bar regexp dashes-1] 1365 (define-key map [menu-bar regexp dashes-1]
@@ -1456,21 +1456,21 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
1456 '("--")) 1456 '("--"))
1457 1457
1458 (define-key map 1458 (define-key map
1459 [menu-bar operate tumme-delete-tag] 1459 [menu-bar operate image-dired-delete-tag]
1460 '(menu-item "Delete Image Tag..." tumme-delete-tag 1460 '(menu-item "Delete Image Tag..." image-dired-delete-tag
1461 :help "Delete image tag from current or marked files")) 1461 :help "Delete image tag from current or marked files"))
1462 (define-key map 1462 (define-key map
1463 [menu-bar operate tumme-tag-files] 1463 [menu-bar operate image-dired-tag-files]
1464 '(menu-item "Add Image Tags..." tumme-tag-files 1464 '(menu-item "Add Image Tags..." image-dired-tag-files
1465 :help "Add image tags to current or marked files")) 1465 :help "Add image tags to current or marked files"))
1466 (define-key map 1466 (define-key map
1467 [menu-bar operate tumme-dired-comment-files] 1467 [menu-bar operate image-dired-dired-comment-files]
1468 '(menu-item "Add Image Comment..." tumme-dired-comment-files 1468 '(menu-item "Add Image Comment..." image-dired-dired-comment-files
1469 :help "Add image comment to current or marked files")) 1469 :help "Add image comment to current or marked files"))
1470 (define-key map 1470 (define-key map
1471 [menu-bar operate tumme-display-thumbs] 1471 [menu-bar operate image-dired-display-thumbs]
1472 '(menu-item "Display Thumbnails" tumme-display-thumbs 1472 '(menu-item "Display Image-Dired" image-dired-display-thumbs
1473 :help "Display thumbnails for current or marked image files")) 1473 :help "Display image-dired for current or marked image files"))
1474 1474
1475 (define-key map [menu-bar operate dashes-3] 1475 (define-key map [menu-bar operate dashes-3]
1476 '("--")) 1476 '("--"))
diff --git a/lisp/dnd.el b/lisp/dnd.el
index 972354f3908..56a619490aa 100644
--- a/lisp/dnd.el
+++ b/lisp/dnd.el
@@ -146,7 +146,7 @@ Return nil if URI is not a local file."
146 (substring uri (match-end 0)))))) 146 (substring uri (match-end 0))))))
147 (when (and f must-exist) 147 (when (and f must-exist)
148 (setq f (replace-regexp-in-string 148 (setq f (replace-regexp-in-string
149 "%[A-Z0-9][A-Z0-9]" 149 "%[A-Fa-f0-9][A-Fa-f0-9]"
150 (lambda (arg) 150 (lambda (arg)
151 (let ((str (make-string 1 0))) 151 (let ((str (make-string 1 0)))
152 (aset str 0 (string-to-number (substring arg 1) 16)) 152 (aset str 0 (string-to-number (substring arg 1) 16))
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index d0589b3eb00..be135850d56 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -557,8 +557,20 @@
557 ;; Otherwise, no args can be considered to be for-effect, 557 ;; Otherwise, no args can be considered to be for-effect,
558 ;; even if the called function is for-effect, because we 558 ;; even if the called function is for-effect, because we
559 ;; don't know anything about that function. 559 ;; don't know anything about that function.
560 (cons fn (mapcar 'byte-optimize-form (cdr form))))))) 560 (let ((args (mapcar #'byte-optimize-form (cdr form))))
561 561 (if (and (get fn 'pure)
562 (byte-optimize-all-constp args))
563 (list 'quote (apply fn (mapcar #'eval args)))
564 (cons fn args)))))))
565
566(defun byte-optimize-all-constp (list)
567 "Non-nil iff all elements of LIST satisfy `byte-compile-constp'."
568 (let ((constant t))
569 (while (and list constant)
570 (unless (byte-compile-constp (car list))
571 (setq constant nil))
572 (setq list (cdr list)))
573 constant))
562 574
563(defun byte-optimize-form (form &optional for-effect) 575(defun byte-optimize-form (form &optional for-effect)
564 "The source-level pass of the optimizer." 576 "The source-level pass of the optimizer."
@@ -1117,26 +1129,6 @@
1117 (byte-optimize-predicate form)) 1129 (byte-optimize-predicate form))
1118 form)) 1130 form))
1119 1131
1120;; Avoid having to write forward-... with a negative arg for speed.
1121;; Fixme: don't be limited to constant args.
1122(put 'backward-char 'byte-optimizer 'byte-optimize-backward-char)
1123(defun byte-optimize-backward-char (form)
1124 (cond ((and (= 2 (safe-length form))
1125 (numberp (nth 1 form)))
1126 (list 'forward-char (eval (- (nth 1 form)))))
1127 ((= 1 (safe-length form))
1128 '(forward-char -1))
1129 (t form)))
1130
1131(put 'backward-word 'byte-optimizer 'byte-optimize-backward-word)
1132(defun byte-optimize-backward-word (form)
1133 (cond ((and (= 2 (safe-length form))
1134 (numberp (nth 1 form)))
1135 (list 'forward-word (eval (- (nth 1 form)))))
1136 ((= 1 (safe-length form))
1137 '(forward-word -1))
1138 (t form)))
1139
1140;; Fixme: delete-char -> delete-region (byte-coded) 1132;; Fixme: delete-char -> delete-region (byte-coded)
1141;; optimize string-as-unibyte, string-as-multibyte, string-make-unibyte, 1133;; optimize string-as-unibyte, string-as-multibyte, string-make-unibyte,
1142;; string-make-multibyte for constant args. 1134;; string-make-multibyte for constant args.
@@ -1266,6 +1258,18 @@
1266 (setq side-effect-and-error-free-fns (cdr side-effect-and-error-free-fns))) 1258 (setq side-effect-and-error-free-fns (cdr side-effect-and-error-free-fns)))
1267 nil) 1259 nil)
1268 1260
1261
1262;; pure functions are side-effect free functions whose values depend
1263;; only on their arguments. For these functions, calls with constant
1264;; arguments can be evaluated at compile time. This may shift run time
1265;; errors to compile time.
1266
1267(let ((pure-fns
1268 '(concat symbol-name regexp-opt regexp-quote string-to-syntax)))
1269 (while pure-fns
1270 (put (car pure-fns) 'pure t)
1271 (setq pure-fns (cdr pure-fns)))
1272 nil)
1269 1273
1270(defun byte-compile-splice-in-already-compiled-code (form) 1274(defun byte-compile-splice-in-already-compiled-code (form)
1271 ;; form is (byte-code "..." [...] n) 1275 ;; form is (byte-code "..." [...] n)
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 2a32ff9a016..8606f1ae2b8 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -3149,6 +3149,8 @@ That command is designed for interactive use only" fn))
3149;; more complicated compiler macros 3149;; more complicated compiler macros
3150 3150
3151(byte-defop-compiler char-before) 3151(byte-defop-compiler char-before)
3152(byte-defop-compiler backward-char)
3153(byte-defop-compiler backward-word)
3152(byte-defop-compiler list) 3154(byte-defop-compiler list)
3153(byte-defop-compiler concat) 3155(byte-defop-compiler concat)
3154(byte-defop-compiler fset) 3156(byte-defop-compiler fset)
@@ -3162,10 +3164,31 @@ That command is designed for interactive use only" fn))
3162 3164
3163(defun byte-compile-char-before (form) 3165(defun byte-compile-char-before (form)
3164 (cond ((= 2 (length form)) 3166 (cond ((= 2 (length form))
3165 (byte-compile-form `(char-after (1- ,(nth 1 form))))) 3167 (byte-compile-form (list 'char-after (if (numberp (nth 1 form))
3166 ((= 1 (length form)) 3168 (1- (nth 1 form))
3167 (byte-compile-form '(char-after (1- (point))))) 3169 `(1- ,(nth 1 form))))))
3168 (t (byte-compile-subr-wrong-args form "0-1")))) 3170 ((= 1 (length form))
3171 (byte-compile-form '(char-after (1- (point)))))
3172 (t (byte-compile-subr-wrong-args form "0-1"))))
3173
3174;; backward-... ==> forward-... with negated argument.
3175(defun byte-compile-backward-char (form)
3176 (cond ((= 2 (length form))
3177 (byte-compile-form (list 'forward-char (if (numberp (nth 1 form))
3178 (- (nth 1 form))
3179 `(- ,(nth 1 form))))))
3180 ((= 1 (length form))
3181 (byte-compile-form '(forward-char -1)))
3182 (t (byte-compile-subr-wrong-args form "0-1"))))
3183
3184(defun byte-compile-backward-word (form)
3185 (cond ((= 2 (length form))
3186 (byte-compile-form (list 'forward-word (if (numberp (nth 1 form))
3187 (- (nth 1 form))
3188 `(- ,(nth 1 form))))))
3189 ((= 1 (length form))
3190 (byte-compile-form '(forward-word -1)))
3191 (t (byte-compile-subr-wrong-args form "0-1"))))
3169 3192
3170(defun byte-compile-list (form) 3193(defun byte-compile-list (form)
3171 (let ((count (length (cdr form)))) 3194 (let ((count (length (cdr form))))
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index 8b8dc6ba09d..2ce4ca8cf38 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -327,11 +327,12 @@ call another major mode in their body."
327 (make-variable-buffer-local ',MODE-major-mode) 327 (make-variable-buffer-local ',MODE-major-mode)
328 ;; The actual global minor-mode 328 ;; The actual global minor-mode
329 (define-minor-mode ,global-mode 329 (define-minor-mode ,global-mode
330 ,(format "Toggle %s in every buffer. 330 ,(format "Toggle %s in every possible buffer.
331With prefix ARG, turn %s on if and only if ARG is positive. 331With prefix ARG, turn %s on if and only if ARG is positive.
332%s is actually not turned on in every buffer but only in those 332%s is enabled in all buffers where `%s' would do it.
333in which `%s' turns it on." 333See `%s' for more information on %s."
334 pretty-name pretty-global-name pretty-name turn-on) 334 pretty-name pretty-global-name pretty-name turn-on
335 mode pretty-name)
335 :global t ,@group ,@(nreverse extra-keywords) 336 :global t ,@group ,@(nreverse extra-keywords)
336 337
337 ;; Setup hook to handle future mode changes and new buffers. 338 ;; Setup hook to handle future mode changes and new buffers.
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 151bbd2bd9e..9ae33599f09 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -364,31 +364,39 @@ Return the result of the last expression in BODY."
364 364
365(defun edebug-pop-to-buffer (buffer &optional window) 365(defun edebug-pop-to-buffer (buffer &optional window)
366 ;; Like pop-to-buffer, but select window where BUFFER was last shown. 366 ;; Like pop-to-buffer, but select window where BUFFER was last shown.
367 ;; Select WINDOW if it provided and it still exists. Otherwise, 367 ;; Select WINDOW if it is provided and still exists. Otherwise,
368 ;; if buffer is currently shown in several windows, choose one. 368 ;; if buffer is currently shown in several windows, choose one.
369 ;; Otherwise, find a new window, possibly splitting one. 369 ;; Otherwise, find a new window, possibly splitting one.
370 (setq window (if (and (windowp window) (edebug-window-live-p window) 370 (setq window
371 (eq (window-buffer window) buffer)) 371 (cond
372 window 372 ((and (windowp window) (edebug-window-live-p window)
373 (if (eq (window-buffer (selected-window)) buffer) 373 (eq (window-buffer window) buffer))
374 (selected-window) 374 window)
375 (edebug-get-buffer-window buffer)))) 375 ((eq (window-buffer (selected-window)) buffer)
376 (if window 376 ;; Selected window already displays BUFFER.
377 (select-window window) 377 (selected-window))
378 (if (one-window-p) 378 ((edebug-get-buffer-window buffer))
379 (split-window)) 379 ((one-window-p 'nomini)
380 ;; (message "next window: %s" (next-window)) (sit-for 1) 380 ;; When there's one window only, split it.
381 (if (eq (get-buffer-window edebug-trace-buffer) (next-window)) 381 (split-window))
382 ;; Don't select trace window 382 ((let ((trace-window (get-buffer-window edebug-trace-buffer)))
383 nil 383 (catch 'found
384 (select-window (next-window)))) 384 (dolist (elt (window-list nil 'nomini))
385 (set-window-buffer (selected-window) buffer) 385 (unless (or (eq elt (selected-window)) (eq elt trace-window)
386 (set-window-hscroll (selected-window) 0);; should this be?? 386 (window-dedicated-p elt))
387 ;; Found a non-dedicated window not showing
388 ;; `edebug-trace-buffer', use it.
389 (throw 'found elt))))))
390 ;; All windows are dedicated or show `edebug-trace-buffer', split
391 ;; selected one.
392 (t (split-window))))
393 (select-window window)
394 (set-window-buffer window buffer)
395 (set-window-hscroll window 0);; should this be??
387 ;; Selecting the window does not set the buffer until command loop. 396 ;; Selecting the window does not set the buffer until command loop.
388 ;;(set-buffer buffer) 397 ;;(set-buffer buffer)
389 ) 398 )
390 399
391
392(defun edebug-get-displayed-buffer-points () 400(defun edebug-get-displayed-buffer-points ()
393 ;; Return a list of buffer point pairs, for all displayed buffers. 401 ;; Return a list of buffer point pairs, for all displayed buffers.
394 (let (list) 402 (let (list)
diff --git a/lisp/files.el b/lisp/files.el
index b96ab2e96fb..1b6a94766d3 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -2123,19 +2123,20 @@ associated with that interpreter in `interpreter-mode-alist'.")
2123 `((image-type-auto-detected-p . image-mode) 2123 `((image-type-auto-detected-p . image-mode)
2124 ;; The < comes before the groups (but the first) to reduce backtracking. 2124 ;; The < comes before the groups (but the first) to reduce backtracking.
2125 ;; TODO: UTF-16 <?xml may be preceded by a BOM 0xff 0xfe or 0xfe 0xff. 2125 ;; TODO: UTF-16 <?xml may be preceded by a BOM 0xff 0xfe or 0xfe 0xff.
2126 ;; We use [ \t\n] instead of `\\s ' to make regex overflow less likely. 2126 ;; We use [ \t\r\n] instead of `\\s ' to make regex overflow less likely.
2127 (,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)") 2127 (,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)")
2128 (comment-re (concat "\\(?:!--" incomment-re "*-->[ \t\n]*<\\)"))) 2128 (comment-re (concat "\\(?:!--" incomment-re "*-->[ \t\r\n]*<\\)")))
2129 (concat "\\(?:<\\?xml[ \t\n]+[^>]*>\\)?[ \t\n]*<" 2129 (concat "\\(?:<\\?xml[ \t\r\n]+[^>]*>\\)?[ \t\r\n]*<"
2130 comment-re "*" 2130 comment-re "*"
2131 "\\(?:!DOCTYPE[ \t\n]+[^>]*>[ \t\n]*<[ \t\n]*" comment-re "*\\)?" 2131 "\\(?:!DOCTYPE[ \t\r\n]+[^>]*>[ \t\r\n]*<[ \t\r\n]*" comment-re "*\\)?"
2132 "[Hh][Tt][Mm][Ll]")) 2132 "[Hh][Tt][Mm][Ll]"))
2133 . html-mode) 2133 . html-mode)
2134 ("<!DOCTYPE[ \t\r\n]+[Hh][Tt][Mm][Ll]" . html-mode)
2134 ;; These two must come after html, because they are more general: 2135 ;; These two must come after html, because they are more general:
2135 ("<\\?xml " . xml-mode) 2136 ("<\\?xml " . xml-mode)
2136 (,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)") 2137 (,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)")
2137 (comment-re (concat "\\(?:!--" incomment-re "*-->[ \t\n]*<\\)"))) 2138 (comment-re (concat "\\(?:!--" incomment-re "*-->[ \t\r\n]*<\\)")))
2138 (concat "[ \t\n]*<" comment-re "*!DOCTYPE ")) 2139 (concat "[ \t\r\n]*<" comment-re "*!DOCTYPE "))
2139 . sgml-mode) 2140 . sgml-mode)
2140 ("%!PS" . ps-mode) 2141 ("%!PS" . ps-mode)
2141 ("# xmcd " . conf-unix-mode)) 2142 ("# xmcd " . conf-unix-mode))
@@ -2434,13 +2435,14 @@ asking you for confirmation."
2434 2435
2435(mapc (lambda (pair) 2436(mapc (lambda (pair)
2436 (put (car pair) 'safe-local-variable (cdr pair))) 2437 (put (car pair) 'safe-local-variable (cdr pair)))
2437 '((buffer-read-only . booleanp) ;; C source code 2438 '((buffer-read-only . booleanp) ;; C source code
2438 (fill-column . integerp) ;; C source code 2439 (default-directory . stringp) ;; C source code
2439 (indent-tabs-mode . booleanp) ;; C source code 2440 (fill-column . integerp) ;; C source code
2440 (left-margin . integerp) ;; C source code 2441 (indent-tabs-mode . booleanp) ;; C source code
2441 (no-update-autoloads . booleanp) 2442 (left-margin . integerp) ;; C source code
2442 (tab-width . integerp) ;; C source code 2443 (no-update-autoloads . booleanp)
2443 (truncate-lines . booleanp))) ;; C source code 2444 (tab-width . integerp) ;; C source code
2445 (truncate-lines . booleanp))) ;; C source code
2444 2446
2445(put 'c-set-style 'safe-local-eval-function t) 2447(put 'c-set-style 'safe-local-eval-function t)
2446 2448
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 4bc79fc6ee5..306cf5fd399 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -468,6 +468,7 @@ they are added at the end.
468 468
469This is normally set via `font-lock-add-keywords' and 469This is normally set via `font-lock-add-keywords' and
470`font-lock-remove-keywords'.") 470`font-lock-remove-keywords'.")
471(put 'font-lock-keywords-alist 'risky-local-variable t)
471 472
472(defvar font-lock-removed-keywords-alist nil 473(defvar font-lock-removed-keywords-alist nil
473 "Alist of `font-lock-keywords' elements to be removed for major modes. 474 "Alist of `font-lock-keywords' elements to be removed for major modes.
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 8f094dd6537..b02dc6c2f8e 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,15 @@
12007-04-19 Katsumi Yamaoka <yamaoka@jpl.org>
2
3 * gnus-art.el (gnus-mime-strip-charset-parameters): New function.
4 (gnus-mime-view-part-as-charset): Use it; redisplay subpart currently
5 displayed of multipart/alternative part if it is invoked from summary
6 buffer.
7 (gnus-article-part-wrapper): Select article window.
8
9 * mm-view.el (mm-inline-text-html-render-with-w3m)
10 (mm-inline-text-html-render-with-w3m-standalone)
11 (mm-inline-render-with-function): Use mail-parse-charset by default.
12
12007-04-10 Katsumi Yamaoka <yamaoka@jpl.org> 132007-04-10 Katsumi Yamaoka <yamaoka@jpl.org>
2 14
3 * gnus-msg.el (gnus-inews-yank-articles): Use 15 * gnus-msg.el (gnus-inews-yank-articles): Use
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 552f3a68f49..6ae52b5eedd 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -4606,6 +4606,21 @@ are decompressed."
4606 (mm-string-to-multibyte contents))) 4606 (mm-string-to-multibyte contents)))
4607 (goto-char b))))) 4607 (goto-char b)))))
4608 4608
4609(defun gnus-mime-strip-charset-parameters (handle)
4610 "Strip charset parameters from HANDLE."
4611 (if (stringp (car handle))
4612 (mapc #'gnus-mime-strip-charset-parameters (cdr handle))
4613 (let* ((type (mm-handle-type (if (equal (mm-handle-media-type handle)
4614 "message/external-body")
4615 (progn
4616 (unless (mm-handle-cache handle)
4617 (mm-extern-cache-contents handle))
4618 (mm-handle-cache handle))
4619 handle)))
4620 (charset (assq 'charset (cdr type))))
4621 (when charset
4622 (delq charset type)))))
4623
4609(defun gnus-mime-view-part-as-charset (&optional handle arg) 4624(defun gnus-mime-view-part-as-charset (&optional handle arg)
4610 "Insert the MIME part under point into the current buffer using the 4625 "Insert the MIME part under point into the current buffer using the
4611specified charset." 4626specified charset."
@@ -4614,7 +4629,7 @@ specified charset."
4614 (let ((handle (or handle (get-text-property (point) 'gnus-data))) 4629 (let ((handle (or handle (get-text-property (point) 'gnus-data)))
4615 (fun (get-text-property (point) 'gnus-callback)) 4630 (fun (get-text-property (point) 'gnus-callback))
4616 (gnus-newsgroup-ignored-charsets 'gnus-all) 4631 (gnus-newsgroup-ignored-charsets 'gnus-all)
4617 gnus-newsgroup-charset type charset) 4632 gnus-newsgroup-charset form preferred parts)
4618 (when handle 4633 (when handle
4619 (if (mm-handle-undisplayer handle) 4634 (if (mm-handle-undisplayer handle)
4620 (mm-remove-part handle)) 4635 (mm-remove-part handle))
@@ -4622,17 +4637,24 @@ specified charset."
4622 (setq gnus-newsgroup-charset 4637 (setq gnus-newsgroup-charset
4623 (or (cdr (assq arg gnus-summary-show-article-charset-alist)) 4638 (or (cdr (assq arg gnus-summary-show-article-charset-alist))
4624 (mm-read-coding-system "Charset: "))) 4639 (mm-read-coding-system "Charset: ")))
4625 ;; Strip the charset parameter from `handle'. 4640 (gnus-mime-strip-charset-parameters handle)
4626 (setq type (mm-handle-type 4641 (when (and (consp (setq form (cdr-safe fun)))
4627 (if (equal (mm-handle-media-type handle) 4642 (setq form (ignore-errors
4628 "message/external-body") 4643 (assq 'gnus-mime-display-alternative form)))
4629 (progn 4644 (setq preferred (caddr form))
4630 (unless (mm-handle-cache handle) 4645 (progn
4631 (mm-extern-cache-contents handle)) 4646 (when (eq (car preferred) 'quote)
4632 (mm-handle-cache handle)) 4647 (setq preferred (cadr preferred)))
4633 handle)) 4648 (not (equal preferred
4634 charset (assq 'charset (cdr type))) 4649 (get-text-property (point) 'gnus-data))))
4635 (delq charset type) 4650 (setq parts (get-text-property (point) 'gnus-part))
4651 (setq parts (cdr (assq parts
4652 gnus-article-mime-handle-alist)))
4653 (equal (mm-handle-media-type parts) "multipart/alternative")
4654 (setq parts (reverse (cdr parts))))
4655 (setcar (cddr form)
4656 (list 'quote (or (cadr (member preferred parts))
4657 (car parts)))))
4636 (funcall fun handle))))) 4658 (funcall fun handle)))))
4637 4659
4638(defun gnus-mime-view-part-externally (&optional handle) 4660(defun gnus-mime-view-part-externally (&optional handle)
@@ -4688,13 +4710,22 @@ If no internal viewer is available, use an external viewer."
4688 (funcall (cdr action-pair))))) 4710 (funcall (cdr action-pair)))))
4689 4711
4690(defun gnus-article-part-wrapper (n function) 4712(defun gnus-article-part-wrapper (n function)
4691 (save-current-buffer 4713 (let ((window (get-buffer-window gnus-article-buffer 'visible))
4692 (set-buffer gnus-article-buffer) 4714 frame)
4693 (when (> n (length gnus-article-mime-handle-alist)) 4715 (when window
4694 (error "No such part")) 4716 ;; It is necessary to select the article window so that
4695 (gnus-article-goto-part n) 4717 ;; `gnus-article-goto-part' may really move the point.
4696 (let ((handle (cdr (assq n gnus-article-mime-handle-alist)))) 4718 (setq frame (selected-frame))
4697 (funcall function handle)))) 4719 (gnus-select-frame-set-input-focus (window-frame window))
4720 (unwind-protect
4721 (save-window-excursion
4722 (select-window window)
4723 (when (> n (length gnus-article-mime-handle-alist))
4724 (error "No such part"))
4725 (gnus-article-goto-part n)
4726 (let ((handle (cdr (assq n gnus-article-mime-handle-alist))))
4727 (funcall function handle)))
4728 (gnus-select-frame-set-input-focus frame)))))
4698 4729
4699(defun gnus-article-pipe-part (n) 4730(defun gnus-article-pipe-part (n)
4700 "Pipe MIME part N, which is the numerical prefix." 4731 "Pipe MIME part N, which is the numerical prefix."
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index 14d480fe7df..888c814bf24 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -238,7 +238,8 @@
238 (mm-setup-w3m) 238 (mm-setup-w3m)
239 (let ((text (mm-get-part handle)) 239 (let ((text (mm-get-part handle))
240 (b (point)) 240 (b (point))
241 (charset (mail-content-type-get (mm-handle-type handle) 'charset))) 241 (charset (or (mail-content-type-get (mm-handle-type handle) 'charset)
242 mail-parse-charset)))
242 (save-excursion 243 (save-excursion
243 (insert (if charset (mm-decode-string text charset) text)) 244 (insert (if charset (mm-decode-string text charset) text))
244 (save-restriction 245 (save-restriction
@@ -302,7 +303,9 @@
302 "Render a text/html part using w3m." 303 "Render a text/html part using w3m."
303 (if (mm-w3m-standalone-supports-m17n-p) 304 (if (mm-w3m-standalone-supports-m17n-p)
304 (let ((source (mm-get-part handle)) 305 (let ((source (mm-get-part handle))
305 (charset (mail-content-type-get (mm-handle-type handle) 'charset)) 306 (charset (or (mail-content-type-get (mm-handle-type handle)
307 'charset)
308 (symbol-name mail-parse-charset)))
306 cs) 309 cs)
307 (unless (and charset 310 (unless (and charset
308 (setq cs (mm-charset-to-coding-system charset)) 311 (setq cs (mm-charset-to-coding-system charset))
@@ -368,7 +371,8 @@
368 371
369(defun mm-inline-render-with-function (handle func &rest args) 372(defun mm-inline-render-with-function (handle func &rest args)
370 (let ((source (mm-get-part handle)) 373 (let ((source (mm-get-part handle))
371 (charset (mail-content-type-get (mm-handle-type handle) 'charset))) 374 (charset (or (mail-content-type-get (mm-handle-type handle) 'charset)
375 mail-parse-charset)))
372 (mm-insert-inline 376 (mm-insert-inline
373 handle 377 handle
374 (mm-with-multibyte-buffer 378 (mm-with-multibyte-buffer
diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el
index 889b13cfa59..d97d0407ab8 100644
--- a/lisp/hi-lock.el
+++ b/lisp/hi-lock.el
@@ -3,7 +3,7 @@
3;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 3;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
4;; 2005, 2006, 2007 Free Software Foundation, Inc. 4;; 2005, 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: David M. Koppelman, koppel@ee.lsu.edu 6;; Author: David M. Koppelman, koppel@ece.lsu.edu
7;; Keywords: faces, minor-mode, matching, display 7;; Keywords: faces, minor-mode, matching, display
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
@@ -33,7 +33,8 @@
33;; will remove the highlighting. Any existing face can be used for 33;; will remove the highlighting. Any existing face can be used for
34;; highlighting and a set of appropriate faces is provided. The 34;; highlighting and a set of appropriate faces is provided. The
35;; regexps can be written into the current buffer in a form that will 35;; regexps can be written into the current buffer in a form that will
36;; be recognized the next time the corresponding file is read. 36;; be recognized the next time the corresponding file is read (when
37;; file patterns is turned on).
37;; 38;;
38;; Applications: 39;; Applications:
39;; 40;;
@@ -60,6 +61,14 @@
60;; 61;;
61;; (global-hi-lock-mode 1) 62;; (global-hi-lock-mode 1)
62;; 63;;
64;; To enable the use of patterns found in files (presumably placed
65;; there by hi-lock) include the following in your .emacs file:
66;;
67;; (setq hi-lock-file-patterns-policy 'ask)
68;;
69;; If you get tired of being asked each time a file is loaded replace
70;; `ask' with a function that returns t if patterns should be read.
71;;
63;; You might also want to bind the hi-lock commands to more 72;; You might also want to bind the hi-lock commands to more
64;; finger-friendly sequences: 73;; finger-friendly sequences:
65 74
@@ -115,6 +124,20 @@ calls."
115 :type '(repeat symbol) 124 :type '(repeat symbol)
116 :group 'hi-lock) 125 :group 'hi-lock)
117 126
127(defcustom hi-lock-file-patterns-policy 'never
128 "Specify when hi-lock should use patterns found in file.
129If `ask', prompt when patterns found in buffer; if bound to a function,
130use patterns when function returns t (function is called with patterns
131as first argument); if nil or `never' or anything else, don't use file
132patterns."
133 :type '(choice (const :tag "Do not use file patterns" never)
134 (const :tag "Ask about file patterns" ask)
135 (function :tag "Function to check file patterns"))
136 :group 'hi-lock
137 :version "22.1")
138
139;; It can have a function value.
140(put 'hi-lock-file-patterns-policy 'risky-local-variable t)
118 141
119(defgroup hi-lock-faces nil 142(defgroup hi-lock-faces nil
120 "Faces for hi-lock." 143 "Faces for hi-lock."
@@ -196,7 +219,7 @@ calls."
196 "History of regexps used for interactive fontification.") 219 "History of regexps used for interactive fontification.")
197 220
198(defvar hi-lock-file-patterns-prefix "Hi-lock" 221(defvar hi-lock-file-patterns-prefix "Hi-lock"
199 "Regexp for finding hi-lock patterns at top of file.") 222 "Search target for finding hi-lock patterns at top of file.")
200 223
201(defvar hi-lock-archaic-interface-message-used nil 224(defvar hi-lock-archaic-interface-message-used nil
202 "True if user alerted that `global-hi-lock-mode' is now the global switch. 225 "True if user alerted that `global-hi-lock-mode' is now the global switch.
@@ -283,17 +306,22 @@ called interactively, are:
283 Remove highlighting on matches of REGEXP in current buffer. 306 Remove highlighting on matches of REGEXP in current buffer.
284 307
285\\[hi-lock-write-interactive-patterns] 308\\[hi-lock-write-interactive-patterns]
286 Write active REGEXPs into buffer as comments (if possible). They will 309 Write active REGEXPs into buffer as comments (if possible). They may
287 be read the next time file is loaded or when the \\[hi-lock-find-patterns] command 310 be read the next time file is loaded or when the \\[hi-lock-find-patterns] command
288 is issued. The inserted regexps are in the form of font lock keywords. 311 is issued. The inserted regexps are in the form of font lock keywords.
289 (See `font-lock-keywords'.) They may be edited and re-loaded with \\[hi-lock-find-patterns], 312 (See `font-lock-keywords'.) They may be edited and re-loaded with \\[hi-lock-find-patterns],
290 any valid `font-lock-keywords' form is acceptable. 313 any valid `font-lock-keywords' form is acceptable. When a file is
314 loaded the patterns are read if `hi-lock-file-patterns-policy is
315 'ask and the user responds y to the prompt, or if
316 `hi-lock-file-patterns-policy' is bound to a function and that
317 function returns t.
291 318
292\\[hi-lock-find-patterns] 319\\[hi-lock-find-patterns]
293 Re-read patterns stored in buffer (in the format produced by \\[hi-lock-write-interactive-patterns]). 320 Re-read patterns stored in buffer (in the format produced by \\[hi-lock-write-interactive-patterns]).
294 321
295When hi-lock is started and if the mode is not excluded, the 322When hi-lock is started and if the mode is not excluded or patterns
296beginning of the buffer is searched for lines of the form: 323rejected, the beginning of the buffer is searched for lines of the
324form:
297 Hi-lock: FOO 325 Hi-lock: FOO
298where FOO is a list of patterns. These are added to the font lock 326where FOO is a list of patterns. These are added to the font lock
299keywords already present. The patterns must start before position 327keywords already present. The patterns must start before position
@@ -590,9 +618,18 @@ not suitable."
590 (setq all-patterns (append (read (current-buffer)) all-patterns)) 618 (setq all-patterns (append (read (current-buffer)) all-patterns))
591 (error (message "Invalid pattern list expression at %d" 619 (error (message "Invalid pattern list expression at %d"
592 (line-number-at-pos))))))) 620 (line-number-at-pos)))))))
593 (when hi-lock-mode (hi-lock-set-file-patterns all-patterns)) 621 (when (and all-patterns
594 (if (interactive-p) 622 hi-lock-mode
595 (message "Hi-lock added %d patterns." (length all-patterns)))))) 623 (cond
624 ((eq this-command 'hi-lock-find-patterns) t)
625 ((functionp hi-lock-file-patterns-policy)
626 (funcall hi-lock-file-patterns-policy all-patterns))
627 ((eq hi-lock-file-patterns-policy 'ask)
628 (y-or-n-p "Add patterns from this buffer to hi-lock? "))
629 (t nil)))
630 (hi-lock-set-file-patterns all-patterns)
631 (if (interactive-p)
632 (message "Hi-lock added %d patterns." (length all-patterns)))))))
596 633
597(defun hi-lock-font-lock-hook () 634(defun hi-lock-font-lock-hook ()
598 "Add hi-lock patterns to font-lock's." 635 "Add hi-lock patterns to font-lock's."
diff --git a/lisp/ido.el b/lisp/ido.el
index 80ed82c2583..5a7be3e5ae6 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -3817,7 +3817,7 @@ for first matching file."
3817If cursor is not at the end of the user input, delete to end of input." 3817If cursor is not at the end of the user input, delete to end of input."
3818 (interactive) 3818 (interactive)
3819 (if (not (eobp)) 3819 (if (not (eobp))
3820 (kill-line) 3820 (delete-region (point) (line-end-position))
3821 (let ((enable-recursive-minibuffers t) 3821 (let ((enable-recursive-minibuffers t)
3822 (buf (ido-name (car ido-matches)))) 3822 (buf (ido-name (car ido-matches))))
3823 (when buf 3823 (when buf
@@ -3835,7 +3835,7 @@ If cursor is not at the end of the user input, delete to end of input."
3835If cursor is not at the end of the user input, delete to end of input." 3835If cursor is not at the end of the user input, delete to end of input."
3836 (interactive) 3836 (interactive)
3837 (if (not (eobp)) 3837 (if (not (eobp))
3838 (kill-line) 3838 (delete-region (point) (line-end-position))
3839 (let ((enable-recursive-minibuffers t) 3839 (let ((enable-recursive-minibuffers t)
3840 (file (ido-name (car ido-matches)))) 3840 (file (ido-name (car ido-matches))))
3841 (if file 3841 (if file
diff --git a/lisp/tumme.el b/lisp/image-dired.el
index 8d4527d8ff4..ed330410d88 100644
--- a/lisp/tumme.el
+++ b/lisp/image-dired.el
@@ -1,4 +1,4 @@
1;;; tumme.el --- use dired to browse and manipulate your images 1;;; image-dired.el --- use dired to browse and manipulate your images
2;; 2;;
3;; Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. 3;; Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
4;; 4;;
@@ -45,20 +45,15 @@
45;; powerful than this package, it did not work the way I wanted to. It 45;; powerful than this package, it did not work the way I wanted to. It
46;; was too slow to created thumbnails of all files in a directory (I 46;; was too slow to created thumbnails of all files in a directory (I
47;; currently keep all my 2000+ images in the same directory) and 47;; currently keep all my 2000+ images in the same directory) and
48;; browsing the thumbnail buffer was slow too. tumme.el will not 48;; browsing the thumbnail buffer was slow too. image-dired.el will not
49;; create thumbnails until they are needed and the browsing is done 49;; create thumbnails until they are needed and the browsing is done
50;; quickly and easily in dired. I copied a great deal of ideas and 50;; quickly and easily in dired. I copied a great deal of ideas and
51;; code from there though... :) 51;; code from there though... :)
52;; 52;;
53;; About the name: tumme means thumb in Swedish and it is used for 53;; `image-dired' stores the thumbnail files in `image-dired-dir'
54;; working with thumbnails, so... :) If you want to know how to 54;; using the file name format ORIGNAME.thumb.ORIGEXT. For example
55;; pronounce it, go to the page on EmacsWiki and download the .ogg 55;; ~/.emacs.d/image-dired/myimage01.thumb.jpg. The "database" is for
56;; file from there. 56;; now just a plain text file with the following format:
57;;
58;; `tumme' stores the thumbnail files in `tumme-dir' using the file
59;; name format ORIGNAME.thumb.ORIGEXT. For example
60;; ~/.emacs.d/tumme/myimage01.thumb.jpg. The "database" is for now
61;; just a plain text file with the following format:
62;; 57;;
63;; file-name-non-directory;comment:comment-text;tag1;tag2;tag3;...;tagN 58;; file-name-non-directory;comment:comment-text;tag1;tag2;tag3;...;tagN
64;; 59;;
@@ -72,13 +67,13 @@
72;; * For non-lossy rotation of JPEG images, the JpegTRAN program is 67;; * For non-lossy rotation of JPEG images, the JpegTRAN program is
73;; needed. 68;; needed.
74;; 69;;
75;; * For `tumme-get-exif-data' and `tumme-write-exif-data' to work, 70;; * For `image-dired-get-exif-data' and `image-dired-write-exif-data' to work,
76;; the command line tool `exiftool' is needed. It can be found here: 71;; the command line tool `exiftool' is needed. It can be found here:
77;; http://www.sno.phy.queensu.ca/~phil/exiftool/. These two functions 72;; http://www.sno.phy.queensu.ca/~phil/exiftool/. These two functions
78;; are, among other things, used for writing comments to image files 73;; are, among other things, used for writing comments to image files
79;; using `tumme-thumbnail-set-image-description' and to create 74;; using `image-dired-thumbnail-set-image-description' and to create
80;; "unique" file names using `tumme-get-exif-file-name' (used by 75;; "unique" file names using `image-dired-get-exif-file-name' (used by
81;; `tumme-copy-with-exif-file-name'). 76;; `image-dired-copy-with-exif-file-name').
82;; 77;;
83;; 78;;
84;; USAGE 79;; USAGE
@@ -88,7 +83,7 @@
88;; the Emacs manual and go to the node Thumbnails by typing `g 83;; the Emacs manual and go to the node Thumbnails by typing `g
89;; Thumbnails RET'. 84;; Thumbnails RET'.
90;; 85;;
91;; Quickstart: M-x tumme RET DIRNAME RET 86;; Quickstart: M-x image-dired RET DIRNAME RET
92;; 87;;
93;; where DIRNAME is a directory containing image files. 88;; where DIRNAME is a directory containing image files.
94;; 89;;
@@ -99,7 +94,7 @@
99;; the thumbnails are hard-coded to JPEG format. 94;; the thumbnails are hard-coded to JPEG format.
100;; 95;;
101;; * WARNING: The "database" format used might be changed so keep a 96;; * WARNING: The "database" format used might be changed so keep a
102;; backup of `tumme-db-file' when testing new versions. 97;; backup of `image-dired-db-file' when testing new versions.
103;; 98;;
104;; 99;;
105;; TODO 100;; TODO
@@ -122,7 +117,7 @@
122;; 117;;
123;; * From thumbs.el: Add setroot function. 118;; * From thumbs.el: Add setroot function.
124;; 119;;
125;; * From thumbs.el: Add image resizing, if useful (tumme's automatic 120;; * From thumbs.el: Add image resizing, if useful (image-dired's automatic
126;; "image fit" might be enough) 121;; "image fit" might be enough)
127;; 122;;
128;; * From thumbs.el: Add the "modify" commands (emboss, negate, 123;; * From thumbs.el: Add the "modify" commands (emboss, negate,
@@ -130,26 +125,26 @@
130;; 125;;
131;; * Asynchronous creation of thumbnails. 126;; * Asynchronous creation of thumbnails.
132;; 127;;
133;; * Add `tumme-display-thumbs-ring' and functions to cycle that. Find 128;; * Add `image-dired-display-thumbs-ring' and functions to cycle that. Find
134;; out which is best, saving old batch just before inserting new, or 129;; out which is best, saving old batch just before inserting new, or
135;; saving the current batch in the ring when inserting it. Adding it 130;; saving the current batch in the ring when inserting it. Adding it
136;; probably needs rewriting `tumme-display-thumbs' to be more general. 131;; probably needs rewriting `image-dired-display-thumbs' to be more general.
137;; 132;;
138;; * Find some way of toggling on and off really nice keybindings in 133;; * Find some way of toggling on and off really nice keybindings in
139;; dired (for example, using C-n or <down> instead of C-S-n). Richard 134;; dired (for example, using C-n or <down> instead of C-S-n). Richard
140;; suggested that we could keep C-t as prefix for tumme commands as it 135;; suggested that we could keep C-t as prefix for image-dired commands
141;; is currently not used in dired. He also suggested that 136;; as it is currently not used in dired. He also suggested that
142;; `dired-next-line' and `dired-previous-line' figure out if tumme is 137;; `dired-next-line' and `dired-previous-line' figure out if
143;; enabled in the current buffer and, if it is, call 138;; image-dired is enabled in the current buffer and, if it is, call
144;; `tumme-dired-next-line' and `tumme-dired-previous-line', 139;; `image-dired-dired-next-line' and
145;; respectively. Update: This is partly done; some bindings have now 140;; `image-dired-dired-previous-line', respectively. Update: This is
146;; been added to dired. 141;; partly done; some bindings have now been added to dired.
147;; 142;;
148;; * Enhanced gallery creation with basic CSS-support and pagination 143;; * Enhanced gallery creation with basic CSS-support and pagination
149;; of tag pages with many pictures. 144;; of tag pages with many pictures.
150;; 145;;
151;; * Rewrite `tumme-modify-mark-on-thumb-original-file' to be less 146;; * Rewrite `image-dired-modify-mark-on-thumb-original-file' to be
152;; ugly. 147;; less ugly.
153;; 148;;
154;; * In some way keep track of buffers and windows and stuff so that 149;; * In some way keep track of buffers and windows and stuff so that
155;; it works as the user expects. 150;; it works as the user expects.
@@ -166,135 +161,135 @@
166(eval-when-compile 161(eval-when-compile
167 (require 'wid-edit)) 162 (require 'wid-edit))
168 163
169(defgroup tumme nil 164(defgroup image-dired nil
170 "Use dired to browse your images as thumbnails, and more." 165 "Use dired to browse your images as thumbnails, and more."
171 :prefix "tumme-" 166 :prefix "image-dired-"
172 :group 'multimedia) 167 :group 'multimedia)
173 168
174(defcustom tumme-dir "~/.emacs.d/tumme/" 169(defcustom image-dired-dir "~/.emacs.d/image-dired/"
175 "Directory where thumbnail images are stored." 170 "Directory where thumbnail images are stored."
176 :type 'string 171 :type 'string
177 :group 'tumme) 172 :group 'image-dired)
178 173
179(defcustom tumme-thumbnail-storage 'use-tumme-dir 174(defcustom image-dired-thumbnail-storage 'use-image-dired-dir
180 "How to store tumme's thumbnail files. 175 "How to store image-dired's thumbnail files.
181Tumme can store thumbnail files in one of two ways and this is 176Image-Dired can store thumbnail files in one of two ways and this is
182controlled by this variable. \"Use tumme dir\" means that the 177controlled by this variable. \"Use image-dired dir\" means that the
183thumbnails are stored in a central directory. \"Per directory\" 178thumbnails are stored in a central directory. \"Per directory\"
184means that each thumbnail is stored in a subdirectory called 179means that each thumbnail is stored in a subdirectory called
185\".tumme\" in the same directory where the image file is. 180\".image-dired\" in the same directory where the image file is.
186\"Thumbnail Managing Standard\" means that the thumbnails are 181\"Thumbnail Managing Standard\" means that the thumbnails are
187stored and generated according to the Thumbnail Managing Standard 182stored and generated according to the Thumbnail Managing Standard
188that allows sharing of thumbnails across different programs." 183that allows sharing of thumbnails across different programs."
189 :type '(choice :tag "How to store thumbnail files" 184 :type '(choice :tag "How to store thumbnail files"
190 (const :tag "Thumbnail Managing Standard" standard) 185 (const :tag "Thumbnail Managing Standard" standard)
191 (const :tag "Use tumme-dir" use-tumme-dir) 186 (const :tag "Use image-dired-dir" use-image-dired-dir)
192 (const :tag "Per-directory" per-directory)) 187 (const :tag "Per-directory" per-directory))
193 :group 'tumme) 188 :group 'image-dired)
194 189
195(defcustom tumme-db-file "~/.emacs.d/tumme/.tumme_db" 190(defcustom image-dired-db-file "~/.emacs.d/image-dired/.image-dired_db"
196 "Database file where file names and their associated tags are stored." 191 "Database file where file names and their associated tags are stored."
197 :type 'string 192 :type 'string
198 :group 'tumme) 193 :group 'image-dired)
199 194
200(defcustom tumme-temp-image-file "~/.emacs.d/tumme/.tumme_temp" 195(defcustom image-dired-temp-image-file "~/.emacs.d/image-dired/.image-dired_temp"
201 "Name of temporary image file used by various commands." 196 "Name of temporary image file used by various commands."
202 :type 'string 197 :type 'string
203 :group 'tumme) 198 :group 'image-dired)
204 199
205(defcustom tumme-gallery-dir "~/.emacs.d/tumme/.tumme_gallery" 200(defcustom image-dired-gallery-dir "~/.emacs.d/image-dired/.image-dired_gallery"
206 "Directory to store generated gallery html pages. 201 "Directory to store generated gallery html pages.
207This path needs to be \"shared\" to the public so that it can access 202This path needs to be \"shared\" to the public so that it can access
208the index.html page that tumme creates." 203the index.html page that image-dired creates."
209 :type 'string 204 :type 'string
210 :group 'tumme) 205 :group 'image-dired)
211 206
212(defcustom tumme-gallery-image-root-url 207(defcustom image-dired-gallery-image-root-url
213"http://your.own.server/tummepics" 208"http://your.own.server/image-diredpics"
214 "URL where the full size images are to be found. 209 "URL where the full size images are to be found.
215Note that this path has to be configured in your web server. Tumme 210Note that this path has to be configured in your web server. Image-Dired
216expects to find pictures in this directory." 211expects to find pictures in this directory."
217 :type 'string 212 :type 'string
218 :group 'tumme) 213 :group 'image-dired)
219 214
220(defcustom tumme-gallery-thumb-image-root-url 215(defcustom image-dired-gallery-thumb-image-root-url
221"http://your.own.server/tummethumbs" 216"http://your.own.server/image-diredthumbs"
222 "URL where the thumbnail images are to be found. 217 "URL where the thumbnail images are to be found.
223Note that this path has to be configured in your web server. Tumme 218Note that this path has to be configured in your web server. Image-Dired
224expects to find pictures in this directory." 219expects to find pictures in this directory."
225 :type 'string 220 :type 'string
226 :group 'tumme) 221 :group 'image-dired)
227 222
228(defcustom tumme-cmd-create-thumbnail-program 223(defcustom image-dired-cmd-create-thumbnail-program
229 "convert" 224 "convert"
230 "Executable used to create thumbnail. 225 "Executable used to create thumbnail.
231Used together with `tumme-cmd-create-thumbnail-options'." 226Used together with `image-dired-cmd-create-thumbnail-options'."
232 :type 'string 227 :type 'string
233 :group 'tumme) 228 :group 'image-dired)
234 229
235(defcustom tumme-cmd-create-thumbnail-options 230(defcustom image-dired-cmd-create-thumbnail-options
236 "%p -size %wx%h \"%f\" -resize %wx%h +profile \"*\" jpeg:\"%t\"" 231 "%p -size %wx%h \"%f\" -resize %wx%h +profile \"*\" jpeg:\"%t\""
237 "Format of command used to create thumbnail image. 232 "Format of command used to create thumbnail image.
238Available options are %p which is replaced by 233Available options are %p which is replaced by
239`tumme-cmd-create-thumbnail-program', %w which is replaced by 234`image-dired-cmd-create-thumbnail-program', %w which is replaced by
240`tumme-thumb-width', %h which is replaced by `tumme-thumb-height', 235`image-dired-thumb-width', %h which is replaced by `image-dired-thumb-height',
241%f which is replaced by the file name of the original image and %t 236%f which is replaced by the file name of the original image and %t
242which is replaced by the file name of the thumbnail file." 237which is replaced by the file name of the thumbnail file."
243 :type 'string 238 :type 'string
244 :group 'tumme) 239 :group 'image-dired)
245 240
246(defcustom tumme-cmd-create-temp-image-program 241(defcustom image-dired-cmd-create-temp-image-program
247 "convert" 242 "convert"
248 "Executable used to create temporary image. 243 "Executable used to create temporary image.
249Used together with `tumme-cmd-create-temp-image-options'." 244Used together with `image-dired-cmd-create-temp-image-options'."
250 :type 'string 245 :type 'string
251 :group 'tumme) 246 :group 'image-dired)
252 247
253(defcustom tumme-cmd-create-temp-image-options 248(defcustom image-dired-cmd-create-temp-image-options
254 "%p -size %wx%h \"%f\" -resize %wx%h +profile \"*\" jpeg:\"%t\"" 249 "%p -size %wx%h \"%f\" -resize %wx%h +profile \"*\" jpeg:\"%t\""
255 "Format of command used to create temporary image for display window. 250 "Format of command used to create temporary image for display window.
256Available options are %p which is replaced by 251Available options are %p which is replaced by
257`tumme-cmd-create-temp-image-program', %w and %h which is replaced by 252`image-dired-cmd-create-temp-image-program', %w and %h which is replaced by
258the calculated max size for width and height in the image display window, 253the calculated max size for width and height in the image display window,
259%f which is replaced by the file name of the original image and %t which 254%f which is replaced by the file name of the original image and %t which
260is replaced by the file name of the temporary file." 255is replaced by the file name of the temporary file."
261 :type 'string 256 :type 'string
262 :group 'tumme) 257 :group 'image-dired)
263 258
264(defcustom tumme-cmd-pngnq-program (executable-find "pngnq") 259(defcustom image-dired-cmd-pngnq-program (executable-find "pngnq")
265 "The file name of the `pngnq' program. 260 "The file name of the `pngnq' program.
266It quantizes colors of PNG images down to 256 colors." 261It quantizes colors of PNG images down to 256 colors."
267 :type '(choice (const :tag "Not Set" nil) string) 262 :type '(choice (const :tag "Not Set" nil) string)
268 :group 'tumme) 263 :group 'image-dired)
269 264
270(defcustom tumme-cmd-pngcrush-program (executable-find "pngcrush") 265(defcustom image-dired-cmd-pngcrush-program (executable-find "pngcrush")
271 "The file name of the `pngcrush' program. 266 "The file name of the `pngcrush' program.
272It optimizes the compression of PNG images. Also it adds PNG textual chunks 267It optimizes the compression of PNG images. Also it adds PNG textual chunks
273with the information required by the Thumbnail Managing Standard." 268with the information required by the Thumbnail Managing Standard."
274 :type '(choice (const :tag "Not Set" nil) string) 269 :type '(choice (const :tag "Not Set" nil) string)
275 :group 'tumme) 270 :group 'image-dired)
276 271
277(defcustom tumme-cmd-create-standard-thumbnail-command 272(defcustom image-dired-cmd-create-standard-thumbnail-command
278 (concat 273 (concat
279 tumme-cmd-create-thumbnail-program " " 274 image-dired-cmd-create-thumbnail-program " "
280 "-size %wx%h \"%f\" " 275 "-size %wx%h \"%f\" "
281 (unless (or tumme-cmd-pngcrush-program tumme-cmd-pngnq-program) 276 (unless (or image-dired-cmd-pngcrush-program image-dired-cmd-pngnq-program)
282 (concat 277 (concat
283 "-set \"Thumb::MTime\" \"%m\" " 278 "-set \"Thumb::MTime\" \"%m\" "
284 "-set \"Thumb::URI\" \"file://%f\" " 279 "-set \"Thumb::URI\" \"file://%f\" "
285 "-set \"Description\" \"Thumbnail of file://%f\" " 280 "-set \"Description\" \"Thumbnail of file://%f\" "
286 "-set \"Software\" \"" (emacs-version) "\" ")) 281 "-set \"Software\" \"" (emacs-version) "\" "))
287 "-thumbnail %wx%h png:\"%t\"" 282 "-thumbnail %wx%h png:\"%t\""
288 (if tumme-cmd-pngnq-program 283 (if image-dired-cmd-pngnq-program
289 (concat 284 (concat
290 " ; " tumme-cmd-pngnq-program " -f \"%t\"" 285 " ; " image-dired-cmd-pngnq-program " -f \"%t\""
291 (unless tumme-cmd-pngcrush-program 286 (unless image-dired-cmd-pngcrush-program
292 " ; mv %q %t"))) 287 " ; mv %q %t")))
293 (if tumme-cmd-pngcrush-program 288 (if image-dired-cmd-pngcrush-program
294 (concat 289 (concat
295 (unless tumme-cmd-pngcrush-program 290 (unless image-dired-cmd-pngcrush-program
296 " ; cp %t %q") 291 " ; cp %t %q")
297 " ; " tumme-cmd-pngcrush-program " -q " 292 " ; " image-dired-cmd-pngcrush-program " -q "
298 "-text b \"Description\" \"Thumbnail of file://%f\" " 293 "-text b \"Description\" \"Thumbnail of file://%f\" "
299 "-text b \"Software\" \"" (emacs-version) "\" " 294 "-text b \"Software\" \"" (emacs-version) "\" "
300 ;; "-text b \"Thumb::Image::Height\" \"%oh\" " 295 ;; "-text b \"Thumb::Image::Height\" \"%oh\" "
@@ -307,194 +302,194 @@ with the information required by the Thumbnail Managing Standard."
307 " ; rm %q"))) 302 " ; rm %q")))
308 "Command to create thumbnails according to the Thumbnail Managing Standard." 303 "Command to create thumbnails according to the Thumbnail Managing Standard."
309 :type 'string 304 :type 'string
310 :group 'tumme) 305 :group 'image-dired)
311 306
312(defcustom tumme-cmd-rotate-thumbnail-program 307(defcustom image-dired-cmd-rotate-thumbnail-program
313 "mogrify" 308 "mogrify"
314 "Executable used to rotate thumbnail. 309 "Executable used to rotate thumbnail.
315Used together with `tumme-cmd-rotate-thumbnail-options'." 310Used together with `image-dired-cmd-rotate-thumbnail-options'."
316 :type 'string 311 :type 'string
317 :group 'tumme) 312 :group 'image-dired)
318 313
319(defcustom tumme-cmd-rotate-thumbnail-options 314(defcustom image-dired-cmd-rotate-thumbnail-options
320 "%p -rotate %d \"%t\"" 315 "%p -rotate %d \"%t\""
321 "Format of command used to rotate thumbnail image. 316 "Format of command used to rotate thumbnail image.
322Available options are %p which is replaced by 317Available options are %p which is replaced by
323`tumme-cmd-rotate-thumbnail-program', %d which is replaced by the 318`image-dired-cmd-rotate-thumbnail-program', %d which is replaced by the
324number of (positive) degrees to rotate the image, normally 90 or 270 319number of (positive) degrees to rotate the image, normally 90 or 270
325\(for 90 degrees right and left), %t which is replaced by the file name 320\(for 90 degrees right and left), %t which is replaced by the file name
326of the thumbnail file." 321of the thumbnail file."
327 :type 'string 322 :type 'string
328 :group 'tumme) 323 :group 'image-dired)
329 324
330(defcustom tumme-cmd-rotate-original-program 325(defcustom image-dired-cmd-rotate-original-program
331 "jpegtran" 326 "jpegtran"
332 "Executable used to rotate original image. 327 "Executable used to rotate original image.
333Used together with `tumme-cmd-rotate-original-options'." 328Used together with `image-dired-cmd-rotate-original-options'."
334 :type 'string 329 :type 'string
335 :group 'tumme) 330 :group 'image-dired)
336 331
337(defcustom tumme-cmd-rotate-original-options 332(defcustom image-dired-cmd-rotate-original-options
338 "%p -rotate %d -copy all -outfile %t \"%o\"" 333 "%p -rotate %d -copy all -outfile %t \"%o\""
339 "Format of command used to rotate original image. 334 "Format of command used to rotate original image.
340Available options are %p which is replaced by 335Available options are %p which is replaced by
341`tumme-cmd-rotate-original-program', %d which is replaced by the 336`image-dired-cmd-rotate-original-program', %d which is replaced by the
342number of (positive) degrees to rotate the image, normally 90 or 337number of (positive) degrees to rotate the image, normally 90 or
343270 \(for 90 degrees right and left), %o which is replaced by the 338270 \(for 90 degrees right and left), %o which is replaced by the
344original image file name and %t which is replaced by 339original image file name and %t which is replaced by
345`tumme-temp-image-file'." 340`image-dired-temp-image-file'."
346 :type 'string 341 :type 'string
347 :group 'tumme) 342 :group 'image-dired)
348 343
349(defcustom tumme-temp-rotate-image-file 344(defcustom image-dired-temp-rotate-image-file
350 "~/.emacs.d/tumme/.tumme_rotate_temp" 345 "~/.emacs.d/image-dired/.image-dired_rotate_temp"
351 "Temporary file for rotate operations." 346 "Temporary file for rotate operations."
352 :type 'string 347 :type 'string
353 :group 'tumme) 348 :group 'image-dired)
354 349
355(defcustom tumme-rotate-original-ask-before-overwrite t 350(defcustom image-dired-rotate-original-ask-before-overwrite t
356 "Confirm overwrite of original file after rotate operation. 351 "Confirm overwrite of original file after rotate operation.
357If non-nil, ask user for confirmation before overwriting the 352If non-nil, ask user for confirmation before overwriting the
358original file with `tumme-temp-rotate-image-file'." 353original file with `image-dired-temp-rotate-image-file'."
359 :type 'boolean 354 :type 'boolean
360 :group 'tumme) 355 :group 'image-dired)
361 356
362(defcustom tumme-cmd-write-exif-data-program 357(defcustom image-dired-cmd-write-exif-data-program
363 "exiftool" 358 "exiftool"
364 "Program used to write EXIF data to image. 359 "Program used to write EXIF data to image.
365Used together with `tumme-cmd-write-exif-data-options'." 360Used together with `image-dired-cmd-write-exif-data-options'."
366 :type 'string 361 :type 'string
367 :group 'tumme) 362 :group 'image-dired)
368 363
369(defcustom tumme-cmd-write-exif-data-options 364(defcustom image-dired-cmd-write-exif-data-options
370 "%p -%t=\"%v\" \"%f\"" 365 "%p -%t=\"%v\" \"%f\""
371 "Format of command used to write EXIF data. 366 "Format of command used to write EXIF data.
372Available options are %p which is replaced by 367Available options are %p which is replaced by
373`tumme-cmd-write-exif-data-program', %f which is replaced by the 368`image-dired-cmd-write-exif-data-program', %f which is replaced by the
374image file name, %t which is replaced by the tag name and %v 369image file name, %t which is replaced by the tag name and %v
375which is replaced by the tag value." 370which is replaced by the tag value."
376 :type 'string 371 :type 'string
377 :group 'tumme) 372 :group 'image-dired)
378 373
379(defcustom tumme-cmd-read-exif-data-program 374(defcustom image-dired-cmd-read-exif-data-program
380 "exiftool" 375 "exiftool"
381 "Program used to read EXIF data to image. 376 "Program used to read EXIF data to image.
382Used together with `tumme-cmd-read-exif-data-program-options'." 377Used together with `image-dired-cmd-read-exif-data-program-options'."
383 :type 'string 378 :type 'string
384 :group 'tumme) 379 :group 'image-dired)
385 380
386(defcustom tumme-cmd-read-exif-data-options 381(defcustom image-dired-cmd-read-exif-data-options
387 "%p -s -s -s -%t \"%f\"" 382 "%p -s -s -s -%t \"%f\""
388 "Format of command used to read EXIF data. 383 "Format of command used to read EXIF data.
389Available options are %p which is replaced by 384Available options are %p which is replaced by
390`tumme-cmd-write-exif-data-options', %f which is replaced 385`image-dired-cmd-write-exif-data-options', %f which is replaced
391by the image file name and %t which is replaced by the tag name." 386by the image file name and %t which is replaced by the tag name."
392 :type 'string 387 :type 'string
393 :group 'tumme) 388 :group 'image-dired)
394 389
395(defcustom tumme-gallery-hidden-tags 390(defcustom image-dired-gallery-hidden-tags
396 (list "private" "hidden" "pending") 391 (list "private" "hidden" "pending")
397 "List of \"hidden\" tags. 392 "List of \"hidden\" tags.
398Used by `tumme-gallery-generate' to leave out \"hidden\" images." 393Used by `image-dired-gallery-generate' to leave out \"hidden\" images."
399 :type '(repeat string) 394 :type '(repeat string)
400 :group 'tumme) 395 :group 'image-dired)
401 396
402(defcustom tumme-thumb-size (if (eq 'standard tumme-thumbnail-storage) 128 100) 397(defcustom image-dired-thumb-size (if (eq 'standard image-dired-thumbnail-storage) 128 100)
403 "Size of thumbnails, in pixels. 398 "Size of thumbnails, in pixels.
404This is the default size for both `tumme-thumb-width' and `tumme-thumb-height'." 399This is the default size for both `image-dired-thumb-width' and `image-dired-thumb-height'."
405 :type 'integer 400 :type 'integer
406 :group 'tumme) 401 :group 'image-dired)
407 402
408(defcustom tumme-thumb-width tumme-thumb-size 403(defcustom image-dired-thumb-width image-dired-thumb-size
409 "Width of thumbnails, in pixels." 404 "Width of thumbnails, in pixels."
410 :type 'integer 405 :type 'integer
411 :group 'tumme) 406 :group 'image-dired)
412 407
413(defcustom tumme-thumb-height tumme-thumb-size 408(defcustom image-dired-thumb-height image-dired-thumb-size
414 "Height of thumbnails, in pixels." 409 "Height of thumbnails, in pixels."
415 :type 'integer 410 :type 'integer
416 :group 'tumme) 411 :group 'image-dired)
417 412
418(defcustom tumme-thumb-relief 2 413(defcustom image-dired-thumb-relief 2
419 "Size of button-like border around thumbnails." 414 "Size of button-like border around thumbnails."
420 :type 'integer 415 :type 'integer
421 :group 'tumme) 416 :group 'image-dired)
422 417
423(defcustom tumme-thumb-margin 2 418(defcustom image-dired-thumb-margin 2
424 "Size of the margin around thumbnails. 419 "Size of the margin around thumbnails.
425This is where you see the cursor." 420This is where you see the cursor."
426 :type 'integer 421 :type 'integer
427 :group 'tumme) 422 :group 'image-dired)
428 423
429(defcustom tumme-line-up-method 'dynamic 424(defcustom image-dired-line-up-method 'dynamic
430 "Default method for line-up of thumbnails in thumbnail buffer. 425 "Default method for line-up of thumbnails in thumbnail buffer.
431Used by `tumme-display-thumbs' and other functions that needs to 426Used by `image-dired-display-thumbs' and other functions that needs to
432line-up thumbnails. Dynamic means to use the available width of the 427line-up thumbnails. Dynamic means to use the available width of the
433window containing the thumbnail buffer, Fixed means to use 428window containing the thumbnail buffer, Fixed means to use
434`tumme-thumbs-per-row', Interactive is for asking the user, and No 429`image-dired-thumbs-per-row', Interactive is for asking the user, and No
435line-up means that no automatic line-up will be done." 430line-up means that no automatic line-up will be done."
436 :type '(choice :tag "Default line-up method" 431 :type '(choice :tag "Default line-up method"
437 (const :tag "Dynamic" dynamic) 432 (const :tag "Dynamic" dynamic)
438 (const :tag "Fixed" fixed) 433 (const :tag "Fixed" fixed)
439 (const :tag "Interactive" interactive) 434 (const :tag "Interactive" interactive)
440 (const :tag "No line-up" none)) 435 (const :tag "No line-up" none))
441 :group 'tumme) 436 :group 'image-dired)
442 437
443(defcustom tumme-thumbs-per-row 3 438(defcustom image-dired-thumbs-per-row 3
444 "Number of thumbnails to display per row in thumb buffer." 439 "Number of thumbnails to display per row in thumb buffer."
445 :type 'integer 440 :type 'integer
446 :group 'tumme) 441 :group 'image-dired)
447 442
448(defcustom tumme-display-window-width-correction 1 443(defcustom image-dired-display-window-width-correction 1
449 "Number to be used to correct image display window width. 444 "Number to be used to correct image display window width.
450Change if the default (1) does not work (i.e. if the image does not 445Change if the default (1) does not work (i.e. if the image does not
451completely fit)." 446completely fit)."
452 :type 'integer 447 :type 'integer
453 :group 'tumme) 448 :group 'image-dired)
454 449
455(defcustom tumme-display-window-height-correction 0 450(defcustom image-dired-display-window-height-correction 0
456 "Number to be used to correct image display window height. 451 "Number to be used to correct image display window height.
457Change if the default (0) does not work (i.e. if the image does not 452Change if the default (0) does not work (i.e. if the image does not
458completely fit)." 453completely fit)."
459 :type 'integer 454 :type 'integer
460 :group 'tumme) 455 :group 'image-dired)
461 456
462(defcustom tumme-track-movement t 457(defcustom image-dired-track-movement t
463 "The current state of the tracking and mirroring. 458 "The current state of the tracking and mirroring.
464For more information, see the documentation for 459For more information, see the documentation for
465`tumme-toggle-movement-tracking'." 460`image-dired-toggle-movement-tracking'."
466 :type 'boolean 461 :type 'boolean
467 :group 'tumme) 462 :group 'image-dired)
468 463
469(defcustom tumme-append-when-browsing nil 464(defcustom image-dired-append-when-browsing nil
470 "Append thumbnails in thumbnail buffer when browsing. 465 "Append thumbnails in thumbnail buffer when browsing.
471If non-nil, using `tumme-next-line-and-display' and 466If non-nil, using `image-dired-next-line-and-display' and
472`tumme-previous-line-and-display' will leave a trail of thumbnail 467`image-dired-previous-line-and-display' will leave a trail of thumbnail
473images in the thumbnail buffer. If you enable this and want to clean 468images in the thumbnail buffer. If you enable this and want to clean
474the thumbnail buffer because it is filled with too many thumbmnails, 469the thumbnail buffer because it is filled with too many thumbmnails,
475just call `tumme-display-thumb' to display only the image at point. 470just call `image-dired-display-thumb' to display only the image at point.
476This value can be toggled using `tumme-toggle-append-browsing'." 471This value can be toggled using `image-dired-toggle-append-browsing'."
477 :type 'boolean 472 :type 'boolean
478 :group 'tumme) 473 :group 'image-dired)
479 474
480(defcustom tumme-dired-disp-props t 475(defcustom image-dired-dired-disp-props t
481 "If non-nil, display properties for dired file when browsing. 476 "If non-nil, display properties for dired file when browsing.
482Used by `tumme-next-line-and-display', 477Used by `image-dired-next-line-and-display',
483`tumme-previous-line-and-display' and `tumme-mark-and-display-next'. 478`image-dired-previous-line-and-display' and `image-dired-mark-and-display-next'.
484If the database file is large, this can slow down image browsing in 479If the database file is large, this can slow down image browsing in
485dired and you might want to turn it off." 480dired and you might want to turn it off."
486 :type 'boolean 481 :type 'boolean
487 :group 'tumme) 482 :group 'image-dired)
488 483
489(defcustom tumme-display-properties-format "%b: %f (%t): %c" 484(defcustom image-dired-display-properties-format "%b: %f (%t): %c"
490 "Display format for thumbnail properties. 485 "Display format for thumbnail properties.
491%b is replaced with associated dired buffer name, %f with file name 486%b is replaced with associated dired buffer name, %f with file name
492\(without path) of original image file, %t with the list of tags and %c 487\(without path) of original image file, %t with the list of tags and %c
493with the comment." 488with the comment."
494 :type 'string 489 :type 'string
495 :group 'tumme) 490 :group 'image-dired)
496 491
497(defcustom tumme-external-viewer 492(defcustom image-dired-external-viewer
498 ;; TODO: Use mailcap, dired-guess-shell-alist-default, 493 ;; TODO: Use mailcap, dired-guess-shell-alist-default,
499 ;; dired-view-command-alist. 494 ;; dired-view-command-alist.
500 (cond ((executable-find "display")) 495 (cond ((executable-find "display"))
@@ -502,33 +497,33 @@ with the comment."
502 ((executable-find "qiv") "qiv -t")) 497 ((executable-find "qiv") "qiv -t"))
503 "Name of external viewer. 498 "Name of external viewer.
504Including parameters. Used when displaying original image from 499Including parameters. Used when displaying original image from
505`tumme-thumbnail-mode'." 500`image-dired-thumbnail-mode'."
506 :type 'string 501 :type 'string
507 :group 'tumme) 502 :group 'image-dired)
508 503
509(defcustom tumme-main-image-directory "~/pics/" 504(defcustom image-dired-main-image-directory "~/pics/"
510 "Name of main image directory, if any. 505 "Name of main image directory, if any.
511Used by `tumme-copy-with-exif-file-name'." 506Used by `image-dired-copy-with-exif-file-name'."
512 :type 'string 507 :type 'string
513 :group 'tumme) 508 :group 'image-dired)
514 509
515(defcustom tumme-show-all-from-dir-max-files 50 510(defcustom image-dired-show-all-from-dir-max-files 50
516 "Maximum number of files to show using `tumme-show-all-from-dir'. 511 "Maximum number of files to show using `image-dired-show-all-from-dir'.
517before warning the user." 512before warning the user."
518 :type 'integer 513 :type 'integer
519 :group 'tumme) 514 :group 'image-dired)
520 515
521(defun tumme-dir () 516(defun image-dired-dir ()
522 "Return the current thumbnails directory (from variable `tumme-dir'). 517 "Return the current thumbnails directory (from variable `image-dired-dir').
523Create the thumbnails directory if it does not exist." 518Create the thumbnails directory if it does not exist."
524 (let ((tumme-dir (file-name-as-directory 519 (let ((image-dired-dir (file-name-as-directory
525 (expand-file-name tumme-dir)))) 520 (expand-file-name image-dired-dir))))
526 (unless (file-directory-p tumme-dir) 521 (unless (file-directory-p image-dired-dir)
527 (make-directory tumme-dir t) 522 (make-directory image-dired-dir t)
528 (message "Creating thumbnails directory")) 523 (message "Creating thumbnails directory"))
529 tumme-dir)) 524 image-dired-dir))
530 525
531(defun tumme-insert-image (file type relief margin) 526(defun image-dired-insert-image (file type relief margin)
532 "Insert image FILE of image TYPE, using RELIEF and MARGIN, at point." 527 "Insert image FILE of image TYPE, using RELIEF and MARGIN, at point."
533 528
534 (let ((i `(image :type ,type 529 (let ((i `(image :type ,type
@@ -537,56 +532,56 @@ Create the thumbnails directory if it does not exist."
537 :margin ,margin))) 532 :margin ,margin)))
538 (insert-image i))) 533 (insert-image i)))
539 534
540(defun tumme-get-thumbnail-image (file) 535(defun image-dired-get-thumbnail-image (file)
541 "Return the image descriptor for a thumbnail of image file FILE." 536 "Return the image descriptor for a thumbnail of image file FILE."
542 (unless (string-match (image-file-name-regexp) file) 537 (unless (string-match (image-file-name-regexp) file)
543 (error "%s is not a valid image file" file)) 538 (error "%s is not a valid image file" file))
544 (let ((thumb-file (tumme-thumb-name file))) 539 (let ((thumb-file (image-dired-thumb-name file)))
545 (unless (and (file-exists-p thumb-file) 540 (unless (and (file-exists-p thumb-file)
546 (<= (float-time (nth 5 (file-attributes file))) 541 (<= (float-time (nth 5 (file-attributes file)))
547 (float-time (nth 5 (file-attributes thumb-file))))) 542 (float-time (nth 5 (file-attributes thumb-file)))))
548 (tumme-create-thumb file thumb-file)) 543 (image-dired-create-thumb file thumb-file))
549 (create-image thumb-file) 544 (create-image thumb-file)
550;; (list 'image :type 'jpeg 545;; (list 'image :type 'jpeg
551;; :file thumb-file 546;; :file thumb-file
552;; :relief tumme-thumb-relief :margin tumme-thumb-margin) 547;; :relief image-dired-thumb-relief :margin image-dired-thumb-margin)
553 )) 548 ))
554 549
555(defun tumme-insert-thumbnail (file original-file-name 550(defun image-dired-insert-thumbnail (file original-file-name
556 associated-dired-buffer) 551 associated-dired-buffer)
557 "Insert thumbnail image FILE. 552 "Insert thumbnail image FILE.
558Add text properties ORIGINAL-FILE-NAME and ASSOCIATED-DIRED-BUFFER." 553Add text properties ORIGINAL-FILE-NAME and ASSOCIATED-DIRED-BUFFER."
559 (let (beg end) 554 (let (beg end)
560 (setq beg (point)) 555 (setq beg (point))
561 (tumme-insert-image file 556 (image-dired-insert-image file
562 ;; TODO: this should depend on the real file type 557 ;; TODO: this should depend on the real file type
563 (if (eq 'standard tumme-thumbnail-storage) 558 (if (eq 'standard image-dired-thumbnail-storage)
564 'png 'jpeg) 559 'png 'jpeg)
565 tumme-thumb-relief 560 image-dired-thumb-relief
566 tumme-thumb-margin) 561 image-dired-thumb-margin)
567 (setq end (point)) 562 (setq end (point))
568 (add-text-properties 563 (add-text-properties
569 beg end 564 beg end
570 (list 'tumme-thumbnail t 565 (list 'image-dired-thumbnail t
571 'original-file-name original-file-name 566 'original-file-name original-file-name
572 'associated-dired-buffer associated-dired-buffer 567 'associated-dired-buffer associated-dired-buffer
573 'tags (tumme-list-tags original-file-name) 568 'tags (image-dired-list-tags original-file-name)
574 'mouse-face 'highlight 569 'mouse-face 'highlight
575 'comment (tumme-get-comment original-file-name))))) 570 'comment (image-dired-get-comment original-file-name)))))
576 571
577(defun tumme-thumb-name (file) 572(defun image-dired-thumb-name (file)
578 "Return thumbnail file name for FILE. 573 "Return thumbnail file name for FILE.
579Depending on the value of `tumme-thumbnail-storage', the file 574Depending on the value of `image-dired-thumbnail-storage', the file
580name will vary. For central thumbnail file storage, make a 575name will vary. For central thumbnail file storage, make a
581MD5-hash of the image file's directory name and add that to make 576MD5-hash of the image file's directory name and add that to make
582the thumbnail file name unique. For per-directory storage, just 577the thumbnail file name unique. For per-directory storage, just
583add a subdirectory. For standard storage, produce the file name 578add a subdirectory. For standard storage, produce the file name
584according to the Thumbnail Managing Standard." 579according to the Thumbnail Managing Standard."
585 (cond ((eq 'standard tumme-thumbnail-storage) 580 (cond ((eq 'standard image-dired-thumbnail-storage)
586 (expand-file-name 581 (expand-file-name
587 (concat "~/.thumbnails/normal/" 582 (concat "~/.thumbnails/normal/"
588 (md5 (concat "file://" (expand-file-name file))) ".png"))) 583 (md5 (concat "file://" (expand-file-name file))) ".png")))
589 ((eq 'use-tumme-dir tumme-thumbnail-storage) 584 ((eq 'use-image-dired-dir image-dired-thumbnail-storage)
590 (let* ((f (expand-file-name file)) 585 (let* ((f (expand-file-name file))
591 (md5-hash 586 (md5-hash
592 ;; Is MD5 hashes fast enough? The checksum of a 587 ;; Is MD5 hashes fast enough? The checksum of a
@@ -595,32 +590,32 @@ according to the Thumbnail Managing Standard."
595 ;; be used here. 590 ;; be used here.
596 (md5 (file-name-as-directory (file-name-directory f))))) 591 (md5 (file-name-as-directory (file-name-directory f)))))
597 (format "%s%s%s.thumb.%s" 592 (format "%s%s%s.thumb.%s"
598 (file-name-as-directory (expand-file-name (tumme-dir))) 593 (file-name-as-directory (expand-file-name (image-dired-dir)))
599 (file-name-sans-extension (file-name-nondirectory f)) 594 (file-name-sans-extension (file-name-nondirectory f))
600 (if md5-hash (concat "_" md5-hash) "") 595 (if md5-hash (concat "_" md5-hash) "")
601 (file-name-extension f)))) 596 (file-name-extension f))))
602 ((eq 'per-directory tumme-thumbnail-storage) 597 ((eq 'per-directory image-dired-thumbnail-storage)
603 (let ((f (expand-file-name file))) 598 (let ((f (expand-file-name file)))
604 (format "%s.tumme/%s.thumb.%s" 599 (format "%s.image-dired/%s.thumb.%s"
605 (file-name-directory f) 600 (file-name-directory f)
606 (file-name-sans-extension (file-name-nondirectory f)) 601 (file-name-sans-extension (file-name-nondirectory f))
607 (file-name-extension f)))))) 602 (file-name-extension f))))))
608 603
609(defun tumme-create-thumb (original-file thumbnail-file) 604(defun image-dired-create-thumb (original-file thumbnail-file)
610 "For ORIGINAL-FILE, create thumbnail image named THUMBNAIL-FILE." 605 "For ORIGINAL-FILE, create thumbnail image named THUMBNAIL-FILE."
611 (let* ((width (int-to-string tumme-thumb-width)) 606 (let* ((width (int-to-string image-dired-thumb-width))
612 (height (int-to-string tumme-thumb-height)) 607 (height (int-to-string image-dired-thumb-height))
613 (modif-time (format "%.0f" (float-time (nth 5 (file-attributes 608 (modif-time (format "%.0f" (float-time (nth 5 (file-attributes
614 original-file))))) 609 original-file)))))
615 (thumbnail-nq8-file (replace-regexp-in-string ".png\\'" "-nq8.png" 610 (thumbnail-nq8-file (replace-regexp-in-string ".png\\'" "-nq8.png"
616 thumbnail-file)) 611 thumbnail-file))
617 (command 612 (command
618 (format-spec 613 (format-spec
619 (if (eq 'standard tumme-thumbnail-storage) 614 (if (eq 'standard image-dired-thumbnail-storage)
620 tumme-cmd-create-standard-thumbnail-command 615 image-dired-cmd-create-standard-thumbnail-command
621 tumme-cmd-create-thumbnail-options) 616 image-dired-cmd-create-thumbnail-options)
622 (list 617 (list
623 (cons ?p tumme-cmd-create-thumbnail-program) 618 (cons ?p image-dired-cmd-create-thumbnail-program)
624 (cons ?w width) 619 (cons ?w width)
625 (cons ?h height) 620 (cons ?h height)
626 (cons ?m modif-time) 621 (cons ?m modif-time)
@@ -635,13 +630,13 @@ according to the Thumbnail Managing Standard."
635 (call-process shell-file-name nil nil nil shell-command-switch command))) 630 (call-process shell-file-name nil nil nil shell-command-switch command)))
636 631
637;;;###autoload 632;;;###autoload
638(defun tumme-dired-insert-marked-thumbs () 633(defun image-dired-dired-insert-marked-thumbs ()
639 "Insert thumbnails before file names of marked files in the dired buffer." 634 "Insert thumbnails before file names of marked files in the dired buffer."
640 (interactive) 635 (interactive)
641 (dired-map-over-marks 636 (dired-map-over-marks
642 (let* ((image-pos (dired-move-to-filename)) 637 (let* ((image-pos (dired-move-to-filename))
643 (image-file (dired-get-filename)) 638 (image-file (dired-get-filename))
644 (thumb-file (tumme-get-thumbnail-image image-file)) 639 (thumb-file (image-dired-get-thumbnail-image image-file))
645 overlay) 640 overlay)
646 ;; If image is not already added, then add it. 641 ;; If image is not already added, then add it.
647 (unless (delq nil (mapcar (lambda (o) (overlay-get o 'put-image)) 642 (unless (delq nil (mapcar (lambda (o) (overlay-get o 'put-image))
@@ -655,9 +650,9 @@ according to the Thumbnail Managing Standard."
655 (overlay-put overlay 'image-file image-file) 650 (overlay-put overlay 'image-file image-file)
656 (overlay-put overlay 'thumb-file thumb-file))) 651 (overlay-put overlay 'thumb-file thumb-file)))
657 nil) 652 nil)
658 (add-hook 'dired-after-readin-hook 'tumme-dired-after-readin-hook nil t)) 653 (add-hook 'dired-after-readin-hook 'image-dired-dired-after-readin-hook nil t))
659 654
660(defun tumme-dired-after-readin-hook () 655(defun image-dired-dired-after-readin-hook ()
661 "Relocate existing thumbnail overlays in dired buffer after reverting. 656 "Relocate existing thumbnail overlays in dired buffer after reverting.
662Move them to their corresponding files if they are still exist. 657Move them to their corresponding files if they are still exist.
663Otherwise, delete overlays." 658Otherwise, delete overlays."
@@ -670,82 +665,82 @@ Otherwise, delete overlays."
670 (delete-overlay overlay))))) 665 (delete-overlay overlay)))))
671 (overlays-in (point-min) (point-max)))) 666 (overlays-in (point-min) (point-max))))
672 667
673(defun tumme-next-line-and-display () 668(defun image-dired-next-line-and-display ()
674 "Move to next dired line and display thumbnail image." 669 "Move to next dired line and display thumbnail image."
675 (interactive) 670 (interactive)
676 (dired-next-line 1) 671 (dired-next-line 1)
677 (tumme-display-thumbs 672 (image-dired-display-thumbs
678 t (or tumme-append-when-browsing nil) t) 673 t (or image-dired-append-when-browsing nil) t)
679 (if tumme-dired-disp-props 674 (if image-dired-dired-disp-props
680 (tumme-dired-display-properties))) 675 (image-dired-dired-display-properties)))
681 676
682(defun tumme-previous-line-and-display () 677(defun image-dired-previous-line-and-display ()
683 "Move to previous dired line and display thumbnail image." 678 "Move to previous dired line and display thumbnail image."
684 (interactive) 679 (interactive)
685 (dired-previous-line 1) 680 (dired-previous-line 1)
686 (tumme-display-thumbs 681 (image-dired-display-thumbs
687 t (or tumme-append-when-browsing nil) t) 682 t (or image-dired-append-when-browsing nil) t)
688 (if tumme-dired-disp-props 683 (if image-dired-dired-disp-props
689 (tumme-dired-display-properties))) 684 (image-dired-dired-display-properties)))
690 685
691(defun tumme-toggle-append-browsing () 686(defun image-dired-toggle-append-browsing ()
692 "Toggle `tumme-append-when-browsing'." 687 "Toggle `image-dired-append-when-browsing'."
693 (interactive) 688 (interactive)
694 (setq tumme-append-when-browsing 689 (setq image-dired-append-when-browsing
695 (not tumme-append-when-browsing)) 690 (not image-dired-append-when-browsing))
696 (message "Append browsing %s." 691 (message "Append browsing %s."
697 (if tumme-append-when-browsing 692 (if image-dired-append-when-browsing
698 "on" 693 "on"
699 "off"))) 694 "off")))
700 695
701(defun tumme-mark-and-display-next () 696(defun image-dired-mark-and-display-next ()
702 "Mark current file in dired and display next thumbnail image." 697 "Mark current file in dired and display next thumbnail image."
703 (interactive) 698 (interactive)
704 (dired-mark 1) 699 (dired-mark 1)
705 (tumme-display-thumbs 700 (image-dired-display-thumbs
706 t (or tumme-append-when-browsing nil) t) 701 t (or image-dired-append-when-browsing nil) t)
707 (if tumme-dired-disp-props 702 (if image-dired-dired-disp-props
708 (tumme-dired-display-properties))) 703 (image-dired-dired-display-properties)))
709 704
710(defun tumme-toggle-dired-display-properties () 705(defun image-dired-toggle-dired-display-properties ()
711 "Toggle `tumme-dired-disp-props'." 706 "Toggle `image-dired-dired-disp-props'."
712 (interactive) 707 (interactive)
713 (setq tumme-dired-disp-props 708 (setq image-dired-dired-disp-props
714 (not tumme-dired-disp-props)) 709 (not image-dired-dired-disp-props))
715 (message "Dired display properties %s." 710 (message "Dired display properties %s."
716 (if tumme-dired-disp-props 711 (if image-dired-dired-disp-props
717 "on" 712 "on"
718 "off"))) 713 "off")))
719 714
720(defvar tumme-thumbnail-buffer "*tumme*" 715(defvar image-dired-thumbnail-buffer "*image-dired*"
721 "Tumme's thumbnail buffer.") 716 "Image-Dired's thumbnail buffer.")
722 717
723(defun tumme-create-thumbnail-buffer () 718(defun image-dired-create-thumbnail-buffer ()
724 "Create thumb buffer and set `tumme-thumbnail-mode'." 719 "Create thumb buffer and set `image-dired-thumbnail-mode'."
725 (let ((buf (get-buffer-create tumme-thumbnail-buffer))) 720 (let ((buf (get-buffer-create image-dired-thumbnail-buffer)))
726 (with-current-buffer buf 721 (with-current-buffer buf
727 (setq buffer-read-only t) 722 (setq buffer-read-only t)
728 (if (not (eq major-mode 'tumme-thumbnail-mode)) 723 (if (not (eq major-mode 'image-dired-thumbnail-mode))
729 (tumme-thumbnail-mode))) 724 (image-dired-thumbnail-mode)))
730 buf)) 725 buf))
731 726
732(defvar tumme-display-image-buffer "*tumme-display-image*" 727(defvar image-dired-display-image-buffer "*image-dired-display-image*"
733 "Where larger versions of the images are display.") 728 "Where larger versions of the images are display.")
734 729
735(defun tumme-create-display-image-buffer () 730(defun image-dired-create-display-image-buffer ()
736 "Create image display buffer and set `tumme-display-image-mode'." 731 "Create image display buffer and set `image-dired-display-image-mode'."
737 (let ((buf (get-buffer-create tumme-display-image-buffer))) 732 (let ((buf (get-buffer-create image-dired-display-image-buffer)))
738 (with-current-buffer buf 733 (with-current-buffer buf
739 (setq buffer-read-only t) 734 (setq buffer-read-only t)
740 (if (not (eq major-mode 'tumme-display-image-mode)) 735 (if (not (eq major-mode 'image-dired-display-image-mode))
741 (tumme-display-image-mode))) 736 (image-dired-display-image-mode)))
742 buf)) 737 buf))
743 738
744(defvar tumme-saved-window-configuration nil 739(defvar image-dired-saved-window-configuration nil
745 "Saved window configuration.") 740 "Saved window configuration.")
746 741
747;;;###autoload 742;;;###autoload
748(defun tumme-dired-with-window-configuration (dir &optional arg) 743(defun image-dired-dired-with-window-configuration (dir &optional arg)
749 "Open directory DIR and create a default window configuration. 744 "Open directory DIR and create a default window configuration.
750 745
751Convenience command that: 746Convenience command that:
@@ -756,16 +751,16 @@ Convenience command that:
756 751
757After the command has finished, you would typically mark some 752After the command has finished, you would typically mark some
758image files in dired and type 753image files in dired and type
759\\[tumme-display-thumbs] (`tumme-display-thumbs'). 754\\[image-dired-display-thumbs] (`image-dired-display-thumbs').
760 755
761If called with prefix argument ARG, skip splitting of windows. 756If called with prefix argument ARG, skip splitting of windows.
762 757
763The current window configuration is saved and can be restored by 758The current window configuration is saved and can be restored by
764calling `tumme-restore-window-configuration'." 759calling `image-dired-restore-window-configuration'."
765 (interactive "DDirectory: \nP") 760 (interactive "DDirectory: \nP")
766 (let ((buf (tumme-create-thumbnail-buffer)) 761 (let ((buf (image-dired-create-thumbnail-buffer))
767 (buf2 (tumme-create-display-image-buffer))) 762 (buf2 (image-dired-create-display-image-buffer)))
768 (setq tumme-saved-window-configuration 763 (setq image-dired-saved-window-configuration
769 (current-window-configuration)) 764 (current-window-configuration))
770 (dired dir) 765 (dired dir)
771 (delete-other-windows) 766 (delete-other-windows)
@@ -780,18 +775,18 @@ calling `tumme-restore-window-configuration'."
780 (switch-to-buffer buf2) 775 (switch-to-buffer buf2)
781 (other-window -2))))) 776 (other-window -2)))))
782 777
783(defun tumme-restore-window-configuration () 778(defun image-dired-restore-window-configuration ()
784 "Restore window configuration. 779 "Restore window configuration.
785Restore any changes to the window configuration made by calling 780Restore any changes to the window configuration made by calling
786`tumme-dired-with-window-configuration'." 781`image-dired-dired-with-window-configuration'."
787 (interactive) 782 (interactive)
788 (if tumme-saved-window-configuration 783 (if image-dired-saved-window-configuration
789 (set-window-configuration tumme-saved-window-configuration) 784 (set-window-configuration image-dired-saved-window-configuration)
790 (message "No saved window configuration"))) 785 (message "No saved window configuration")))
791 786
792;;;###autoload 787;;;###autoload
793(defun tumme-display-thumbs (&optional arg append do-not-pop) 788(defun image-dired-display-thumbs (&optional arg append do-not-pop)
794 "Display thumbnails of all marked files, in `tumme-thumbnail-buffer'. 789 "Display thumbnails of all marked files, in `image-dired-thumbnail-buffer'.
795If a thumbnail image does not exist for a file, it is created on the 790If a thumbnail image does not exist for a file, it is created on the
796fly. With prefix argument ARG, display only thumbnail for file at 791fly. With prefix argument ARG, display only thumbnail for file at
797point (this is useful if you have marked some files but want to show 792point (this is useful if you have marked some files but want to show
@@ -799,7 +794,7 @@ another one).
799 794
800Recommended usage is to split the current frame horizontally so that 795Recommended usage is to split the current frame horizontally so that
801you have the dired buffer in the left window and the 796you have the dired buffer in the left window and the
802`tumme-thumbnail-buffer' buffer in the right window. 797`image-dired-thumbnail-buffer' buffer in the right window.
803 798
804With optional argument APPEND, append thumbnail to thumbnail buffer 799With optional argument APPEND, append thumbnail to thumbnail buffer
805instead of erasing it first. 800instead of erasing it first.
@@ -807,11 +802,11 @@ instead of erasing it first.
807Option argument DO-NOT-POP controls if `pop-to-buffer' should be 802Option argument DO-NOT-POP controls if `pop-to-buffer' should be
808used or not. If non-nil, use `display-buffer' instead of 803used or not. If non-nil, use `display-buffer' instead of
809`pop-to-buffer'. This is used from functions like 804`pop-to-buffer'. This is used from functions like
810`tumme-next-line-and-display' and 805`image-dired-next-line-and-display' and
811`tumme-previous-line-and-display' where we do not want the 806`image-dired-previous-line-and-display' where we do not want the
812thumbnail buffer to be selected." 807thumbnail buffer to be selected."
813 (interactive "P") 808 (interactive "P")
814 (let ((buf (tumme-create-thumbnail-buffer)) 809 (let ((buf (image-dired-create-thumbnail-buffer))
815 curr-file thumb-name files count dired-buf beg) 810 curr-file thumb-name files count dired-buf beg)
816 (if arg 811 (if arg
817 (setq files (list (dired-get-filename))) 812 (setq files (list (dired-get-filename)))
@@ -824,58 +819,61 @@ thumbnail buffer to be selected."
824 (goto-char (point-max))) 819 (goto-char (point-max)))
825 (mapcar 820 (mapcar
826 (lambda (curr-file) 821 (lambda (curr-file)
827 (setq thumb-name (tumme-thumb-name curr-file)) 822 (setq thumb-name (image-dired-thumb-name curr-file))
828 (if (and (not (file-exists-p thumb-name)) 823 (if (and (not (file-exists-p thumb-name))
829 (not (= 0 (tumme-create-thumb curr-file thumb-name)))) 824 (not (= 0 (image-dired-create-thumb curr-file thumb-name))))
830 (message "Thumb could not be created for file %s" curr-file) 825 (message "Thumb could not be created for file %s" curr-file)
831 (tumme-insert-thumbnail thumb-name curr-file dired-buf))) 826 (image-dired-insert-thumbnail thumb-name curr-file dired-buf)))
832 files)) 827 files))
833 (cond ((eq 'dynamic tumme-line-up-method) 828 (cond ((eq 'dynamic image-dired-line-up-method)
834 (tumme-line-up-dynamic)) 829 (image-dired-line-up-dynamic))
835 ((eq 'fixed tumme-line-up-method) 830 ((eq 'fixed image-dired-line-up-method)
836 (tumme-line-up)) 831 (image-dired-line-up))
837 ((eq 'interactive tumme-line-up-method) 832 ((eq 'interactive image-dired-line-up-method)
838 (tumme-line-up-interactive)) 833 (image-dired-line-up-interactive))
839 ((eq 'none tumme-line-up-method) 834 ((eq 'none image-dired-line-up-method)
840 nil) 835 nil)
841 (t 836 (t
842 (tumme-line-up-dynamic)))) 837 (image-dired-line-up-dynamic))))
843 (if do-not-pop 838 (if do-not-pop
844 (display-buffer tumme-thumbnail-buffer) 839 (display-buffer image-dired-thumbnail-buffer)
845 (pop-to-buffer tumme-thumbnail-buffer)))) 840 (pop-to-buffer image-dired-thumbnail-buffer))))
846 841
847;;;###autoload 842;;;###autoload
848(defun tumme-show-all-from-dir (dir) 843(defun image-dired-show-all-from-dir (dir)
849 "Make a preview buffer for all images in DIR and display it. 844 "Make a preview buffer for all images in DIR and display it.
850If the number of files in DIR matching `image-file-name-regexp' 845If the number of files in DIR matching `image-file-name-regexp'
851exceeds `tumme-show-all-from-dir-max-files', a warning will be 846exceeds `image-dired-show-all-from-dir-max-files', a warning will be
852displayed." 847displayed."
853 (interactive "DDir: ") 848 (interactive "DDir: ")
854 (dired dir) 849 (dired dir)
855 (dired-mark-files-regexp (image-file-name-regexp)) 850 (dired-mark-files-regexp (image-file-name-regexp))
856 (let ((files (dired-get-marked-files))) 851 (let ((files (dired-get-marked-files)))
857 (if (or (<= (length files) tumme-show-all-from-dir-max-files) 852 (if (or (<= (length files) image-dired-show-all-from-dir-max-files)
858 (and (> (length files) tumme-show-all-from-dir-max-files) 853 (and (> (length files) image-dired-show-all-from-dir-max-files)
859 (y-or-n-p 854 (y-or-n-p
860 (format 855 (format
861 "Directory contains more than %d image files. Proceed? " 856 "Directory contains more than %d image files. Proceed? "
862 tumme-show-all-from-dir-max-files)))) 857 image-dired-show-all-from-dir-max-files))))
863 (progn 858 (progn
864 (tumme-display-thumbs) 859 (image-dired-display-thumbs)
865 (pop-to-buffer tumme-thumbnail-buffer)) 860 (pop-to-buffer image-dired-thumbnail-buffer))
866 (message "Cancelled.")))) 861 (message "Cancelled."))))
867 862
868;;;###autoload 863;;;###autoload
869(defalias 'tumme 'tumme-show-all-from-dir) 864(defalias 'image-dired 'image-dired-show-all-from-dir)
865
866;;;###autoload
867(defalias 'tumme 'image-dired-show-all-from-dir)
870 868
871(defun tumme-write-tags (file-tags) 869(defun image-dired-write-tags (file-tags)
872 "Write file tags to database. 870 "Write file tags to database.
873Write each file and tag in FILE-TAGS to the database. FILE-TAGS 871Write each file and tag in FILE-TAGS to the database. FILE-TAGS
874is an alist in the following form: 872is an alist in the following form:
875 ((FILE . TAG) ... )" 873 ((FILE . TAG) ... )"
876 (let (end file tag) 874 (let (end file tag)
877 (with-temp-file tumme-db-file 875 (with-temp-file image-dired-db-file
878 (insert-file-contents tumme-db-file) 876 (insert-file-contents image-dired-db-file)
879 (dolist (elt file-tags) 877 (dolist (elt file-tags)
880 (setq file (car elt) 878 (setq file (car elt)
881 tag (cdr elt)) 879 tag (cdr elt))
@@ -890,11 +888,11 @@ is an alist in the following form:
890 (goto-char (point-max)) 888 (goto-char (point-max))
891 (insert (format "\n%s;%s" file tag))))))) 889 (insert (format "\n%s;%s" file tag)))))))
892 890
893(defun tumme-remove-tag (files tag) 891(defun image-dired-remove-tag (files tag)
894 "For all FILES, remove TAG from the image database." 892 "For all FILES, remove TAG from the image database."
895 (save-excursion 893 (save-excursion
896 (let (end buf start) 894 (let (end buf start)
897 (setq buf (find-file tumme-db-file)) 895 (setq buf (find-file image-dired-db-file))
898 (if (not (listp files)) 896 (if (not (listp files))
899 (if (stringp files) 897 (if (stringp files)
900 (setq files (list files)) 898 (setq files (list files))
@@ -924,11 +922,11 @@ is an alist in the following form:
924 (save-buffer) 922 (save-buffer)
925 (kill-buffer buf)))) 923 (kill-buffer buf))))
926 924
927(defun tumme-list-tags (file) 925(defun image-dired-list-tags (file)
928 "Read all tags for image FILE from the image database." 926 "Read all tags for image FILE from the image database."
929 (save-excursion 927 (save-excursion
930 (let (end buf (tags "")) 928 (let (end buf (tags ""))
931 (setq buf (find-file tumme-db-file)) 929 (setq buf (find-file image-dired-db-file))
932 (goto-char (point-min)) 930 (goto-char (point-min))
933 (when (search-forward-regexp 931 (when (search-forward-regexp
934 (format "^%s" file) nil t) 932 (format "^%s" file) nil t)
@@ -944,7 +942,7 @@ is an alist in the following form:
944 (split-string tags ";")))) 942 (split-string tags ";"))))
945 943
946;;;###autoload 944;;;###autoload
947(defun tumme-tag-files (arg) 945(defun image-dired-tag-files (arg)
948 "Tag marked file(s) in dired. With prefix ARG, tag file at point." 946 "Tag marked file(s) in dired. With prefix ARG, tag file at point."
949 (interactive "P") 947 (interactive "P")
950 (let ((tag (read-string "Tags to add (separate tags with a semicolon): ")) 948 (let ((tag (read-string "Tags to add (separate tags with a semicolon): "))
@@ -952,22 +950,22 @@ is an alist in the following form:
952 (if arg 950 (if arg
953 (setq files (list (dired-get-filename))) 951 (setq files (list (dired-get-filename)))
954 (setq files (dired-get-marked-files))) 952 (setq files (dired-get-marked-files)))
955 (tumme-write-tags 953 (image-dired-write-tags
956 (mapcar 954 (mapcar
957 (lambda (x) 955 (lambda (x)
958 (cons x tag)) 956 (cons x tag))
959 files)))) 957 files))))
960 958
961(defun tumme-tag-thumbnail () 959(defun image-dired-tag-thumbnail ()
962 "Tag current thumbnail." 960 "Tag current thumbnail."
963 (interactive) 961 (interactive)
964 (let ((tag (read-string "Tags to add (separate tags with a semicolon): "))) 962 (let ((tag (read-string "Tags to add (separate tags with a semicolon): ")))
965 (tumme-write-tags (list (cons (tumme-original-file-name) tag)))) 963 (image-dired-write-tags (list (cons (image-dired-original-file-name) tag))))
966 (tumme-update-property 964 (image-dired-update-property
967 'tags (tumme-list-tags (tumme-original-file-name)))) 965 'tags (image-dired-list-tags (image-dired-original-file-name))))
968 966
969;;;###autoload 967;;;###autoload
970(defun tumme-delete-tag (arg) 968(defun image-dired-delete-tag (arg)
971 "Remove tag for selected file(s). 969 "Remove tag for selected file(s).
972With prefix argument ARG, remove tag from file at point." 970With prefix argument ARG, remove tag from file at point."
973 (interactive "P") 971 (interactive "P")
@@ -976,39 +974,39 @@ With prefix argument ARG, remove tag from file at point."
976 (if arg 974 (if arg
977 (setq files (list (dired-get-filename))) 975 (setq files (list (dired-get-filename)))
978 (setq files (dired-get-marked-files))) 976 (setq files (dired-get-marked-files)))
979 (tumme-remove-tag files tag))) 977 (image-dired-remove-tag files tag)))
980 978
981(defun tumme-tag-thumbnail-remove () 979(defun image-dired-tag-thumbnail-remove ()
982 "Remove tag from thumbnail." 980 "Remove tag from thumbnail."
983 (interactive) 981 (interactive)
984 (let ((tag (read-string "Tag to remove: "))) 982 (let ((tag (read-string "Tag to remove: ")))
985 (tumme-remove-tag (tumme-original-file-name) tag)) 983 (image-dired-remove-tag (image-dired-original-file-name) tag))
986 (tumme-update-property 984 (image-dired-update-property
987 'tags (tumme-list-tags (tumme-original-file-name)))) 985 'tags (image-dired-list-tags (image-dired-original-file-name))))
988 986
989(defun tumme-original-file-name () 987(defun image-dired-original-file-name ()
990 "Get original file name for thumbnail or display image at point." 988 "Get original file name for thumbnail or display image at point."
991 (get-text-property (point) 'original-file-name)) 989 (get-text-property (point) 'original-file-name))
992 990
993(defun tumme-associated-dired-buffer () 991(defun image-dired-associated-dired-buffer ()
994 "Get associated dired buffer at point." 992 "Get associated dired buffer at point."
995 (get-text-property (point) 'associated-dired-buffer)) 993 (get-text-property (point) 'associated-dired-buffer))
996 994
997(defun tumme-get-buffer-window (buf) 995(defun image-dired-get-buffer-window (buf)
998 "Return window where buffer BUF is." 996 "Return window where buffer BUF is."
999 (get-window-with-predicate 997 (get-window-with-predicate
1000 (lambda (window) 998 (lambda (window)
1001 (equal (window-buffer window) buf)) 999 (equal (window-buffer window) buf))
1002 nil t)) 1000 nil t))
1003 1001
1004(defun tumme-track-original-file () 1002(defun image-dired-track-original-file ()
1005 "Track the original file in the associated dired buffer. 1003 "Track the original file in the associated dired buffer.
1006See documentation for `tumme-toggle-movement-tracking'. Interactive 1004See documentation for `image-dired-toggle-movement-tracking'. Interactive
1007use only useful if `tumme-track-movement' is nil." 1005use only useful if `image-dired-track-movement' is nil."
1008 (interactive) 1006 (interactive)
1009 (let ((old-buf (current-buffer)) 1007 (let ((old-buf (current-buffer))
1010 (dired-buf (tumme-associated-dired-buffer)) 1008 (dired-buf (image-dired-associated-dired-buffer))
1011 (file-name (tumme-original-file-name))) 1009 (file-name (image-dired-original-file-name)))
1012 (when (and (buffer-live-p dired-buf) file-name) 1010 (when (and (buffer-live-p dired-buf) file-name)
1013 (setq file-name (file-name-nondirectory file-name)) 1011 (setq file-name (file-name-nondirectory file-name))
1014 (set-buffer dired-buf) 1012 (set-buffer dired-buf)
@@ -1017,28 +1015,28 @@ use only useful if `tumme-track-movement' is nil."
1017 (message "Could not track file") 1015 (message "Could not track file")
1018 (dired-move-to-filename) 1016 (dired-move-to-filename)
1019 (set-window-point 1017 (set-window-point
1020 (tumme-get-buffer-window dired-buf) (point))) 1018 (image-dired-get-buffer-window dired-buf) (point)))
1021 (set-buffer old-buf)))) 1019 (set-buffer old-buf))))
1022 1020
1023(defun tumme-toggle-movement-tracking () 1021(defun image-dired-toggle-movement-tracking ()
1024 "Turn on and off `tumme-track-movement'. 1022 "Turn on and off `image-dired-track-movement'.
1025Tracking of the movements between thumbnail and dired buffer so that 1023Tracking of the movements between thumbnail and dired buffer so that
1026they are \"mirrored\" in the dired buffer. When this is on, moving 1024they are \"mirrored\" in the dired buffer. When this is on, moving
1027around in the thumbnail or dired buffer will find the matching 1025around in the thumbnail or dired buffer will find the matching
1028position in the other buffer." 1026position in the other buffer."
1029 (interactive) 1027 (interactive)
1030 (setq tumme-track-movement (not tumme-track-movement)) 1028 (setq image-dired-track-movement (not image-dired-track-movement))
1031 (message "Tracking %s" (if tumme-track-movement "on" "off"))) 1029 (message "Tracking %s" (if image-dired-track-movement "on" "off")))
1032 1030
1033(defun tumme-track-thumbnail () 1031(defun image-dired-track-thumbnail ()
1034 "Track current dired file's thumb in `tumme-thumbnail-buffer'. 1032 "Track current dired file's thumb in `image-dired-thumbnail-buffer'.
1035This is almost the same as what `tumme-track-original-file' does, but 1033This is almost the same as what `image-dired-track-original-file' does, but
1036the other way around." 1034the other way around."
1037 (let ((file (dired-get-filename)) 1035 (let ((file (dired-get-filename))
1038 (old-buf (current-buffer)) 1036 (old-buf (current-buffer))
1039 prop-val found) 1037 prop-val found)
1040 (when (get-buffer tumme-thumbnail-buffer) 1038 (when (get-buffer image-dired-thumbnail-buffer)
1041 (set-buffer tumme-thumbnail-buffer) 1039 (set-buffer image-dired-thumbnail-buffer)
1042 (goto-char (point-min)) 1040 (goto-char (point-min))
1043 (while (and (not (eobp)) 1041 (while (and (not (eobp))
1044 (not found)) 1042 (not found))
@@ -1050,29 +1048,29 @@ the other way around."
1050 (forward-char 1))) 1048 (forward-char 1)))
1051 (when found 1049 (when found
1052 (set-window-point 1050 (set-window-point
1053 (tumme-thumbnail-window) (point)) 1051 (image-dired-thumbnail-window) (point))
1054 (tumme-display-thumb-properties)) 1052 (image-dired-display-thumb-properties))
1055 (set-buffer old-buf)))) 1053 (set-buffer old-buf))))
1056 1054
1057(defun tumme-dired-next-line (&optional arg) 1055(defun image-dired-dired-next-line (&optional arg)
1058 "Call `dired-next-line', then track thumbnail. 1056 "Call `dired-next-line', then track thumbnail.
1059This can safely replace `dired-next-line'. With prefix argument, move 1057This can safely replace `dired-next-line'. With prefix argument, move
1060ARG lines." 1058ARG lines."
1061 (interactive "P") 1059 (interactive "P")
1062 (dired-next-line (or arg 1)) 1060 (dired-next-line (or arg 1))
1063 (if tumme-track-movement 1061 (if image-dired-track-movement
1064 (tumme-track-thumbnail))) 1062 (image-dired-track-thumbnail)))
1065 1063
1066(defun tumme-dired-previous-line (&optional arg) 1064(defun image-dired-dired-previous-line (&optional arg)
1067 "Call `dired-previous-line', then track thumbnail. 1065 "Call `dired-previous-line', then track thumbnail.
1068This can safely replace `dired-previous-line'. With prefix argument, 1066This can safely replace `dired-previous-line'. With prefix argument,
1069move ARG lines." 1067move ARG lines."
1070 (interactive "P") 1068 (interactive "P")
1071 (dired-previous-line (or arg 1)) 1069 (dired-previous-line (or arg 1))
1072 (if tumme-track-movement 1070 (if image-dired-track-movement
1073 (tumme-track-thumbnail))) 1071 (image-dired-track-thumbnail)))
1074 1072
1075(defun tumme-forward-image (&optional arg) 1073(defun image-dired-forward-image (&optional arg)
1076 "Move to next image and display properties. 1074 "Move to next image and display properties.
1077Optional prefix ARG says how many images to move; default is one 1075Optional prefix ARG says how many images to move; default is one
1078image." 1076image."
@@ -1083,17 +1081,17 @@ image."
1083 (save-excursion 1081 (save-excursion
1084 (forward-char) 1082 (forward-char)
1085 (while (and (not (eobp)) 1083 (while (and (not (eobp))
1086 (not (tumme-image-at-point-p))) 1084 (not (image-dired-image-at-point-p)))
1087 (forward-char)) 1085 (forward-char))
1088 (setq pos (point)) 1086 (setq pos (point))
1089 (tumme-image-at-point-p))) 1087 (image-dired-image-at-point-p)))
1090 (goto-char pos) 1088 (goto-char pos)
1091 (error "At last image")))) 1089 (error "At last image"))))
1092 (when tumme-track-movement 1090 (when image-dired-track-movement
1093 (tumme-track-original-file)) 1091 (image-dired-track-original-file))
1094 (tumme-display-thumb-properties)) 1092 (image-dired-display-thumb-properties))
1095 1093
1096(defun tumme-backward-image (&optional arg) 1094(defun image-dired-backward-image (&optional arg)
1097 "Move to previous image and display properties. 1095 "Move to previous image and display properties.
1098Optional prefix ARG says how many images to move; default is one 1096Optional prefix ARG says how many images to move; default is one
1099image." 1097image."
@@ -1104,29 +1102,29 @@ image."
1104 (save-excursion 1102 (save-excursion
1105 (backward-char) 1103 (backward-char)
1106 (while (and (not (bobp)) 1104 (while (and (not (bobp))
1107 (not (tumme-image-at-point-p))) 1105 (not (image-dired-image-at-point-p)))
1108 (backward-char)) 1106 (backward-char))
1109 (setq pos (point)) 1107 (setq pos (point))
1110 (tumme-image-at-point-p))) 1108 (image-dired-image-at-point-p)))
1111 (goto-char pos) 1109 (goto-char pos)
1112 (error "At first image")))) 1110 (error "At first image"))))
1113 (when tumme-track-movement 1111 (when image-dired-track-movement
1114 (tumme-track-original-file)) 1112 (image-dired-track-original-file))
1115 (tumme-display-thumb-properties)) 1113 (image-dired-display-thumb-properties))
1116 1114
1117(defun tumme-next-line () 1115(defun image-dired-next-line ()
1118 "Move to next line and display properties." 1116 "Move to next line and display properties."
1119 (interactive) 1117 (interactive)
1120 (next-line 1) 1118 (next-line 1)
1121 ;; If we end up in an empty spot, back up to the next thumbnail. 1119 ;; If we end up in an empty spot, back up to the next thumbnail.
1122 (if (not (tumme-image-at-point-p)) 1120 (if (not (image-dired-image-at-point-p))
1123 (tumme-backward-image)) 1121 (image-dired-backward-image))
1124 (if tumme-track-movement 1122 (if image-dired-track-movement
1125 (tumme-track-original-file)) 1123 (image-dired-track-original-file))
1126 (tumme-display-thumb-properties)) 1124 (image-dired-display-thumb-properties))
1127 1125
1128 1126
1129(defun tumme-previous-line () 1127(defun image-dired-previous-line ()
1130 "Move to previous line and display properties." 1128 "Move to previous line and display properties."
1131 (interactive) 1129 (interactive)
1132 (previous-line 1) 1130 (previous-line 1)
@@ -1134,30 +1132,30 @@ image."
1134 ;; thumbnail. This should only happen if the user deleted a 1132 ;; thumbnail. This should only happen if the user deleted a
1135 ;; thumbnail and did not refresh, so it is not very common. But we 1133 ;; thumbnail and did not refresh, so it is not very common. But we
1136 ;; can handle it in a good manner, so why not? 1134 ;; can handle it in a good manner, so why not?
1137 (if (not (tumme-image-at-point-p)) 1135 (if (not (image-dired-image-at-point-p))
1138 (tumme-backward-image)) 1136 (image-dired-backward-image))
1139 (if tumme-track-movement 1137 (if image-dired-track-movement
1140 (tumme-track-original-file)) 1138 (image-dired-track-original-file))
1141 (tumme-display-thumb-properties)) 1139 (image-dired-display-thumb-properties))
1142 1140
1143(defun tumme-format-properties-string (buf file props comment) 1141(defun image-dired-format-properties-string (buf file props comment)
1144 "Format display properties. 1142 "Format display properties.
1145BUF is the associated dired buffer, FILE is the original image file 1143BUF is the associated dired buffer, FILE is the original image file
1146name, PROPS is a list of tags and COMMENT is the image files's 1144name, PROPS is a list of tags and COMMENT is the image files's
1147comment." 1145comment."
1148 (format-spec 1146 (format-spec
1149 tumme-display-properties-format 1147 image-dired-display-properties-format
1150 (list 1148 (list
1151 (cons ?b (or buf "")) 1149 (cons ?b (or buf ""))
1152 (cons ?f file) 1150 (cons ?f file)
1153 (cons ?t (or (princ props) "")) 1151 (cons ?t (or (princ props) ""))
1154 (cons ?c (or comment ""))))) 1152 (cons ?c (or comment "")))))
1155 1153
1156(defun tumme-display-thumb-properties () 1154(defun image-dired-display-thumb-properties ()
1157 "Display thumbnail properties in the echo area." 1155 "Display thumbnail properties in the echo area."
1158 (if (not (eobp)) 1156 (if (not (eobp))
1159 (let ((file-name (file-name-nondirectory (tumme-original-file-name))) 1157 (let ((file-name (file-name-nondirectory (image-dired-original-file-name)))
1160 (dired-buf (buffer-name (tumme-associated-dired-buffer))) 1158 (dired-buf (buffer-name (image-dired-associated-dired-buffer)))
1161 (props (mapconcat 1159 (props (mapconcat
1162 'princ 1160 'princ
1163 (get-text-property (point) 'tags) 1161 (get-text-property (point) 'tags)
@@ -1165,26 +1163,26 @@ comment."
1165 (comment (get-text-property (point) 'comment))) 1163 (comment (get-text-property (point) 'comment)))
1166 (if file-name 1164 (if file-name
1167 (message 1165 (message
1168 (tumme-format-properties-string 1166 (image-dired-format-properties-string
1169 dired-buf 1167 dired-buf
1170 file-name 1168 file-name
1171 props 1169 props
1172 comment)))))) 1170 comment))))))
1173 1171
1174(defun tumme-dired-file-marked-p () 1172(defun image-dired-dired-file-marked-p ()
1175 "Check whether file on current line is marked or not." 1173 "Check whether file on current line is marked or not."
1176 (save-excursion 1174 (save-excursion
1177 (beginning-of-line) 1175 (beginning-of-line)
1178 (not (looking-at "^ .*$")))) 1176 (not (looking-at "^ .*$"))))
1179 1177
1180(defun tumme-modify-mark-on-thumb-original-file (command) 1178(defun image-dired-modify-mark-on-thumb-original-file (command)
1181 "Modify mark in dired buffer. 1179 "Modify mark in dired buffer.
1182This is quite ugly but I don't know how to implemented in a better 1180This is quite ugly but I don't know how to implemented in a better
1183way. COMMAND is one of 'mark for marking file in dired, 'unmark for 1181way. COMMAND is one of 'mark for marking file in dired, 'unmark for
1184unmarking file in dired or 'flag for flagging file for delete in 1182unmarking file in dired or 'flag for flagging file for delete in
1185dired." 1183dired."
1186 (let ((file-name (tumme-original-file-name)) 1184 (let ((file-name (image-dired-original-file-name))
1187 (dired-buf (tumme-associated-dired-buffer))) 1185 (dired-buf (image-dired-associated-dired-buffer)))
1188 (if (not (and dired-buf file-name)) 1186 (if (not (and dired-buf file-name))
1189 (message "No image, or image with correct properties, at point.") 1187 (message "No image, or image with correct properties, at point.")
1190 (with-current-buffer dired-buf 1188 (with-current-buffer dired-buf
@@ -1195,42 +1193,42 @@ dired."
1195 (cond ((eq command 'mark) (dired-mark 1)) 1193 (cond ((eq command 'mark) (dired-mark 1))
1196 ((eq command 'unmark) (dired-unmark 1)) 1194 ((eq command 'unmark) (dired-unmark 1))
1197 ((eq command 'toggle) 1195 ((eq command 'toggle)
1198 (if (tumme-dired-file-marked-p) 1196 (if (image-dired-dired-file-marked-p)
1199 (dired-unmark 1) 1197 (dired-unmark 1)
1200 (dired-mark 1))) 1198 (dired-mark 1)))
1201 ((eq command 'flag) (dired-flag-file-deletion 1)))))))) 1199 ((eq command 'flag) (dired-flag-file-deletion 1))))))))
1202 1200
1203(defun tumme-mark-thumb-original-file () 1201(defun image-dired-mark-thumb-original-file ()
1204 "Mark original image file in associated dired buffer." 1202 "Mark original image file in associated dired buffer."
1205 (interactive) 1203 (interactive)
1206 (tumme-modify-mark-on-thumb-original-file 'mark) 1204 (image-dired-modify-mark-on-thumb-original-file 'mark)
1207 (tumme-forward-image)) 1205 (image-dired-forward-image))
1208 1206
1209(defun tumme-unmark-thumb-original-file () 1207(defun image-dired-unmark-thumb-original-file ()
1210 "Unmark original image file in associated dired buffer." 1208 "Unmark original image file in associated dired buffer."
1211 (interactive) 1209 (interactive)
1212 (tumme-modify-mark-on-thumb-original-file 'unmark) 1210 (image-dired-modify-mark-on-thumb-original-file 'unmark)
1213 (tumme-forward-image)) 1211 (image-dired-forward-image))
1214 1212
1215(defun tumme-flag-thumb-original-file () 1213(defun image-dired-flag-thumb-original-file ()
1216 "Flag original image file for deletion in associated dired buffer." 1214 "Flag original image file for deletion in associated dired buffer."
1217 (interactive) 1215 (interactive)
1218 (tumme-modify-mark-on-thumb-original-file 'flag) 1216 (image-dired-modify-mark-on-thumb-original-file 'flag)
1219 (tumme-forward-image)) 1217 (image-dired-forward-image))
1220 1218
1221(defun tumme-toggle-mark-thumb-original-file () 1219(defun image-dired-toggle-mark-thumb-original-file ()
1222 "Toggle mark on original image file in associated dired buffer." 1220 "Toggle mark on original image file in associated dired buffer."
1223 (interactive) 1221 (interactive)
1224 (tumme-modify-mark-on-thumb-original-file 'toggle)) 1222 (image-dired-modify-mark-on-thumb-original-file 'toggle))
1225 1223
1226(defun tumme-jump-original-dired-buffer () 1224(defun image-dired-jump-original-dired-buffer ()
1227 "Jump to the dired buffer associated with the current image file. 1225 "Jump to the dired buffer associated with the current image file.
1228You probably want to use this together with 1226You probably want to use this together with
1229`tumme-track-original-file'." 1227`image-dired-track-original-file'."
1230 (interactive) 1228 (interactive)
1231 (let ((buf (tumme-associated-dired-buffer)) 1229 (let ((buf (image-dired-associated-dired-buffer))
1232 window frame) 1230 window frame)
1233 (setq window (tumme-get-buffer-window buf)) 1231 (setq window (image-dired-get-buffer-window buf))
1234 (if window 1232 (if window
1235 (progn 1233 (progn
1236 (if (not (equal (selected-frame) (setq frame (window-frame window)))) 1234 (if (not (equal (selected-frame) (setq frame (window-frame window))))
@@ -1239,10 +1237,10 @@ You probably want to use this together with
1239 (message "Associated dired buffer not visible")))) 1237 (message "Associated dired buffer not visible"))))
1240 1238
1241;;;###autoload 1239;;;###autoload
1242(defun tumme-jump-thumbnail-buffer () 1240(defun image-dired-jump-thumbnail-buffer ()
1243 "Jump to thumbnail buffer." 1241 "Jump to thumbnail buffer."
1244 (interactive) 1242 (interactive)
1245 (let ((window (tumme-thumbnail-window)) 1243 (let ((window (image-dired-thumbnail-window))
1246 frame) 1244 frame)
1247 (if window 1245 (if window
1248 (progn 1246 (progn
@@ -1251,327 +1249,327 @@ You probably want to use this together with
1251 (select-window window)) 1249 (select-window window))
1252 (message "Thumbnail buffer not visible")))) 1250 (message "Thumbnail buffer not visible"))))
1253 1251
1254(defvar tumme-thumbnail-mode-map (make-sparse-keymap) 1252(defvar image-dired-thumbnail-mode-map (make-sparse-keymap)
1255 "Keymap for `tumme-thumbnail-mode'.") 1253 "Keymap for `image-dired-thumbnail-mode'.")
1256 1254
1257(defvar tumme-thumbnail-mode-line-up-map (make-sparse-keymap) 1255(defvar image-dired-thumbnail-mode-line-up-map (make-sparse-keymap)
1258 "Keymap for line-up commands in `tumme-thumbnail-mode'.") 1256 "Keymap for line-up commands in `image-dired-thumbnail-mode'.")
1259 1257
1260(defvar tumme-thumbnail-mode-tag-map (make-sparse-keymap) 1258(defvar image-dired-thumbnail-mode-tag-map (make-sparse-keymap)
1261 "Keymap for tag commands in `tumme-thumbnail-mode'.") 1259 "Keymap for tag commands in `image-dired-thumbnail-mode'.")
1262 1260
1263(defun tumme-define-thumbnail-mode-keymap () 1261(defun image-dired-define-thumbnail-mode-keymap ()
1264 "Define keymap for `tumme-thumbnail-mode'." 1262 "Define keymap for `image-dired-thumbnail-mode'."
1265 1263
1266 ;; Keys 1264 ;; Keys
1267 (define-key tumme-thumbnail-mode-map [right] 'tumme-forward-image) 1265 (define-key image-dired-thumbnail-mode-map [right] 'image-dired-forward-image)
1268 (define-key tumme-thumbnail-mode-map [left] 'tumme-backward-image) 1266 (define-key image-dired-thumbnail-mode-map [left] 'image-dired-backward-image)
1269 (define-key tumme-thumbnail-mode-map [up] 'tumme-previous-line) 1267 (define-key image-dired-thumbnail-mode-map [up] 'image-dired-previous-line)
1270 (define-key tumme-thumbnail-mode-map [down] 'tumme-next-line) 1268 (define-key image-dired-thumbnail-mode-map [down] 'image-dired-next-line)
1271 (define-key tumme-thumbnail-mode-map "\C-f" 'tumme-forward-image) 1269 (define-key image-dired-thumbnail-mode-map "\C-f" 'image-dired-forward-image)
1272 (define-key tumme-thumbnail-mode-map "\C-b" 'tumme-backward-image) 1270 (define-key image-dired-thumbnail-mode-map "\C-b" 'image-dired-backward-image)
1273 (define-key tumme-thumbnail-mode-map "\C-p" 'tumme-previous-line) 1271 (define-key image-dired-thumbnail-mode-map "\C-p" 'image-dired-previous-line)
1274 (define-key tumme-thumbnail-mode-map "\C-n" 'tumme-next-line) 1272 (define-key image-dired-thumbnail-mode-map "\C-n" 'image-dired-next-line)
1275 1273
1276 (define-key tumme-thumbnail-mode-map "d" 'tumme-flag-thumb-original-file) 1274 (define-key image-dired-thumbnail-mode-map "d" 'image-dired-flag-thumb-original-file)
1277 (define-key tumme-thumbnail-mode-map [delete] 1275 (define-key image-dired-thumbnail-mode-map [delete]
1278 'tumme-flag-thumb-original-file) 1276 'image-dired-flag-thumb-original-file)
1279 (define-key tumme-thumbnail-mode-map "m" 'tumme-mark-thumb-original-file) 1277 (define-key image-dired-thumbnail-mode-map "m" 'image-dired-mark-thumb-original-file)
1280 (define-key tumme-thumbnail-mode-map "u" 'tumme-unmark-thumb-original-file) 1278 (define-key image-dired-thumbnail-mode-map "u" 'image-dired-unmark-thumb-original-file)
1281 (define-key tumme-thumbnail-mode-map "." 'tumme-track-original-file) 1279 (define-key image-dired-thumbnail-mode-map "." 'image-dired-track-original-file)
1282 (define-key tumme-thumbnail-mode-map [tab] 'tumme-jump-original-dired-buffer) 1280 (define-key image-dired-thumbnail-mode-map [tab] 'image-dired-jump-original-dired-buffer)
1283 1281
1284 ;; add line-up map 1282 ;; add line-up map
1285 (define-key tumme-thumbnail-mode-map "g" tumme-thumbnail-mode-line-up-map) 1283 (define-key image-dired-thumbnail-mode-map "g" image-dired-thumbnail-mode-line-up-map)
1286 1284
1287 ;; map it to "g" so that the user can press it more quickly 1285 ;; map it to "g" so that the user can press it more quickly
1288 (define-key tumme-thumbnail-mode-line-up-map "g" 'tumme-line-up-dynamic) 1286 (define-key image-dired-thumbnail-mode-line-up-map "g" 'image-dired-line-up-dynamic)
1289 ;; "f" for "fixed" number of thumbs per row 1287 ;; "f" for "fixed" number of thumbs per row
1290 (define-key tumme-thumbnail-mode-line-up-map "f" 'tumme-line-up) 1288 (define-key image-dired-thumbnail-mode-line-up-map "f" 'image-dired-line-up)
1291 ;; "i" for "interactive" 1289 ;; "i" for "interactive"
1292 (define-key tumme-thumbnail-mode-line-up-map "i" 'tumme-line-up-interactive) 1290 (define-key image-dired-thumbnail-mode-line-up-map "i" 'image-dired-line-up-interactive)
1293 1291
1294 ;; add tag map 1292 ;; add tag map
1295 (define-key tumme-thumbnail-mode-map "t" tumme-thumbnail-mode-tag-map) 1293 (define-key image-dired-thumbnail-mode-map "t" image-dired-thumbnail-mode-tag-map)
1296 1294
1297 ;; map it to "t" so that the user can press it more quickly 1295 ;; map it to "t" so that the user can press it more quickly
1298 (define-key tumme-thumbnail-mode-tag-map "t" 'tumme-tag-thumbnail) 1296 (define-key image-dired-thumbnail-mode-tag-map "t" 'image-dired-tag-thumbnail)
1299 ;; "r" for "remove" 1297 ;; "r" for "remove"
1300 (define-key tumme-thumbnail-mode-tag-map "r" 'tumme-tag-thumbnail-remove) 1298 (define-key image-dired-thumbnail-mode-tag-map "r" 'image-dired-tag-thumbnail-remove)
1301 1299
1302 (define-key tumme-thumbnail-mode-map "\C-m" 1300 (define-key image-dired-thumbnail-mode-map "\C-m"
1303 'tumme-display-thumbnail-original-image) 1301 'image-dired-display-thumbnail-original-image)
1304 (define-key tumme-thumbnail-mode-map [C-return] 1302 (define-key image-dired-thumbnail-mode-map [C-return]
1305 'tumme-thumbnail-display-external) 1303 'image-dired-thumbnail-display-external)
1306 1304
1307 (define-key tumme-thumbnail-mode-map "l" 'tumme-rotate-thumbnail-left) 1305 (define-key image-dired-thumbnail-mode-map "l" 'image-dired-rotate-thumbnail-left)
1308 (define-key tumme-thumbnail-mode-map "r" 'tumme-rotate-thumbnail-right) 1306 (define-key image-dired-thumbnail-mode-map "r" 'image-dired-rotate-thumbnail-right)
1309 1307
1310 (define-key tumme-thumbnail-mode-map "L" 'tumme-rotate-original-left) 1308 (define-key image-dired-thumbnail-mode-map "L" 'image-dired-rotate-original-left)
1311 (define-key tumme-thumbnail-mode-map "R" 'tumme-rotate-original-right) 1309 (define-key image-dired-thumbnail-mode-map "R" 'image-dired-rotate-original-right)
1312 1310
1313 (define-key tumme-thumbnail-mode-map "D" 1311 (define-key image-dired-thumbnail-mode-map "D"
1314 'tumme-thumbnail-set-image-description) 1312 'image-dired-thumbnail-set-image-description)
1315 1313
1316 (define-key tumme-thumbnail-mode-map "\C-d" 'tumme-delete-char) 1314 (define-key image-dired-thumbnail-mode-map "\C-d" 'image-dired-delete-char)
1317 (define-key tumme-thumbnail-mode-map " " 1315 (define-key image-dired-thumbnail-mode-map " "
1318 'tumme-display-next-thumbnail-original) 1316 'image-dired-display-next-thumbnail-original)
1319 (define-key tumme-thumbnail-mode-map 1317 (define-key image-dired-thumbnail-mode-map
1320 (kbd "DEL") 'tumme-display-previous-thumbnail-original) 1318 (kbd "DEL") 'image-dired-display-previous-thumbnail-original)
1321 (define-key tumme-thumbnail-mode-map "c" 'tumme-comment-thumbnail) 1319 (define-key image-dired-thumbnail-mode-map "c" 'image-dired-comment-thumbnail)
1322 (define-key tumme-thumbnail-mode-map "q" 'tumme-kill-buffer-and-window) 1320 (define-key image-dired-thumbnail-mode-map "q" 'image-dired-kill-buffer-and-window)
1323 1321
1324 ;; Mouse 1322 ;; Mouse
1325 (define-key tumme-thumbnail-mode-map [mouse-2] 'tumme-mouse-display-image) 1323 (define-key image-dired-thumbnail-mode-map [mouse-2] 'image-dired-mouse-display-image)
1326 (define-key tumme-thumbnail-mode-map [mouse-1] 'tumme-mouse-select-thumbnail) 1324 (define-key image-dired-thumbnail-mode-map [mouse-1] 'image-dired-mouse-select-thumbnail)
1327 1325
1328 ;; Seems I must first set C-down-mouse-1 to undefined, or else it 1326 ;; Seems I must first set C-down-mouse-1 to undefined, or else it
1329 ;; will trigger the buffer menu. If I try to instead bind 1327 ;; will trigger the buffer menu. If I try to instead bind
1330 ;; C-down-mouse-1 to `tumme-mouse-toggle-mark', I get a message 1328 ;; C-down-mouse-1 to `image-dired-mouse-toggle-mark', I get a message
1331 ;; about C-mouse-1 not being defined afterwards. Annoying, but I 1329 ;; about C-mouse-1 not being defined afterwards. Annoying, but I
1332 ;; probably do not completely understand mouse events. 1330 ;; probably do not completely understand mouse events.
1333 1331
1334 (define-key tumme-thumbnail-mode-map [C-down-mouse-1] 'undefined) 1332 (define-key image-dired-thumbnail-mode-map [C-down-mouse-1] 'undefined)
1335 (define-key tumme-thumbnail-mode-map [C-mouse-1] 'tumme-mouse-toggle-mark) 1333 (define-key image-dired-thumbnail-mode-map [C-mouse-1] 'image-dired-mouse-toggle-mark)
1336 1334
1337 ;; Menu 1335 ;; Menu
1338 (define-key tumme-thumbnail-mode-map [menu-bar tumme] 1336 (define-key image-dired-thumbnail-mode-map [menu-bar image-dired]
1339 (cons "Tumme" (make-sparse-keymap "Tumme"))) 1337 (cons "Image-Dired" (make-sparse-keymap "Image-Dired")))
1340 1338
1341 (define-key tumme-thumbnail-mode-map 1339 (define-key image-dired-thumbnail-mode-map
1342 [menu-bar tumme tumme-kill-buffer-and-window] 1340 [menu-bar image-dired image-dired-kill-buffer-and-window]
1343 '("Quit" . tumme-kill-buffer-and-window)) 1341 '("Quit" . image-dired-kill-buffer-and-window))
1344 1342
1345 (define-key tumme-thumbnail-mode-map 1343 (define-key image-dired-thumbnail-mode-map
1346 [menu-bar tumme tumme-delete-char] 1344 [menu-bar image-dired image-dired-delete-char]
1347 '("Delete thumbnail from buffer" . tumme-delete-char)) 1345 '("Delete thumbnail from buffer" . image-dired-delete-char))
1348 1346
1349 (define-key tumme-thumbnail-mode-map 1347 (define-key image-dired-thumbnail-mode-map
1350 [menu-bar tumme tumme-tag-thumbnail-remove] 1348 [menu-bar image-dired image-dired-tag-thumbnail-remove]
1351 '("Remove tag from thumbnail" . tumme-tag-thumbnail-remove)) 1349 '("Remove tag from thumbnail" . image-dired-tag-thumbnail-remove))
1352 1350
1353 (define-key tumme-thumbnail-mode-map 1351 (define-key image-dired-thumbnail-mode-map
1354 [menu-bar tumme tumme-tag-thumbnail] 1352 [menu-bar image-dired image-dired-tag-thumbnail]
1355 '("Tag thumbnail" . tumme-tag-thumbnail)) 1353 '("Tag thumbnail" . image-dired-tag-thumbnail))
1356 1354
1357 (define-key tumme-thumbnail-mode-map 1355 (define-key image-dired-thumbnail-mode-map
1358 [menu-bar tumme tumme-comment-thumbnail] 1356 [menu-bar image-dired image-dired-comment-thumbnail]
1359 '("Comment thumbnail" . tumme-comment-thumbnail)) 1357 '("Comment thumbnail" . image-dired-comment-thumbnail))
1360 1358
1361 (define-key tumme-thumbnail-mode-map 1359 (define-key image-dired-thumbnail-mode-map
1362 [menu-bar tumme tumme-refresh-thumb] 1360 [menu-bar image-dired image-dired-refresh-thumb]
1363 '("Refresh thumb" . tumme-refresh-thumb)) 1361 '("Refresh thumb" . image-dired-refresh-thumb))
1364 (define-key tumme-thumbnail-mode-map 1362 (define-key image-dired-thumbnail-mode-map
1365 [menu-bar tumme tumme-line-up-dynamic] 1363 [menu-bar image-dired image-dired-line-up-dynamic]
1366 '("Dynamic line up" . tumme-line-up-dynamic)) 1364 '("Dynamic line up" . image-dired-line-up-dynamic))
1367 (define-key tumme-thumbnail-mode-map 1365 (define-key image-dired-thumbnail-mode-map
1368 [menu-bar tumme tumme-line-up] 1366 [menu-bar image-dired image-dired-line-up]
1369 '("Line up thumbnails" . tumme-line-up)) 1367 '("Line up thumbnails" . image-dired-line-up))
1370 1368
1371 (define-key tumme-thumbnail-mode-map 1369 (define-key image-dired-thumbnail-mode-map
1372 [menu-bar tumme tumme-rotate-thumbnail-left] 1370 [menu-bar image-dired image-dired-rotate-thumbnail-left]
1373 '("Rotate thumbnail left" . tumme-rotate-thumbnail-left)) 1371 '("Rotate thumbnail left" . image-dired-rotate-thumbnail-left))
1374 (define-key tumme-thumbnail-mode-map 1372 (define-key image-dired-thumbnail-mode-map
1375 [menu-bar tumme tumme-rotate-thumbnail-right] 1373 [menu-bar image-dired image-dired-rotate-thumbnail-right]
1376 '("Rotate thumbnail right" . tumme-rotate-thumbnail-right)) 1374 '("Rotate thumbnail right" . image-dired-rotate-thumbnail-right))
1377 1375
1378 (define-key tumme-thumbnail-mode-map 1376 (define-key image-dired-thumbnail-mode-map
1379 [menu-bar tumme tumme-rotate-original-left] 1377 [menu-bar image-dired image-dired-rotate-original-left]
1380 '("Rotate original left" . tumme-rotate-original-left)) 1378 '("Rotate original left" . image-dired-rotate-original-left))
1381 (define-key tumme-thumbnail-mode-map 1379 (define-key image-dired-thumbnail-mode-map
1382 [menu-bar tumme tumme-rotate-original-right] 1380 [menu-bar image-dired image-dired-rotate-original-right]
1383 '("Rotate original right" . tumme-rotate-original-right)) 1381 '("Rotate original right" . image-dired-rotate-original-right))
1384 1382
1385 (define-key tumme-thumbnail-mode-map 1383 (define-key image-dired-thumbnail-mode-map
1386 [menu-bar tumme tumme-toggle-movement-tracking] 1384 [menu-bar image-dired image-dired-toggle-movement-tracking]
1387 '("Toggle movement tracking on/off" . tumme-toggle-movement-tracking)) 1385 '("Toggle movement tracking on/off" . image-dired-toggle-movement-tracking))
1388 1386
1389 (define-key tumme-thumbnail-mode-map 1387 (define-key image-dired-thumbnail-mode-map
1390 [menu-bar tumme tumme-jump-original-dired-buffer] 1388 [menu-bar image-dired image-dired-jump-original-dired-buffer]
1391 '("Jump to dired buffer" . tumme-jump-original-dired-buffer)) 1389 '("Jump to dired buffer" . image-dired-jump-original-dired-buffer))
1392 (define-key tumme-thumbnail-mode-map 1390 (define-key image-dired-thumbnail-mode-map
1393 [menu-bar tumme tumme-track-original-file] 1391 [menu-bar image-dired image-dired-track-original-file]
1394 '("Track original" . tumme-track-original-file)) 1392 '("Track original" . image-dired-track-original-file))
1395 1393
1396 (define-key tumme-thumbnail-mode-map 1394 (define-key image-dired-thumbnail-mode-map
1397 [menu-bar tumme tumme-flag-thumb-original-file] 1395 [menu-bar image-dired image-dired-flag-thumb-original-file]
1398 '("Flag original for deletion" . tumme-flag-thumb-original-file)) 1396 '("Flag original for deletion" . image-dired-flag-thumb-original-file))
1399 (define-key tumme-thumbnail-mode-map 1397 (define-key image-dired-thumbnail-mode-map
1400 [menu-bar tumme tumme-unmark-thumb-original-file] 1398 [menu-bar image-dired image-dired-unmark-thumb-original-file]
1401 '("Unmark original" . tumme-unmark-thumb-original-file)) 1399 '("Unmark original" . image-dired-unmark-thumb-original-file))
1402 (define-key tumme-thumbnail-mode-map 1400 (define-key image-dired-thumbnail-mode-map
1403 [menu-bar tumme tumme-mark-thumb-original-file] 1401 [menu-bar image-dired image-dired-mark-thumb-original-file]
1404 '("Mark original" . tumme-mark-thumb-original-file)) 1402 '("Mark original" . image-dired-mark-thumb-original-file))
1405 1403
1406 (define-key tumme-thumbnail-mode-map 1404 (define-key image-dired-thumbnail-mode-map
1407 [menu-bar tumme tumme-thumbnail-display-external] 1405 [menu-bar image-dired image-dired-thumbnail-display-external]
1408 '("Display in external viewer" . tumme-thumbnail-display-external)) 1406 '("Display in external viewer" . image-dired-thumbnail-display-external))
1409 (define-key tumme-thumbnail-mode-map 1407 (define-key image-dired-thumbnail-mode-map
1410 [menu-bar tumme tumme-display-thumbnail-original-image] 1408 [menu-bar image-dired image-dired-display-thumbnail-original-image]
1411 '("Display image" . tumme-display-thumbnail-original-image))) 1409 '("Display image" . image-dired-display-thumbnail-original-image)))
1412 1410
1413(defvar tumme-display-image-mode-map (make-sparse-keymap) 1411(defvar image-dired-display-image-mode-map (make-sparse-keymap)
1414 "Keymap for `tumme-display-image-mode'.") 1412 "Keymap for `image-dired-display-image-mode'.")
1415 1413
1416(defun tumme-define-display-image-mode-keymap () 1414(defun image-dired-define-display-image-mode-keymap ()
1417 "Define keymap for `tumme-display-image-mode'." 1415 "Define keymap for `image-dired-display-image-mode'."
1418 1416
1419 ;; Keys 1417 ;; Keys
1420 (define-key tumme-display-image-mode-map "q" 'tumme-kill-buffer-and-window) 1418 (define-key image-dired-display-image-mode-map "q" 'image-dired-kill-buffer-and-window)
1421 1419
1422 (define-key tumme-display-image-mode-map "f" 1420 (define-key image-dired-display-image-mode-map "f"
1423 'tumme-display-current-image-full) 1421 'image-dired-display-current-image-full)
1424 1422
1425 (define-key tumme-display-image-mode-map "s" 1423 (define-key image-dired-display-image-mode-map "s"
1426 'tumme-display-current-image-sized) 1424 'image-dired-display-current-image-sized)
1427 1425
1428 ;; Menu 1426 ;; Menu
1429 (define-key tumme-display-image-mode-map [menu-bar tumme] 1427 (define-key image-dired-display-image-mode-map [menu-bar image-dired]
1430 (cons "Tumme" (make-sparse-keymap "Tumme"))) 1428 (cons "Image-Dired" (make-sparse-keymap "Image-Dired")))
1431 1429
1432 (define-key tumme-display-image-mode-map 1430 (define-key image-dired-display-image-mode-map
1433 [menu-bar tumme tumme-kill-buffer-and-window] 1431 [menu-bar image-dired image-dired-kill-buffer-and-window]
1434 '("Quit" . tumme-kill-buffer-and-window)) 1432 '("Quit" . image-dired-kill-buffer-and-window))
1435 1433
1436 (define-key tumme-display-image-mode-map 1434 (define-key image-dired-display-image-mode-map
1437 [menu-bar tumme tumme-display-current-image-sized] 1435 [menu-bar image-dired image-dired-display-current-image-sized]
1438 '("Display original, sized to fit" . tumme-display-current-image-sized)) 1436 '("Display original, sized to fit" . image-dired-display-current-image-sized))
1439 1437
1440 (define-key tumme-display-image-mode-map 1438 (define-key image-dired-display-image-mode-map
1441 [menu-bar tumme tumme-display-current-image-full] 1439 [menu-bar image-dired image-dired-display-current-image-full]
1442 '("Display original, full size" . tumme-display-current-image-full)) 1440 '("Display original, full size" . image-dired-display-current-image-full))
1443 1441
1444 ) 1442 )
1445 1443
1446(defun tumme-display-current-image-full () 1444(defun image-dired-display-current-image-full ()
1447 "Display current image in full size." 1445 "Display current image in full size."
1448 (interactive) 1446 (interactive)
1449 (let ((file (tumme-original-file-name))) 1447 (let ((file (image-dired-original-file-name)))
1450 (if file 1448 (if file
1451 (progn 1449 (progn
1452 (tumme-display-image file t) 1450 (image-dired-display-image file t)
1453 (message "Full size image displayed")) 1451 (message "Full size image displayed"))
1454 (error "No original file name at point")))) 1452 (error "No original file name at point"))))
1455 1453
1456(defun tumme-display-current-image-sized () 1454(defun image-dired-display-current-image-sized ()
1457 "Display current image in sized to fit window dimensions." 1455 "Display current image in sized to fit window dimensions."
1458 (interactive) 1456 (interactive)
1459 (let ((file (tumme-original-file-name))) 1457 (let ((file (image-dired-original-file-name)))
1460 (if file 1458 (if file
1461 (progn 1459 (progn
1462 (tumme-display-image file) 1460 (image-dired-display-image file)
1463 (message "Full size image displayed")) 1461 (message "Full size image displayed"))
1464 (error "No original file name at point")))) 1462 (error "No original file name at point"))))
1465 1463
1466(define-derived-mode tumme-thumbnail-mode 1464(define-derived-mode image-dired-thumbnail-mode
1467 fundamental-mode "tumme-thumbnail" 1465 fundamental-mode "image-dired-thumbnail"
1468 "Browse and manipulate thumbnail images using dired. 1466 "Browse and manipulate thumbnail images using dired.
1469Use `tumme-dired' and `tumme-setup-dired-keybindings' to get a 1467Use `image-dired-dired' and `image-dired-setup-dired-keybindings' to get a
1470nice setup to start with." 1468nice setup to start with."
1471 (tumme-define-thumbnail-mode-keymap) 1469 (image-dired-define-thumbnail-mode-keymap)
1472 (message "tumme-thumbnail-mode enabled")) 1470 (message "image-dired-thumbnail-mode enabled"))
1473 1471
1474(define-derived-mode tumme-display-image-mode 1472(define-derived-mode image-dired-display-image-mode
1475 fundamental-mode "tumme-image-display" 1473 fundamental-mode "image-dired-image-display"
1476 "Mode for displaying and manipulating original image. 1474 "Mode for displaying and manipulating original image.
1477Resized or in full-size." 1475Resized or in full-size."
1478 (tumme-define-display-image-mode-keymap) 1476 (image-dired-define-display-image-mode-keymap)
1479 (message "tumme-display-image-mode enabled")) 1477 (message "image-dired-display-image-mode enabled"))
1480 1478
1481;;;###autoload 1479;;;###autoload
1482(defun tumme-setup-dired-keybindings () 1480(defun image-dired-setup-dired-keybindings ()
1483 "Setup easy-to-use keybindings for the commands to be used in dired mode. 1481 "Setup easy-to-use keybindings for the commands to be used in dired mode.
1484Note that n, p and <down> and <up> will be hijacked and bound to 1482Note that n, p and <down> and <up> will be hijacked and bound to
1485`tumme-dired-x-line'." 1483`image-dired-dired-x-line'."
1486 (interactive) 1484 (interactive)
1487 1485
1488 ;; Hijack previous and next line movement. Let C-p and C-b be 1486 ;; Hijack previous and next line movement. Let C-p and C-b be
1489 ;; though... 1487 ;; though...
1490 1488
1491 (define-key dired-mode-map "p" 'tumme-dired-previous-line) 1489 (define-key dired-mode-map "p" 'image-dired-dired-previous-line)
1492 (define-key dired-mode-map "n" 'tumme-dired-next-line) 1490 (define-key dired-mode-map "n" 'image-dired-dired-next-line)
1493 (define-key dired-mode-map [up] 'tumme-dired-previous-line) 1491 (define-key dired-mode-map [up] 'image-dired-dired-previous-line)
1494 (define-key dired-mode-map [down] 'tumme-dired-next-line) 1492 (define-key dired-mode-map [down] 'image-dired-dired-next-line)
1495 1493
1496 (define-key dired-mode-map (kbd "C-S-n") 'tumme-next-line-and-display) 1494 (define-key dired-mode-map (kbd "C-S-n") 'image-dired-next-line-and-display)
1497 (define-key dired-mode-map (kbd "C-S-p") 'tumme-previous-line-and-display) 1495 (define-key dired-mode-map (kbd "C-S-p") 'image-dired-previous-line-and-display)
1498 (define-key dired-mode-map (kbd "C-S-m") 'tumme-mark-and-display-next) 1496 (define-key dired-mode-map (kbd "C-S-m") 'image-dired-mark-and-display-next)
1499 1497
1500 (define-key dired-mode-map "\C-td" 'tumme-display-thumbs) 1498 (define-key dired-mode-map "\C-td" 'image-dired-display-thumbs)
1501 (define-key dired-mode-map "\C-tt" 'tumme-tag-files) 1499 (define-key dired-mode-map "\C-tt" 'image-dired-tag-files)
1502 (define-key dired-mode-map "\C-tr" 'tumme-delete-tag) 1500 (define-key dired-mode-map "\C-tr" 'image-dired-delete-tag)
1503 (define-key dired-mode-map [tab] 'tumme-jump-thumbnail-buffer) 1501 (define-key dired-mode-map [tab] 'image-dired-jump-thumbnail-buffer)
1504 (define-key dired-mode-map "\C-ti" 'tumme-dired-display-image) 1502 (define-key dired-mode-map "\C-ti" 'image-dired-dired-display-image)
1505 (define-key dired-mode-map "\C-tx" 'tumme-dired-display-external) 1503 (define-key dired-mode-map "\C-tx" 'image-dired-dired-display-external)
1506 (define-key dired-mode-map "\C-ta" 'tumme-display-thumbs-append) 1504 (define-key dired-mode-map "\C-ta" 'image-dired-display-thumbs-append)
1507 (define-key dired-mode-map "\C-t." 'tumme-display-thumb) 1505 (define-key dired-mode-map "\C-t." 'image-dired-display-thumb)
1508 (define-key dired-mode-map "\C-tc" 'tumme-dired-comment-files) 1506 (define-key dired-mode-map "\C-tc" 'image-dired-dired-comment-files)
1509 (define-key dired-mode-map "\C-tf" 'tumme-mark-tagged-files) 1507 (define-key dired-mode-map "\C-tf" 'image-dired-mark-tagged-files)
1510 1508
1511 ;; Menu for dired 1509 ;; Menu for dired
1512 (define-key dired-mode-map [menu-bar tumme] 1510 (define-key dired-mode-map [menu-bar image-dired]
1513 (cons "Tumme" (make-sparse-keymap "Tumme"))) 1511 (cons "Image-Dired" (make-sparse-keymap "Image-Dired")))
1514 1512
1515 (define-key dired-mode-map [menu-bar tumme tumme-copy-with-exif-file-name] 1513 (define-key dired-mode-map [menu-bar image-dired image-dired-copy-with-exif-file-name]
1516 '("Copy with EXIF file name" . tumme-copy-with-exif-file-name)) 1514 '("Copy with EXIF file name" . image-dired-copy-with-exif-file-name))
1517 1515
1518 (define-key dired-mode-map [menu-bar tumme tumme-dired-comment-files] 1516 (define-key dired-mode-map [menu-bar image-dired image-dired-dired-comment-files]
1519 '("Comment files" . tumme-dired-comment-files)) 1517 '("Comment files" . image-dired-dired-comment-files))
1520 1518
1521 (define-key dired-mode-map [menu-bar tumme tumme-mark-tagged-files] 1519 (define-key dired-mode-map [menu-bar image-dired image-dired-mark-tagged-files]
1522 '("Mark tagged files" . tumme-mark-tagged-files)) 1520 '("Mark tagged files" . image-dired-mark-tagged-files))
1523 1521
1524 (define-key dired-mode-map [menu-bar tumme tumme-delete-tag] 1522 (define-key dired-mode-map [menu-bar image-dired image-dired-delete-tag]
1525 '("Remove tag from files" . tumme-delete-tag)) 1523 '("Remove tag from files" . image-dired-delete-tag))
1526 1524
1527 (define-key dired-mode-map [menu-bar tumme tumme-tag-files] 1525 (define-key dired-mode-map [menu-bar image-dired image-dired-tag-files]
1528 '("Tag files" . tumme-tag-files)) 1526 '("Tag files" . image-dired-tag-files))
1529 1527
1530 (define-key dired-mode-map [menu-bar tumme tumme-jump-thumbnail-buffer] 1528 (define-key dired-mode-map [menu-bar image-dired image-dired-jump-thumbnail-buffer]
1531 '("Jump to thumbnail buffer" . tumme-jump-thumbnail-buffer)) 1529 '("Jump to thumbnail buffer" . image-dired-jump-thumbnail-buffer))
1532 1530
1533 (define-key dired-mode-map [menu-bar tumme tumme-toggle-movement-tracking] 1531 (define-key dired-mode-map [menu-bar image-dired image-dired-toggle-movement-tracking]
1534 '("Toggle movement tracking" . tumme-toggle-movement-tracking)) 1532 '("Toggle movement tracking" . image-dired-toggle-movement-tracking))
1535 1533
1536 (define-key dired-mode-map 1534 (define-key dired-mode-map
1537 [menu-bar tumme tumme-toggle-append-browsing] 1535 [menu-bar image-dired image-dired-toggle-append-browsing]
1538 '("Toggle append browsing" . tumme-toggle-append-browsing)) 1536 '("Toggle append browsing" . image-dired-toggle-append-browsing))
1539 1537
1540 (define-key dired-mode-map 1538 (define-key dired-mode-map
1541 [menu-bar tumme tumme-toggle-disp-props] 1539 [menu-bar image-dired image-dired-toggle-disp-props]
1542 '("Toggle display properties" . tumme-toggle-dired-display-properties)) 1540 '("Toggle display properties" . image-dired-toggle-dired-display-properties))
1543 1541
1544 (define-key dired-mode-map 1542 (define-key dired-mode-map
1545 [menu-bar tumme tumme-dired-display-external] 1543 [menu-bar image-dired image-dired-dired-display-external]
1546 '("Display in external viewer" . tumme-dired-display-external)) 1544 '("Display in external viewer" . image-dired-dired-display-external))
1547 (define-key dired-mode-map 1545 (define-key dired-mode-map
1548 [menu-bar tumme tumme-dired-display-image] 1546 [menu-bar image-dired image-dired-dired-display-image]
1549 '("Display image" . tumme-dired-display-image)) 1547 '("Display image" . image-dired-dired-display-image))
1550 (define-key dired-mode-map 1548 (define-key dired-mode-map
1551 [menu-bar tumme tumme-display-thumb] 1549 [menu-bar image-dired image-dired-display-thumb]
1552 '("Display this thumbnail" . tumme-display-thumb)) 1550 '("Display this thumbnail" . image-dired-display-thumb))
1553 (define-key dired-mode-map 1551 (define-key dired-mode-map
1554 [menu-bar tumme tumme-display-thumbs-append] 1552 [menu-bar image-dired image-dired-display-thumbs-append]
1555 '("Display thumbnails append" . tumme-display-thumbs-append)) 1553 '("Display thumbnails append" . image-dired-display-thumbs-append))
1556 (define-key dired-mode-map 1554 (define-key dired-mode-map
1557 [menu-bar tumme tumme-display-thumbs] 1555 [menu-bar image-dired image-dired-display-thumbs]
1558 '("Display thumbnails" . tumme-display-thumbs)) 1556 '("Display thumbnails" . image-dired-display-thumbs))
1559 1557
1560 (define-key dired-mode-map 1558 (define-key dired-mode-map
1561 [menu-bar tumme tumme-create-thumbs] 1559 [menu-bar image-dired image-dired-create-thumbs]
1562 '("Create thumbnails for marked files" . tumme-create-thumbs)) 1560 '("Create thumbnails for marked files" . image-dired-create-thumbs))
1563 1561
1564 (define-key dired-mode-map 1562 (define-key dired-mode-map
1565 [menu-bar tumme tumme-mark-and-display-next] 1563 [menu-bar image-dired image-dired-mark-and-display-next]
1566 '("Mark and display next" . tumme-mark-and-display-next)) 1564 '("Mark and display next" . image-dired-mark-and-display-next))
1567 (define-key dired-mode-map 1565 (define-key dired-mode-map
1568 [menu-bar tumme tumme-previous-line-and-display] 1566 [menu-bar image-dired image-dired-previous-line-and-display]
1569 '("Display thumb for previous file" . tumme-previous-line-and-display)) 1567 '("Display thumb for previous file" . image-dired-previous-line-and-display))
1570 (define-key dired-mode-map 1568 (define-key dired-mode-map
1571 [menu-bar tumme tumme-next-line-and-display] 1569 [menu-bar image-dired image-dired-next-line-and-display]
1572 '("Display thumb for next file" . tumme-next-line-and-display))) 1570 '("Display thumb for next file" . image-dired-next-line-and-display)))
1573 1571
1574(defun tumme-create-thumbs (&optional arg) 1572(defun image-dired-create-thumbs (&optional arg)
1575 "Create thumbnail images for all marked files in dired. 1573 "Create thumbnail images for all marked files in dired.
1576With prefix argument ARG, create thumbnails even if they already exist 1574With prefix argument ARG, create thumbnails even if they already exist
1577\(i.e. use this to refresh your thumbnails)." 1575\(i.e. use this to refresh your thumbnails)."
@@ -1580,7 +1578,7 @@ With prefix argument ARG, create thumbnails even if they already exist
1580 (setq files (dired-get-marked-files)) 1578 (setq files (dired-get-marked-files))
1581 (mapcar 1579 (mapcar
1582 (lambda (curr-file) 1580 (lambda (curr-file)
1583 (setq thumb-name (tumme-thumb-name curr-file)) 1581 (setq thumb-name (image-dired-thumb-name curr-file))
1584 ;; If the user overrides the exist check, we must clear the 1582 ;; If the user overrides the exist check, we must clear the
1585 ;; image cache so that if the user wants to display the 1583 ;; image cache so that if the user wants to display the
1586 ;; thumnail, it is not fetched from cache. 1584 ;; thumnail, it is not fetched from cache.
@@ -1588,49 +1586,49 @@ With prefix argument ARG, create thumbnails even if they already exist
1588 (clear-image-cache)) 1586 (clear-image-cache))
1589 (if (or (not (file-exists-p thumb-name)) 1587 (if (or (not (file-exists-p thumb-name))
1590 arg) 1588 arg)
1591 (if (not (= 0 (tumme-create-thumb curr-file 1589 (if (not (= 0 (image-dired-create-thumb curr-file
1592 (tumme-thumb-name curr-file)))) 1590 (image-dired-thumb-name curr-file))))
1593 (error "Thumb could not be created")))) 1591 (error "Thumb could not be created"))))
1594 files))) 1592 files)))
1595 1593
1596(defvar tumme-slideshow-timer nil 1594(defvar image-dired-slideshow-timer nil
1597 "Slideshow timer.") 1595 "Slideshow timer.")
1598 1596
1599(defvar tumme-slideshow-count 0 1597(defvar image-dired-slideshow-count 0
1600 "Keeping track on number of images in slideshow.") 1598 "Keeping track on number of images in slideshow.")
1601 1599
1602(defvar tumme-slideshow-times 0 1600(defvar image-dired-slideshow-times 0
1603 "Number of pictures to display in slideshow.") 1601 "Number of pictures to display in slideshow.")
1604 1602
1605(defun tumme-slideshow-step () 1603(defun image-dired-slideshow-step ()
1606 "Step to next file, if `tumme-slideshow-times' has not been reached." 1604 "Step to next file, if `image-dired-slideshow-times' has not been reached."
1607 (if (< tumme-slideshow-count tumme-slideshow-times) 1605 (if (< image-dired-slideshow-count image-dired-slideshow-times)
1608 (progn 1606 (progn
1609 (message "%s" (1+ tumme-slideshow-count)) 1607 (message "%s" (1+ image-dired-slideshow-count))
1610 (setq tumme-slideshow-count (1+ tumme-slideshow-count)) 1608 (setq image-dired-slideshow-count (1+ image-dired-slideshow-count))
1611 (tumme-next-line-and-display)) 1609 (image-dired-next-line-and-display))
1612 (tumme-slideshow-stop))) 1610 (image-dired-slideshow-stop)))
1613 1611
1614(defun tumme-slideshow-start () 1612(defun image-dired-slideshow-start ()
1615 "Start slideshow. 1613 "Start slideshow.
1616Ask user for number of images to show and the delay in between." 1614Ask user for number of images to show and the delay in between."
1617 (interactive) 1615 (interactive)
1618 (setq tumme-slideshow-count 0) 1616 (setq image-dired-slideshow-count 0)
1619 (setq tumme-slideshow-times (string-to-number (read-string "How many: "))) 1617 (setq image-dired-slideshow-times (string-to-number (read-string "How many: ")))
1620 (let ((repeat (string-to-number 1618 (let ((repeat (string-to-number
1621 (read-string 1619 (read-string
1622 "Delay, in seconds. Decimals are accepted : " "1")))) 1620 "Delay, in seconds. Decimals are accepted : " "1"))))
1623 (setq tumme-slideshow-timer 1621 (setq image-dired-slideshow-timer
1624 (run-with-timer 1622 (run-with-timer
1625 0 repeat 1623 0 repeat
1626 'tumme-slideshow-step)))) 1624 'image-dired-slideshow-step))))
1627 1625
1628(defun tumme-slideshow-stop () 1626(defun image-dired-slideshow-stop ()
1629 "Cancel slideshow." 1627 "Cancel slideshow."
1630 (interactive) 1628 (interactive)
1631 (cancel-timer tumme-slideshow-timer)) 1629 (cancel-timer image-dired-slideshow-timer))
1632 1630
1633(defun tumme-delete-char () 1631(defun image-dired-delete-char ()
1634 "Remove current thumbnail from thumbnail buffer and line up." 1632 "Remove current thumbnail from thumbnail buffer and line up."
1635 (interactive) 1633 (interactive)
1636 (let ((inhibit-read-only t)) 1634 (let ((inhibit-read-only t))
@@ -1639,133 +1637,133 @@ Ask user for number of images to show and the delay in between."
1639 (delete-char 1)))) 1637 (delete-char 1))))
1640 1638
1641;;;###autoload 1639;;;###autoload
1642(defun tumme-display-thumbs-append () 1640(defun image-dired-display-thumbs-append ()
1643 "Append thumbnails to `tumme-thumbnail-buffer'." 1641 "Append thumbnails to `image-dired-thumbnail-buffer'."
1644 (interactive) 1642 (interactive)
1645 (tumme-display-thumbs nil t t)) 1643 (image-dired-display-thumbs nil t t))
1646 1644
1647;;;###autoload 1645;;;###autoload
1648(defun tumme-display-thumb () 1646(defun image-dired-display-thumb ()
1649 "Shorthand for `tumme-display-thumbs' with prefix argument." 1647 "Shorthand for `image-dired-display-thumbs' with prefix argument."
1650 (interactive) 1648 (interactive)
1651 (tumme-display-thumbs t nil t)) 1649 (image-dired-display-thumbs t nil t))
1652 1650
1653(defun tumme-line-up () 1651(defun image-dired-line-up ()
1654 "Line up thumbnails according to `tumme-thumbs-per-row'. 1652 "Line up thumbnails according to `image-dired-thumbs-per-row'.
1655See also `tumme-line-up-dynamic'." 1653See also `image-dired-line-up-dynamic'."
1656 (interactive) 1654 (interactive)
1657 (let ((inhibit-read-only t)) 1655 (let ((inhibit-read-only t))
1658 (goto-char (point-min)) 1656 (goto-char (point-min))
1659 (while (and (not (tumme-image-at-point-p)) 1657 (while (and (not (image-dired-image-at-point-p))
1660 (not (eobp))) 1658 (not (eobp)))
1661 (delete-char 1)) 1659 (delete-char 1))
1662 (while (not (eobp)) 1660 (while (not (eobp))
1663 (forward-char) 1661 (forward-char)
1664 (while (and (not (tumme-image-at-point-p)) 1662 (while (and (not (image-dired-image-at-point-p))
1665 (not (eobp))) 1663 (not (eobp)))
1666 (delete-char 1))) 1664 (delete-char 1)))
1667 (goto-char (point-min)) 1665 (goto-char (point-min))
1668 (let ((count 0)) 1666 (let ((count 0))
1669 (while (not (eobp)) 1667 (while (not (eobp))
1670 (forward-char) 1668 (forward-char)
1671 (if (= tumme-thumbs-per-row 1) 1669 (if (= image-dired-thumbs-per-row 1)
1672 (insert "\n") 1670 (insert "\n")
1673 (insert " ") 1671 (insert " ")
1674 (setq count (1+ count)) 1672 (setq count (1+ count))
1675 (when (and (= count (- tumme-thumbs-per-row 1)) 1673 (when (and (= count (- image-dired-thumbs-per-row 1))
1676 (not (eobp))) 1674 (not (eobp)))
1677 (forward-char) 1675 (forward-char)
1678 (insert "\n") 1676 (insert "\n")
1679 (setq count 0))))) 1677 (setq count 0)))))
1680 (goto-char (point-min)))) 1678 (goto-char (point-min))))
1681 1679
1682(defun tumme-line-up-dynamic () 1680(defun image-dired-line-up-dynamic ()
1683 "Line up thumbnails images dynamically. 1681 "Line up thumbnails images dynamically.
1684Calculate how many thumbnails fit." 1682Calculate how many thumbnails fit."
1685 (interactive) 1683 (interactive)
1686 (let* ((char-width (frame-char-width)) 1684 (let* ((char-width (frame-char-width))
1687 (width (tumme-window-width-pixels (tumme-thumbnail-window))) 1685 (width (image-dired-window-width-pixels (image-dired-thumbnail-window)))
1688 (tumme-thumbs-per-row 1686 (image-dired-thumbs-per-row
1689 (/ width 1687 (/ width
1690 (+ (* 2 tumme-thumb-relief) 1688 (+ (* 2 image-dired-thumb-relief)
1691 (* 2 tumme-thumb-margin) 1689 (* 2 image-dired-thumb-margin)
1692 tumme-thumb-width char-width)))) 1690 image-dired-thumb-width char-width))))
1693 (tumme-line-up))) 1691 (image-dired-line-up)))
1694 1692
1695(defun tumme-line-up-interactive () 1693(defun image-dired-line-up-interactive ()
1696 "Line up thumbnails interactively. 1694 "Line up thumbnails interactively.
1697Ask user how many thumbnails should be displayed per row." 1695Ask user how many thumbnails should be displayed per row."
1698 (interactive) 1696 (interactive)
1699 (let ((tumme-thumbs-per-row 1697 (let ((image-dired-thumbs-per-row
1700 (string-to-number (read-string "How many thumbs per row: ")))) 1698 (string-to-number (read-string "How many thumbs per row: "))))
1701 (if (not (> tumme-thumbs-per-row 0)) 1699 (if (not (> image-dired-thumbs-per-row 0))
1702 (message "Number must be greater than 0") 1700 (message "Number must be greater than 0")
1703 (tumme-line-up)))) 1701 (image-dired-line-up))))
1704 1702
1705(defun tumme-thumbnail-display-external () 1703(defun image-dired-thumbnail-display-external ()
1706 "Display original image for thumbnail at point using external viewer." 1704 "Display original image for thumbnail at point using external viewer."
1707 (interactive) 1705 (interactive)
1708 (let ((file (tumme-original-file-name))) 1706 (let ((file (image-dired-original-file-name)))
1709 (if (not (tumme-image-at-point-p)) 1707 (if (not (image-dired-image-at-point-p))
1710 (message "No thumbnail at point") 1708 (message "No thumbnail at point")
1711 (if (not file) 1709 (if (not file)
1712 (message "No original file name found") 1710 (message "No original file name found")
1713 (call-process shell-file-name nil nil nil shell-command-switch 1711 (call-process shell-file-name nil nil nil shell-command-switch
1714 (format "%s \"%s\"" tumme-external-viewer file)))))) 1712 (format "%s \"%s\"" image-dired-external-viewer file))))))
1715 1713
1716;;;###autoload 1714;;;###autoload
1717(defun tumme-dired-display-external () 1715(defun image-dired-dired-display-external ()
1718 "Display file at point using an external viewer." 1716 "Display file at point using an external viewer."
1719 (interactive) 1717 (interactive)
1720 (let ((file (dired-get-filename))) 1718 (let ((file (dired-get-filename)))
1721 (call-process shell-file-name nil nil nil shell-command-switch 1719 (call-process shell-file-name nil nil nil shell-command-switch
1722 (format "%s \"%s\"" tumme-external-viewer file)))) 1720 (format "%s \"%s\"" image-dired-external-viewer file))))
1723 1721
1724(defun tumme-window-width-pixels (window) 1722(defun image-dired-window-width-pixels (window)
1725 "Calculate WINDOW width in pixels." 1723 "Calculate WINDOW width in pixels."
1726 (* (window-width window) (frame-char-width))) 1724 (* (window-width window) (frame-char-width)))
1727 1725
1728(defun tumme-window-height-pixels (window) 1726(defun image-dired-window-height-pixels (window)
1729 "Calculate WINDOW height in pixels." 1727 "Calculate WINDOW height in pixels."
1730 ;; Note: The mode-line consumes one line 1728 ;; Note: The mode-line consumes one line
1731 (* (- (window-height window) 1) (frame-char-height))) 1729 (* (- (window-height window) 1) (frame-char-height)))
1732 1730
1733(defun tumme-display-window () 1731(defun image-dired-display-window ()
1734 "Return window where `tumme-display-image-buffer' is visible." 1732 "Return window where `image-dired-display-image-buffer' is visible."
1735 (get-window-with-predicate 1733 (get-window-with-predicate
1736 (lambda (window) 1734 (lambda (window)
1737 (equal (buffer-name (window-buffer window)) tumme-display-image-buffer)) 1735 (equal (buffer-name (window-buffer window)) image-dired-display-image-buffer))
1738 nil t)) 1736 nil t))
1739 1737
1740(defun tumme-thumbnail-window () 1738(defun image-dired-thumbnail-window ()
1741 "Return window where `tumme-thumbnail-buffer' is visible." 1739 "Return window where `image-dired-thumbnail-buffer' is visible."
1742 (get-window-with-predicate 1740 (get-window-with-predicate
1743 (lambda (window) 1741 (lambda (window)
1744 (equal (buffer-name (window-buffer window)) tumme-thumbnail-buffer)) 1742 (equal (buffer-name (window-buffer window)) image-dired-thumbnail-buffer))
1745 nil t)) 1743 nil t))
1746 1744
1747(defun tumme-associated-dired-buffer-window () 1745(defun image-dired-associated-dired-buffer-window ()
1748 "Return window where associated dired buffer is visible." 1746 "Return window where associated dired buffer is visible."
1749 (let (buf) 1747 (let (buf)
1750 (if (tumme-image-at-point-p) 1748 (if (image-dired-image-at-point-p)
1751 (progn 1749 (progn
1752 (setq buf (tumme-associated-dired-buffer)) 1750 (setq buf (image-dired-associated-dired-buffer))
1753 (get-window-with-predicate 1751 (get-window-with-predicate
1754 (lambda (window) 1752 (lambda (window)
1755 (equal (window-buffer window) buf)))) 1753 (equal (window-buffer window) buf))))
1756 (error "No thumbnail image at point")))) 1754 (error "No thumbnail image at point"))))
1757 1755
1758(defun tumme-display-window-width () 1756(defun image-dired-display-window-width ()
1759 "Return width, in pixels, of tumme's image display window." 1757 "Return width, in pixels, of image-dired's image display window."
1760 (- (tumme-window-width-pixels (tumme-display-window)) 1758 (- (image-dired-window-width-pixels (image-dired-display-window))
1761 tumme-display-window-width-correction)) 1759 image-dired-display-window-width-correction))
1762 1760
1763(defun tumme-display-window-height () 1761(defun image-dired-display-window-height ()
1764 "Return height, in pixels, of tumme's image display window." 1762 "Return height, in pixels, of image-dired's image display window."
1765 (- (tumme-window-height-pixels (tumme-display-window)) 1763 (- (image-dired-window-height-pixels (image-dired-display-window))
1766 tumme-display-window-height-correction)) 1764 image-dired-display-window-height-correction))
1767 1765
1768(defun tumme-display-image (file &optional original-size) 1766(defun image-dired-display-image (file &optional original-size)
1769 "Display image FILE in image buffer. 1767 "Display image FILE in image buffer.
1770Use this when you want to display the image, semi sized, in a new 1768Use this when you want to display the image, semi sized, in a new
1771window. The image is sized to fit the display window (using a 1769window. The image is sized to fit the display window (using a
@@ -1775,18 +1773,18 @@ should feel snappy enough.
1775 1773
1776If optional argument ORIGINAL-SIZE is non-nil, display image in its 1774If optional argument ORIGINAL-SIZE is non-nil, display image in its
1777original size." 1775original size."
1778 (let ((new-file (expand-file-name tumme-temp-image-file)) 1776 (let ((new-file (expand-file-name image-dired-temp-image-file))
1779 width height command ret) 1777 width height command ret)
1780 (setq file (expand-file-name file)) 1778 (setq file (expand-file-name file))
1781 (if (not original-size) 1779 (if (not original-size)
1782 (progn 1780 (progn
1783 (setq width (tumme-display-window-width)) 1781 (setq width (image-dired-display-window-width))
1784 (setq height (tumme-display-window-height)) 1782 (setq height (image-dired-display-window-height))
1785 (setq command 1783 (setq command
1786 (format-spec 1784 (format-spec
1787 tumme-cmd-create-temp-image-options 1785 image-dired-cmd-create-temp-image-options
1788 (list 1786 (list
1789 (cons ?p tumme-cmd-create-temp-image-program) 1787 (cons ?p image-dired-cmd-create-temp-image-program)
1790 (cons ?w width) 1788 (cons ?w width)
1791 (cons ?h height) 1789 (cons ?h height)
1792 (cons ?f file) 1790 (cons ?f file)
@@ -1796,55 +1794,55 @@ original size."
1796 (if (not (= 0 ret)) 1794 (if (not (= 0 ret))
1797 (error "Could not resize image"))) 1795 (error "Could not resize image")))
1798 (copy-file file new-file t)) 1796 (copy-file file new-file t))
1799 (with-current-buffer (tumme-create-display-image-buffer) 1797 (with-current-buffer (image-dired-create-display-image-buffer)
1800 (let ((inhibit-read-only t)) 1798 (let ((inhibit-read-only t))
1801 (erase-buffer) 1799 (erase-buffer)
1802 (clear-image-cache) 1800 (clear-image-cache)
1803 (tumme-insert-image tumme-temp-image-file 'jpeg 0 0) 1801 (image-dired-insert-image image-dired-temp-image-file 'jpeg 0 0)
1804 (goto-char (point-min)) 1802 (goto-char (point-min))
1805 (tumme-update-property 'original-file-name file))))) 1803 (image-dired-update-property 'original-file-name file)))))
1806 1804
1807(defun tumme-display-thumbnail-original-image (&optional arg) 1805(defun image-dired-display-thumbnail-original-image (&optional arg)
1808 "Display current thumbnail's original image in display buffer. 1806 "Display current thumbnail's original image in display buffer.
1809See documentation for `tumme-display-image' for more information. 1807See documentation for `image-dired-display-image' for more information.
1810With prefix argument ARG, display image in its original size." 1808With prefix argument ARG, display image in its original size."
1811 (interactive "P") 1809 (interactive "P")
1812 (let ((file (tumme-original-file-name))) 1810 (let ((file (image-dired-original-file-name)))
1813 (if (not (string-equal major-mode "tumme-thumbnail-mode")) 1811 (if (not (string-equal major-mode "image-dired-thumbnail-mode"))
1814 (message "Not in tumme-thumbnail-mode") 1812 (message "Not in image-dired-thumbnail-mode")
1815 (if (not (tumme-image-at-point-p)) 1813 (if (not (image-dired-image-at-point-p))
1816 (message "No thumbnail at point") 1814 (message "No thumbnail at point")
1817 (if (not file) 1815 (if (not file)
1818 (message "No original file name found") 1816 (message "No original file name found")
1819 (tumme-create-display-image-buffer) 1817 (image-dired-create-display-image-buffer)
1820 (display-buffer tumme-display-image-buffer) 1818 (display-buffer image-dired-display-image-buffer)
1821 (tumme-display-image file arg)))))) 1819 (image-dired-display-image file arg))))))
1822 1820
1823 1821
1824;;;###autoload 1822;;;###autoload
1825(defun tumme-dired-display-image (&optional arg) 1823(defun image-dired-dired-display-image (&optional arg)
1826 "Display current image file. 1824 "Display current image file.
1827See documentation for `tumme-display-image' for more information. 1825See documentation for `image-dired-display-image' for more information.
1828With prefix argument ARG, display image in its original size." 1826With prefix argument ARG, display image in its original size."
1829 (interactive "P") 1827 (interactive "P")
1830 (tumme-create-display-image-buffer) 1828 (image-dired-create-display-image-buffer)
1831 (display-buffer tumme-display-image-buffer) 1829 (display-buffer image-dired-display-image-buffer)
1832 (tumme-display-image (dired-get-filename) arg)) 1830 (image-dired-display-image (dired-get-filename) arg))
1833 1831
1834(defun tumme-image-at-point-p () 1832(defun image-dired-image-at-point-p ()
1835 "Return true if there is a tumme thumbnail at point." 1833 "Return true if there is a image-dired thumbnail at point."
1836 (get-text-property (point) 'tumme-thumbnail)) 1834 (get-text-property (point) 'image-dired-thumbnail))
1837 1835
1838(defun tumme-rotate-thumbnail (degrees) 1836(defun image-dired-rotate-thumbnail (degrees)
1839 "Rotate thumbnail DEGREES degrees." 1837 "Rotate thumbnail DEGREES degrees."
1840 (if (not (tumme-image-at-point-p)) 1838 (if (not (image-dired-image-at-point-p))
1841 (message "No thumbnail at point") 1839 (message "No thumbnail at point")
1842 (let ((file (tumme-thumb-name (tumme-original-file-name))) 1840 (let ((file (image-dired-thumb-name (image-dired-original-file-name)))
1843 command) 1841 command)
1844 (setq command (format-spec 1842 (setq command (format-spec
1845 tumme-cmd-rotate-thumbnail-options 1843 image-dired-cmd-rotate-thumbnail-options
1846 (list 1844 (list
1847 (cons ?p tumme-cmd-rotate-thumbnail-program) 1845 (cons ?p image-dired-cmd-rotate-thumbnail-program)
1848 (cons ?d degrees) 1846 (cons ?d degrees)
1849 (cons ?t (expand-file-name file))))) 1847 (cons ?t (expand-file-name file)))))
1850 (call-process shell-file-name nil nil nil shell-command-switch command) 1848 (call-process shell-file-name nil nil nil shell-command-switch command)
@@ -1852,76 +1850,76 @@ With prefix argument ARG, display image in its original size."
1852 ;; the current file but I do not know how to do that. Yet... 1850 ;; the current file but I do not know how to do that. Yet...
1853 (clear-image-cache)))) 1851 (clear-image-cache))))
1854 1852
1855(defun tumme-rotate-thumbnail-left () 1853(defun image-dired-rotate-thumbnail-left ()
1856 "Rotate thumbnail left (counter clockwise) 90 degrees. 1854 "Rotate thumbnail left (counter clockwise) 90 degrees.
1857The result of the rotation is displayed in the image display area 1855The result of the rotation is displayed in the image display area
1858and a confirmation is needed before the original image files is 1856and a confirmation is needed before the original image files is
1859overwritten. This confirmation can be turned off using 1857overwritten. This confirmation can be turned off using
1860`tumme-rotate-original-ask-before-overwrite'." 1858`image-dired-rotate-original-ask-before-overwrite'."
1861 (interactive) 1859 (interactive)
1862 (tumme-rotate-thumbnail "270")) 1860 (image-dired-rotate-thumbnail "270"))
1863 1861
1864(defun tumme-rotate-thumbnail-right () 1862(defun image-dired-rotate-thumbnail-right ()
1865 "Rotate thumbnail counter right (clockwise) 90 degrees. 1863 "Rotate thumbnail counter right (clockwise) 90 degrees.
1866The result of the rotation is displayed in the image display area 1864The result of the rotation is displayed in the image display area
1867and a confirmation is needed before the original image files is 1865and a confirmation is needed before the original image files is
1868overwritten. This confirmation can be turned off using 1866overwritten. This confirmation can be turned off using
1869`tumme-rotate-original-ask-before-overwrite'." 1867`image-dired-rotate-original-ask-before-overwrite'."
1870 (interactive) 1868 (interactive)
1871 (tumme-rotate-thumbnail "90")) 1869 (image-dired-rotate-thumbnail "90"))
1872 1870
1873(defun tumme-refresh-thumb () 1871(defun image-dired-refresh-thumb ()
1874 "Force creation of new image for current thumbnail." 1872 "Force creation of new image for current thumbnail."
1875 (interactive) 1873 (interactive)
1876 (let ((file (tumme-original-file-name))) 1874 (let ((file (image-dired-original-file-name)))
1877 (clear-image-cache) 1875 (clear-image-cache)
1878 (tumme-create-thumb file (tumme-thumb-name file)))) 1876 (image-dired-create-thumb file (image-dired-thumb-name file))))
1879 1877
1880(defun tumme-rotate-original (degrees) 1878(defun image-dired-rotate-original (degrees)
1881 "Rotate original image DEGREES degrees." 1879 "Rotate original image DEGREES degrees."
1882 (if (not (tumme-image-at-point-p)) 1880 (if (not (image-dired-image-at-point-p))
1883 (message "No image at point") 1881 (message "No image at point")
1884 (let ((file (tumme-original-file-name)) 1882 (let ((file (image-dired-original-file-name))
1885 command temp-file) 1883 command temp-file)
1886 (if (not (string-match "\.[jJ][pP[eE]?[gG]$" file)) 1884 (if (not (string-match "\.[jJ][pP[eE]?[gG]$" file))
1887 (error "Only JPEG images can be rotated!")) 1885 (error "Only JPEG images can be rotated!"))
1888 (setq command (format-spec 1886 (setq command (format-spec
1889 tumme-cmd-rotate-original-options 1887 image-dired-cmd-rotate-original-options
1890 (list 1888 (list
1891 (cons ?p tumme-cmd-rotate-original-program) 1889 (cons ?p image-dired-cmd-rotate-original-program)
1892 (cons ?d degrees) 1890 (cons ?d degrees)
1893 (cons ?o (expand-file-name file)) 1891 (cons ?o (expand-file-name file))
1894 (cons ?t tumme-temp-rotate-image-file)))) 1892 (cons ?t image-dired-temp-rotate-image-file))))
1895 (if (not (= 0 (call-process shell-file-name nil nil nil 1893 (if (not (= 0 (call-process shell-file-name nil nil nil
1896 shell-command-switch command))) 1894 shell-command-switch command)))
1897 (error "Could not rotate image") 1895 (error "Could not rotate image")
1898 (tumme-display-image tumme-temp-rotate-image-file) 1896 (image-dired-display-image image-dired-temp-rotate-image-file)
1899 (if (or (and tumme-rotate-original-ask-before-overwrite 1897 (if (or (and image-dired-rotate-original-ask-before-overwrite
1900 (y-or-n-p 1898 (y-or-n-p
1901 "Rotate to temp file OK. Overwrite original image? ")) 1899 "Rotate to temp file OK. Overwrite original image? "))
1902 (not tumme-rotate-original-ask-before-overwrite)) 1900 (not image-dired-rotate-original-ask-before-overwrite))
1903 (progn 1901 (progn
1904 (copy-file tumme-temp-rotate-image-file file t) 1902 (copy-file image-dired-temp-rotate-image-file file t)
1905 (tumme-refresh-thumb)) 1903 (image-dired-refresh-thumb))
1906 (tumme-display-image file)))))) 1904 (image-dired-display-image file))))))
1907 1905
1908(defun tumme-rotate-original-left () 1906(defun image-dired-rotate-original-left ()
1909 "Rotate original image left (counter clockwise) 90 degrees." 1907 "Rotate original image left (counter clockwise) 90 degrees."
1910 (interactive) 1908 (interactive)
1911 (tumme-rotate-original "270")) 1909 (image-dired-rotate-original "270"))
1912 1910
1913(defun tumme-rotate-original-right () 1911(defun image-dired-rotate-original-right ()
1914 "Rotate original image right (clockwise) 90 degrees." 1912 "Rotate original image right (clockwise) 90 degrees."
1915 (interactive) 1913 (interactive)
1916 (tumme-rotate-original "90")) 1914 (image-dired-rotate-original "90"))
1917 1915
1918(defun tumme-get-exif-file-name (file) 1916(defun image-dired-get-exif-file-name (file)
1919 "Use the image's EXIF information to return a unique file name. 1917 "Use the image's EXIF information to return a unique file name.
1920The file name should be unique as long as you do not take more than 1918The file name should be unique as long as you do not take more than
1921one picture per second. The original file name is suffixed at the end 1919one picture per second. The original file name is suffixed at the end
1922for traceability. The format of the returned file name is 1920for traceability. The format of the returned file name is
1923YYYY_MM_DD_HH_MM_DD_ORIG_FILE_NAME.jpg. Used from 1921YYYY_MM_DD_HH_MM_DD_ORIG_FILE_NAME.jpg. Used from
1924`tumme-copy-with-exif-file-name'." 1922`image-dired-copy-with-exif-file-name'."
1925 (let (data no-exif-data-found) 1923 (let (data no-exif-data-found)
1926 (if (not (string-match "\.[Jj][Pp][Ee]?[Gg]$" (expand-file-name file))) 1924 (if (not (string-match "\.[Jj][Pp][Ee]?[Gg]$" (expand-file-name file)))
1927 (progn 1925 (progn
@@ -1930,7 +1928,7 @@ YYYY_MM_DD_HH_MM_DD_ORIG_FILE_NAME.jpg. Used from
1930 (format-time-string 1928 (format-time-string
1931 "%Y:%m:%d %H:%M:%S" 1929 "%Y:%m:%d %H:%M:%S"
1932 (nth 5 (file-attributes (expand-file-name file)))))) 1930 (nth 5 (file-attributes (expand-file-name file))))))
1933 (setq data (tumme-get-exif-data (expand-file-name file) 1931 (setq data (image-dired-get-exif-data (expand-file-name file)
1934 "DateTimeOriginal"))) 1932 "DateTimeOriginal")))
1935 (while (string-match "[ :]" data) 1933 (while (string-match "[ :]" data)
1936 (setq data (replace-match "_" nil nil data))) 1934 (setq data (replace-match "_" nil nil data)))
@@ -1940,42 +1938,42 @@ YYYY_MM_DD_HH_MM_DD_ORIG_FILE_NAME.jpg. Used from
1940 "_") 1938 "_")
1941 (file-name-nondirectory file)))) 1939 (file-name-nondirectory file))))
1942 1940
1943(defun tumme-thumbnail-set-image-description () 1941(defun image-dired-thumbnail-set-image-description ()
1944 "Set the ImageDescription EXIF tag for the original image. 1942 "Set the ImageDescription EXIF tag for the original image.
1945If the image already has a value for this tag, it is used as the 1943If the image already has a value for this tag, it is used as the
1946default value at the prompt." 1944default value at the prompt."
1947 (interactive) 1945 (interactive)
1948 (if (not (tumme-image-at-point-p)) 1946 (if (not (image-dired-image-at-point-p))
1949 (message "No thumbnail at point") 1947 (message "No thumbnail at point")
1950 (let* ((file (tumme-original-file-name)) 1948 (let* ((file (image-dired-original-file-name))
1951 (old-value (tumme-get-exif-data file "ImageDescription"))) 1949 (old-value (image-dired-get-exif-data file "ImageDescription")))
1952 (if (eq 0 1950 (if (eq 0
1953 (tumme-set-exif-data file "ImageDescription" 1951 (image-dired-set-exif-data file "ImageDescription"
1954 (read-string "Value of ImageDescription: " 1952 (read-string "Value of ImageDescription: "
1955 old-value))) 1953 old-value)))
1956 (message "Successfully wrote ImageDescription tag.") 1954 (message "Successfully wrote ImageDescription tag.")
1957 (error "Could not write ImageDescription tag"))))) 1955 (error "Could not write ImageDescription tag")))))
1958 1956
1959(defun tumme-set-exif-data (file tag-name tag-value) 1957(defun image-dired-set-exif-data (file tag-name tag-value)
1960 "In FILE, set EXIF tag TAG-NAME to value TAG-VALUE." 1958 "In FILE, set EXIF tag TAG-NAME to value TAG-VALUE."
1961 (let (command) 1959 (let (command)
1962 (setq command (format-spec 1960 (setq command (format-spec
1963 tumme-cmd-write-exif-data-options 1961 image-dired-cmd-write-exif-data-options
1964 (list 1962 (list
1965 (cons ?p tumme-cmd-write-exif-data-program) 1963 (cons ?p image-dired-cmd-write-exif-data-program)
1966 (cons ?f (expand-file-name file)) 1964 (cons ?f (expand-file-name file))
1967 (cons ?t tag-name) 1965 (cons ?t tag-name)
1968 (cons ?v tag-value)))) 1966 (cons ?v tag-value))))
1969 (call-process shell-file-name nil nil nil shell-command-switch command))) 1967 (call-process shell-file-name nil nil nil shell-command-switch command)))
1970 1968
1971(defun tumme-get-exif-data (file tag-name) 1969(defun image-dired-get-exif-data (file tag-name)
1972 "From FILE, return EXIF tag TAG-NAME." 1970 "From FILE, return EXIF tag TAG-NAME."
1973 (let ((buf (get-buffer-create "*tumme-get-exif-data*")) 1971 (let ((buf (get-buffer-create "*image-dired-get-exif-data*"))
1974 command tag-value) 1972 command tag-value)
1975 (setq command (format-spec 1973 (setq command (format-spec
1976 tumme-cmd-read-exif-data-options 1974 image-dired-cmd-read-exif-data-options
1977 (list 1975 (list
1978 (cons ?p tumme-cmd-read-exif-data-program) 1976 (cons ?p image-dired-cmd-read-exif-data-program)
1979 (cons ?f file) 1977 (cons ?f file)
1980 (cons ?t tag-name)))) 1978 (cons ?t tag-name))))
1981 (with-current-buffer buf 1979 (with-current-buffer buf
@@ -1991,17 +1989,17 @@ default value at the prompt."
1991 (setq tag-value (buffer-substring (point-min) (point-max))))) 1989 (setq tag-value (buffer-substring (point-min) (point-max)))))
1992 tag-value)) 1990 tag-value))
1993 1991
1994(defun tumme-copy-with-exif-file-name () 1992(defun image-dired-copy-with-exif-file-name ()
1995 "Copy file with unique name to main image directory. 1993 "Copy file with unique name to main image directory.
1996Copy current or all marked files in dired to a new file in your 1994Copy current or all marked files in dired to a new file in your
1997main image directory, using a file name generated by 1995main image directory, using a file name generated by
1998`tumme-get-exif-file-name'. A typical usage for this if when 1996`image-dired-get-exif-file-name'. A typical usage for this if when
1999copying images from a digital camera into the image directory. 1997copying images from a digital camera into the image directory.
2000 1998
2001 Typically, you would open up the folder with the incoming 1999 Typically, you would open up the folder with the incoming
2002digital images, mark the files to be copied, and execute this 2000digital images, mark the files to be copied, and execute this
2003function. The result is a couple of new files in 2001function. The result is a couple of new files in
2004`tumme-main-image-directory' called 2002`image-dired-main-image-directory' called
20052005_05_08_12_52_00_dscn0319.jpg, 20032005_05_08_12_52_00_dscn0319.jpg,
20062005_05_08_14_27_45_dscn0320.jpg etc." 20042005_05_08_14_27_45_dscn0320.jpg etc."
2007 (interactive) 2005 (interactive)
@@ -2012,32 +2010,32 @@ function. The result is a couple of new files in
2012 (setq new-name 2010 (setq new-name
2013 (format "%s/%s" 2011 (format "%s/%s"
2014 (file-name-as-directory 2012 (file-name-as-directory
2015 (expand-file-name tumme-main-image-directory)) 2013 (expand-file-name image-dired-main-image-directory))
2016 (tumme-get-exif-file-name curr-file))) 2014 (image-dired-get-exif-file-name curr-file)))
2017 (message "Copying %s to %s" curr-file new-name) 2015 (message "Copying %s to %s" curr-file new-name)
2018 (copy-file curr-file new-name)) 2016 (copy-file curr-file new-name))
2019 files))) 2017 files)))
2020 2018
2021(defun tumme-display-next-thumbnail-original () 2019(defun image-dired-display-next-thumbnail-original ()
2022 "In thubnail buffer, move to next thumbnail and display the image." 2020 "In thubnail buffer, move to next thumbnail and display the image."
2023 (interactive) 2021 (interactive)
2024 (tumme-forward-image) 2022 (image-dired-forward-image)
2025 (tumme-display-thumbnail-original-image)) 2023 (image-dired-display-thumbnail-original-image))
2026 2024
2027(defun tumme-display-previous-thumbnail-original () 2025(defun image-dired-display-previous-thumbnail-original ()
2028 "Move to previous thumbnail and display image." 2026 "Move to previous thumbnail and display image."
2029 (interactive) 2027 (interactive)
2030 (tumme-backward-image) 2028 (image-dired-backward-image)
2031 (tumme-display-thumbnail-original-image)) 2029 (image-dired-display-thumbnail-original-image))
2032 2030
2033(defun tumme-write-comments (file-comments) 2031(defun image-dired-write-comments (file-comments)
2034 "Write file comments to database. 2032 "Write file comments to database.
2035Write file comments to one or more files. FILE-COMMENTS is an alist on 2033Write file comments to one or more files. FILE-COMMENTS is an alist on
2036the following form: 2034the following form:
2037 ((FILE . COMMENT) ... )" 2035 ((FILE . COMMENT) ... )"
2038 (let (end comment-beg-pos comment-end-pos file comment) 2036 (let (end comment-beg-pos comment-end-pos file comment)
2039 (with-temp-file tumme-db-file 2037 (with-temp-file image-dired-db-file
2040 (insert-file-contents tumme-db-file) 2038 (insert-file-contents image-dired-db-file)
2041 (dolist (elt file-comments) 2039 (dolist (elt file-comments)
2042 (setq file (car elt) 2040 (setq file (car elt)
2043 comment (cdr elt)) 2041 comment (cdr elt))
@@ -2065,7 +2063,7 @@ the following form:
2065 (goto-char (point-max)) 2063 (goto-char (point-max))
2066 (insert (format "\n%s;comment:%s" file comment))))))) 2064 (insert (format "\n%s;comment:%s" file comment)))))))
2067 2065
2068(defun tumme-update-property (prop value) 2066(defun image-dired-update-property (prop value)
2069 "Update text property PROP with value VALUE at point." 2067 "Update text property PROP with value VALUE at point."
2070 (let ((inhibit-read-only t)) 2068 (let ((inhibit-read-only t))
2071 (put-text-property 2069 (put-text-property
@@ -2074,40 +2072,40 @@ the following form:
2074 value))) 2072 value)))
2075 2073
2076;;;###autoload 2074;;;###autoload
2077(defun tumme-dired-comment-files () 2075(defun image-dired-dired-comment-files ()
2078 "Add comment to current or marked files in dired." 2076 "Add comment to current or marked files in dired."
2079 (interactive) 2077 (interactive)
2080 (let ((comment (tumme-read-comment))) 2078 (let ((comment (image-dired-read-comment)))
2081 (tumme-write-comments 2079 (image-dired-write-comments
2082 (mapcar 2080 (mapcar
2083 (lambda (curr-file) 2081 (lambda (curr-file)
2084 (cons curr-file comment)) 2082 (cons curr-file comment))
2085 (dired-get-marked-files))))) 2083 (dired-get-marked-files)))))
2086 2084
2087(defun tumme-comment-thumbnail () 2085(defun image-dired-comment-thumbnail ()
2088 "Add comment to current thumbnail in thumbnail buffer." 2086 "Add comment to current thumbnail in thumbnail buffer."
2089 (interactive) 2087 (interactive)
2090 (let* ((file (tumme-original-file-name)) 2088 (let* ((file (image-dired-original-file-name))
2091 (comment (tumme-read-comment file))) 2089 (comment (image-dired-read-comment file)))
2092 (tumme-write-comments (list (cons file comment))) 2090 (image-dired-write-comments (list (cons file comment)))
2093 (tumme-update-property 'comment comment)) 2091 (image-dired-update-property 'comment comment))
2094 (tumme-display-thumb-properties)) 2092 (image-dired-display-thumb-properties))
2095 2093
2096(defun tumme-read-comment (&optional file) 2094(defun image-dired-read-comment (&optional file)
2097 "Read comment for an image. 2095 "Read comment for an image.
2098Read comment for an image, optionally using old comment from FILE 2096Read comment for an image, optionally using old comment from FILE
2099as initial value." 2097as initial value."
2100 (let ((comment 2098 (let ((comment
2101 (read-string 2099 (read-string
2102 "Comment: " 2100 "Comment: "
2103 (if file (tumme-get-comment file))))) 2101 (if file (image-dired-get-comment file)))))
2104 comment)) 2102 comment))
2105 2103
2106(defun tumme-get-comment (file) 2104(defun image-dired-get-comment (file)
2107 "Get comment for file FILE." 2105 "Get comment for file FILE."
2108 (save-excursion 2106 (save-excursion
2109 (let (end buf comment-beg-pos comment-end-pos comment) 2107 (let (end buf comment-beg-pos comment-end-pos comment)
2110 (setq buf (find-file tumme-db-file)) 2108 (setq buf (find-file image-dired-db-file))
2111 (goto-char (point-min)) 2109 (goto-char (point-min))
2112 (when (search-forward-regexp 2110 (when (search-forward-regexp
2113 (format "^%s" file) nil t) 2111 (format "^%s" file) nil t)
@@ -2125,10 +2123,10 @@ as initial value."
2125 comment))) 2123 comment)))
2126 2124
2127;;;###autoload 2125;;;###autoload
2128(defun tumme-mark-tagged-files () 2126(defun image-dired-mark-tagged-files ()
2129 "Use regexp to mark files with matching tag. 2127 "Use regexp to mark files with matching tag.
2130A `tag' is a keyword, a piece of meta data, associated with an 2128A `tag' is a keyword, a piece of meta data, associated with an
2131image file and stored in tumme's database file. This command 2129image file and stored in image-dired's database file. This command
2132lets you input a regexp and this will be matched against all tags 2130lets you input a regexp and this will be matched against all tags
2133on all image files in the database file. The files that have a 2131on all image files in the database file. The files that have a
2134matching tags will be marked in the dired buffer." 2132matching tags will be marked in the dired buffer."
@@ -2137,7 +2135,7 @@ matching tags will be marked in the dired buffer."
2137 (hits 0) 2135 (hits 0)
2138 files buf) 2136 files buf)
2139 (save-excursion 2137 (save-excursion
2140 (setq buf (find-file tumme-db-file)) 2138 (setq buf (find-file image-dired-db-file))
2141 (goto-char (point-min)) 2139 (goto-char (point-min))
2142 ;; Collect matches 2140 ;; Collect matches
2143 (while (search-forward-regexp 2141 (while (search-forward-regexp
@@ -2163,46 +2161,46 @@ matching tags will be marked in the dired buffer."
2163 files)) 2161 files))
2164 (message "%d files with matching tag marked." hits))) 2162 (message "%d files with matching tag marked." hits)))
2165 2163
2166(defun tumme-mouse-display-image (event) 2164(defun image-dired-mouse-display-image (event)
2167 "Use mouse EVENT, call `tumme-display-image' to display image. 2165 "Use mouse EVENT, call `image-dired-display-image' to display image.
2168Track this in associated dired buffer if `tumme-track-movement' is 2166Track this in associated dired buffer if `image-dired-track-movement' is
2169non-nil." 2167non-nil."
2170 (interactive "e") 2168 (interactive "e")
2171 (let (file) 2169 (let (file)
2172 (mouse-set-point event) 2170 (mouse-set-point event)
2173 (goto-char (posn-point (event-end event))) 2171 (goto-char (posn-point (event-end event)))
2174 (setq file (tumme-original-file-name)) 2172 (setq file (image-dired-original-file-name))
2175 (if tumme-track-movement 2173 (if image-dired-track-movement
2176 (tumme-track-original-file)) 2174 (image-dired-track-original-file))
2177 (tumme-create-display-image-buffer) 2175 (image-dired-create-display-image-buffer)
2178 (display-buffer tumme-display-image-buffer) 2176 (display-buffer image-dired-display-image-buffer)
2179 (tumme-display-image file))) 2177 (image-dired-display-image file)))
2180 2178
2181(defun tumme-mouse-select-thumbnail (event) 2179(defun image-dired-mouse-select-thumbnail (event)
2182 "Use mouse EVENT to select thumbnail image. 2180 "Use mouse EVENT to select thumbnail image.
2183Track this in associated dired buffer if `tumme-track-movement' is 2181Track this in associated dired buffer if `image-dired-track-movement' is
2184non-nil." 2182non-nil."
2185 (interactive "e") 2183 (interactive "e")
2186 (let (file) 2184 (let (file)
2187 (mouse-set-point event) 2185 (mouse-set-point event)
2188 (goto-char (posn-point (event-end event))) 2186 (goto-char (posn-point (event-end event)))
2189 (if tumme-track-movement 2187 (if image-dired-track-movement
2190 (tumme-track-original-file))) 2188 (image-dired-track-original-file)))
2191 (tumme-display-thumb-properties)) 2189 (image-dired-display-thumb-properties))
2192 2190
2193(defun tumme-mouse-toggle-mark (event) 2191(defun image-dired-mouse-toggle-mark (event)
2194 "Use mouse EVENT to toggle dired mark for thumbnail. 2192 "Use mouse EVENT to toggle dired mark for thumbnail.
2195Track this in associated dired buffer if `tumme-track-movement' is 2193Track this in associated dired buffer if `image-dired-track-movement' is
2196non-nil." 2194non-nil."
2197 (interactive "e") 2195 (interactive "e")
2198 (let (file) 2196 (let (file)
2199 (mouse-set-point event) 2197 (mouse-set-point event)
2200 (goto-char (posn-point (event-end event))) 2198 (goto-char (posn-point (event-end event)))
2201 (if tumme-track-movement 2199 (if image-dired-track-movement
2202 (tumme-track-original-file))) 2200 (image-dired-track-original-file)))
2203 (tumme-toggle-mark-thumb-original-file)) 2201 (image-dired-toggle-mark-thumb-original-file))
2204 2202
2205(defun tumme-dired-display-properties () 2203(defun image-dired-dired-display-properties ()
2206 "Display properties for dired file in the echo area." 2204 "Display properties for dired file in the echo area."
2207 (interactive) 2205 (interactive)
2208 (let* ((file (dired-get-filename)) 2206 (let* ((file (dired-get-filename))
@@ -2210,98 +2208,98 @@ non-nil."
2210 (dired-buf (buffer-name (current-buffer))) 2208 (dired-buf (buffer-name (current-buffer)))
2211 (props (mapconcat 2209 (props (mapconcat
2212 'princ 2210 'princ
2213 (tumme-list-tags file) 2211 (image-dired-list-tags file)
2214 ", ")) 2212 ", "))
2215 (comment (tumme-get-comment file))) 2213 (comment (image-dired-get-comment file)))
2216 (if file-name 2214 (if file-name
2217 (message 2215 (message
2218 (tumme-format-properties-string 2216 (image-dired-format-properties-string
2219 dired-buf 2217 dired-buf
2220 file-name 2218 file-name
2221 props 2219 props
2222 comment))))) 2220 comment)))))
2223 2221
2224(defvar tumme-tag-file-list nil 2222(defvar image-dired-tag-file-list nil
2225 "List to store tag-file structure.") 2223 "List to store tag-file structure.")
2226 2224
2227(defvar tumme-file-tag-list nil 2225(defvar image-dired-file-tag-list nil
2228 "List to store file-tag structure.") 2226 "List to store file-tag structure.")
2229 2227
2230(defvar tumme-file-comment-list nil 2228(defvar image-dired-file-comment-list nil
2231 "List to store file comments.") 2229 "List to store file comments.")
2232 2230
2233(defun tumme-add-to-tag-file-list (tag file) 2231(defun image-dired-add-to-tag-file-list (tag file)
2234 "Add relation between TAG and FILE." 2232 "Add relation between TAG and FILE."
2235 (let (curr) 2233 (let (curr)
2236 (if tumme-tag-file-list 2234 (if image-dired-tag-file-list
2237 (if (setq curr (assoc tag tumme-tag-file-list)) 2235 (if (setq curr (assoc tag image-dired-tag-file-list))
2238 (if (not (member file curr)) 2236 (if (not (member file curr))
2239 (setcdr curr (cons file (cdr curr)))) 2237 (setcdr curr (cons file (cdr curr))))
2240 (setcdr tumme-tag-file-list 2238 (setcdr image-dired-tag-file-list
2241 (cons (list tag file) (cdr tumme-tag-file-list)))) 2239 (cons (list tag file) (cdr image-dired-tag-file-list))))
2242 (setq tumme-tag-file-list (list (list tag file)))))) 2240 (setq image-dired-tag-file-list (list (list tag file))))))
2243 2241
2244(defun tumme-add-to-tag-file-lists (tag file) 2242(defun image-dired-add-to-tag-file-lists (tag file)
2245 "Helper function used from `tumme-create-gallery-lists'. 2243 "Helper function used from `image-dired-create-gallery-lists'.
2246 2244
2247Add TAG to FILE in one list and FILE to TAG in the other. 2245Add TAG to FILE in one list and FILE to TAG in the other.
2248 2246
2249Lisp structures look like the following: 2247Lisp structures look like the following:
2250 2248
2251tumme-file-tag-list: 2249image-dired-file-tag-list:
2252 2250
2253 ((\"filename1\" \"tag1\" \"tag2\" \"tag3\" ...) 2251 ((\"filename1\" \"tag1\" \"tag2\" \"tag3\" ...)
2254 (\"filename2\" \"tag1\" \"tag2\" \"tag3\" ...) 2252 (\"filename2\" \"tag1\" \"tag2\" \"tag3\" ...)
2255 ...) 2253 ...)
2256 2254
2257tumme-tag-file-list: 2255image-dired-tag-file-list:
2258 2256
2259 ((\"tag1\" \"filename1\" \"filename2\" \"filename3\" ...) 2257 ((\"tag1\" \"filename1\" \"filename2\" \"filename3\" ...)
2260 (\"tag2\" \"filename1\" \"filename2\" \"filename3\" ...) 2258 (\"tag2\" \"filename1\" \"filename2\" \"filename3\" ...)
2261 ...)" 2259 ...)"
2262 ;; Add tag to file list 2260 ;; Add tag to file list
2263 (let (curr) 2261 (let (curr)
2264 (if tumme-file-tag-list 2262 (if image-dired-file-tag-list
2265 (if (setq curr (assoc file tumme-file-tag-list)) 2263 (if (setq curr (assoc file image-dired-file-tag-list))
2266 (setcdr curr (cons tag (cdr curr))) 2264 (setcdr curr (cons tag (cdr curr)))
2267 (setcdr tumme-file-tag-list 2265 (setcdr image-dired-file-tag-list
2268 (cons (list file tag) (cdr tumme-file-tag-list)))) 2266 (cons (list file tag) (cdr image-dired-file-tag-list))))
2269 (setq tumme-file-tag-list (list (list file tag)))) 2267 (setq image-dired-file-tag-list (list (list file tag))))
2270 ;; Add file to tag list 2268 ;; Add file to tag list
2271 (if tumme-tag-file-list 2269 (if image-dired-tag-file-list
2272 (if (setq curr (assoc tag tumme-tag-file-list)) 2270 (if (setq curr (assoc tag image-dired-tag-file-list))
2273 (if (not (member file curr)) 2271 (if (not (member file curr))
2274 (setcdr curr (cons file (cdr curr)))) 2272 (setcdr curr (cons file (cdr curr))))
2275 (setcdr tumme-tag-file-list 2273 (setcdr image-dired-tag-file-list
2276 (cons (list tag file) (cdr tumme-tag-file-list)))) 2274 (cons (list tag file) (cdr image-dired-tag-file-list))))
2277 (setq tumme-tag-file-list (list (list tag file)))))) 2275 (setq image-dired-tag-file-list (list (list tag file))))))
2278 2276
2279(defun tumme-add-to-file-comment-list (file comment) 2277(defun image-dired-add-to-file-comment-list (file comment)
2280 "Helper function used from `tumme-create-gallery-lists'. 2278 "Helper function used from `image-dired-create-gallery-lists'.
2281 2279
2282For FILE, add COMMENT to list. 2280For FILE, add COMMENT to list.
2283 2281
2284Lisp structure looks like the following: 2282Lisp structure looks like the following:
2285 2283
2286tumme-file-comment-list: 2284image-dired-file-comment-list:
2287 2285
2288 ((\"filename1\" . \"comment1\") 2286 ((\"filename1\" . \"comment1\")
2289 (\"filename2\" . \"comment2\") 2287 (\"filename2\" . \"comment2\")
2290 ...)" 2288 ...)"
2291 (if tumme-file-comment-list 2289 (if image-dired-file-comment-list
2292 (if (not (assoc file tumme-file-comment-list)) 2290 (if (not (assoc file image-dired-file-comment-list))
2293 (setcdr tumme-file-comment-list 2291 (setcdr image-dired-file-comment-list
2294 (cons (cons file comment) 2292 (cons (cons file comment)
2295 (cdr tumme-file-comment-list)))) 2293 (cdr image-dired-file-comment-list))))
2296 (setq tumme-file-comment-list (list (cons file comment))))) 2294 (setq image-dired-file-comment-list (list (cons file comment)))))
2297 2295
2298(defun tumme-create-gallery-lists () 2296(defun image-dired-create-gallery-lists ()
2299 "Create temporary lists used by `tumme-gallery-generate'." 2297 "Create temporary lists used by `image-dired-gallery-generate'."
2300 (let ((buf (find-file tumme-db-file)) 2298 (let ((buf (find-file image-dired-db-file))
2301 end beg file row-tags) 2299 end beg file row-tags)
2302 (setq tumme-tag-file-list nil) 2300 (setq image-dired-tag-file-list nil)
2303 (setq tumme-file-tag-list nil) 2301 (setq image-dired-file-tag-list nil)
2304 (setq tumme-file-comment-list nil) 2302 (setq image-dired-file-comment-list nil)
2305 (goto-char (point-min)) 2303 (goto-char (point-min))
2306 (while (search-forward-regexp "^." nil t) 2304 (while (search-forward-regexp "^." nil t)
2307 (end-of-line) 2305 (end-of-line)
@@ -2316,51 +2314,51 @@ tumme-file-comment-list:
2316 (mapc 2314 (mapc
2317 (lambda (x) 2315 (lambda (x)
2318 (if (not (string-match "^comment:\\(.*\\)" x)) 2316 (if (not (string-match "^comment:\\(.*\\)" x))
2319 (tumme-add-to-tag-file-lists x file) 2317 (image-dired-add-to-tag-file-lists x file)
2320 (tumme-add-to-file-comment-list file (match-string 1 x)))) 2318 (image-dired-add-to-file-comment-list file (match-string 1 x))))
2321 (cdr row-tags))) 2319 (cdr row-tags)))
2322 (kill-buffer buf)) 2320 (kill-buffer buf))
2323 ;; Sort tag-file list 2321 ;; Sort tag-file list
2324 (setq tumme-tag-file-list 2322 (setq image-dired-tag-file-list
2325 (sort tumme-tag-file-list 2323 (sort image-dired-tag-file-list
2326 (lambda (x y) 2324 (lambda (x y)
2327 (string< (car x) (car y)))))) 2325 (string< (car x) (car y))))))
2328 2326
2329(defun tumme-hidden-p (file) 2327(defun image-dired-hidden-p (file)
2330 "Return t if image FILE has a \"hidden\" tag." 2328 "Return t if image FILE has a \"hidden\" tag."
2331 (let (hidden) 2329 (let (hidden)
2332 (mapc 2330 (mapc
2333 (lambda (tag) 2331 (lambda (tag)
2334 (if (member tag tumme-gallery-hidden-tags) 2332 (if (member tag image-dired-gallery-hidden-tags)
2335 (setq hidden t))) 2333 (setq hidden t)))
2336 (cdr (assoc file tumme-file-tag-list))) 2334 (cdr (assoc file image-dired-file-tag-list)))
2337 hidden)) 2335 hidden))
2338 2336
2339(defun tumme-gallery-generate () 2337(defun image-dired-gallery-generate ()
2340 "Generate gallery pages. 2338 "Generate gallery pages.
2341First we create a couple of Lisp structures from the database to make 2339First we create a couple of Lisp structures from the database to make
2342it easier to generate, then HTML-files are created in 2340it easier to generate, then HTML-files are created in
2343`tumme-gallery-dir'" 2341`image-dired-gallery-dir'"
2344 (interactive) 2342 (interactive)
2345 (if (eq 'per-directory tumme-thumbnail-storage) 2343 (if (eq 'per-directory image-dired-thumbnail-storage)
2346 (error "Currently, gallery generation is not supported \ 2344 (error "Currently, gallery generation is not supported \
2347when using per-directory thumbnail file storage")) 2345when using per-directory thumbnail file storage"))
2348 (tumme-create-gallery-lists) 2346 (image-dired-create-gallery-lists)
2349 (let ((tags tumme-tag-file-list) 2347 (let ((tags image-dired-tag-file-list)
2350 count curr tag index-buf tag-buf 2348 count curr tag index-buf tag-buf
2351 comment file-tags tag-link tag-link-list) 2349 comment file-tags tag-link tag-link-list)
2352 ;; Make sure gallery root exist 2350 ;; Make sure gallery root exist
2353 (if (file-exists-p tumme-gallery-dir) 2351 (if (file-exists-p image-dired-gallery-dir)
2354 (if (not (file-directory-p tumme-gallery-dir)) 2352 (if (not (file-directory-p image-dired-gallery-dir))
2355 (error "Variable tumme-gallery-dir is not a directory")) 2353 (error "Variable image-dired-gallery-dir is not a directory"))
2356 (make-directory tumme-gallery-dir)) 2354 (make-directory image-dired-gallery-dir))
2357 ;; Open index file 2355 ;; Open index file
2358 (setq index-buf (find-file 2356 (setq index-buf (find-file
2359 (format "%s/index.html" tumme-gallery-dir))) 2357 (format "%s/index.html" image-dired-gallery-dir)))
2360 (erase-buffer) 2358 (erase-buffer)
2361 (insert "<html>\n") 2359 (insert "<html>\n")
2362 (insert " <body>\n") 2360 (insert " <body>\n")
2363 (insert " <h2>Tumme Gallery</h2>\n") 2361 (insert " <h2>Image-Dired Gallery</h2>\n")
2364 (insert (format "<p>\n Gallery generated %s\n <p>\n" 2362 (insert (format "<p>\n Gallery generated %s\n <p>\n"
2365 (current-time-string))) 2363 (current-time-string)))
2366 (insert " <h3>Tag index</h3>\n") 2364 (insert " <h3>Tag index</h3>\n")
@@ -2369,7 +2367,7 @@ when using per-directory thumbnail file storage"))
2369 (mapc 2367 (mapc
2370 (lambda (curr) 2368 (lambda (curr)
2371 (setq tag (car curr)) 2369 (setq tag (car curr))
2372 (when (not (member tag tumme-gallery-hidden-tags)) 2370 (when (not (member tag image-dired-gallery-hidden-tags))
2373 (setq tag-link (format "<a href=\"%d.html\">%s</a>" count tag)) 2371 (setq tag-link (format "<a href=\"%d.html\">%s</a>" count tag))
2374 (if tag-link-list 2372 (if tag-link-list
2375 (setq tag-link-list 2373 (setq tag-link-list
@@ -2383,12 +2381,12 @@ when using per-directory thumbnail file storage"))
2383 (lambda (curr) 2381 (lambda (curr)
2384 (setq tag (car curr)) 2382 (setq tag (car curr))
2385 ;; Don't display hidden tags 2383 ;; Don't display hidden tags
2386 (when (not (member tag tumme-gallery-hidden-tags)) 2384 (when (not (member tag image-dired-gallery-hidden-tags))
2387 ;; Insert link to tag page in index 2385 ;; Insert link to tag page in index
2388 (insert (format " %s<br>\n" (cdr (assoc tag tag-link-list)))) 2386 (insert (format " %s<br>\n" (cdr (assoc tag tag-link-list))))
2389 ;; Open per-tag file 2387 ;; Open per-tag file
2390 (setq tag-buf (find-file 2388 (setq tag-buf (find-file
2391 (format "%s/%s.html" tumme-gallery-dir count))) 2389 (format "%s/%s.html" image-dired-gallery-dir count)))
2392 (erase-buffer) 2390 (erase-buffer)
2393 (insert "<html>\n") 2391 (insert "<html>\n")
2394 (insert " <body>\n") 2392 (insert " <body>\n")
@@ -2397,21 +2395,21 @@ when using per-directory thumbnail file storage"))
2397 ;; Main loop for files per tag page 2395 ;; Main loop for files per tag page
2398 (mapc 2396 (mapc
2399 (lambda (file) 2397 (lambda (file)
2400 (when (not (tumme-hidden-p file)) 2398 (when (not (image-dired-hidden-p file))
2401 ;; Insert thumbnail with link to full image 2399 ;; Insert thumbnail with link to full image
2402 (insert 2400 (insert
2403 (format "<a href=\"%s/%s\"><img src=\"%s/%s\"%s></a>\n" 2401 (format "<a href=\"%s/%s\"><img src=\"%s/%s\"%s></a>\n"
2404 tumme-gallery-image-root-url 2402 image-dired-gallery-image-root-url
2405 (file-name-nondirectory file) 2403 (file-name-nondirectory file)
2406 tumme-gallery-thumb-image-root-url 2404 image-dired-gallery-thumb-image-root-url
2407 (file-name-nondirectory (tumme-thumb-name file)) file)) 2405 (file-name-nondirectory (image-dired-thumb-name file)) file))
2408 ;; Insert comment, if any 2406 ;; Insert comment, if any
2409 (if (setq comment (cdr (assoc file tumme-file-comment-list))) 2407 (if (setq comment (cdr (assoc file image-dired-file-comment-list)))
2410 (insert (format "<br>\n%s<br>\n" comment)) 2408 (insert (format "<br>\n%s<br>\n" comment))
2411 (insert "<br>\n")) 2409 (insert "<br>\n"))
2412 ;; Insert links to other tags, if any 2410 ;; Insert links to other tags, if any
2413 (when (> (length 2411 (when (> (length
2414 (setq file-tags (assoc file tumme-file-tag-list))) 2) 2412 (setq file-tags (assoc file image-dired-file-tag-list))) 2)
2415 (insert "[ ") 2413 (insert "[ ")
2416 (mapc 2414 (mapc
2417 (lambda (extra-tag) 2415 (lambda (extra-tag)
@@ -2435,7 +2433,7 @@ when using per-directory thumbnail file storage"))
2435 (save-buffer) 2433 (save-buffer)
2436 (kill-buffer index-buf))) 2434 (kill-buffer index-buf)))
2437 2435
2438(defun tumme-kill-buffer-and-window () 2436(defun image-dired-kill-buffer-and-window ()
2439 "Kill the current buffer and, if possible, also the window." 2437 "Kill the current buffer and, if possible, also the window."
2440 (interactive) 2438 (interactive)
2441 (let ((buffer (current-buffer))) 2439 (let ((buffer (current-buffer)))
@@ -2444,19 +2442,19 @@ when using per-directory thumbnail file storage"))
2444 (error nil)) 2442 (error nil))
2445 (kill-buffer buffer))) 2443 (kill-buffer buffer)))
2446 2444
2447(defvar tumme-widget-list nil 2445(defvar image-dired-widget-list nil
2448 "List to keep track of meta data in edit buffer.") 2446 "List to keep track of meta data in edit buffer.")
2449 2447
2450;;;###autoload 2448;;;###autoload
2451(defun tumme-dired-edit-comment-and-tags () 2449(defun image-dired-dired-edit-comment-and-tags ()
2452 "Edit comment and tags of current or marked image files. 2450 "Edit comment and tags of current or marked image files.
2453Edit comment and tags for all marked image files in an 2451Edit comment and tags for all marked image files in an
2454easy-to-use form." 2452easy-to-use form."
2455 (interactive) 2453 (interactive)
2456 (setq tumme-widget-list nil) 2454 (setq image-dired-widget-list nil)
2457 ;; Setup buffer. 2455 ;; Setup buffer.
2458 (let ((files (dired-get-marked-files))) 2456 (let ((files (dired-get-marked-files)))
2459 (switch-to-buffer "*Tumme Edit Meta Data*") 2457 (switch-to-buffer "*Image-Dired Edit Meta Data*")
2460 (kill-all-local-variables) 2458 (kill-all-local-variables)
2461 (make-local-variable 'widget-example-repeat) 2459 (make-local-variable 'widget-example-repeat)
2462 (let ((inhibit-read-only t)) 2460 (let ((inhibit-read-only t))
@@ -2475,7 +2473,7 @@ the operation by activating the Cancel button.\n\n")
2475 2473
2476 (dolist (file files) 2474 (dolist (file files)
2477 2475
2478 (setq thumb-file (tumme-thumb-name file) 2476 (setq thumb-file (image-dired-thumb-name file)
2479 img (create-image thumb-file)) 2477 img (create-image thumb-file))
2480 2478
2481 (insert-image img) 2479 (insert-image img)
@@ -2484,7 +2482,7 @@ the operation by activating the Cancel button.\n\n")
2484 (widget-create 'editable-field 2482 (widget-create 'editable-field
2485 :size 60 2483 :size 60
2486 :format "%v " 2484 :format "%v "
2487 :value (or (tumme-get-comment file) ""))) 2485 :value (or (image-dired-get-comment file) "")))
2488 (widget-insert "\nTags: ") 2486 (widget-insert "\nTags: ")
2489 (setq tag-widget 2487 (setq tag-widget
2490 (widget-create 'editable-field 2488 (widget-create 'editable-field
@@ -2493,12 +2491,12 @@ the operation by activating the Cancel button.\n\n")
2493 :value (or (mapconcat 2491 :value (or (mapconcat
2494 (lambda (tag) 2492 (lambda (tag)
2495 tag) 2493 tag)
2496 (tumme-list-tags file) 2494 (image-dired-list-tags file)
2497 ",") ""))) 2495 ",") "")))
2498 ;; Save information in all widgets so that we can use it when 2496 ;; Save information in all widgets so that we can use it when
2499 ;; the user saves the form. 2497 ;; the user saves the form.
2500 (setq tumme-widget-list 2498 (setq image-dired-widget-list
2501 (append tumme-widget-list 2499 (append image-dired-widget-list
2502 (list (list file comment-widget tag-widget)))) 2500 (list (list file comment-widget tag-widget))))
2503 (widget-insert "\n\n"))) 2501 (widget-insert "\n\n")))
2504 2502
@@ -2507,7 +2505,7 @@ the operation by activating the Cancel button.\n\n")
2507 (widget-create 'push-button 2505 (widget-create 'push-button
2508 :notify 2506 :notify
2509 (lambda (&rest ignore) 2507 (lambda (&rest ignore)
2510 (tumme-save-information-from-widgets) 2508 (image-dired-save-information-from-widgets)
2511 (bury-buffer) 2509 (bury-buffer)
2512 (message "Done.")) 2510 (message "Done."))
2513 "Save") 2511 "Save")
@@ -2524,21 +2522,21 @@ the operation by activating the Cancel button.\n\n")
2524 ;; Jump to the first widget. 2522 ;; Jump to the first widget.
2525 (widget-forward 1))) 2523 (widget-forward 1)))
2526 2524
2527(defun tumme-save-information-from-widgets () 2525(defun image-dired-save-information-from-widgets ()
2528 "Save information found in `tumme-widget-list'. 2526 "Save information found in `image-dired-widget-list'.
2529Use the information in `tumme-widget-list' to save comments and 2527Use the information in `image-dired-widget-list' to save comments and
2530tags to their respective image file. Internal function used by 2528tags to their respective image file. Internal function used by
2531`tumme-dired-edit-comment-and-tags'." 2529`image-dired-dired-edit-comment-and-tags'."
2532 (let (file comment tag-string tag-list lst) 2530 (let (file comment tag-string tag-list lst)
2533 (tumme-write-comments 2531 (image-dired-write-comments
2534 (mapcar 2532 (mapcar
2535 (lambda (widget) 2533 (lambda (widget)
2536 (setq file (car widget) 2534 (setq file (car widget)
2537 comment (widget-value (cadr widget))) 2535 comment (widget-value (cadr widget)))
2538 (cons file comment)) 2536 (cons file comment))
2539 tumme-widget-list)) 2537 image-dired-widget-list))
2540 (tumme-write-tags 2538 (image-dired-write-tags
2541 (dolist (widget tumme-widget-list lst) 2539 (dolist (widget image-dired-widget-list lst)
2542 (setq file (car widget) 2540 (setq file (car widget)
2543 tag-string (widget-value (car (cddr widget))) 2541 tag-string (widget-value (car (cddr widget)))
2544 tag-list (split-string tag-string ",")) 2542 tag-list (split-string tag-string ","))
@@ -2549,12 +2547,12 @@ tags to their respective image file. Internal function used by
2549;;;;;;;;; TEST-SECTION ;;;;;;;;;;; 2547;;;;;;;;; TEST-SECTION ;;;;;;;;;;;
2550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 2548;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2551 2549
2552;; (defvar tumme-dir-max-size 12300000) 2550;; (defvar image-dired-dir-max-size 12300000)
2553 2551
2554;; (defun tumme-test-clean-old-files () 2552;; (defun image-dired-test-clean-old-files ()
2555;; "Clean `tumme-dir' from old thumbnail files. 2553;; "Clean `image-dired-dir' from old thumbnail files.
2556;; \"Oldness\" measured using last access time. If the total size of all 2554;; \"Oldness\" measured using last access time. If the total size of all
2557;; thumbnail files in `tumme-dir' is larger than 'tumme-dir-max-size', 2555;; thumbnail files in `image-dired-dir' is larger than 'image-dired-dir-max-size',
2558;; old files are deleted until the max size is reached." 2556;; old files are deleted until the max size is reached."
2559;; (let* ((files 2557;; (let* ((files
2560;; (sort 2558;; (sort
@@ -2563,12 +2561,12 @@ tags to their respective image file. Internal function used by
2563;; (let ((fattribs (file-attributes f))) 2561;; (let ((fattribs (file-attributes f)))
2564;; ;; Get last access time and file size 2562;; ;; Get last access time and file size
2565;; `(,(nth 4 fattribs) ,(nth 7 fattribs) ,f))) 2563;; `(,(nth 4 fattribs) ,(nth 7 fattribs) ,f)))
2566;; (directory-files (tumme-dir) t ".+\.thumb\..+$")) 2564;; (directory-files (image-dired-dir) t ".+\.thumb\..+$"))
2567;; ;; Sort function. Compare time between two files. 2565;; ;; Sort function. Compare time between two files.
2568;; '(lambda (l1 l2) 2566;; '(lambda (l1 l2)
2569;; (time-less-p (car l1) (car l2))))) 2567;; (time-less-p (car l1) (car l2)))))
2570;; (dirsize (apply '+ (mapcar (lambda (x) (cadr x)) files)))) 2568;; (dirsize (apply '+ (mapcar (lambda (x) (cadr x)) files))))
2571;; (while (> dirsize tumme-dir-max-size) 2569;; (while (> dirsize image-dired-dir-max-size)
2572;; (y-or-n-p 2570;; (y-or-n-p
2573;; (format "Size of thumbnail directory: %d, delete old file %s? " 2571;; (format "Size of thumbnail directory: %d, delete old file %s? "
2574;; dirsize (cadr (cdar files)))) 2572;; dirsize (cadr (cdar files))))
@@ -2579,8 +2577,8 @@ tags to their respective image file. Internal function used by
2579;;;;;;;;;;;;;;;;;;;;;;, 2577;;;;;;;;;;;;;;;;;;;;;;,
2580 2578
2581;; (defun dired-speedbar-buttons (dired-buffer) 2579;; (defun dired-speedbar-buttons (dired-buffer)
2582;; (when (and (boundp 'tumme-use-speedbar) 2580;; (when (and (boundp 'image-dired-use-speedbar)
2583;; tumme-use-speedbar) 2581;; image-dired-use-speedbar)
2584;; (let ((filename (with-current-buffer dired-buffer 2582;; (let ((filename (with-current-buffer dired-buffer
2585;; (dired-get-filename)))) 2583;; (dired-get-filename))))
2586;; (when (and (not (string-equal filename (buffer-string))) 2584;; (when (and (not (string-equal filename (buffer-string)))
@@ -2589,11 +2587,11 @@ tags to their respective image file. Internal function used by
2589;; (insert (propertize 2587;; (insert (propertize
2590;; filename 2588;; filename
2591;; 'display 2589;; 'display
2592;; (tumme-get-thumbnail-image filename))))))) 2590;; (image-dired-get-thumbnail-image filename)))))))
2593 2591
2594;; (setq tumme-use-speedbar t) 2592;; (setq image-dired-use-speedbar t)
2595 2593
2596(provide 'tumme) 2594(provide 'image-dired)
2597 2595
2598;; arch-tag: 9d11411d-331f-4380-8b44-8adfe3a0343e 2596;; arch-tag: 9d11411d-331f-4380-8b44-8adfe3a0343e
2599;;; tumme.el ends here 2597;;; image-dired.el ends here
diff --git a/lisp/info.el b/lisp/info.el
index 6757929424b..4d1e1d8e3e9 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -1400,8 +1400,8 @@ any double quotes or backslashes must be escaped (\\\",\\\\)."
1400 1400
1401(defvar Info-mode-line-node-keymap 1401(defvar Info-mode-line-node-keymap
1402 (let ((map (make-sparse-keymap))) 1402 (let ((map (make-sparse-keymap)))
1403 (define-key map [mode-line mouse-1] 'Info-scroll-up) 1403 (define-key map [mode-line mouse-1] 'Info-mouse-scroll-up)
1404 (define-key map [mode-line mouse-3] 'Info-scroll-down) 1404 (define-key map [mode-line mouse-3] 'Info-mouse-scroll-down)
1405 map) 1405 map)
1406 "Keymap to put on the Info node name in the mode line.") 1406 "Keymap to put on the Info node name in the mode line.")
1407 1407
@@ -2620,6 +2620,15 @@ in other ways.)"
2620 (t (Info-next-preorder))) 2620 (t (Info-next-preorder)))
2621 (scroll-up)))) 2621 (scroll-up))))
2622 2622
2623(defun Info-mouse-scroll-up (e)
2624 "Scroll one screenful forward in Info, using the mouse.
2625See `Info-scroll-up'."
2626 (interactive "e")
2627 (save-selected-window
2628 (if (eventp e)
2629 (select-window (posn-window (event-start e))))
2630 (Info-scroll-up)))
2631
2623(defun Info-scroll-down () 2632(defun Info-scroll-down ()
2624 "Scroll one screenful back in Info, considering all nodes as one sequence. 2633 "Scroll one screenful back in Info, considering all nodes as one sequence.
2625If point is within the menu of a node, and `Info-scroll-prefer-subnodes' 2634If point is within the menu of a node, and `Info-scroll-prefer-subnodes'
@@ -2646,6 +2655,15 @@ parent node."
2646 (Info-last-preorder) 2655 (Info-last-preorder)
2647 (scroll-down)))) 2656 (scroll-down))))
2648 2657
2658(defun Info-mouse-scroll-down (e)
2659 "Scroll one screenful backward in Info, using the mouse.
2660See `Info-scroll-down'."
2661 (interactive "e")
2662 (save-selected-window
2663 (if (eventp e)
2664 (select-window (posn-window (event-start e))))
2665 (Info-scroll-down)))
2666
2649(defun Info-next-reference (&optional recur) 2667(defun Info-next-reference (&optional recur)
2650 "Move cursor to the next cross-reference or menu item in the node." 2668 "Move cursor to the next cross-reference or menu item in the node."
2651 (interactive) 2669 (interactive)
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 92573c0d417..e94a2fb81f5 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -1567,8 +1567,10 @@ text, and convert it in the temporary buffer. Otherwise, convert in-place."
1567;;; FILE I/O 1567;;; FILE I/O
1568 1568
1569(defcustom auto-coding-alist 1569(defcustom auto-coding-alist
1570 '(("\\.\\(arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\)\\'" . no-conversion) 1570 ;; .exe and .EXE are added to support archive-mode looking at DOS
1571 ("\\.\\(ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . no-conversion) 1571 ;; self-extracting exe archives.
1572 '(("\\.\\(arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|exe\\)\\'" . no-conversion)
1573 ("\\.\\(ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|EXE\\)\\'" . no-conversion)
1572 ("\\.\\(sx[dmicw]\\|odt\\|tar\\|tgz\\)\\'" . no-conversion) 1574 ("\\.\\(sx[dmicw]\\|odt\\|tar\\|tgz\\)\\'" . no-conversion)
1573 ("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion) 1575 ("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion)
1574 ("\\.\\(jpe?g\\|png\\|gif\\|tiff?\\|p[bpgn]m\\)\\'" . no-conversion) 1576 ("\\.\\(jpe?g\\|png\\|gif\\|tiff?\\|p[bpgn]m\\)\\'" . no-conversion)
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 342dd04b936..12391dd774d 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -4,7 +4,7 @@
4 4
5;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best 5;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best
6;;;;;; 5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5" 6;;;;;; 5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5"
7;;;;;; "play/5x5.el" (17876 15555)) 7;;;;;; "play/5x5.el" (17941 38806))
8;;; Generated autoloads from play/5x5.el 8;;; Generated autoloads from play/5x5.el
9 9
10(autoload (quote 5x5) "5x5" "\ 10(autoload (quote 5x5) "5x5" "\
@@ -852,7 +852,7 @@ Not documented
852;;;*** 852;;;***
853 853
854;;;### (autoloads (animate-birthday-present animate-sequence animate-string) 854;;;### (autoloads (animate-birthday-present animate-sequence animate-string)
855;;;;;; "animate" "play/animate.el" (17842 55395)) 855;;;;;; "animate" "play/animate.el" (17941 38806))
856;;; Generated autoloads from play/animate.el 856;;; Generated autoloads from play/animate.el
857 857
858(autoload (quote animate-string) "animate" "\ 858(autoload (quote animate-string) "animate" "\
@@ -945,7 +945,7 @@ Used in `antlr-mode'. Also a useful function in `java-mode-hook'.
945;;;### (autoloads (appt-activate appt-make-list appt-delete appt-add 945;;;### (autoloads (appt-activate appt-make-list appt-delete appt-add
946;;;;;; appt-display-diary appt-display-duration appt-display-mode-line 946;;;;;; appt-display-diary appt-display-duration appt-display-mode-line
947;;;;;; appt-msg-window appt-visible appt-audible appt-message-warning-time 947;;;;;; appt-msg-window appt-visible appt-audible appt-message-warning-time
948;;;;;; appt-issue-message) "appt" "calendar/appt.el" (17842 53792)) 948;;;;;; appt-issue-message) "appt" "calendar/appt.el" (17952 17513))
949;;; Generated autoloads from calendar/appt.el 949;;; Generated autoloads from calendar/appt.el
950 950
951(defvar appt-issue-message t "\ 951(defvar appt-issue-message t "\
@@ -1129,8 +1129,8 @@ Returns list of symbols and documentation found.
1129 1129
1130;;;*** 1130;;;***
1131 1131
1132;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (17842 1132;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (17956
1133;;;;;; 58280)) 1133;;;;;; 9517))
1134;;; Generated autoloads from arc-mode.el 1134;;; Generated autoloads from arc-mode.el
1135 1135
1136(autoload (quote archive-mode) "arc-mode" "\ 1136(autoload (quote archive-mode) "arc-mode" "\
@@ -1794,8 +1794,8 @@ non-interactive use see also `benchmark-run' and
1794 1794
1795;;;*** 1795;;;***
1796 1796
1797;;;### (autoloads (bibtex-mode) "bibtex" "textmodes/bibtex.el" (17843 1797;;;### (autoloads (bibtex-mode) "bibtex" "textmodes/bibtex.el" (17956
1798;;;;;; 28300)) 1798;;;;;; 9518))
1799;;; Generated autoloads from textmodes/bibtex.el 1799;;; Generated autoloads from textmodes/bibtex.el
1800 1800
1801(autoload (quote bibtex-mode) "bibtex" "\ 1801(autoload (quote bibtex-mode) "bibtex" "\
@@ -2671,7 +2671,7 @@ Also see `make-text-button'.
2671;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile 2671;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile
2672;;;;;; compile-defun byte-compile-file byte-recompile-directory 2672;;;;;; compile-defun byte-compile-file byte-recompile-directory
2673;;;;;; byte-force-recompile byte-compile-warnings-safe-p) "bytecomp" 2673;;;;;; byte-force-recompile byte-compile-warnings-safe-p) "bytecomp"
2674;;;;;; "emacs-lisp/bytecomp.el" (17927 20254)) 2674;;;;;; "emacs-lisp/bytecomp.el" (17949 41467))
2675;;; Generated autoloads from emacs-lisp/bytecomp.el 2675;;; Generated autoloads from emacs-lisp/bytecomp.el
2676(put 'byte-compile-dynamic 'safe-local-variable 'booleanp) 2676(put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
2677(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp) 2677(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
@@ -2802,7 +2802,7 @@ from the cursor position.
2802;;;### (autoloads (defmath calc-embedded-activate calc-embedded calc-grab-rectangle 2802;;;### (autoloads (defmath calc-embedded-activate calc-embedded calc-grab-rectangle
2803;;;;;; calc-grab-region full-calc-keypad calc-keypad calc-eval quick-calc 2803;;;;;; calc-grab-region full-calc-keypad calc-keypad calc-eval quick-calc
2804;;;;;; full-calc calc calc-dispatch calc-settings-file) "calc" "calc/calc.el" 2804;;;;;; full-calc calc calc-dispatch calc-settings-file) "calc" "calc/calc.el"
2805;;;;;; (17919 4936)) 2805;;;;;; (17955 4296))
2806;;; Generated autoloads from calc/calc.el 2806;;; Generated autoloads from calc/calc.el
2807 2807
2808(defvar calc-settings-file (convert-standard-filename "~/.calc.el") "\ 2808(defvar calc-settings-file (convert-standard-filename "~/.calc.el") "\
@@ -2909,7 +2909,7 @@ See the documentation for `calculator-mode' for more information.
2909;;;;;; mark-holidays-in-calendar view-calendar-holidays-initially 2909;;;;;; mark-holidays-in-calendar view-calendar-holidays-initially
2910;;;;;; calendar-remove-frame-by-deleting mark-diary-entries-in-calendar 2910;;;;;; calendar-remove-frame-by-deleting mark-diary-entries-in-calendar
2911;;;;;; view-diary-entries-initially calendar-offset) "calendar" 2911;;;;;; view-diary-entries-initially calendar-offset) "calendar"
2912;;;;;; "calendar/calendar.el" (17929 8808)) 2912;;;;;; "calendar/calendar.el" (17944 20140))
2913;;; Generated autoloads from calendar/calendar.el 2913;;; Generated autoloads from calendar/calendar.el
2914 2914
2915(defvar calendar-offset 0 "\ 2915(defvar calendar-offset 0 "\
@@ -3507,7 +3507,7 @@ it fails.
3507;;;*** 3507;;;***
3508 3508
3509;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el" 3509;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el"
3510;;;;;; (17926 45410)) 3510;;;;;; (17942 63381))
3511;;; Generated autoloads from progmodes/cc-engine.el 3511;;; Generated autoloads from progmodes/cc-engine.el
3512 3512
3513(autoload (quote c-guess-basic-syntax) "cc-engine" "\ 3513(autoload (quote c-guess-basic-syntax) "cc-engine" "\
@@ -3728,14 +3728,14 @@ and exists only for compatibility reasons.
3728 3728
3729;;;*** 3729;;;***
3730 3730
3731;;;### (autoloads nil "cc-subword" "progmodes/cc-subword.el" (17842 3731;;;### (autoloads nil "cc-subword" "progmodes/cc-subword.el" (17949
3732;;;;;; 56333)) 3732;;;;;; 41467))
3733;;; Generated autoloads from progmodes/cc-subword.el 3733;;; Generated autoloads from progmodes/cc-subword.el
3734 (autoload 'c-subword-mode "cc-subword" "Mode enabling subword movement and editing keys." t) 3734 (autoload 'c-subword-mode "cc-subword" "Mode enabling subword movement and editing keys." t)
3735 3735
3736;;;*** 3736;;;***
3737 3737
3738;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (17854 7681)) 3738;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (17941 38806))
3739;;; Generated autoloads from progmodes/cc-vars.el 3739;;; Generated autoloads from progmodes/cc-vars.el
3740(put 'c-basic-offset 'safe-local-variable 'integerp) 3740(put 'c-basic-offset 'safe-local-variable 'integerp)
3741(put 'c-backslash-column 'safe-local-variable 'integerp) 3741(put 'c-backslash-column 'safe-local-variable 'integerp)
@@ -4535,7 +4535,7 @@ on third call it again advances points to the next difference and so on.
4535;;;;;; compilation-shell-minor-mode compilation-mode compilation-start 4535;;;;;; compilation-shell-minor-mode compilation-mode compilation-start
4536;;;;;; compile compilation-disable-input compile-command compilation-search-path 4536;;;;;; compile compilation-disable-input compile-command compilation-search-path
4537;;;;;; compilation-ask-about-save compilation-window-height compilation-mode-hook) 4537;;;;;; compilation-ask-about-save compilation-window-height compilation-mode-hook)
4538;;;;;; "compile" "progmodes/compile.el" (17928 33291)) 4538;;;;;; "compile" "progmodes/compile.el" (17952 11093))
4539;;; Generated autoloads from progmodes/compile.el 4539;;; Generated autoloads from progmodes/compile.el
4540 4540
4541(defvar compilation-mode-hook nil "\ 4541(defvar compilation-mode-hook nil "\
@@ -4698,7 +4698,7 @@ This is the value of `next-error-function' in Compilation buffers.
4698;;;*** 4698;;;***
4699 4699
4700;;;### (autoloads (partial-completion-mode) "complete" "complete.el" 4700;;;### (autoloads (partial-completion-mode) "complete" "complete.el"
4701;;;;;; (17931 55720)) 4701;;;;;; (17954 15344))
4702;;; Generated autoloads from complete.el 4702;;; Generated autoloads from complete.el
4703 4703
4704(defvar partial-completion-mode nil "\ 4704(defvar partial-completion-mode nil "\
@@ -5200,7 +5200,7 @@ Insert a copyright by $ORGANIZATION notice at cursor.
5200;;;*** 5200;;;***
5201 5201
5202;;;### (autoloads (cperl-perldoc-at-point cperl-perldoc cperl-mode) 5202;;;### (autoloads (cperl-perldoc-at-point cperl-perldoc cperl-mode)
5203;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (17899 1957)) 5203;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (17955 36604))
5204;;; Generated autoloads from progmodes/cperl-mode.el 5204;;; Generated autoloads from progmodes/cperl-mode.el
5205 5205
5206(autoload (quote cperl-mode) "cperl-mode" "\ 5206(autoload (quote cperl-mode) "cperl-mode" "\
@@ -5538,7 +5538,7 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v bindings.
5538;;;;;; customize-mode customize customize-save-variable customize-set-variable 5538;;;;;; customize-mode customize customize-save-variable customize-set-variable
5539;;;;;; customize-set-value custom-menu-sort-alphabetically custom-buffer-sort-alphabetically 5539;;;;;; customize-set-value custom-menu-sort-alphabetically custom-buffer-sort-alphabetically
5540;;;;;; custom-browse-sort-alphabetically) "cus-edit" "cus-edit.el" 5540;;;;;; custom-browse-sort-alphabetically) "cus-edit" "cus-edit.el"
5541;;;;;; (17900 13368)) 5541;;;;;; (17952 11093))
5542;;; Generated autoloads from cus-edit.el 5542;;; Generated autoloads from cus-edit.el
5543 5543
5544(defvar custom-browse-sort-alphabetically nil "\ 5544(defvar custom-browse-sort-alphabetically nil "\
@@ -6044,8 +6044,8 @@ See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion].
6044 6044
6045;;;*** 6045;;;***
6046 6046
6047;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (17842 6047;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (17949
6048;;;;;; 56333)) 6048;;;;;; 41468))
6049;;; Generated autoloads from progmodes/dcl-mode.el 6049;;; Generated autoloads from progmodes/dcl-mode.el
6050 6050
6051(autoload (quote dcl-mode) "dcl-mode" "\ 6051(autoload (quote dcl-mode) "dcl-mode" "\
@@ -6442,7 +6442,7 @@ as well as widgets, buttons, overlays, and text properties.
6442;;;### (autoloads (desktop-revert desktop-save-in-desktop-dir desktop-change-dir 6442;;;### (autoloads (desktop-revert desktop-save-in-desktop-dir desktop-change-dir
6443;;;;;; desktop-load-default desktop-read desktop-remove desktop-save 6443;;;;;; desktop-load-default desktop-read desktop-remove desktop-save
6444;;;;;; desktop-clear desktop-locals-to-save desktop-save-mode) "desktop" 6444;;;;;; desktop-clear desktop-locals-to-save desktop-save-mode) "desktop"
6445;;;;;; "desktop.el" (17893 17506)) 6445;;;;;; "desktop.el" (17949 41467))
6446;;; Generated autoloads from desktop.el 6446;;; Generated autoloads from desktop.el
6447 6447
6448(defvar desktop-save-mode nil "\ 6448(defvar desktop-save-mode nil "\
@@ -6676,7 +6676,7 @@ Not documented
6676;;;*** 6676;;;***
6677 6677
6678;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib" 6678;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib"
6679;;;;;; "calendar/diary-lib.el" (17929 8808)) 6679;;;;;; "calendar/diary-lib.el" (17944 20140))
6680;;; Generated autoloads from calendar/diary-lib.el 6680;;; Generated autoloads from calendar/diary-lib.el
6681 6681
6682(autoload (quote diary) "diary-lib" "\ 6682(autoload (quote diary) "diary-lib" "\
@@ -6756,14 +6756,13 @@ With prefix arg, prompt for diff switches.
6756;;;*** 6756;;;***
6757 6757
6758;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "diff-mode.el" 6758;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "diff-mode.el"
6759;;;;;; (17907 56729)) 6759;;;;;; (17942 63381))
6760;;; Generated autoloads from diff-mode.el 6760;;; Generated autoloads from diff-mode.el
6761 6761
6762(autoload (quote diff-mode) "diff-mode" "\ 6762(autoload (quote diff-mode) "diff-mode" "\
6763Major mode for viewing/editing context diffs. 6763Major mode for viewing/editing context diffs.
6764Supports unified and context diffs as well as (to a lesser extent) 6764Supports unified and context diffs as well as (to a lesser extent)
6765normal diffs. If you edit the buffer manually, diff-mode will try 6765normal diffs.
6766to update the hunk headers for you on-the-fly.
6767 6766
6768When the buffer is read-only, the ESC prefix is not necessary. 6767When the buffer is read-only, the ESC prefix is not necessary.
6769If you edit the buffer manually, diff-mode will try to update the hunk 6768If you edit the buffer manually, diff-mode will try to update the hunk
@@ -6773,9 +6772,6 @@ You can also switch between context diff and unified diff with \\[diff-context->
6773or vice versa with \\[diff-unified->context] and you can also reverse the direction of 6772or vice versa with \\[diff-unified->context] and you can also reverse the direction of
6774a diff with \\[diff-reverse-direction]. 6773a diff with \\[diff-reverse-direction].
6775 6774
6776When the buffer is read-only, the Meta- modifier is not necessary
6777to run the Diff mode commands:
6778
6779 \\{diff-mode-map} 6775 \\{diff-mode-map}
6780 6776
6781\(fn)" t nil) 6777\(fn)" t nil)
@@ -7412,7 +7408,7 @@ true then the type of the file linked to by FILE is printed instead.
7412;;;*** 7408;;;***
7413 7409
7414;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el" 7410;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el"
7415;;;;;; (17859 33405)) 7411;;;;;; (17942 63381))
7416;;; Generated autoloads from dired-x.el 7412;;; Generated autoloads from dired-x.el
7417 7413
7418(autoload (quote dired-jump) "dired-x" "\ 7414(autoload (quote dired-jump) "dired-x" "\
@@ -7596,7 +7592,7 @@ for users who call this function in `.emacs'.
7596;;;*** 7592;;;***
7597 7593
7598;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el" 7594;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el"
7599;;;;;; (17842 55395)) 7595;;;;;; (17941 38806))
7600;;; Generated autoloads from play/dissociate.el 7596;;; Generated autoloads from play/dissociate.el
7601 7597
7602(autoload (quote dissociated-press) "dissociate" "\ 7598(autoload (quote dissociated-press) "dissociate" "\
@@ -7612,7 +7608,7 @@ Default is 2.
7612 7608
7613;;;*** 7609;;;***
7614 7610
7615;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (17842 58280)) 7611;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (17949 41467))
7616;;; Generated autoloads from dnd.el 7612;;; Generated autoloads from dnd.el
7617 7613
7618(defvar dnd-protocol-alist (quote (("^file:///" . dnd-open-local-file) ("^file://" . dnd-open-file) ("^file:" . dnd-open-local-file) ("^\\(https?\\|ftp\\|file\\|nfs\\)://" . dnd-open-file))) "\ 7614(defvar dnd-protocol-alist (quote (("^file:///" . dnd-open-local-file) ("^file://" . dnd-open-file) ("^file:" . dnd-open-local-file) ("^\\(https?\\|ftp\\|file\\|nfs\\)://" . dnd-open-file))) "\
@@ -7657,7 +7653,7 @@ Locate SOA record and increment the serial field.
7657 7653
7658;;;*** 7654;;;***
7659 7655
7660;;;### (autoloads (doctor) "doctor" "play/doctor.el" (17842 55395)) 7656;;;### (autoloads (doctor) "doctor" "play/doctor.el" (17941 38806))
7661;;; Generated autoloads from play/doctor.el 7657;;; Generated autoloads from play/doctor.el
7662 7658
7663(autoload (quote doctor) "doctor" "\ 7659(autoload (quote doctor) "doctor" "\
@@ -7956,7 +7952,7 @@ To implement dynamic menus, either call this from
7956;;;;;; ebnf-eps-directory ebnf-spool-region ebnf-spool-buffer ebnf-spool-file 7952;;;;;; ebnf-eps-directory ebnf-spool-region ebnf-spool-buffer ebnf-spool-file
7957;;;;;; ebnf-spool-directory ebnf-print-region ebnf-print-buffer 7953;;;;;; ebnf-spool-directory ebnf-print-region ebnf-print-buffer
7958;;;;;; ebnf-print-file ebnf-print-directory ebnf-customize) "ebnf2ps" 7954;;;;;; ebnf-print-file ebnf-print-directory ebnf-customize) "ebnf2ps"
7959;;;;;; "progmodes/ebnf2ps.el" (17859 54480)) 7955;;;;;; "progmodes/ebnf2ps.el" (17952 11093))
7960;;; Generated autoloads from progmodes/ebnf2ps.el 7956;;; Generated autoloads from progmodes/ebnf2ps.el
7961 7957
7962(autoload (quote ebnf-customize) "ebnf2ps" "\ 7958(autoload (quote ebnf-customize) "ebnf2ps" "\
@@ -8413,7 +8409,7 @@ With prefix arg NOCONFIRM, execute current line as-is without editing.
8413 8409
8414;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form 8410;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form
8415;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug" 8411;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug"
8416;;;;;; "emacs-lisp/edebug.el" (17930 34071)) 8412;;;;;; "emacs-lisp/edebug.el" (17952 11093))
8417;;; Generated autoloads from emacs-lisp/edebug.el 8413;;; Generated autoloads from emacs-lisp/edebug.el
8418 8414
8419(defvar edebug-all-defs nil "\ 8415(defvar edebug-all-defs nil "\
@@ -10719,7 +10715,7 @@ you can set `feedmail-queue-reminder-alist' to nil.
10719;;;*** 10715;;;***
10720 10716
10721;;;### (autoloads (ffap-bindings dired-at-point ffap-at-mouse ffap-menu 10717;;;### (autoloads (ffap-bindings dired-at-point ffap-at-mouse ffap-menu
10722;;;;;; find-file-at-point ffap-next) "ffap" "ffap.el" (17829 31540)) 10718;;;;;; find-file-at-point ffap-next) "ffap" "ffap.el" (17943 4602))
10723;;; Generated autoloads from ffap.el 10719;;; Generated autoloads from ffap.el
10724 10720
10725(autoload (quote ffap-next) "ffap" "\ 10721(autoload (quote ffap-next) "ffap" "\
@@ -11271,7 +11267,7 @@ Turn flymake mode off.
11271 11267
11272;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off 11268;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off
11273;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode) 11269;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode)
11274;;;;;; "flyspell" "textmodes/flyspell.el" (17927 20254)) 11270;;;;;; "flyspell" "textmodes/flyspell.el" (17942 63381))
11275;;; Generated autoloads from textmodes/flyspell.el 11271;;; Generated autoloads from textmodes/flyspell.el
11276 11272
11277(autoload (quote flyspell-prog-mode) "flyspell" "\ 11273(autoload (quote flyspell-prog-mode) "flyspell" "\
@@ -11414,8 +11410,8 @@ in your `~/.emacs' file, replacing [f7] by your favourite key:
11414 11410
11415;;;*** 11411;;;***
11416 11412
11417;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (17842 11413;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (17954
11418;;;;;; 55035)) 11414;;;;;; 24686))
11419;;; Generated autoloads from mail/footnote.el 11415;;; Generated autoloads from mail/footnote.el
11420 11416
11421(autoload (quote footnote-mode) "footnote" "\ 11417(autoload (quote footnote-mode) "footnote" "\
@@ -11609,7 +11605,7 @@ and choose the directory as the fortune-file.
11609;;;*** 11605;;;***
11610 11606
11611;;;### (autoloads (gdb-enable-debug gdba) "gdb-ui" "progmodes/gdb-ui.el" 11607;;;### (autoloads (gdb-enable-debug gdba) "gdb-ui" "progmodes/gdb-ui.el"
11612;;;;;; (17893 61665)) 11608;;;;;; (17941 38806))
11613;;; Generated autoloads from progmodes/gdb-ui.el 11609;;; Generated autoloads from progmodes/gdb-ui.el
11614 11610
11615(autoload (quote gdba) "gdb-ui" "\ 11611(autoload (quote gdba) "gdb-ui" "\
@@ -12303,7 +12299,7 @@ Update the .newsrc.eld file to reflect the change of nntp server.
12303;;;*** 12299;;;***
12304 12300
12305;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail) 12301;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail)
12306;;;;;; "gnus-msg" "gnus/gnus-msg.el" (17938 61442)) 12302;;;;;; "gnus-msg" "gnus/gnus-msg.el" (17949 41467))
12307;;; Generated autoloads from gnus/gnus-msg.el 12303;;; Generated autoloads from gnus/gnus-msg.el
12308 12304
12309(autoload (quote gnus-msg-mail) "gnus-msg" "\ 12305(autoload (quote gnus-msg-mail) "gnus-msg" "\
@@ -12543,7 +12539,7 @@ Add the window configuration CONF to `gnus-buffer-configuration'.
12543 12539
12544;;;*** 12540;;;***
12545 12541
12546;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (17842 55395)) 12542;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (17941 38806))
12547;;; Generated autoloads from play/gomoku.el 12543;;; Generated autoloads from play/gomoku.el
12548 12544
12549(autoload (quote gomoku) "gomoku" "\ 12545(autoload (quote gomoku) "gomoku" "\
@@ -12600,7 +12596,7 @@ Also fontifies the buffer appropriately (see `goto-address-fontify-p' and
12600 12596
12601;;;### (autoloads (rgrep lgrep grep-find grep grep-mode grep-compute-defaults 12597;;;### (autoloads (rgrep lgrep grep-find grep grep-mode grep-compute-defaults
12602;;;;;; grep-process-setup grep-setup-hook grep-find-command grep-command 12598;;;;;; grep-process-setup grep-setup-hook grep-find-command grep-command
12603;;;;;; grep-window-height) "grep" "progmodes/grep.el" (17908 16392)) 12599;;;;;; grep-window-height) "grep" "progmodes/grep.el" (17944 20144))
12604;;; Generated autoloads from progmodes/grep.el 12600;;; Generated autoloads from progmodes/grep.el
12605 12601
12606(defvar grep-window-height nil "\ 12602(defvar grep-window-height nil "\
@@ -12643,10 +12639,10 @@ The default find program for `grep-find-command'.
12643This variable's value takes effect when `grep-compute-defaults' is called.") 12639This variable's value takes effect when `grep-compute-defaults' is called.")
12644 12640
12645(defvar grep-find-use-xargs nil "\ 12641(defvar grep-find-use-xargs nil "\
12646Whether \\[grep-find] uses the `xargs' utility by default. 12642Non-nil means that `grep-find' uses the `xargs' utility by default.
12647 12643If `exec', use `find -exec'.
12648If `exec', it uses `find -exec'; if `gnu', it uses `find -print0' and `xargs -0'; 12644If `gnu', use `find -print0' and `xargs -0'.
12649if not nil and not `gnu', it uses `find -print' and `xargs'. 12645Any other non-nil value means to use `find -print' and `xargs'.
12650 12646
12651This variable's value takes effect when `grep-compute-defaults' is called.") 12647This variable's value takes effect when `grep-compute-defaults' is called.")
12652 12648
@@ -12754,7 +12750,7 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful.
12754;;;*** 12750;;;***
12755 12751
12756;;;### (autoloads (gdb-script-mode jdb pdb perldb xdb dbx sdb gdb) 12752;;;### (autoloads (gdb-script-mode jdb pdb perldb xdb dbx sdb gdb)
12757;;;;;; "gud" "progmodes/gud.el" (17938 61442)) 12753;;;;;; "gud" "progmodes/gud.el" (17950 21759))
12758;;; Generated autoloads from progmodes/gud.el 12754;;; Generated autoloads from progmodes/gud.el
12759 12755
12760(autoload (quote gdb) "gud" "\ 12756(autoload (quote gdb) "gud" "\
@@ -16488,7 +16484,7 @@ Not documented
16488;;;*** 16484;;;***
16489 16485
16490;;;### (autoloads (lm lm-test-run) "landmark" "play/landmark.el" 16486;;;### (autoloads (lm lm-test-run) "landmark" "play/landmark.el"
16491;;;;;; (17842 55395)) 16487;;;;;; (17941 38806))
16492;;; Generated autoloads from play/landmark.el 16488;;; Generated autoloads from play/landmark.el
16493 16489
16494(defalias (quote landmark-repeat) (quote lm-test-run)) 16490(defalias (quote landmark-repeat) (quote lm-test-run))
@@ -16711,8 +16707,8 @@ generations (this defaults to 1).
16711 16707
16712;;;*** 16708;;;***
16713 16709
16714;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (17870 16710;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (17942
16715;;;;;; 63949)) 16711;;;;;; 63381))
16716;;; Generated autoloads from loadhist.el 16712;;; Generated autoloads from loadhist.el
16717 16713
16718(autoload (quote unload-feature) "loadhist" "\ 16714(autoload (quote unload-feature) "loadhist" "\
@@ -17450,8 +17446,8 @@ yourself the value of `master-of' by calling `master-show-slave'.
17450 17446
17451;;;*** 17447;;;***
17452 17448
17453;;;### (autoloads (menu-bar-mode) "menu-bar" "menu-bar.el" (17842 17449;;;### (autoloads (menu-bar-mode) "menu-bar" "menu-bar.el" (17942
17454;;;;;; 58279)) 17450;;;;;; 63381))
17455;;; Generated autoloads from menu-bar.el 17451;;; Generated autoloads from menu-bar.el
17456 17452
17457(put (quote menu-bar-mode) (quote standard-value) (quote (t))) 17453(put (quote menu-bar-mode) (quote standard-value) (quote (t)))
@@ -17486,7 +17482,7 @@ turn on menu bars; otherwise, turn off menu bars.
17486;;;;;; message-cite-function message-yank-prefix message-citation-line-function 17482;;;;;; message-cite-function message-yank-prefix message-citation-line-function
17487;;;;;; message-send-mail-function message-user-organization-file 17483;;;;;; message-send-mail-function message-user-organization-file
17488;;;;;; message-signature-separator message-from-style) "message" 17484;;;;;; message-signature-separator message-from-style) "message"
17489;;;;;; "gnus/message.el" (17929 33467)) 17485;;;;;; "gnus/message.el" (17949 41467))
17490;;; Generated autoloads from gnus/message.el 17486;;; Generated autoloads from gnus/message.el
17491 17487
17492(defvar message-from-style (quote default) "\ 17488(defvar message-from-style (quote default) "\
@@ -19570,7 +19566,7 @@ The file is stored under the name `org-combined-agenda-icalendar-file'.
19570;;;*** 19566;;;***
19571 19567
19572;;;### (autoloads (outline-minor-mode outline-mode) "outline" "outline.el" 19568;;;### (autoloads (outline-minor-mode outline-mode) "outline" "outline.el"
19573;;;;;; (17881 61722)) 19569;;;;;; (17952 11093))
19574;;; Generated autoloads from outline.el 19570;;; Generated autoloads from outline.el
19575(put 'outline-regexp 'safe-local-variable 'string-or-null-p) 19571(put 'outline-regexp 'safe-local-variable 'string-or-null-p)
19576 19572
@@ -19949,8 +19945,8 @@ Completion for the `chgrp' command.
19949 19945
19950;;;### (autoloads (pcomplete-shell-setup pcomplete-comint-setup pcomplete-list 19946;;;### (autoloads (pcomplete-shell-setup pcomplete-comint-setup pcomplete-list
19951;;;;;; pcomplete-help pcomplete-expand pcomplete-continue pcomplete-expand-and-complete 19947;;;;;; pcomplete-help pcomplete-expand pcomplete-continue pcomplete-expand-and-complete
19952;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (17900 19948;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (17944
19953;;;;;; 30230)) 19949;;;;;; 62194))
19954;;; Generated autoloads from pcomplete.el 19950;;; Generated autoloads from pcomplete.el
19955 19951
19956(autoload (quote pcomplete) "pcomplete" "\ 19952(autoload (quote pcomplete) "pcomplete" "\
@@ -20094,7 +20090,7 @@ The exact behavior is determined also by `cvs-dired-use-hook'." (when (stringp d
20094;;;*** 20090;;;***
20095 20091
20096;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el" 20092;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el"
20097;;;;;; (17842 56332)) 20093;;;;;; (17955 36604))
20098;;; Generated autoloads from progmodes/perl-mode.el 20094;;; Generated autoloads from progmodes/perl-mode.el
20099 20095
20100(autoload (quote perl-mode) "perl-mode" "\ 20096(autoload (quote perl-mode) "perl-mode" "\
@@ -21451,7 +21447,7 @@ If EXTENSION is any other symbol, it is ignored.
21451;;;*** 21447;;;***
21452 21448
21453;;;### (autoloads (jython-mode python-mode run-python) "python" "progmodes/python.el" 21449;;;### (autoloads (jython-mode python-mode run-python) "python" "progmodes/python.el"
21454;;;;;; (17930 34071)) 21450;;;;;; (17956 9518))
21455;;; Generated autoloads from progmodes/python.el 21451;;; Generated autoloads from progmodes/python.el
21456 21452
21457(add-to-list (quote interpreter-mode-alist) (quote ("jython" . jython-mode))) 21453(add-to-list (quote interpreter-mode-alist) (quote ("jython" . jython-mode)))
@@ -23470,7 +23466,7 @@ during scrolling.
23470;;;;;; mail-alias-file mail-default-reply-to mail-archive-file-name 23466;;;;;; mail-alias-file mail-default-reply-to mail-archive-file-name
23471;;;;;; mail-header-separator send-mail-function mail-interactive 23467;;;;;; mail-header-separator send-mail-function mail-interactive
23472;;;;;; mail-self-blind mail-specify-envelope-from mail-from-style) 23468;;;;;; mail-self-blind mail-specify-envelope-from mail-from-style)
23473;;;;;; "sendmail" "mail/sendmail.el" (17842 55035)) 23469;;;;;; "sendmail" "mail/sendmail.el" (17942 63381))
23474;;; Generated autoloads from mail/sendmail.el 23470;;; Generated autoloads from mail/sendmail.el
23475 23471
23476(defvar mail-from-style (quote angles) "\ 23472(defvar mail-from-style (quote angles) "\
@@ -23667,16 +23663,16 @@ Like Text Mode but with these additional commands:
23667\\[mail-send-and-exit] mail-send-and-exit (send the message and exit) 23663\\[mail-send-and-exit] mail-send-and-exit (send the message and exit)
23668 23664
23669Here are commands that move to a header field (and create it if there isn't): 23665Here are commands that move to a header field (and create it if there isn't):
23670 \\[mail-to] move to To: \\[mail-subject] move to Subject: 23666 \\[mail-to] move to To: \\[mail-subject] move to Subj:
23671 \\[mail-cc] move to CC: \\[mail-bcc] move to BCC: 23667 \\[mail-bcc] move to BCC: \\[mail-cc] move to CC:
23672 \\[mail-fcc] move to FCC: \\[mail-reply-to] move to Reply-To: 23668 \\[mail-fcc] move to FCC: \\[mail-reply-to] move to Reply-To:
23673 \\[mail-mail-reply-to] move to Mail-Reply-To: 23669 \\[mail-mail-reply-to] move to Mail-Reply-To:
23674 \\[mail-mail-followup-to] move to Mail-Followup-To: 23670 \\[mail-mail-followup-to] move to Mail-Followup-To:
23675\\[mail-text] mail-text (move to beginning of message text). 23671\\[mail-text] move to message text.
23676\\[mail-signature] mail-signature (insert `mail-signature-file' file). 23672\\[mail-signature] mail-signature (insert `mail-signature-file' file).
23677\\[mail-yank-original] mail-yank-original (insert current message, in Rmail). 23673\\[mail-yank-original] mail-yank-original (insert current message, in Rmail).
23678\\[mail-fill-yanked-message] mail-fill-yanked-message (fill what was yanked). 23674\\[mail-fill-yanked-message] mail-fill-yanked-message (fill what was yanked).
23679\\[mail-sent-via] mail-sent-via (add a Sent-via field for each To or CC). 23675\\[mail-sent-via] mail-sent-via (add a sent-via field for each To or CC).
23680Turning on Mail mode runs the normal hooks `text-mode-hook' and 23676Turning on Mail mode runs the normal hooks `text-mode-hook' and
23681`mail-mode-hook' (in that order). 23677`mail-mode-hook' (in that order).
23682 23678
@@ -24141,7 +24137,7 @@ Turning on Sieve mode runs `sieve-mode-hook'.
24141 24137
24142;;;*** 24138;;;***
24143 24139
24144;;;### (autoloads nil "simple" "simple.el" (17938 22875)) 24140;;;### (autoloads nil "simple" "simple.el" (17949 41467))
24145;;; Generated autoloads from simple.el 24141;;; Generated autoloads from simple.el
24146(put 'fill-prefix 'safe-local-variable 'string-or-null-p) 24142(put 'fill-prefix 'safe-local-variable 'string-or-null-p)
24147 24143
@@ -24344,7 +24340,7 @@ interactively. If there's no argument, do it at the current buffer
24344;;;*** 24340;;;***
24345 24341
24346;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail" 24342;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail"
24347;;;;;; "mail/smtpmail.el" (17938 24686)) 24343;;;;;; "mail/smtpmail.el" (17939 50716))
24348;;; Generated autoloads from mail/smtpmail.el 24344;;; Generated autoloads from mail/smtpmail.el
24349 24345
24350(autoload (quote smtpmail-send-it) "smtpmail" "\ 24346(autoload (quote smtpmail-send-it) "smtpmail" "\
@@ -25404,7 +25400,7 @@ Studlify-case the current buffer.
25404 25400
25405;;;*** 25401;;;***
25406 25402
25407;;;### (autoloads (locate-library) "subr" "subr.el" (17938 61442)) 25403;;;### (autoloads (locate-library) "subr" "subr.el" (17949 41467))
25408;;; Generated autoloads from subr.el 25404;;; Generated autoloads from subr.el
25409 25405
25410(autoload (quote locate-library) "subr" "\ 25406(autoload (quote locate-library) "subr" "\
@@ -26215,8 +26211,8 @@ Normally input is edited in Emacs and sent a line at a time.
26215 26211
26216;;;*** 26212;;;***
26217 26213
26218;;;### (autoloads (ansi-term term make-term) "term" "term.el" (17922 26214;;;### (autoloads (ansi-term term make-term) "term" "term.el" (17952
26219;;;;;; 37595)) 26215;;;;;; 11093))
26220;;; Generated autoloads from term.el 26216;;; Generated autoloads from term.el
26221 26217
26222(autoload (quote make-term) "term" "\ 26218(autoload (quote make-term) "term" "\
@@ -26292,7 +26288,7 @@ Start coverage on function under point.
26292 26288
26293;;;*** 26289;;;***
26294 26290
26295;;;### (autoloads (tetris) "tetris" "play/tetris.el" (17897 26294)) 26291;;;### (autoloads (tetris) "tetris" "play/tetris.el" (17941 38806))
26296;;; Generated autoloads from play/tetris.el 26292;;; Generated autoloads from play/tetris.el
26297 26293
26298(autoload (quote tetris) "tetris" "\ 26294(autoload (quote tetris) "tetris" "\
@@ -27396,7 +27392,7 @@ PATTERN regexp.
27396;;;*** 27392;;;***
27397 27393
27398;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm" 27394;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm"
27399;;;;;; "tmm.el" (17938 22875)) 27395;;;;;; "tmm.el" (17952 58711))
27400;;; Generated autoloads from tmm.el 27396;;; Generated autoloads from tmm.el
27401 (define-key global-map "\M-`" 'tmm-menubar) 27397 (define-key global-map "\M-`" 'tmm-menubar)
27402 (define-key global-map [f10] 'tmm-menubar) 27398 (define-key global-map [f10] 'tmm-menubar)
@@ -28469,7 +28465,7 @@ Not documented
28469;;;*** 28465;;;***
28470 28466
28471;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p 28467;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p
28472;;;;;; url-http) "url-http" "url/url-http.el" (17935 53395)) 28468;;;;;; url-http) "url-http" "url/url-http.el" (17952 11683))
28473;;; Generated autoloads from url/url-http.el 28469;;; Generated autoloads from url/url-http.el
28474 28470
28475(autoload (quote url-http) "url-http" "\ 28471(autoload (quote url-http) "url-http" "\
@@ -28665,7 +28661,7 @@ Not documented
28665;;;*** 28661;;;***
28666 28662
28667;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse" 28663;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse"
28668;;;;;; "url/url-parse.el" (17842 56569)) 28664;;;;;; "url/url-parse.el" (17954 22157))
28669;;; Generated autoloads from url/url-parse.el 28665;;; Generated autoloads from url/url-parse.el
28670 28666
28671(autoload (quote url-recreate-url) "url-parse" "\ 28667(autoload (quote url-recreate-url) "url-parse" "\
@@ -30415,8 +30411,8 @@ With arg, turn widget mode on if and only if arg is positive.
30415;;;*** 30411;;;***
30416 30412
30417;;;### (autoloads (widget-setup widget-insert widget-delete widget-create 30413;;;### (autoloads (widget-setup widget-insert widget-delete widget-create
30418;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (17884 30414;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (17952
30419;;;;;; 58614)) 30415;;;;;; 11093))
30420;;; Generated autoloads from wid-edit.el 30416;;; Generated autoloads from wid-edit.el
30421 30417
30422(autoload (quote widgetp) "wid-edit" "\ 30418(autoload (quote widgetp) "wid-edit" "\
@@ -30533,7 +30529,7 @@ With arg, turn Winner mode on if and only if arg is positive.
30533;;;*** 30529;;;***
30534 30530
30535;;;### (autoloads (woman-find-file woman-dired-find-file woman) "woman" 30531;;;### (autoloads (woman-find-file woman-dired-find-file woman) "woman"
30536;;;;;; "woman.el" (17934 34122)) 30532;;;;;; "woman.el" (17949 41467))
30537;;; Generated autoloads from woman.el 30533;;; Generated autoloads from woman.el
30538 30534
30539(autoload (quote woman) "woman" "\ 30535(autoload (quote woman) "woman" "\
@@ -30778,7 +30774,7 @@ Zippy goes to the analyst.
30778 30774
30779;;;*** 30775;;;***
30780 30776
30781;;;### (autoloads (zone) "zone" "play/zone.el" (17842 55395)) 30777;;;### (autoloads (zone) "zone" "play/zone.el" (17941 38806))
30782;;; Generated autoloads from play/zone.el 30778;;; Generated autoloads from play/zone.el
30783 30779
30784(autoload (quote zone) "zone" "\ 30780(autoload (quote zone) "zone" "\
@@ -30918,7 +30914,7 @@ Zone out, completely.
30918;;;;;; "url/url-vars.el" "url/vc-dav.el" "vc-hooks.el" "vcursor.el" 30914;;;;;; "url/url-vars.el" "url/vc-dav.el" "vc-hooks.el" "vcursor.el"
30919;;;;;; "version.el" "vms-patch.el" "vmsproc.el" "vt-control.el" 30915;;;;;; "version.el" "vms-patch.el" "vmsproc.el" "vt-control.el"
30920;;;;;; "vt100-led.el" "w32-fns.el" "w32-vars.el" "widget.el" "window.el" 30916;;;;;; "vt100-led.el" "w32-fns.el" "w32-vars.el" "widget.el" "window.el"
30921;;;;;; "x-dnd.el") (17938 62045 277063)) 30917;;;;;; "x-dnd.el") (17956 9728 35408))
30922 30918
30923;;;*** 30919;;;***
30924 30920
diff --git a/lisp/locate.el b/lisp/locate.el
index e8dafa79048..74a76fa4889 100644
--- a/lisp/locate.el
+++ b/lisp/locate.el
@@ -114,8 +114,10 @@
114 114
115;; Variables 115;; Variables
116 116
117(defvar locate-current-search nil)
118(defvar locate-current-filter nil) 117(defvar locate-current-filter nil)
118(defvar locate-local-filter nil)
119(defvar locate-local-search nil)
120(defvar locate-local-prompt nil)
119 121
120(defgroup locate nil 122(defgroup locate nil
121 "Interface to the locate command." 123 "Interface to the locate command."
@@ -220,7 +222,10 @@ option to \"/\"."
220 222
221(defcustom locate-prompt-for-command nil 223(defcustom locate-prompt-for-command nil
222 "If non-nil, the `locate' command prompts for a command to run. 224 "If non-nil, the `locate' command prompts for a command to run.
223Otherwise, that behavior is invoked via a prefix argument." 225Otherwise, that behavior is invoked via a prefix argument.
226
227Setting this option non-nil actually inverts the meaning of a prefix arg;
228that is, with a prefix arg, you get the default behavior."
224 :group 'locate 229 :group 'locate
225 :type 'boolean) 230 :type 'boolean)
226 231
@@ -240,8 +245,32 @@ Otherwise, that behavior is invoked via a prefix argument."
240 (skip-chars-backward "." pt) 245 (skip-chars-backward "." pt)
241 (point))))) 246 (point)))))
242 247
248;; Function for use in interactive declarations.
249(defun locate-prompt-for-search-string ()
250 (if (or (and current-prefix-arg
251 (not locate-prompt-for-command))
252 (and (not current-prefix-arg) locate-prompt-for-command))
253 (let ((locate-cmd (funcall locate-make-command-line "")))
254 (read-from-minibuffer
255 "Run locate (like this): "
256 (cons
257 (concat (car locate-cmd) " "
258 (mapconcat 'identity (cdr locate-cmd) " "))
259 (+ 2 (length (car locate-cmd))))
260 nil nil 'locate-history-list))
261 (let* ((default (locate-word-at-point))
262 (input
263 (read-from-minibuffer
264 (if (> (length default) 0)
265 (format "Locate (default %s): " default)
266 (format "Locate: "))
267 nil nil nil 'locate-history-list default t)))
268 (and (equal input "") default
269 (setq input default))
270 input)))
271
243;;;###autoload 272;;;###autoload
244(defun locate (search-string &optional filter) 273(defun locate (search-string &optional filter arg)
245 "Run the program `locate', putting results in `*Locate*' buffer. 274 "Run the program `locate', putting results in `*Locate*' buffer.
246Pass it SEARCH-STRING as argument. Interactively, prompt for SEARCH-STRING. 275Pass it SEARCH-STRING as argument. Interactively, prompt for SEARCH-STRING.
247With prefix arg, prompt for the exact shell command to run instead. 276With prefix arg, prompt for the exact shell command to run instead.
@@ -258,68 +287,49 @@ You can specify another program for this command to run by customizing
258the variables `locate-command' or `locate-make-command-line'. 287the variables `locate-command' or `locate-make-command-line'.
259 288
260The main use of FILTER is to implement `locate-with-filter'. See 289The main use of FILTER is to implement `locate-with-filter'. See
261the docstring of that function for its meaning." 290the docstring of that function for its meaning.
291
292ARG is the interactive prefix arg."
262 (interactive 293 (interactive
263 (list 294 (list
264 (if (or (and current-prefix-arg 295 (locate-prompt-for-search-string)
265 (not locate-prompt-for-command)) 296 nil
266 (and (not current-prefix-arg) locate-prompt-for-command)) 297 current-prefix-arg))
267 (let ((locate-cmd (funcall locate-make-command-line ""))) 298
268 (read-from-minibuffer
269 "Run locate (like this): "
270 (cons
271 (concat (car locate-cmd) " "
272 (mapconcat 'identity (cdr locate-cmd) " "))
273 (+ 2 (length (car locate-cmd))))
274 nil nil 'locate-history-list))
275 (let* ((default (locate-word-at-point))
276 (input
277 (read-from-minibuffer
278 (if (> (length default) 0)
279 (format "Locate (default %s): " default)
280 (format "Locate: "))
281 nil nil nil 'locate-history-list default t)))
282 (and (equal input "") default
283 (setq input default))
284 input))))
285 (if (equal search-string "") 299 (if (equal search-string "")
286 (error "Please specify a filename to search for")) 300 (error "Please specify a filename to search for"))
287 (let* ((locate-cmd-list (funcall locate-make-command-line search-string)) 301 (let* ((locate-cmd-list (funcall locate-make-command-line search-string))
288 (locate-cmd (car locate-cmd-list)) 302 (locate-cmd (car locate-cmd-list))
289 (locate-cmd-args (cdr locate-cmd-list)) 303 (locate-cmd-args (cdr locate-cmd-list))
290 (run-locate-command 304 (run-locate-command
291 (or (and current-prefix-arg (not locate-prompt-for-command)) 305 (or (and arg (not locate-prompt-for-command))
292 (and (not current-prefix-arg) locate-prompt-for-command))) 306 (and (not arg) locate-prompt-for-command)))
293 locate-buffer
294 ) 307 )
295 308
296 ;; Find the Locate buffer 309 ;; Find the Locate buffer
297 (setq locate-buffer (if (eq major-mode 'locate-mode) 310 (save-window-excursion
298 (current-buffer) 311 (set-buffer (get-buffer-create locate-buffer-name))
299 (get-buffer-create locate-buffer-name)))
300
301 (save-excursion
302 (set-buffer locate-buffer)
303 (locate-mode) 312 (locate-mode)
304
305 (let ((inhibit-read-only t) 313 (let ((inhibit-read-only t)
306 (buffer-undo-list t)) 314 (buffer-undo-list t))
307 (erase-buffer) 315 (erase-buffer)
308 316
309 (set (make-local-variable 'locate-current-search) search-string) 317 (setq locate-current-filter filter)
310 (set (make-local-variable 'locate-current-filter) filter) 318 (set (make-local-variable 'locate-local-search) search-string)
319 (set (make-local-variable 'locate-local-filter) filter)
320 (set (make-local-variable 'locate-local-prompt) run-locate-command)
311 321
312 (if run-locate-command 322 (if run-locate-command
313 (shell-command search-string) 323 (shell-command search-string locate-buffer-name)
314 (apply 'call-process locate-cmd nil t nil locate-cmd-args)) 324 (apply 'call-process locate-cmd nil t nil locate-cmd-args))
315 325
316 (and filter 326 (and filter
317 (locate-filter-output filter)) 327 (locate-filter-output filter))
318 328
319 (locate-do-setup search-string))) 329 (locate-do-setup search-string)
320 330 ))
321 (unless (eq (current-buffer) locate-buffer) 331 (and (not (string-equal (buffer-name) locate-buffer-name))
322 (switch-to-buffer-other-window locate-buffer)) 332 (switch-to-buffer-other-window locate-buffer-name))
323 333
324 (run-hooks 'dired-mode-hook) 334 (run-hooks 'dired-mode-hook)
325 (dired-next-line 3) ;move to first matching file. 335 (dired-next-line 3) ;move to first matching file.
@@ -328,7 +338,7 @@ the docstring of that function for its meaning."
328 ) 338 )
329 339
330;;;###autoload 340;;;###autoload
331(defun locate-with-filter (search-string filter) 341(defun locate-with-filter (search-string filter &optional arg)
332 "Run the executable program `locate' with a filter. 342 "Run the executable program `locate' with a filter.
333This function is similar to the function `locate', which see. 343This function is similar to the function `locate', which see.
334The difference is that, when invoked interactively, the present function 344The difference is that, when invoked interactively, the present function
@@ -338,14 +348,17 @@ that lists only those lines in the output of the locate program that
338contain a match for the regular expression FILTER; this is often useful 348contain a match for the regular expression FILTER; this is often useful
339to constrain a big search. 349to constrain a big search.
340 350
351ARG is the interactive prefix arg, which has the same effect as in `locate'.
352
341When called from Lisp, this function is identical with `locate', 353When called from Lisp, this function is identical with `locate',
342except that FILTER is not optional." 354except that FILTER is not optional."
343 (interactive 355 (interactive
344 (list (read-from-minibuffer "Locate: " nil nil 356 (list
345 nil 'locate-history-list) 357 (locate-prompt-for-search-string)
346 (read-from-minibuffer "Filter: " nil nil 358 (read-from-minibuffer "Filter: " nil nil
347 nil 'locate-grep-history-list))) 359 nil 'locate-grep-history-list)
348 (locate search-string filter)) 360 current-prefix-arg))
361 (locate search-string filter arg))
349 362
350(defun locate-filter-output (filter) 363(defun locate-filter-output (filter)
351 "Filter output from the locate command." 364 "Filter output from the locate command."
@@ -469,7 +482,6 @@ do not work in subdirectories.
469 default-directory "/" 482 default-directory "/"
470 buffer-read-only t 483 buffer-read-only t
471 selective-display t) 484 selective-display t)
472 (buffer-disable-undo)
473 (dired-alist-add-1 default-directory (point-min-marker)) 485 (dired-alist-add-1 default-directory (point-min-marker))
474 (set (make-local-variable 'dired-directory) "/") 486 (set (make-local-variable 'dired-directory) "/")
475 (set (make-local-variable 'dired-subdir-switches) locate-ls-subdir-switches) 487 (set (make-local-variable 'dired-subdir-switches) locate-ls-subdir-switches)
@@ -501,12 +513,11 @@ do not work in subdirectories.
501 ;; Nothing returned from locate command? 513 ;; Nothing returned from locate command?
502 (and (eobp) 514 (and (eobp)
503 (progn 515 (progn
504 (let ((filter locate-current-filter)) ; local 516 (kill-buffer locate-buffer-name)
505 (kill-buffer (current-buffer)) 517 (if locate-current-filter
506 (if filter 518 (error "Locate: no match for %s in database using filter %s"
507 (error "Locate: no match for %s in database using filter %s" 519 search-string locate-current-filter)
508 search-string filter) 520 (error "Locate: no match for %s in database" search-string))))
509 (error "Locate: no match for %s in database" search-string)))))
510 521
511 (locate-insert-header search-string) 522 (locate-insert-header search-string)
512 523
@@ -590,14 +601,16 @@ do not work in subdirectories.
590 "Revert the *Locate* buffer. 601 "Revert the *Locate* buffer.
591If `locate-update-when-revert' is non-nil, offer to update the 602If `locate-update-when-revert' is non-nil, offer to update the
592locate database using the shell command in `locate-update-command'." 603locate database using the shell command in `locate-update-command'."
593 (and locate-update-when-revert 604 (let ((locate-buffer-name (buffer-name))
594 (yes-or-no-p "Update locate database (may take a few seconds)? ") 605 (locate-prompt-for-command locate-local-prompt))
595 ;; `expand-file-name' is used in order to autoload Tramp if 606 (and locate-update-when-revert
596 ;; necessary. It cannot be loaded when `default-directory' 607 (yes-or-no-p "Update locate database (may take a few seconds)? ")
597 ;; is remote. 608 ;; `expand-file-name' is used in order to autoload Tramp if
598 (let ((default-directory (expand-file-name locate-update-path))) 609 ;; necessary. It cannot be loaded when `default-directory'
599 (shell-command locate-update-command))) 610 ;; is remote.
600 (locate locate-current-search locate-current-filter)) 611 (let ((default-directory (expand-file-name locate-update-path)))
612 (shell-command locate-update-command)))
613 (locate locate-local-search locate-local-filter)))
601 614
602;;; Modified three functions from `dired.el': 615;;; Modified three functions from `dired.el':
603;;; dired-find-directory, 616;;; dired-find-directory,
diff --git a/lisp/mail/footnote.el b/lisp/mail/footnote.el
index 2dd2e7af175..7992438df25 100644
--- a/lisp/mail/footnote.el
+++ b/lisp/mail/footnote.el
@@ -267,14 +267,17 @@ Wrapping around the alphabet implies successive repetitions of letters."
267 267
268;; Latin-1 268;; Latin-1
269 269
270(defconst footnote-latin-regexp "¹²³ºª§¶" 270(defconst footnote-latin-string "¹²³ºª§¶"
271 "String of Latin-1 footnoting characters.")
272
273(defconst footnote-latin-regexp (concat "[" footnote-latin-string "]")
271 "Regexp for Latin-1 footnoting characters.") 274 "Regexp for Latin-1 footnoting characters.")
272 275
273(defun Footnote-latin (n) 276(defun Footnote-latin (n)
274 "Latin-1 footnote style. 277 "Latin-1 footnote style.
275Use a range of Latin-1 non-ASCII characters for footnoting." 278Use a range of Latin-1 non-ASCII characters for footnoting."
276 (string (aref footnote-latin-regexp 279 (string (aref footnote-latin-string
277 (mod (1- n) (length footnote-latin-regexp))))) 280 (mod (1- n) (length footnote-latin-string)))))
278 281
279;;; list of all footnote styles 282;;; list of all footnote styles
280(defvar footnote-style-alist 283(defvar footnote-style-alist
@@ -291,14 +294,18 @@ See footnote-han.el, footnote-greek.el and footnote-hebrew.el for more
291exciting styles.") 294exciting styles.")
292 295
293(defcustom footnote-style 'numeric 296(defcustom footnote-style 'numeric
294 "*Style used for footnoting. 297 "*Default style used for footnoting.
295numeric == 1, 2, 3, ... 298numeric == 1, 2, 3, ...
296english-lower == a, b, c, ... 299english-lower == a, b, c, ...
297english-upper == A, B, C, ... 300english-upper == A, B, C, ...
298roman-lower == i, ii, iii, iv, v, ... 301roman-lower == i, ii, iii, iv, v, ...
299roman-upper == I, II, III, IV, V, ... 302roman-upper == I, II, III, IV, V, ...
300latin == ¹ ² ³ º ª § ¶ 303latin == ¹ ² ³ º ª § ¶
301See also variables `footnote-start-tag' and `footnote-end-tag'." 304See also variables `footnote-start-tag' and `footnote-end-tag'.
305
306Customizing this variable has no effect on buffers already
307displaying footnotes. You can change the style of existing
308buffers using the command `Footnote-set-style'."
302 :type (cons 'choice (mapcar (lambda (x) (list 'const (car x))) 309 :type (cons 'choice (mapcar (lambda (x) (list 'const (car x)))
303 footnote-style-alist)) 310 footnote-style-alist))
304 :group 'footnote) 311 :group 'footnote)
@@ -654,7 +661,7 @@ delete the footnote with that number."
654 (while (< i notes) 661 (while (< i notes)
655 (setq alist-ptr (nth i footnote-pointer-marker-alist)) 662 (setq alist-ptr (nth i footnote-pointer-marker-alist))
656 (setq alist-txt (nth i footnote-text-marker-alist)) 663 (setq alist-txt (nth i footnote-text-marker-alist))
657 (unless (eq (1+ i) (car alist-ptr)) 664 (unless (= (1+ i) (car alist-ptr))
658 (Footnote-renumber (car alist-ptr) (1+ i) alist-ptr alist-txt)) 665 (Footnote-renumber (car alist-ptr) (1+ i) alist-ptr alist-txt))
659 (setq i (1+ i)))))) 666 (setq i (1+ i))))))
660 667
diff --git a/lisp/outline.el b/lisp/outline.el
index 579997754f2..d0c121a12c4 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -1000,7 +1000,8 @@ Stop at the first and last subheadings of a superior heading."
1000 (error "No following same-level heading")))))) 1000 (error "No following same-level heading"))))))
1001 1001
1002(defun outline-get-next-sibling () 1002(defun outline-get-next-sibling ()
1003 "Move to next heading of the same level, and return point or nil if none." 1003 "Move to next heading of the same level, and return point.
1004If there is no such heading, return nil."
1004 (let ((level (funcall outline-level))) 1005 (let ((level (funcall outline-level)))
1005 (outline-next-visible-heading 1) 1006 (outline-next-visible-heading 1)
1006 (while (and (not (eobp)) (> (funcall outline-level) level)) 1007 (while (and (not (eobp)) (> (funcall outline-level) level))
@@ -1026,15 +1027,18 @@ Stop at the first and last subheadings of a superior heading."
1026 (error "No previous same-level heading")))))) 1027 (error "No previous same-level heading"))))))
1027 1028
1028(defun outline-get-last-sibling () 1029(defun outline-get-last-sibling ()
1029 "Move to previous heading of the same level, and return point or nil if none." 1030 "Move to previous heading of the same level, and return point.
1030 (let ((level (funcall outline-level))) 1031If there is no such heading, return nil."
1032 (let ((opoint (point))
1033 (level (funcall outline-level)))
1031 (outline-previous-visible-heading 1) 1034 (outline-previous-visible-heading 1)
1032 (while (and (> (funcall outline-level) level) 1035 (when (and (/= (point) opoint) (outline-on-heading-p))
1033 (not (bobp))) 1036 (while (and (> (funcall outline-level) level)
1034 (outline-previous-visible-heading 1)) 1037 (not (bobp)))
1035 (if (< (funcall outline-level) level) 1038 (outline-previous-visible-heading 1))
1036 nil 1039 (if (< (funcall outline-level) level)
1037 (point)))) 1040 nil
1041 (point)))))
1038 1042
1039(defun outline-headers-as-kill (beg end) 1043(defun outline-headers-as-kill (beg end)
1040 "Save the visible outline headers in region at the start of the kill ring. 1044 "Save the visible outline headers in region at the start of the kill ring.
diff --git a/lisp/paren.el b/lisp/paren.el
index 95f718d5683..38ac150b402 100644
--- a/lisp/paren.el
+++ b/lisp/paren.el
@@ -143,6 +143,7 @@ in `show-paren-style' after `show-paren-delay' seconds of Emacs idle time."
143 (let ((oldpos (point)) 143 (let ((oldpos (point))
144 (dir (cond ((eq (syntax-class (syntax-after (1- (point)))) 5) -1) 144 (dir (cond ((eq (syntax-class (syntax-after (1- (point)))) 5) -1)
145 ((eq (syntax-class (syntax-after (point))) 4) 1))) 145 ((eq (syntax-class (syntax-after (point))) 4) 1)))
146 (window-start (window-start))
146 pos mismatch face) 147 pos mismatch face)
147 ;; 148 ;;
148 ;; Find the other end of the sexp. 149 ;; Find the other end of the sexp.
@@ -247,7 +248,13 @@ in `show-paren-style' after `show-paren-delay' seconds of Emacs idle time."
247 ;; 248 ;;
248 ;; Always set the overlay face, since it varies. 249 ;; Always set the overlay face, since it varies.
249 (overlay-put show-paren-overlay 'priority show-paren-priority) 250 (overlay-put show-paren-overlay 'priority show-paren-priority)
250 (overlay-put show-paren-overlay 'face face))) 251 (overlay-put show-paren-overlay 'face face))
252 ;; If there are continued lines, the above operations can
253 ;; force redisplay to recenter the window (since there is no
254 ;; way for it to know that the overlay changes to the buffer
255 ;; are harmless). So reset the window-start.
256 (unless (window-minibuffer-p)
257 (set-window-start (selected-window) window-start)))
251 ;; show-paren-mode is nil in this buffer. 258 ;; show-paren-mode is nil in this buffer.
252 (and show-paren-overlay 259 (and show-paren-overlay
253 (delete-overlay show-paren-overlay)) 260 (delete-overlay show-paren-overlay))
diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el
index 79043c87b63..079ebb02622 100644
--- a/lisp/progmodes/cc-cmds.el
+++ b/lisp/progmodes/cc-cmds.el
@@ -856,8 +856,8 @@ is inhibited."
856 (narrow-to-region (point-min) (point)) 856 (narrow-to-region (point-min) (point))
857 (back-to-indentation) 857 (back-to-indentation)
858 (looking-at (concat c-current-comment-prefix "[ \t]*$"))))) 858 (looking-at (concat c-current-comment-prefix "[ \t]*$")))))
859 (kill-region (progn (forward-line 0) (point)) 859 (delete-region (progn (forward-line 0) (point))
860 (progn (end-of-line) (point))) 860 (progn (end-of-line) (point)))
861 (insert-char ?* 1)) ; the / comes later. ; Do I need a t (retain sticky properties) here? 861 (insert-char ?* 1)) ; the / comes later. ; Do I need a t (retain sticky properties) here?
862 862
863 (setq indentp (and (not arg) 863 (setq indentp (and (not arg)
@@ -1360,10 +1360,24 @@ No indentation or other \"electric\" behavior is performed."
1360 (and c-opt-block-decls-with-vars-key 1360 (and c-opt-block-decls-with-vars-key
1361 (save-excursion 1361 (save-excursion
1362 (c-syntactic-skip-backward "^;}" lim) 1362 (c-syntactic-skip-backward "^;}" lim)
1363 (and (eq (char-before) ?\}) 1363 (let ((eo-block (point))
1364 (eq (car (c-beginning-of-decl-1 lim)) 'previous) 1364 bod)
1365 (looking-at c-opt-block-decls-with-vars-key) 1365 (and (eq (char-before) ?\})
1366 (point))))) 1366 (eq (car (c-beginning-of-decl-1 lim)) 'previous)
1367 (setq bod (point))
1368 ;; Look for struct or union or ... If we find one, it might
1369 ;; be the return type of a function, or the like. Exclude
1370 ;; this case.
1371 (c-syntactic-re-search-forward
1372 (concat "[;=\(\[{]\\|\\("
1373 c-opt-block-decls-with-vars-key
1374 "\\)")
1375 eo-block t t t)
1376 (match-beginning 1) ; Is there a "struct" etc., somewhere?
1377 (not (eq (char-before) ?_))
1378 (c-syntactic-re-search-forward "[;=\(\[{]" eo-block t t t)
1379 (eq (char-before) ?\{)
1380 bod)))))
1367 1381
1368(defun c-where-wrt-brace-construct () 1382(defun c-where-wrt-brace-construct ()
1369 ;; Determine where we are with respect to functions (or other brace 1383 ;; Determine where we are with respect to functions (or other brace
@@ -1531,7 +1545,7 @@ defun."
1531 (setq arg (c-forward-to-nth-EOF-} (- arg) where))) 1545 (setq arg (c-forward-to-nth-EOF-} (- arg) where)))
1532 ;; Move forward to the next opening brace.... 1546 ;; Move forward to the next opening brace....
1533 (when (and (= arg 0) 1547 (when (and (= arg 0)
1534 (c-syntactic-re-search-forward "{" nil t)) 1548 (c-syntactic-re-search-forward "{" nil 'eob))
1535 (backward-char) 1549 (backward-char)
1536 ;; ... and backward to the function header. 1550 ;; ... and backward to the function header.
1537 (c-beginning-of-decl-1) 1551 (c-beginning-of-decl-1)
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index f5da0eecc2e..c3c17a6f3c5 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -820,7 +820,7 @@ compatible with old code; callers should always specify it."
820 "$") 820 "$")
821 nil t) 821 nil t)
822 (beginning-of-line) 822 (beginning-of-line)
823 (kill-line 1))) 823 (delete-region (point) (progn (end-of-line) (point)))))
824 824
825 ;; Delete the first line, if we've got one, in case it contains a mode spec. 825 ;; Delete the first line, if we've got one, in case it contains a mode spec.
826 (unless (and lv-point 826 (unless (and lv-point
@@ -828,8 +828,7 @@ compatible with old code; callers should always specify it."
828 (forward-line 0) 828 (forward-line 0)
829 (bobp))) 829 (bobp)))
830 (goto-char (point-min)) 830 (goto-char (point-min))
831 (unless (eobp) 831 (delete-region (point) (progn (end-of-line) (point))))))
832 (kill-line 1)))))
833 832
834(defun c-postprocess-file-styles () 833(defun c-postprocess-file-styles ()
835 "Function that post processes relevant file local variables in CC Mode. 834 "Function that post processes relevant file local variables in CC Mode.
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 7fd5f83ea78..ce933cb13d5 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1042,7 +1042,7 @@ Returns the compilation buffer created."
1042 highlight-regexp)) 1042 highlight-regexp))
1043 ;; Output a mode setter, for saving and later reloading this buffer. 1043 ;; Output a mode setter, for saving and later reloading this buffer.
1044 (insert "-*- mode: " name-of-mode 1044 (insert "-*- mode: " name-of-mode
1045 "; compilation-directory: " (prin1-to-string compilation-directory) 1045 "; default-directory: " (prin1-to-string default-directory)
1046 " -*-\n" 1046 " -*-\n"
1047 (format "%s started at %s\n\n" 1047 (format "%s started at %s\n\n"
1048 mode-name 1048 mode-name
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 96c94591531..a07fb5ee44f 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -233,6 +233,7 @@ for constructs with multiline if/unless/while/until/for/foreach condition."
233 "*Indentation of CPerl statements with respect to containing block." 233 "*Indentation of CPerl statements with respect to containing block."
234 :type 'integer 234 :type 'integer
235 :group 'cperl-indentation-details) 235 :group 'cperl-indentation-details)
236(put 'cperl-indent-level 'safe-local-variable 'integerp)
236 237
237(defcustom cperl-lineup-step nil 238(defcustom cperl-lineup-step nil
238 "*`cperl-lineup' will always lineup at multiple of this number. 239 "*`cperl-lineup' will always lineup at multiple of this number.
diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el
index 77d20792442..7ba4ffdc749 100644
--- a/lisp/progmodes/ebnf2ps.el
+++ b/lisp/progmodes/ebnf2ps.el
@@ -2830,7 +2830,7 @@ See `ebnf-style-database' documentation."
2830 (and (assoc name ebnf-style-database) 2830 (and (assoc name ebnf-style-database)
2831 (error "Style name already exists: %s" name)) 2831 (error "Style name already exists: %s" name))
2832 (or (assoc inherits ebnf-style-database) 2832 (or (assoc inherits ebnf-style-database)
2833 (error "Style inheritance name does'nt exist: %s" inherits)) 2833 (error "Style inheritance name doesn't exist: %s" inherits))
2834 (setq ebnf-style-database 2834 (setq ebnf-style-database
2835 (cons (cons name (cons inherits (ebnf-check-style-values values))) 2835 (cons (cons name (cons inherits (ebnf-check-style-values values)))
2836 ebnf-style-database))) 2836 ebnf-style-database)))
@@ -2860,7 +2860,7 @@ See `ebnf-style-database' documentation."
2860See `ebnf-style-database' documentation." 2860See `ebnf-style-database' documentation."
2861 (interactive "SStyle name: \nXStyle values: ") 2861 (interactive "SStyle name: \nXStyle values: ")
2862 (let ((style (or (assoc name ebnf-style-database) 2862 (let ((style (or (assoc name ebnf-style-database)
2863 (error "Style name does'nt exist: %s" name))) 2863 (error "Style name doesn't exist: %s" name)))
2864 (merge (ebnf-check-style-values values)) 2864 (merge (ebnf-check-style-values values))
2865 val elt new check) 2865 val elt new check)
2866 ;; modify value of existing variables 2866 ;; modify value of existing variables
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 1ec9e978229..3d252190eff 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -238,7 +238,7 @@ Used to grey out relevant toolbar icons.")
238 ,(propertize "run" 'face 'font-lock-doc-face) gud-run 238 ,(propertize "run" 'face 'font-lock-doc-face) gud-run
239 :visible (memq gud-minor-mode '(gdbmi gdb dbx jdb))) 239 :visible (memq gud-minor-mode '(gdbmi gdb dbx jdb)))
240 ([menu-bar go] menu-item 240 ([menu-bar go] menu-item
241 ,(propertize "go" 'face 'font-lock-doc-face) gud-go 241 ,(propertize " go " 'face 'font-lock-doc-face) gud-go
242 :visible (and (not gud-running) 242 :visible (and (not gud-running)
243 (eq gud-minor-mode 'gdba))) 243 (eq gud-minor-mode 'gdba)))
244 ([menu-bar stop] menu-item 244 ([menu-bar stop] menu-item
@@ -2304,6 +2304,8 @@ gud, see `gud-mode'."
2304 (gud-def gud-up "up\C-Mwhere" "<" "Up one stack frame.") 2304 (gud-def gud-up "up\C-Mwhere" "<" "Up one stack frame.")
2305 (gud-def gud-down "down\C-Mwhere" ">" "Up one stack frame.") 2305 (gud-def gud-down "down\C-Mwhere" ">" "Up one stack frame.")
2306 (gud-def gud-run "run" nil "Run the program.") ;if VM start using jdb 2306 (gud-def gud-run "run" nil "Run the program.") ;if VM start using jdb
2307 (gud-def gud-print "print %e" "\C-p" "Evaluate Java expression at point.")
2308
2307 2309
2308 (setq comint-prompt-regexp "^> \\|^[^ ]+\\[[0-9]+\\] ") 2310 (setq comint-prompt-regexp "^> \\|^[^ ]+\\[[0-9]+\\] ")
2309 (setq paragraph-start comint-prompt-regexp) 2311 (setq paragraph-start comint-prompt-regexp)
@@ -2853,7 +2855,9 @@ Obeying it means displaying in another window the specified file and line."
2853 (when (looking-at comint-prompt-regexp) 2855 (when (looking-at comint-prompt-regexp)
2854 (set-marker gud-delete-prompt-marker (point)) 2856 (set-marker gud-delete-prompt-marker (point))
2855 (set-marker-insertion-type gud-delete-prompt-marker t)) 2857 (set-marker-insertion-type gud-delete-prompt-marker t))
2856 (insert (concat expr " = "))))) 2858 (unless (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
2859 'jdb)
2860 (insert (concat expr " = "))))))
2857 expr)) 2861 expr))
2858 2862
2859;; The next eight functions are hacked from gdbsrc.el by 2863;; The next eight functions are hacked from gdbsrc.el by
diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el
index bcecdeafa0f..3b9fb5a896a 100644
--- a/lisp/progmodes/idlw-shell.el
+++ b/lisp/progmodes/idlw-shell.el
@@ -2586,7 +2586,7 @@ breakpoint can not be set."
2586 (if (idlwave-shell-hide-p 'debug) 'mostly) 2586 (if (idlwave-shell-hide-p 'debug) 'mostly)
2587 nil t)) 2587 nil t))
2588 2588
2589(defun idlwave-shell-clear-bp (bp) 2589(defun idlwave-shell-clear-bp (bp &optional no-query)
2590 "Clear breakpoint BP. 2590 "Clear breakpoint BP.
2591Clears in IDL and in `idlwave-shell-bp-alist'." 2591Clears in IDL and in `idlwave-shell-bp-alist'."
2592 (let ((index (idlwave-shell-bp-get bp))) 2592 (let ((index (idlwave-shell-bp-get bp)))
@@ -2595,7 +2595,7 @@ Clears in IDL and in `idlwave-shell-bp-alist'."
2595 (idlwave-shell-send-command 2595 (idlwave-shell-send-command
2596 (concat "breakpoint,/clear," (int-to-string index)) 2596 (concat "breakpoint,/clear," (int-to-string index))
2597 nil (idlwave-shell-hide-p 'breakpoint) nil t) 2597 nil (idlwave-shell-hide-p 'breakpoint) nil t)
2598 (idlwave-shell-bp-query))))) 2598 (unless no-query (idlwave-shell-bp-query))))))
2599 2599
2600(defun idlwave-shell-current-frame () 2600(defun idlwave-shell-current-frame ()
2601 "Return a list containing the current file name and line point is in. 2601 "Return a list containing the current file name and line point is in.
@@ -3722,17 +3722,22 @@ Existing overlays are recycled, in order to minimize consumption."
3722 (setq old-buffers (delq (current-buffer) old-buffers))) 3722 (setq old-buffers (delq (current-buffer) old-buffers)))
3723 (if (fboundp 'set-specifier) ;; XEmacs 3723 (if (fboundp 'set-specifier) ;; XEmacs
3724 (set-specifier left-margin-width (cons (current-buffer) 2)) 3724 (set-specifier left-margin-width (cons (current-buffer) 2))
3725 (setq left-margin-width 2)) 3725 (if (< left-margin-width 2)
3726 (if (setq win (get-buffer-window (current-buffer) t)) 3726 (setq left-margin-width 2)))
3727 (set-window-buffer win (current-buffer)))))) 3727 (let ((window (get-buffer-window (current-buffer) 0)))
3728 (if window
3729 (set-window-margins
3730 window left-margin-width right-margin-width))))))
3728 (if use-glyph 3731 (if use-glyph
3729 (while (setq buf (pop old-buffers)) 3732 (while (setq buf (pop old-buffers))
3730 (with-current-buffer buf 3733 (with-current-buffer buf
3731 (if (fboundp 'set-specifier) ;; XEmacs 3734 (if (fboundp 'set-specifier) ;; XEmacs
3732 (set-specifier left-margin-width (cons (current-buffer) 0)) 3735 (set-specifier left-margin-width (cons (current-buffer) 0))
3733 (setq left-margin-width 0)) 3736 (setq left-margin-width 0))
3734 (if (setq win (get-buffer-window buf t)) 3737 (let ((window (get-buffer-window buf 0)))
3735 (set-window-buffer win buf)))))))) 3738 (if window
3739 (set-window-margins
3740 window left-margin-width right-margin-width)))))))))
3736 3741
3737(defun idlwave-shell-make-new-bp-overlay (&optional type disabled) 3742(defun idlwave-shell-make-new-bp-overlay (&optional type disabled)
3738 "Make a new overlay for highlighting breakpoints. 3743 "Make a new overlay for highlighting breakpoints.
@@ -4055,7 +4060,9 @@ list elements of the form:
4055 idlwave-shell-bp-query 4060 idlwave-shell-bp-query
4056 '(progn 4061 '(progn
4057 (idlwave-shell-filter-bp) 4062 (idlwave-shell-filter-bp)
4058 (mapcar 'idlwave-shell-clear-bp idlwave-shell-bp-alist)) 4063 (mapcar (lambda (x) (idlwave-shell-clear-bp x 'no-query))
4064 idlwave-shell-bp-alist)
4065 (idlwave-shell-bp-query))
4059 'hide)) 4066 'hide))
4060 4067
4061(defun idlwave-shell-list-all-bp () 4068(defun idlwave-shell-list-all-bp ()
diff --git a/lisp/progmodes/mantemp.el b/lisp/progmodes/mantemp.el
index 61b8d3d4d3d..2084f364d55 100644
--- a/lisp/progmodes/mantemp.el
+++ b/lisp/progmodes/mantemp.el
@@ -105,14 +105,14 @@
105 "^[A-z :&*<>~=,0-9+]*>::operator " nil t nil) 105 "^[A-z :&*<>~=,0-9+]*>::operator " nil t nil)
106 (progn 106 (progn
107 (backward-char 11) 107 (backward-char 11)
108 (kill-line))) 108 (delete-region (point) (line-end-position))))
109 ;; Remove other member function extensions. 109 ;; Remove other member function extensions.
110 (goto-char (point-min)) 110 (goto-char (point-min))
111 (message "Removing member function extensions") 111 (message "Removing member function extensions")
112 (while (re-search-forward "^[A-z :&*<>~=,0-9+]*>::" nil t nil) 112 (while (re-search-forward "^[A-z :&*<>~=,0-9+]*>::" nil t nil)
113 (progn 113 (progn
114 (backward-char 2) 114 (backward-char 2)
115 (kill-line))))) 115 (delete-region (point) (line-end-position))))))
116 116
117(defun mantemp-sort-and-unique-lines () 117(defun mantemp-sort-and-unique-lines ()
118 "Eliminate all consecutive duplicate lines in the buffer." 118 "Eliminate all consecutive duplicate lines in the buffer."
@@ -127,7 +127,7 @@
127 (progn 127 (progn
128 (forward-line -1) 128 (forward-line -1)
129 (beginning-of-line) 129 (beginning-of-line)
130 (kill-line 1))))) 130 (delete-region (point) (progn (forward-line 1) (point)))))))
131 131
132(defun mantemp-insert-cxx-syntax () 132(defun mantemp-insert-cxx-syntax ()
133 "Insert C++ syntax around each template class and function. 133 "Insert C++ syntax around each template class and function.
@@ -161,7 +161,7 @@ the lines."
161 (progn 161 (progn
162 (beginning-of-line) 162 (beginning-of-line)
163 (forward-word 1) 163 (forward-word 1)
164 (kill-word 1))))) 164 (delete-region (point) (progn (forward-word 1) (point)))))))
165 165
166(defun mantemp-make-mantemps () 166(defun mantemp-make-mantemps ()
167 "Gathering interface to the functions modifying the buffer." 167 "Gathering interface to the functions modifying the buffer."
@@ -189,16 +189,16 @@ This function does the same thing as `mantemp-make-mantemps-buffer',
189but operates on the region." 189but operates on the region."
190 (interactive) 190 (interactive)
191 (let ((cur-buf (current-buffer)) 191 (let ((cur-buf (current-buffer))
192 (mantemp-buffer (generate-new-buffer "*mantemp*"))) 192 (mantemp-buffer (generate-new-buffer "*mantemp*"))
193 (str (buffer-substring (mark) (point))))
193 ;; Copy the region to a temporary buffer, make the C++ code there 194 ;; Copy the region to a temporary buffer, make the C++ code there
194 ;; and copy the result back to the current buffer. 195 ;; and copy the result back to the current buffer.
195 (kill-region (mark) (point))
196 (set-buffer mantemp-buffer) 196 (set-buffer mantemp-buffer)
197 (yank) 197 (insert str)
198 (mantemp-make-mantemps) 198 (mantemp-make-mantemps)
199 (kill-region (point-min) (point-max)) 199 (setq str (buffer-string))
200 (set-buffer cur-buf) 200 (set-buffer cur-buf)
201 (yank) 201 (insert str)
202 (kill-buffer mantemp-buffer)) 202 (kill-buffer mantemp-buffer))
203 (message "Done")) 203 (message "Done"))
204 204
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index 8b6bc4462d6..35ae6b80901 100644
--- a/lisp/progmodes/perl-mode.el
+++ b/lisp/progmodes/perl-mode.el
@@ -391,6 +391,7 @@ The expansion is entirely correct because it uses the C preprocessor."
391 "*Indentation of Perl statements with respect to containing block." 391 "*Indentation of Perl statements with respect to containing block."
392 :type 'integer 392 :type 'integer
393 :group 'perl) 393 :group 'perl)
394(put 'perl-indent-level 'safe-local-variable 'integerp)
394(defcustom perl-continued-statement-offset 4 395(defcustom perl-continued-statement-offset 4
395 "*Extra indent for lines not starting new statements." 396 "*Extra indent for lines not starting new statements."
396 :type 'integer 397 :type 'integer
@@ -646,10 +647,10 @@ possible action from the following list:
646 (if (and comment-start-skip 647 (if (and comment-start-skip
647 (re-search-forward comment-start-skip eol 'move)) 648 (re-search-forward comment-start-skip eol 'move))
648 (if (eolp) 649 (if (eolp)
649 (progn ; kill existing comment 650 (progn ; delete existing comment
650 (goto-char (match-beginning 0)) 651 (goto-char (match-beginning 0))
651 (skip-chars-backward " \t") 652 (skip-chars-backward " \t")
652 (kill-region (point) eol)) 653 (delete-region (point) eol))
653 (if (or (< oldpnt (point)) (= oldpnt eol)) 654 (if (or (< oldpnt (point)) (= oldpnt eol))
654 (indent-for-comment) ; indent existing comment 655 (indent-for-comment) ; indent existing comment
655 (end-of-line))) 656 (end-of-line)))
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 1709428a611..e57c7e639c9 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -981,11 +981,15 @@ don't move and return nil. Otherwise return t."
981 (_ (if (python-comment-line-p) 981 (_ (if (python-comment-line-p)
982 (python-skip-comments/blanks t))) 982 (python-skip-comments/blanks t)))
983 (ci (current-indentation)) 983 (ci (current-indentation))
984 (open (python-open-block-statement-p))) 984 (open (python-open-block-statement-p))
985 opoint)
985 (if (and (zerop ci) (not open)) 986 (if (and (zerop ci) (not open))
986 (not (goto-char point)) 987 (not (goto-char point))
987 (catch 'done 988 (catch 'done
988 (while (zerop (python-next-statement)) 989 (setq opoint (point))
990 (while (and (zerop (python-next-statement))
991 (not (= opoint (point))))
992 (setq opoint (point))
989 (when (or (and open (<= (current-indentation) ci)) 993 (when (or (and open (<= (current-indentation) ci))
990 (< (current-indentation) ci)) 994 (< (current-indentation) ci))
991 (python-skip-comments/blanks t) 995 (python-skip-comments/blanks t)
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 2d7bbd79c6b..c549d066b64 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -7028,7 +7028,7 @@ else indent `correctly'."
7028 (indent-to comment-column) 7028 (indent-to comment-column)
7029 (indent-according-to-mode)) 7029 (indent-according-to-mode))
7030 (t ; inline comment indent 7030 (t ; inline comment indent
7031 (kill-line -0)))) 7031 (delete-region (line-beginning-position) (point)))))
7032 ;; dedent 7032 ;; dedent
7033 ((and (>= (current-indentation) vhdl-basic-offset) 7033 ((and (>= (current-indentation) vhdl-basic-offset)
7034 (or (eq last-command 'vhdl-electric-tab) 7034 (or (eq last-command 'vhdl-electric-tab)
@@ -7161,7 +7161,7 @@ ENDPOS is encountered."
7161 (when (not (looking-at "^\\s-*\\(--.*\\)?$")) 7161 (when (not (looking-at "^\\s-*\\(--.*\\)?$"))
7162 (end-of-line) 7162 (end-of-line)
7163 (if (search-backward " -- ((" (vhdl-point 'bol) t) 7163 (if (search-backward " -- ((" (vhdl-point 'bol) t)
7164 (kill-line)) 7164 (delete-region (point) (line-end-position)))
7165 (insert " -- ") 7165 (insert " -- ")
7166 (insert (format "%s" expurgated)))))) 7166 (insert (format "%s" expurgated))))))
7167 (vhdl-keep-region-active)) 7167 (vhdl-keep-region-active))
@@ -8346,7 +8346,9 @@ Turn on if ARG positive, turn off if ARG negative, toggle if ARG zero or nil."
8346 (progn (vhdl-insert-keyword "FOR ") 8346 (progn (vhdl-insert-keyword "FOR ")
8347 (if (vhdl-template-field "[quantity name]" " USE " t) 8347 (if (vhdl-template-field "[quantity name]" " USE " t)
8348 (progn (vhdl-template-field "quantity name" " => ") t) 8348 (progn (vhdl-template-field "quantity name" " => ") t)
8349 (kill-word -1) nil)) 8349 (delete-region (point)
8350 (progn (forward-word -1) (point)))
8351 nil))
8350 (vhdl-template-field "[quantity name]" " => " t)) 8352 (vhdl-template-field "[quantity name]" " => " t))
8351 (vhdl-template-field "expression") 8353 (vhdl-template-field "expression")
8352 (setq position (point)) 8354 (setq position (point))
@@ -8482,7 +8484,7 @@ since these are almost equivalent)."
8482 (setq position (point)) 8484 (setq position (point))
8483 (vhdl-insert-keyword "PORT ") 8485 (vhdl-insert-keyword "PORT ")
8484 (unless (vhdl-template-map position t t) 8486 (unless (vhdl-template-map position t t)
8485 (kill-line -0) 8487 (delete-region (line-beginning-position) (point))
8486 (delete-char -1)) 8488 (delete-char -1))
8487 (insert ";")))) 8489 (insert ";"))))
8488 8490
@@ -8573,7 +8575,7 @@ a configuration declaration if not within a design unit."
8573 (setq position (point)) 8575 (setq position (point))
8574 (vhdl-insert-keyword "PORT ") 8576 (vhdl-insert-keyword "PORT ")
8575 (unless (vhdl-template-map position t t) 8577 (unless (vhdl-template-map position t t)
8576 (kill-line -0) 8578 (delete-region (line-beginning-position) (point))
8577 (delete-char -1)) 8579 (delete-char -1))
8578 (insert ";") 8580 (insert ";")
8579 t) 8581 t)
@@ -9116,11 +9118,11 @@ otherwise."
9116 (cond ((equal definition "") 9118 (cond ((equal definition "")
9117 (insert ";")) 9119 (insert ";"))
9118 ((equal definition "ARRAY") 9120 ((equal definition "ARRAY")
9119 (kill-word -1) 9121 (delete-region (point) (progn (forward-word -1) (point)))
9120 (vhdl-template-array 'nature t)) 9122 (vhdl-template-array 'nature t))
9121 ((equal definition "RECORD") 9123 ((equal definition "RECORD")
9122 (setq mid-pos (point-marker)) 9124 (setq mid-pos (point-marker))
9123 (kill-word -1) 9125 (delete-region (point) (progn (forward-word -1) (point)))
9124 (vhdl-template-record 'nature name t)) 9126 (vhdl-template-record 'nature name t))
9125 (t 9127 (t
9126 (vhdl-insert-keyword " ACROSS ") 9128 (vhdl-insert-keyword " ACROSS ")
@@ -9435,7 +9437,7 @@ otherwise."
9435 (insert "\n") 9437 (insert "\n")
9436 (indent-to (+ margin vhdl-basic-offset)) 9438 (indent-to (+ margin vhdl-basic-offset))
9437 (setq first nil)) 9439 (setq first nil))
9438 (kill-line -0) 9440 (delete-region (line-beginning-position) (point))
9439 (indent-to margin) 9441 (indent-to margin)
9440 (vhdl-insert-keyword "END RECORD") 9442 (vhdl-insert-keyword "END RECORD")
9441 (unless (vhdl-standard-p '87) (and name (insert " " name))) 9443 (unless (vhdl-standard-p '87) (and name (insert " " name)))
@@ -9600,11 +9602,11 @@ otherwise."
9600 (delete-backward-char 4) 9602 (delete-backward-char 4)
9601 (insert ";")) 9603 (insert ";"))
9602 ((equal definition "ARRAY") 9604 ((equal definition "ARRAY")
9603 (kill-word -1) 9605 (delete-region (point) (progn (forward-word -1) (point)))
9604 (vhdl-template-array 'type t)) 9606 (vhdl-template-array 'type t))
9605 ((equal definition "RECORD") 9607 ((equal definition "RECORD")
9606 (setq mid-pos (point-marker)) 9608 (setq mid-pos (point-marker))
9607 (kill-word -1) 9609 (delete-region (point) (progn (forward-word -1) (point)))
9608 (vhdl-template-record 'type name t)) 9610 (vhdl-template-record 'type name t))
9609 ((equal definition "ACCESS") 9611 ((equal definition "ACCESS")
9610 (insert " ") 9612 (insert " ")
diff --git a/lisp/replace.el b/lisp/replace.el
index a8dfd043c72..ed1fa9a6b59 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -303,6 +303,11 @@ Use \\[repeat-complex-command] after this command for details."
303 303
304(defun query-replace-regexp-eval (regexp to-expr &optional delimited start end) 304(defun query-replace-regexp-eval (regexp to-expr &optional delimited start end)
305 "Replace some things after point matching REGEXP with the result of TO-EXPR. 305 "Replace some things after point matching REGEXP with the result of TO-EXPR.
306
307Interactive use of this function is deprecated in favor of the
308`\\,' feature of `query-replace-regexp'. For non-interactive use, a loop
309using `search-forward-regexp' and `replace-match' is preferred.
310
306As each match is found, the user must type a character saying 311As each match is found, the user must type a character saying
307what to do with it. For directions, type \\[help-command] at that time. 312what to do with it. For directions, type \\[help-command] at that time.
308 313
@@ -354,6 +359,11 @@ Fourth and fifth arg START and END specify the region to operate on."
354 (perform-replace regexp (cons 'replace-eval-replacement to-expr) 359 (perform-replace regexp (cons 'replace-eval-replacement to-expr)
355 t 'literal delimited nil nil start end)) 360 t 'literal delimited nil nil start end))
356 361
362(make-obsolete 'query-replace-regexp-eval
363 "for interactive use, use the special `\\,' feature of
364`query-replace-regexp' instead. Non-interactively, a loop
365using `search-forward-regexp' and `replace-match' is preferred." "22.1")
366
357(defun map-query-replace-regexp (regexp to-strings &optional n start end) 367(defun map-query-replace-regexp (regexp to-strings &optional n start end)
358 "Replace some matches for REGEXP with various strings, in rotation. 368 "Replace some matches for REGEXP with various strings, in rotation.
359The second argument TO-STRINGS contains the replacement strings, 369The second argument TO-STRINGS contains the replacement strings,
diff --git a/lisp/simple.el b/lisp/simple.el
index 382a121b222..d3ceb3d994f 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -3179,6 +3179,8 @@ Start discarding off end if gets this big."
3179 (interactive) 3179 (interactive)
3180 (if (null (mark t)) 3180 (if (null (mark t))
3181 (error "No mark set in this buffer") 3181 (error "No mark set in this buffer")
3182 (if (= (point) (mark t))
3183 (message "Mark popped"))
3182 (goto-char (mark t)) 3184 (goto-char (mark t))
3183 (pop-mark))) 3185 (pop-mark)))
3184 3186
@@ -3196,24 +3198,31 @@ Display `Mark set' unless the optional second arg NOMSG is non-nil."
3196 (message "Mark activated"))))) 3198 (message "Mark activated")))))
3197 3199
3198(defcustom set-mark-command-repeat-pop nil 3200(defcustom set-mark-command-repeat-pop nil
3199 "*Non-nil means that repeating \\[set-mark-command] after popping will pop. 3201 "*Non-nil means repeating \\[set-mark-command] after popping mark pops it again.
3200This means that if you type C-u \\[set-mark-command] \\[set-mark-command] 3202That means that C-u \\[set-mark-command] \\[set-mark-command]
3201will pop twice." 3203will pop the mark twice, and
3204C-u \\[set-mark-command] \\[set-mark-command] \\[set-mark-command]
3205will pop the mark three times.
3206
3207nil means \\[set-mark-command]'s behavior does not change
3208after C-u \\[set-mark-command]."
3202 :type 'boolean 3209 :type 'boolean
3203 :group 'editing) 3210 :group 'editing-basics)
3204 3211
3205(defun set-mark-command (arg) 3212(defun set-mark-command (arg)
3206 "Set mark where point is, or jump to mark. 3213 "Set the mark where point is, or jump to the mark.
3207Setting the mark also sets the \"region\", which is the closest 3214Setting the mark also alters the region, which is the text
3208equivalent in Emacs to what some editors call the \"selection\". 3215between point and mark; this is the closest equivalent in
3216Emacs to what some editors call the \"selection\".
3217
3218With no prefix argument, set the mark at point, and push the
3219old mark position on local mark ring. Also push the old mark on
3220global mark ring, if the previous mark was set in another buffer.
3209 3221
3210With no prefix argument, set mark and push old mark position on local 3222Immediately repeating this command activates `transient-mark-mode' temporarily.
3211mark ring. Also, push mark on global mark ring, if last mark was set in
3212another buffer. Immediately repeating the command activates
3213`transient-mark-mode' temporarily.
3214 3223
3215With prefix argument \(e.g., \\[universal-argument] \\[set-mark-command]\), \ 3224With prefix argument \(e.g., \\[universal-argument] \\[set-mark-command]\), \
3216jump to mark, and set mark from 3225jump to the mark, and set the mark from
3217position popped off the local mark ring \(this does not affect the global 3226position popped off the local mark ring \(this does not affect the global
3218mark ring\). Use \\[pop-global-mark] to jump to a mark popped off the global 3227mark ring\). Use \\[pop-global-mark] to jump to a mark popped off the global
3219mark ring \(see `pop-global-mark'\). 3228mark ring \(see `pop-global-mark'\).
@@ -3222,9 +3231,9 @@ If `set-mark-command-repeat-pop' is non-nil, repeating
3222the \\[set-mark-command] command with no prefix argument pops the next position 3231the \\[set-mark-command] command with no prefix argument pops the next position
3223off the local (or global) mark ring and jumps there. 3232off the local (or global) mark ring and jumps there.
3224 3233
3225With a double \\[universal-argument] prefix argument \(e.g., \\[universal-argument] \ 3234With \\[universal-argument] \\[universal-argument] as prefix
3226\\[universal-argument] \\[set-mark-command]\), unconditionally 3235argument, unconditionally set mark where point is, even if
3227set mark where point is, even if `set-mark-command-repeat-pop' is non-nil. 3236`set-mark-command-repeat-pop' is non-nil.
3228 3237
3229Novice Emacs Lisp programmers often try to use the mark for the wrong 3238Novice Emacs Lisp programmers often try to use the mark for the wrong
3230purposes. See the documentation of `set-mark' for more information." 3239purposes. See the documentation of `set-mark' for more information."
diff --git a/lisp/subr.el b/lisp/subr.el
index 31604d3ecda..d42c096a414 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1719,6 +1719,9 @@ by doing (clear-string STRING)."
1719 1719
1720;; This should be used by `call-interactively' for `n' specs. 1720;; This should be used by `call-interactively' for `n' specs.
1721(defun read-number (prompt &optional default) 1721(defun read-number (prompt &optional default)
1722 "Read a numeric value in the minibuffer, prompting with PROMPT.
1723DEFAULT specifies a default value to return if the user just types RET.
1724The value of DEFAULT is inserted into PROMPT."
1722 (let ((n nil)) 1725 (let ((n nil))
1723 (when default 1726 (when default
1724 (setq prompt 1727 (setq prompt
@@ -1732,9 +1735,11 @@ by doing (clear-string STRING)."
1732 (let ((str (read-from-minibuffer prompt nil nil nil nil 1735 (let ((str (read-from-minibuffer prompt nil nil nil nil
1733 (and default 1736 (and default
1734 (number-to-string default))))) 1737 (number-to-string default)))))
1735 (setq n (cond 1738 (condition-case nil
1736 ((zerop (length str)) default) 1739 (setq n (cond
1737 ((stringp str) (read str))))) 1740 ((zerop (length str)) default)
1741 ((stringp str) (read str))))
1742 (error nil)))
1738 (unless (numberp n) 1743 (unless (numberp n)
1739 (message "Please enter a number.") 1744 (message "Please enter a number.")
1740 (sit-for 1) 1745 (sit-for 1)
diff --git a/lisp/t-mouse.el b/lisp/t-mouse.el
index eca2ce2b9fe..15521decd90 100644
--- a/lisp/t-mouse.el
+++ b/lisp/t-mouse.el
@@ -166,6 +166,8 @@ Also trim the accumulator by all the data used to build the event."
166 (if (or (eq (car ob-pos) 'STILL) (eq (car ob-pos) '***) (not ob-pos)) 166 (if (or (eq (car ob-pos) 'STILL) (eq (car ob-pos) '***) (not ob-pos))
167 nil 167 nil
168 (setq ob (car ob-pos)) 168 (setq ob (car ob-pos))
169 (if (string-match "mev:$" (prin1-to-string ob))
170 (error "Can't open mouse connection"))
169 (setq t-mouse-filter-accumulator 171 (setq t-mouse-filter-accumulator
170 (substring t-mouse-filter-accumulator (cdr ob-pos))) 172 (substring t-mouse-filter-accumulator (cdr ob-pos)))
171 173
diff --git a/lisp/term.el b/lisp/term.el
index 7bbef6e526e..e8848d64efb 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -627,7 +627,7 @@ executed once when the buffer is created."
627 "Keyboard map for sending characters directly to the inferior process.") 627 "Keyboard map for sending characters directly to the inferior process.")
628(defvar term-escape-char nil 628(defvar term-escape-char nil
629 "Escape character for char sub-mode of term mode. 629 "Escape character for char sub-mode of term mode.
630Do not change it directly; use `term-set-escape-char' instead.") 630Do not change it directly; use `term-set-escape-char' instead.")
631(defvar term-raw-escape-map nil) 631(defvar term-raw-escape-map nil)
632 632
633(defvar term-pager-break-map nil) 633(defvar term-pager-break-map nil)
@@ -714,7 +714,7 @@ Buffer local variable.")
714(defvar term-buffer-maximum-size 2048 714(defvar term-buffer-maximum-size 2048
715 "*The maximum size in lines for term buffers. 715 "*The maximum size in lines for term buffers.
716Term buffers are truncated from the top to be no greater than this number. 716Term buffers are truncated from the top to be no greater than this number.
717Notice that a setting of 0 means 'don't truncate anything'. This variable 717Notice that a setting of 0 means \"don't truncate anything\". This variable
718is buffer-local.") 718is buffer-local.")
719;;; 719;;;
720 720
@@ -856,7 +856,7 @@ is buffer-local.")
856;; Set up term-raw-map, etc. 856;; Set up term-raw-map, etc.
857 857
858(defun term-set-escape-char (c) 858(defun term-set-escape-char (c)
859 "Change term-escape-char and keymaps that depend on it." 859 "Change `term-escape-char' and keymaps that depend on it."
860 (when term-escape-char 860 (when term-escape-char
861 (define-key term-raw-map term-escape-char 'term-send-raw)) 861 (define-key term-raw-map term-escape-char 'term-send-raw))
862 (setq c (make-string 1 c)) 862 (setq c (make-string 1 c))
@@ -1098,7 +1098,7 @@ Entry to this mode runs the hooks on `term-mode-hook'."
1098 (make-local-variable 'term-current-face) 1098 (make-local-variable 'term-current-face)
1099 (make-local-variable 'term-pending-frame) 1099 (make-local-variable 'term-pending-frame)
1100 (setq term-pending-frame nil) 1100 (setq term-pending-frame nil)
1101 ;; Cua-mode's keybindings interfere with the term keybindings, disable it. 1101 ;; Cua-mode's keybindings interfere with the term keybindings, disable it.
1102 (set (make-local-variable 'cua-mode) nil) 1102 (set (make-local-variable 'cua-mode) nil)
1103 (run-mode-hooks 'term-mode-hook) 1103 (run-mode-hooks 'term-mode-hook)
1104 (when (featurep 'xemacs) 1104 (when (featurep 'xemacs)
@@ -1194,7 +1194,7 @@ without any interpretation."
1194 "Insert the last stretch of killed text at the position clicked on." 1194 "Insert the last stretch of killed text at the position clicked on."
1195 (interactive "e\nP") 1195 (interactive "e\nP")
1196 (if (featurep 'xemacs) 1196 (if (featurep 'xemacs)
1197 (term-send-raw-string 1197 (term-send-raw-string
1198 (or (condition-case () (x-get-selection) (error ())) 1198 (or (condition-case () (x-get-selection) (error ()))
1199 (x-get-cutbuffer) 1199 (x-get-cutbuffer)
1200 (error "No selection or cut buffer available"))) 1200 (error "No selection or cut buffer available")))
@@ -1312,7 +1312,7 @@ commands to use in that buffer.
1312 "Start up a process in buffer for term modes. 1312 "Start up a process in buffer for term modes.
1313Blasts any old process running in the buffer. Doesn't set the buffer mode. 1313Blasts any old process running in the buffer. Doesn't set the buffer mode.
1314You can use this to cheaply run a series of processes in the same term 1314You can use this to cheaply run a series of processes in the same term
1315buffer. The hook term-exec-hook is run after each exec." 1315buffer. The hook `term-exec-hook' is run after each exec."
1316 (save-excursion 1316 (save-excursion
1317 (set-buffer buffer) 1317 (set-buffer buffer)
1318 (let ((proc (get-buffer-process buffer))) ; Blast any old process. 1318 (let ((proc (get-buffer-process buffer))) ; Blast any old process.
@@ -1342,7 +1342,7 @@ buffer. The hook term-exec-hook is run after each exec."
1342 (run-hooks 'term-exec-hook) 1342 (run-hooks 'term-exec-hook)
1343 buffer))) 1343 buffer)))
1344 1344
1345(defun term-sentinel (proc msg) 1345(defun term-sentinel (proc msg)
1346 "Sentinel for term buffers. 1346 "Sentinel for term buffers.
1347The main purpose is to get rid of the local keymap." 1347The main purpose is to get rid of the local keymap."
1348 (let ((buffer (process-buffer proc))) 1348 (let ((buffer (process-buffer proc)))
@@ -1402,7 +1402,7 @@ The main purpose is to get rid of the local keymap."
1402:kb=^?:kD=^[[3~:sc=\\E7:rc=\\E8:r1=\\Ec:" 1402:kb=^?:kD=^[[3~:sc=\\E7:rc=\\E8:r1=\\Ec:"
1403;;; : -undefine ic 1403;;; : -undefine ic
1404;;; don't define :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\ 1404;;; don't define :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
1405 "termcap capabilities supported") 1405 "Termcap capabilities supported.")
1406 1406
1407;;; This auxiliary function cranks up the process for term-exec in 1407;;; This auxiliary function cranks up the process for term-exec in
1408;;; the appropriate environment. 1408;;; the appropriate environment.
@@ -2044,9 +2044,9 @@ Similarly for Soar, Scheme, etc."
2044 (funcall term-input-sender proc input))))) 2044 (funcall term-input-sender proc input)))))
2045 2045
2046(defun term-get-old-input-default () 2046(defun term-get-old-input-default ()
2047 "Default for term-get-old-input. 2047 "Default for `term-get-old-input'.
2048Take the current line, and discard any initial text matching 2048Take the current line, and discard any initial text matching
2049term-prompt-regexp." 2049`term-prompt-regexp'."
2050 (save-excursion 2050 (save-excursion
2051 (beginning-of-line) 2051 (beginning-of-line)
2052 (term-skip-prompt) 2052 (term-skip-prompt)
@@ -2066,7 +2066,7 @@ Calls `term-get-old-input' to get old input."
2066 (insert input)))) 2066 (insert input))))
2067 2067
2068(defun term-skip-prompt () 2068(defun term-skip-prompt ()
2069 "Skip past the text matching regexp term-prompt-regexp. 2069 "Skip past the text matching regexp `term-prompt-regexp'.
2070If this takes us past the end of the current line, don't skip at all." 2070If this takes us past the end of the current line, don't skip at all."
2071 (let ((eol (save-excursion (end-of-line) (point)))) 2071 (let ((eol (save-excursion (end-of-line) (point))))
2072 (when (and (looking-at term-prompt-regexp) 2072 (when (and (looking-at term-prompt-regexp)
@@ -2097,7 +2097,7 @@ If a prefix argument is given (\\[universal-argument]), then no prompt skip
2097-- go straight to column 0. 2097-- go straight to column 0.
2098 2098
2099The prompt skip is done by skipping text matching the regular expression 2099The prompt skip is done by skipping text matching the regular expression
2100term-prompt-regexp, a buffer local variable." 2100`term-prompt-regexp', a buffer local variable."
2101 (interactive "P") 2101 (interactive "P")
2102 (beginning-of-line) 2102 (beginning-of-line)
2103 (when (null arg) (term-skip-prompt))) 2103 (when (null arg) (term-skip-prompt)))
@@ -2180,8 +2180,8 @@ If your process is choking on big inputs, try lowering the value.")
2180 2180
2181(defun term-send-string (proc str) 2181(defun term-send-string (proc str)
2182 "Send to PROC the contents of STR as input. 2182 "Send to PROC the contents of STR as input.
2183This is equivalent to process-send-string, except that long input strings 2183This is equivalent to `process-send-string', except that long input strings
2184are broken up into chunks of size term-input-chunk-size. Processes 2184are broken up into chunks of size `term-input-chunk-size'. Processes
2185are given a chance to output between chunks. This can help prevent processes 2185are given a chance to output between chunks. This can help prevent processes
2186from hanging when you send them long inputs on some OS's." 2186from hanging when you send them long inputs on some OS's."
2187 (let* ((len (length str)) 2187 (let* ((len (length str))
@@ -2195,7 +2195,7 @@ from hanging when you send them long inputs on some OS's."
2195 2195
2196(defun term-send-region (proc start end) 2196(defun term-send-region (proc start end)
2197 "Send to PROC the region delimited by START and END. 2197 "Send to PROC the region delimited by START and END.
2198This is a replacement for process-send-region that tries to keep 2198This is a replacement for `process-send-region' that tries to keep
2199your process from hanging on long inputs. See `term-send-string'." 2199your process from hanging on long inputs. See `term-send-string'."
2200 (term-send-string proc (buffer-substring start end))) 2200 (term-send-string proc (buffer-substring start end)))
2201 2201
@@ -2874,7 +2874,7 @@ See `term-prompt-regexp'."
2874 ;; (setq term-terminal-state 0)) 2874 ;; (setq term-terminal-state 0))
2875 ((eq char ?M) ;; scroll reversed (terminfo: ri) 2875 ((eq char ?M) ;; scroll reversed (terminfo: ri)
2876 (if (or (< (term-current-row) term-scroll-start) 2876 (if (or (< (term-current-row) term-scroll-start)
2877 (>= (1- (term-current-row)) 2877 (>= (1- (term-current-row))
2878 term-scroll-start)) 2878 term-scroll-start))
2879 ;; Scrolling up will not move outside 2879 ;; Scrolling up will not move outside
2880 ;; the scroll region. 2880 ;; the scroll region.
@@ -2900,7 +2900,7 @@ See `term-prompt-regexp'."
2900 (when term-saved-cursor 2900 (when term-saved-cursor
2901 (term-goto (nth 0 term-saved-cursor) 2901 (term-goto (nth 0 term-saved-cursor)
2902 (nth 1 term-saved-cursor)) 2902 (nth 1 term-saved-cursor))
2903 (setq term-ansi-current-bg-color 2903 (setq term-ansi-current-bg-color
2904 (nth 2 term-saved-cursor) 2904 (nth 2 term-saved-cursor)
2905 term-ansi-current-bold 2905 term-ansi-current-bold
2906 (nth 3 term-saved-cursor) 2906 (nth 3 term-saved-cursor)
@@ -3188,7 +3188,7 @@ See `term-prompt-regexp'."
3188 (when term-ansi-current-underline 3188 (when term-ansi-current-underline
3189 (setq term-current-face 3189 (setq term-current-face
3190 (append '(:underline t) term-current-face)))))) 3190 (append '(:underline t) term-current-face))))))
3191 3191
3192;;; (message "Debug %S" term-current-face) 3192;;; (message "Debug %S" term-current-face)
3193 (setq term-ansi-face-already-done nil)) 3193 (setq term-ansi-face-already-done nil))
3194 3194
@@ -3217,7 +3217,7 @@ See `term-prompt-regexp'."
3217 ((eq char ?A) 3217 ((eq char ?A)
3218 (term-handle-deferred-scroll) 3218 (term-handle-deferred-scroll)
3219 (let ((tcr (term-current-row))) 3219 (let ((tcr (term-current-row)))
3220 (term-down 3220 (term-down
3221 (if (< (- tcr term-terminal-parameter) term-scroll-start) 3221 (if (< (- tcr term-terminal-parameter) term-scroll-start)
3222 ;; If the amount to move is before scroll start, move 3222 ;; If the amount to move is before scroll start, move
3223 ;; to scroll start. 3223 ;; to scroll start.
@@ -3229,7 +3229,7 @@ See `term-prompt-regexp'."
3229 ((eq char ?B) 3229 ((eq char ?B)
3230 (let ((tcr (term-current-row))) 3230 (let ((tcr (term-current-row)))
3231 (unless (= tcr (1- term-scroll-end)) 3231 (unless (= tcr (1- term-scroll-end))
3232 (term-down 3232 (term-down
3233 (if (> (+ tcr term-terminal-parameter) term-scroll-end) 3233 (if (> (+ tcr term-terminal-parameter) term-scroll-end)
3234 (- term-scroll-end 1 tcr) 3234 (- term-scroll-end 1 tcr)
3235 (max 1 term-terminal-parameter)) t)))) 3235 (max 1 term-terminal-parameter)) t))))
@@ -3493,7 +3493,7 @@ The top-most line is line 0."
3493 ((term-pager-continue deficit))))) 3493 ((term-pager-continue deficit)))))
3494 3494
3495(defun term-pager-page (arg) 3495(defun term-pager-page (arg)
3496 "Proceed past the **MORE** break, allowing the next page of output to appear" 3496 "Proceed past the **MORE** break, allowing the next page of output to appear."
3497 (interactive "p") 3497 (interactive "p")
3498 (term-pager-line (* arg term-height))) 3498 (term-pager-line (* arg term-height)))
3499 3499
@@ -3562,7 +3562,7 @@ The top-most line is line 0."
3562 (put 'term-fake-pager-disable 'menu-enable 'term-pager-count)) 3562 (put 'term-fake-pager-disable 'menu-enable 'term-pager-count))
3563 3563
3564(defun term-pager-help () 3564(defun term-pager-help ()
3565 "Provide help on commands available in a terminal-emulator **MORE** break" 3565 "Provide help on commands available in a terminal-emulator **MORE** break."
3566 (interactive) 3566 (interactive)
3567 (message "Terminal-emulator pager break help...") 3567 (message "Terminal-emulator pager break help...")
3568 (sit-for 0) 3568 (sit-for 0)
@@ -3604,9 +3604,9 @@ all pending output has been dealt with."))
3604 3604
3605(defun term-handle-scroll (down) 3605(defun term-handle-scroll (down)
3606 (let ((scroll-needed 3606 (let ((scroll-needed
3607 (- (+ (term-current-row) down) 3607 (- (+ (term-current-row) down)
3608 (if (< down 0) term-scroll-start term-scroll-end)))) 3608 (if (< down 0) term-scroll-start term-scroll-end))))
3609 (when (or (and (< down 0) (< scroll-needed 0)) 3609 (when (or (and (< down 0) (< scroll-needed 0))
3610 (and (> down 0) (> scroll-needed 0))) 3610 (and (> down 0) (> scroll-needed 0)))
3611 (let ((save-point (copy-marker (point))) (save-top)) 3611 (let ((save-point (copy-marker (point))) (save-top))
3612 (goto-char term-home-marker) 3612 (goto-char term-home-marker)
@@ -3704,7 +3704,7 @@ all pending output has been dealt with."))
3704 ;; contain a space, to force the previous line to continue to wrap. 3704 ;; contain a space, to force the previous line to continue to wrap.
3705 ;; We could do this always, but it seems preferable to not add the 3705 ;; We could do this always, but it seems preferable to not add the
3706 ;; extra space when wrapped is false. 3706 ;; extra space when wrapped is false.
3707 (when wrapped 3707 (when wrapped
3708 (insert ? )) 3708 (insert ? ))
3709 (insert ?\n) 3709 (insert ?\n)
3710 (put-text-property saved-point (point) 'face 'default) 3710 (put-text-property saved-point (point) 'face 'default)
@@ -3795,8 +3795,8 @@ Should only be called when point is at the start of a screen line."
3795 ;; we need to go one line past it in order to ensure correct 3795 ;; we need to go one line past it in order to ensure correct
3796 ;; scrolling. 3796 ;; scrolling.
3797 (if (< save-current-row term-scroll-start) 3797 (if (< save-current-row term-scroll-start)
3798 ;; If point is before scroll start, 3798 ;; If point is before scroll start,
3799 (progn 3799 (progn
3800 (setq lines (- lines (- term-scroll-start save-current-row))) 3800 (setq lines (- lines (- term-scroll-start save-current-row)))
3801 (term-down (- term-scroll-start save-current-row)) 3801 (term-down (- term-scroll-start save-current-row))
3802 (setq start (point))) 3802 (setq start (point)))
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 06fa3a01186..0b413e3b7ab 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -86,7 +86,7 @@ If this is a function, call it to generate the initial field text."
86 :group 'bibtex 86 :group 'bibtex
87 :type '(choice (const :tag "None" nil) 87 :type '(choice (const :tag "None" nil)
88 (string :tag "Initial text") 88 (string :tag "Initial text")
89 (function :tag "Initialize Function" :value fun) 89 (function :tag "Initialize Function")
90 (const :tag "Default" t))) 90 (const :tag "Default" t)))
91(put 'bibtex-include-OPTkey 'risky-local-variable t) 91(put 'bibtex-include-OPTkey 'risky-local-variable t)
92 92
@@ -98,11 +98,8 @@ CROSSREF-OPTIONAL lists in `bibtex-entry-field-alist' (which see)."
98 :group 'bibtex 98 :group 'bibtex
99 :type '(repeat (group (string :tag "Field") 99 :type '(repeat (group (string :tag "Field")
100 (string :tag "Comment") 100 (string :tag "Comment")
101 (option (group :inline t 101 (option (choice :tag "Init"
102 :extra-offset -4 102 (const nil) string function)))))
103 (choice :tag "Init" :value ""
104 string
105 function))))))
106(put 'bibtex-user-optional-fields 'risky-local-variable t) 103(put 'bibtex-user-optional-fields 'risky-local-variable t)
107 104
108(defcustom bibtex-entry-format 105(defcustom bibtex-entry-format
@@ -224,7 +221,7 @@ If parsing fails, try to set this variable to nil."
224 :group 'bibtex 221 :group 'bibtex
225 :type 'boolean) 222 :type 'boolean)
226 223
227(defvar bibtex-entry-field-alist 224(defcustom bibtex-entry-field-alist
228 '(("Article" 225 '(("Article"
229 ((("author" "Author1 [and Author2 ...] [and others]") 226 ((("author" "Author1 [and Author2 ...] [and others]")
230 ("title" "Title of the article (BibTeX converts it to lowercase)") 227 ("title" "Title of the article (BibTeX converts it to lowercase)")
@@ -452,7 +449,36 @@ appears in the echo area, INIT is either the initial content of the
452field or a function, which is called to determine the initial content 449field or a function, which is called to determine the initial content
453of the field, and ALTERNATIVE-FLAG (either nil or t) marks if the 450of the field, and ALTERNATIVE-FLAG (either nil or t) marks if the
454field is an alternative. ALTERNATIVE-FLAG may be t only in the 451field is an alternative. ALTERNATIVE-FLAG may be t only in the
455REQUIRED or CROSSREF-REQUIRED lists.") 452REQUIRED or CROSSREF-REQUIRED lists."
453 :group 'bibtex
454 :type '(repeat (group (string :tag "Entry name")
455 (group (repeat :tag "Required fields"
456 (group (string :tag "Field")
457 (string :tag "Comment")
458 (option (choice :tag "Init" :value nil
459 (const nil) string function))
460 (option (choice :tag "Alternative"
461 (const :tag "No" nil)
462 (const :tag "Yes" t)))))
463 (repeat :tag "Optional fields"
464 (group (string :tag "Field")
465 (string :tag "Comment")
466 (option (choice :tag "Init" :value nil
467 (const nil) string function)))))
468 (option :extra-offset -4
469 (group (repeat :tag "Crossref: required fields"
470 (group (string :tag "Field")
471 (string :tag "Comment")
472 (option (choice :tag "Init" :value nil
473 (const nil) string function))
474 (option (choice :tag "Alternative"
475 (const :tag "No" nil)
476 (const :tag "Yes" t)))))
477 (repeat :tag "Crossref: optional fields"
478 (group (string :tag "Field")
479 (string :tag "Comment")
480 (option (choice :tag "Init" :value nil
481 (const nil) string function)))))))))
456(put 'bibtex-entry-field-alist 'risky-local-variable t) 482(put 'bibtex-entry-field-alist 'risky-local-variable t)
457 483
458(defcustom bibtex-comment-start "@Comment" 484(defcustom bibtex-comment-start "@Comment"
@@ -1785,7 +1811,7 @@ Optional arg COMMA is as in `bibtex-enclosing-field'."
1785 (set-mark (point)) 1811 (set-mark (point))
1786 (message "Mark set") 1812 (message "Mark set")
1787 (bibtex-make-field (funcall fun 'bibtex-field-kill-ring-yank-pointer 1813 (bibtex-make-field (funcall fun 'bibtex-field-kill-ring-yank-pointer
1788 bibtex-field-kill-ring) t)) 1814 bibtex-field-kill-ring) t nil t))
1789 ;; insert past the current entry 1815 ;; insert past the current entry
1790 (bibtex-skip-to-valid-entry) 1816 (bibtex-skip-to-valid-entry)
1791 (set-mark (point)) 1817 (set-mark (point))
@@ -2831,7 +2857,7 @@ and `bibtex-user-optional-fields'."
2831 (push (list "key" 2857 (push (list "key"
2832 "Used for reference key creation if author and editor fields are missing" 2858 "Used for reference key creation if author and editor fields are missing"
2833 (if (or (stringp bibtex-include-OPTkey) 2859 (if (or (stringp bibtex-include-OPTkey)
2834 (fboundp bibtex-include-OPTkey)) 2860 (functionp bibtex-include-OPTkey))
2835 bibtex-include-OPTkey)) 2861 bibtex-include-OPTkey))
2836 optional)) 2862 optional))
2837 (if (member-ignore-case entry-type bibtex-include-OPTcrossref) 2863 (if (member-ignore-case entry-type bibtex-include-OPTcrossref)
@@ -3020,7 +3046,7 @@ interactive calls."
3020 (if comment (message "%s" (nth 1 comment)) 3046 (if comment (message "%s" (nth 1 comment))
3021 (message "No comment available"))))) 3047 (message "No comment available")))))
3022 3048
3023(defun bibtex-make-field (field &optional move interactive) 3049(defun bibtex-make-field (field &optional move interactive nodelim)
3024 "Make a field named FIELD in current BibTeX entry. 3050 "Make a field named FIELD in current BibTeX entry.
3025FIELD is either a string or a list of the form 3051FIELD is either a string or a list of the form
3026\(FIELD-NAME COMMENT-STRING INIT ALTERNATIVE-FLAG) as in 3052\(FIELD-NAME COMMENT-STRING INIT ALTERNATIVE-FLAG) as in
@@ -3028,7 +3054,8 @@ FIELD is either a string or a list of the form
3028If MOVE is non-nil, move point past the present field before making 3054If MOVE is non-nil, move point past the present field before making
3029the new field. If INTERACTIVE is non-nil, move point to the end of 3055the new field. If INTERACTIVE is non-nil, move point to the end of
3030the new field. Otherwise move point past the new field. 3056the new field. Otherwise move point past the new field.
3031MOVE and INTERACTIVE are t when called interactively." 3057MOVE and INTERACTIVE are t when called interactively.
3058INIT is surrounded by field delimiters, unless NODELIM is non-nil."
3032 (interactive 3059 (interactive
3033 (list (let ((completion-ignore-case t) 3060 (list (let ((completion-ignore-case t)
3034 (field-list (bibtex-field-list 3061 (field-list (bibtex-field-list
@@ -3058,10 +3085,13 @@ MOVE and INTERACTIVE are t when called interactively."
3058 (indent-to-column (+ bibtex-entry-offset 3085 (indent-to-column (+ bibtex-entry-offset
3059 bibtex-text-indentation))) 3086 bibtex-text-indentation)))
3060 (let ((init (nth 2 field))) 3087 (let ((init (nth 2 field)))
3061 (insert (cond ((stringp init) init) 3088 (if (not init) (setq init "")
3062 ((fboundp init) (funcall init)) 3089 (if (functionp init) (setq init (funcall init)))
3063 (t (concat (bibtex-field-left-delimiter) 3090 (unless (stringp init) (error "`%s' is not a string" init)))
3064 (bibtex-field-right-delimiter)))))) 3091 ;; NODELIM is required by `bibtex-insert-kill'
3092 (if nodelim (insert init)
3093 (insert (bibtex-field-left-delimiter) init
3094 (bibtex-field-right-delimiter))))
3065 (when interactive 3095 (when interactive
3066 ;; (bibtex-find-text nil nil bibtex-help-message) 3096 ;; (bibtex-find-text nil nil bibtex-help-message)
3067 (if (memq (preceding-char) '(?} ?\")) (forward-char -1)) 3097 (if (memq (preceding-char) '(?} ?\")) (forward-char -1))
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el
index 0f7767697fe..9da8519d12d 100644
--- a/lisp/textmodes/fill.el
+++ b/lisp/textmodes/fill.el
@@ -526,7 +526,6 @@ The break position will be always after LINEBEG and generally before point."
526 ;; Ok, skip at least one word or one \c| character. 526 ;; Ok, skip at least one word or one \c| character.
527 ;; Meanwhile, don't stop at a period followed by one space. 527 ;; Meanwhile, don't stop at a period followed by one space.
528 (let ((to (line-end-position)) 528 (let ((to (line-end-position))
529 (fill-nobreak-predicate nil) ;to break sooner.
530 (first t)) 529 (first t))
531 (goto-char linebeg) 530 (goto-char linebeg)
532 (while (and (< (point) to) (or first (fill-nobreak-p))) 531 (while (and (< (point) to) (or first (fill-nobreak-p)))
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index 339160db9bd..185f2e8dea3 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -1827,7 +1827,7 @@ misspelled words backwards."
1827(defun flyspell-define-abbrev (name expansion) 1827(defun flyspell-define-abbrev (name expansion)
1828 (let ((table (flyspell-abbrev-table))) 1828 (let ((table (flyspell-abbrev-table)))
1829 (when table 1829 (when table
1830 (define-abbrev table name expansion)))) 1830 (define-abbrev table (downcase name) expansion))))
1831 1831
1832;;*---------------------------------------------------------------------*/ 1832;;*---------------------------------------------------------------------*/
1833;;* flyspell-auto-correct-word ... */ 1833;;* flyspell-auto-correct-word ... */
diff --git a/lisp/thumbs.el b/lisp/thumbs.el
index af17d925d35..7df2d295c9e 100644
--- a/lisp/thumbs.el
+++ b/lisp/thumbs.el
@@ -29,7 +29,7 @@
29;; It is used for basic browsing and viewing of images from within Emacs. 29;; It is used for basic browsing and viewing of images from within Emacs.
30;; Minimal image manipulation functions are also available via external 30;; Minimal image manipulation functions are also available via external
31;; programs. If you want to do more complex tasks like categorise and tag 31;; programs. If you want to do more complex tasks like categorise and tag
32;; your images, use tumme.el 32;; your images, use image-dired.el
33;; 33;;
34;; The 'convert' program from 'ImageMagick' 34;; The 'convert' program from 'ImageMagick'
35;; [URL:http://www.imagemagick.org/] is required. 35;; [URL:http://www.imagemagick.org/] is required.
diff --git a/lisp/tmm.el b/lisp/tmm.el
index d441db76235..f70a8cd2ea2 100644
--- a/lisp/tmm.el
+++ b/lisp/tmm.el
@@ -541,15 +541,15 @@ of `menu-bar-final-items'."
541 ;; Make a list of all the bindings in all the keymaps. 541 ;; Make a list of all the bindings in all the keymaps.
542 (setq minorbind (mapcar 'cdr (minor-mode-key-binding keyseq))) 542 (setq minorbind (mapcar 'cdr (minor-mode-key-binding keyseq)))
543 (setq localbind (local-key-binding keyseq)) 543 (setq localbind (local-key-binding keyseq))
544 (setq globalbind (cdr (global-key-binding keyseq))) 544 (setq globalbind (copy-sequence (cdr (global-key-binding keyseq))))
545 545
546 ;; If items have been redefined/undefined locally, remove them from 546 ;; If items have been redefined/undefined locally, remove them from
547 ;; the global list. 547 ;; the global list.
548 (dolist (minor minorbind) 548 (dolist (minor minorbind)
549 (dolist (item (cdr minor)) 549 (dolist (item (cdr minor))
550 (setq globalbind (assq-delete-all (car item) globalbind)))) 550 (setq globalbind (assq-delete-all (car-safe item) globalbind))))
551 (dolist (item (cdr localbind)) 551 (dolist (item (cdr localbind))
552 (setq globalbind (assq-delete-all (car item) globalbind))) 552 (setq globalbind (assq-delete-all (car-safe item) globalbind)))
553 553
554 (setq globalbind (cons 'keymap globalbind)) 554 (setq globalbind (cons 'keymap globalbind))
555 (setq allbind (cons globalbind (cons localbind minorbind))) 555 (setq allbind (cons globalbind (cons localbind minorbind)))
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 01c2d70870a..8c53d49fdd1 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,4 +1,15 @@
12007-04-01 Diane Murray <disumu@x3y2z1.net> 12007-04-15 Chong Yidong <cyd@stupidchicken.com>
2
3 * url-parse.el (url-generic-parse-url): Revert 2006-10-09 changes.
4
52007-04-13 Chong Yidong <cyd@stupidchicken.com>
6
7 * url-http.el (url-http-parse-headers): Stop after a set number of
8 redirections. Suggested by Diane Murray.
9
10 * url-vars.el (url-max-redirections): New var.
11
122007-04-01 Diane Murray <disumu@x3y2z1.net> (tiny change)
2 13
3 * url-http.el (url-http-handle-cookies): Reverse list returned by 14 * url-http.el (url-http-handle-cookies): Reverse list returned by
4 `mail-fetch-field', so that cookies are set in the correct order. 15 `mail-fetch-field', so that cookies are set in the correct order.
@@ -65,7 +76,7 @@
65 (url-http-parse-response): Set it. 76 (url-http-parse-response): Set it.
66 (url-http-parse-headers): Use it to determine keep-alive behavior. 77 (url-http-parse-headers): Use it to determine keep-alive behavior.
67 78
682006-11-23 Diane Murray <disumu@x3y2z1.net> 792006-11-23 Diane Murray <disumu@x3y2z1.net> (tiny change)
69 80
70 * url-http.el (url-http-content-length-after-change-function): Use 81 * url-http.el (url-http-content-length-after-change-function): Use
71 `url-lazy-message'. 82 `url-lazy-message'.
@@ -174,7 +185,7 @@
174 getenv returns an empty string for http_proxy. This prevents an 185 getenv returns an empty string for http_proxy. This prevents an
175 error when calling `format' later on. 186 error when calling `format' later on.
176 187
1772006-08-31 Diane Murray <disumu@x3y2z1.net> 1882006-08-31 Diane Murray <disumu@x3y2z1.net> (tiny change)
178 189
179 * url-parse.el (url-recreate-url-attributes): New function, code 190 * url-parse.el (url-recreate-url-attributes): New function, code
180 simply moved from `url-recreate-url'. 191 simply moved from `url-recreate-url'.
@@ -184,7 +195,7 @@
184 * url-http.el (url-http-create-request): 195 * url-http.el (url-http-create-request):
185 Use `url-recreate-url-attributes' when setting real-fname. 196 Use `url-recreate-url-attributes' when setting real-fname.
186 197
1872006-08-29 Diane Murray <disumu@x3y2z1.net> 1982006-08-29 Diane Murray <disumu@x3y2z1.net> (tiny change)
188 199
189 * url-cookie.el (url-cookie-write-file): Really don't use versioned 200 * url-cookie.el (url-cookie-write-file): Really don't use versioned
190 backups. 201 backups.
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index 10a6f2e7278..d9ac81838d4 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -556,21 +556,43 @@ should be shown to the user."
556 (let ((url-request-method url-http-method) 556 (let ((url-request-method url-http-method)
557 (url-request-data url-http-data) 557 (url-request-data url-http-data)
558 (url-request-extra-headers url-http-extra-headers)) 558 (url-request-extra-headers url-http-extra-headers))
559 ;; Remember that the request was redirected. 559 ;; Check existing number of redirects
560 (setf (car url-callback-arguments) 560 (if (or (< url-max-redirections 0)
561 (nconc (list :redirect redirect-uri) 561 (and (> url-max-redirections 0)
562 (car url-callback-arguments))) 562 (let ((events (car url-callback-arguments))
563 ;; Put in the current buffer a forwarding pointer to the new 563 (old-redirects 0))
564 ;; destination buffer. 564 (while events
565 ;; FIXME: This is a hack to fix url-retrieve-synchronously 565 (if (eq (car events) :redirect)
566 ;; without changing the API. Instead url-retrieve should 566 (setq old-redirects (1+ old-redirects)))
567 ;; either simply not return the "destination" buffer, or it 567 (and (setq events (cdr events))
568 ;; should take an optional `dest-buf' argument. 568 (setq events (cdr events))))
569 (set (make-local-variable 'url-redirect-buffer) 569 (< old-redirects url-max-redirections))))
570 (url-retrieve-internal 570 ;; url-max-redirections hasn't been reached, so go
571 redirect-uri url-callback-function 571 ;; ahead and redirect.
572 url-callback-arguments)) 572 (progn
573 (url-mark-buffer-as-dead (current-buffer)))))) 573 ;; Remember that the request was redirected.
574 (setf (car url-callback-arguments)
575 (nconc (list :redirect redirect-uri)
576 (car url-callback-arguments)))
577 ;; Put in the current buffer a forwarding pointer to the new
578 ;; destination buffer.
579 ;; FIXME: This is a hack to fix url-retrieve-synchronously
580 ;; without changing the API. Instead url-retrieve should
581 ;; either simply not return the "destination" buffer, or it
582 ;; should take an optional `dest-buf' argument.
583 (set (make-local-variable 'url-redirect-buffer)
584 (url-retrieve-internal
585 redirect-uri url-callback-function
586 url-callback-arguments))
587 (url-mark-buffer-as-dead (current-buffer)))
588 ;; We hit url-max-redirections, so issue an error and
589 ;; stop redirecting.
590 (url-http-debug "Maximum redirections reached")
591 (setf (car url-callback-arguments)
592 (nconc (list :error (list 'error 'http-redirect-limit
593 redirect-uri))
594 (car url-callback-arguments)))
595 (setq success t))))))
574 (4 ; Client error 596 (4 ; Client error
575 ;; 400 Bad Request 597 ;; 400 Bad Request
576 ;; 401 Unauthorized 598 ;; 401 Unauthorized
diff --git a/lisp/url/url-parse.el b/lisp/url/url-parse.el
index 2b69c54133f..a9a0fb151e9 100644
--- a/lisp/url/url-parse.el
+++ b/lisp/url/url-parse.el
@@ -108,7 +108,7 @@
108(defun url-recreate-url-attributes (urlobj) 108(defun url-recreate-url-attributes (urlobj)
109 "Recreate the attributes of an URL string from the parsed URLOBJ." 109 "Recreate the attributes of an URL string from the parsed URLOBJ."
110 (when (url-attributes urlobj) 110 (when (url-attributes urlobj)
111 (concat "?" 111 (concat ";"
112 (mapconcat (lambda (x) 112 (mapconcat (lambda (x)
113 (if (cdr x) 113 (if (cdr x)
114 (concat (car x) "=" (cdr x)) 114 (concat (car x) "=" (cdr x))
@@ -168,7 +168,7 @@ Format is:
168 (setq full t) 168 (setq full t)
169 (forward-char 2) 169 (forward-char 2)
170 (setq save-pos (point)) 170 (setq save-pos (point))
171 (skip-chars-forward "^/\\?#") 171 (skip-chars-forward "^/")
172 (setq host (buffer-substring save-pos (point))) 172 (setq host (buffer-substring save-pos (point)))
173 (if (string-match "^\\([^@]+\\)@" host) 173 (if (string-match "^\\([^@]+\\)@" host)
174 (setq user (match-string 1 host) 174 (setq user (match-string 1 host)
@@ -189,25 +189,29 @@ Format is:
189 (setq port (url-scheme-get-property prot 'default-port))) 189 (setq port (url-scheme-get-property prot 'default-port)))
190 190
191 ;; 3.3. Path 191 ;; 3.3. Path
192 ;; Gross hack to preserve ';' in data URLs
192 (setq save-pos (point)) 193 (setq save-pos (point))
193 (skip-chars-forward "^#?")
194 (setq file (buffer-substring save-pos (point)))
195 194
196 ;; 3.4. Query 195 ;; 3.4. Query
197 (when (looking-at "\\?") 196 (if (string= "data" prot)
198 (forward-char 1) 197 (goto-char (point-max))
199 (setq save-pos (point)) 198 ;; Now check for references
200 (skip-chars-forward "^#") 199 (skip-chars-forward "^#")
201 ;; RFC 3986 specifies no general way of parsing the query 200 (if (eobp)
202 ;; string, but `url-parse-args' seems universal enough. 201 nil
203 (setq attr (url-parse-args (buffer-substring save-pos (point)) t) 202 (delete-region
204 attr (nreverse attr))) 203 (point)
205 204 (progn
206 ;; 3.5. Fragment 205 (skip-chars-forward "#")
207 (when (looking-at "#") 206 (setq refs (buffer-substring (point) (point-max)))
208 (forward-char 1) 207 (point-max))))
209 (setq refs (buffer-substring (point) (point-max)))) 208 (goto-char save-pos)
209 (skip-chars-forward "^;")
210 (if (not (eobp))
211 (setq attr (url-parse-args (buffer-substring (point) (point-max)) t)
212 attr (nreverse attr))))
210 213
214 (setq file (buffer-substring save-pos (point)))
211 (if (and host (string-match "%[0-9][0-9]" host)) 215 (if (and host (string-match "%[0-9][0-9]" host))
212 (setq host (url-unhex-string host))) 216 (setq host (url-unhex-string host)))
213 (vector prot user pass host port file refs attr full)))))) 217 (vector prot user pass host port file refs attr full))))))
diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el
index 705eb947001..d0bd9a84c05 100644
--- a/lisp/url/url-vars.el
+++ b/lisp/url/url-vars.el
@@ -320,6 +320,12 @@ undefined."
320 "\\`\\([-a-zA-Z0-9+.]+:\\)" 320 "\\`\\([-a-zA-Z0-9+.]+:\\)"
321 "A regular expression that will match an absolute URL.") 321 "A regular expression that will match an absolute URL.")
322 322
323(defcustom url-max-redirections 30
324 "*The maximum number of redirection requests to honor in a HTTP connection.
325A negative number means to honor an unlimited number of redirection requests."
326 :type 'integer
327 :group 'url)
328
323(defcustom url-confirmation-func 'y-or-n-p 329(defcustom url-confirmation-func 'y-or-n-p
324 "*What function to use for asking yes or no functions. 330 "*What function to use for asking yes or no functions.
325Possible values are `yes-or-no-p' or `y-or-n-p', or any function that 331Possible values are `yes-or-no-p' or `y-or-n-p', or any function that
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index c7981180c10..9c791631e33 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -84,7 +84,7 @@
84 :group 'hypermedia) 84 :group 'hypermedia)
85 85
86(defgroup widget-documentation nil 86(defgroup widget-documentation nil
87 "Options controling the display of documentation strings." 87 "Options controlling the display of documentation strings."
88 :group 'widgets) 88 :group 'widgets)
89 89
90(defgroup widget-faces nil 90(defgroup widget-faces nil
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index d6dfcb87b49..7326f9cd8b2 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,61 @@
12007-04-22 Richard Stallman <rms@gnu.org>
2
3 * keymaps.texi (Extended Menu Items): Move the info about
4 format with cached keyboard binding.
5
62007-04-21 Richard Stallman <rms@gnu.org>
7
8 * text.texi (Special Properties): Clarify previous change.
9
10 * files.texi (File Name Expansion): Clarify previous change.
11
12 * display.texi (Attribute Functions): Fix example for
13 face-attribute-relative-p.
14
152007-04-19 Kenichi Handa <handa@m17n.org>
16
17 * text.texi (Special Properties): Document composition property.
18
192007-04-19 Glenn Morris <rgm@gnu.org>
20
21 * files.texi (File Name Expansion): Mention "superroot".
22
232007-04-15 Chong Yidong <cyd@stupidchicken.com>
24
25 * frames.texi (Multiple Displays): Add note about "multi-monitor"
26 setups.
27 (Display Feature Testing): Note that display refers to all
28 physical monitors for multi-monitor setups.
29
302007-04-14 Richard Stallman <rms@gnu.org>
31
32 * lists.texi (Sets And Lists): Clarify `delete' examples.
33 Remove spurious xref to same node.
34 Clarify xref for add-to-list.
35
362007-04-12 Nick Roberts <nickrob@snap.net.nz>
37
38 * keymaps.texi (Format of Keymaps): Remove spurious ")" from
39 value of lisp-mode-map.
40
412007-04-11 Karl Berry <karl@gnu.org>
42
43 * anti.texi (Antinews),
44 * display.texi (Overlay Properties) and (Defining Images),
45 * processes.texi (Synchronous Processes) and (Sentinels),
46 * syntax.texi (Syntax Table Internals),
47 * searching.texi (Regexp Special),
48 * nonascii.texi (Default Coding Systems),
49 * text.texi (Special Properties),
50 * minibuf.texi (Basic Completion): Wording to improve breaks in
51 8.5x11 format.
52 * elisp.texi (smallbook): new @set to more easily switch between
53 smallbook and 8.5x11.
54
552007-04-11 Richard Stallman <rms@gnu.org>
56
57 * text.texi (Lazy Properties): Minor fix.
58
12007-04-08 Karl Berry <karl@gnu.org> 592007-04-08 Karl Berry <karl@gnu.org>
2 60
3 * symbols.texi (Plists and Alists): Period after "vs" in index entries. 61 * symbols.texi (Plists and Alists): Period after "vs" in index entries.
@@ -15,7 +73,7 @@
15 adaptive-fill-regexp's value, since they are not in the standard 73 adaptive-fill-regexp's value, since they are not in the standard
16 TeX fonts. 74 TeX fonts.
17 75
182007-04-07 Herbert Euler <herberteuler@hotmail.com> 762007-04-07 Guanpeng Xu <herberteuler@hotmail.com>
19 77
20 * display.texi (Defining Faces): Fix example. 78 * display.texi (Defining Faces): Fix example.
21 79
diff --git a/lispref/anti.texi b/lispref/anti.texi
index de07936d2f4..b258e959a46 100644
--- a/lispref/anti.texi
+++ b/lispref/anti.texi
@@ -433,11 +433,10 @@ The @code{table} argument to @code{translate-region} can no longer be
433a char-table; it has to be a string. 433a char-table; it has to be a string.
434 434
435@item 435@item
436The two functions @code{merge-coding-systems} and 436The variable @code{auto-coding-functions} and the two functions
437@code{decode-coding-inserted-region}, and the variable 437@code{merge-coding-systems} and @code{decode-coding-inserted-region}
438@code{auto-coding-functions}, have been deleted. The 438have been deleted. The coding system property
439@code{mime-text-unsuitable} coding system property no longer has any 439@code{mime-text-unsuitable} no longer has any special meaning.
440special meaning.
441 440
442@item 441@item
443If pure storage overflows while dumping, Emacs won't tell you how much 442If pure storage overflows while dumping, Emacs won't tell you how much
diff --git a/lispref/display.texi b/lispref/display.texi
index 4d94ba1ec4d..770d6e9d91a 100644
--- a/lispref/display.texi
+++ b/lispref/display.texi
@@ -1365,7 +1365,7 @@ specify a particular attribute for certain text. @xref{Face
1365Attributes}. 1365Attributes}.
1366 1366
1367@item 1367@item
1368A cons cell of the form @code{(foreground-color . @var{color-name})} or 1368A cons cell, either of the form @code{(foreground-color . @var{color-name})} or
1369@code{(background-color . @var{color-name})}. These elements specify 1369@code{(background-color . @var{color-name})}. These elements specify
1370just the foreground color or just the background color. 1370just the foreground color or just the background color.
1371 1371
@@ -2144,10 +2144,9 @@ For @code{:height}, floating point values are also relative.
2144For example: 2144For example:
2145 2145
2146@example 2146@example
2147(read-face-name "Describe face" "= `default' face" t) 2147(face-attribute-relative-p :height 2.0)
2148 @result{} t
2148@end example 2149@end example
2149
2150prompts with @samp{Describe face (default = `default' face): }.
2151@end defun 2150@end defun
2152 2151
2153@defun merge-face-attribute attribute value1 value2 2152@defun merge-face-attribute attribute value1 value2
@@ -4138,8 +4137,8 @@ should specify the image as follows:
4138This function returns a suitable search path for images used by the 4137This function returns a suitable search path for images used by the
4139Lisp package @var{library}. 4138Lisp package @var{library}.
4140 4139
4141The function searches for @var{image} first in @code{image-load-path} 4140The function searches for @var{image} first using @code{image-load-path},
4142(excluding @file{@code{data-directory}/images}) and then in 4141excluding @file{@code{data-directory}/images}, and then in
4143@code{load-path}, followed by a path suitable for @var{library}, which 4142@code{load-path}, followed by a path suitable for @var{library}, which
4144includes @file{../../etc/images} and @file{../etc/images} relative to 4143includes @file{../../etc/images} and @file{../etc/images} relative to
4145the library file itself, and finally in 4144the library file itself, and finally in
diff --git a/lispref/elisp.texi b/lispref/elisp.texi
index 5c05a17a955..546f1ca4f97 100644
--- a/lispref/elisp.texi
+++ b/lispref/elisp.texi
@@ -7,24 +7,29 @@
7@c Version of the manual and of Emacs. 7@c Version of the manual and of Emacs.
8@c Please remember to update the edition number in README as well. 8@c Please remember to update the edition number in README as well.
9@set VERSION 2.9 9@set VERSION 2.9
10@set EMACSVER 22.0.97 10@set EMACSVER 22.0.98
11 11
12@dircategory Emacs 12@dircategory Emacs
13@direntry 13@direntry
14* Elisp: (elisp). The Emacs Lisp Reference Manual. 14* Elisp: (elisp). The Emacs Lisp Reference Manual.
15@end direntry 15@end direntry
16 16
17@c So that anyone making the printed manual gets the version we have 17@c for full 8.5x11, comment this out.
18@c tuned to avoid bad line breaks, etc. 18@set smallbook
19
20@ifset smallbook
19@smallbook 21@smallbook
22@end ifset
20 23
21@c per rms and peterb, use 10pt fonts for the main text, mostly to 24@c per rms and peterb, use 10pt fonts for the main text, mostly to
22@c save on paper cost. Also, do not declare @setchapternewpage odd, 25@c save on paper cost. Also, do not declare @setchapternewpage odd,
23@c for the same reason. Do this inside @tex for now, so the 26@c for the same reason. Do this inside @tex for now, so the
24@c last-released makeinfo does not complain. 27@c last-released makeinfo does not complain.
25@tex 28@tex
29@ifset smallbook
26@fonttextsize 10 30@fonttextsize 10
27\global\hbadness=6000 % don't worry about not-too-underfull boxes 31@end ifset
32\global\hbadness=6666 % don't worry about not-too-underfull boxes
28@end tex 33@end tex
29 34
30@c Combine indices. 35@c Combine indices.
@@ -61,7 +66,7 @@ Software Foundation raise funds for GNU development.''
61@titlepage 66@titlepage
62@title GNU Emacs Lisp Reference Manual 67@title GNU Emacs Lisp Reference Manual
63@subtitle For Emacs Version @value{EMACSVER} 68@subtitle For Emacs Version @value{EMACSVER}
64@subtitle Revision @value{VERSION}, January 2002 69@subtitle Revision @value{VERSION}, April 2007
65 70
66@author by Bil Lewis, Dan LaLiberte, Richard Stallman 71@author by Bil Lewis, Dan LaLiberte, Richard Stallman
67@author and the GNU Manual Group 72@author and the GNU Manual Group
diff --git a/lispref/files.texi b/lispref/files.texi
index f357b1f3814..656dbf346dc 100644
--- a/lispref/files.texi
+++ b/lispref/files.texi
@@ -1990,6 +1990,20 @@ canonical form:
1990@end group 1990@end group
1991@end example 1991@end example
1992 1992
1993In some cases, a leading @samp{..} component can remain in the output:
1994
1995@example
1996@group
1997(expand-file-name "../home" "/")
1998 @result{} "/../home"
1999@end group
2000@end example
2001
2002@noindent
2003This is for the sake of filesystems that have the concept of a
2004``superroot'' above the root directory @file{/}. On other filesystems,
2005@file{/../} is interpreted exactly the same as @file{/}.
2006
1993Note that @code{expand-file-name} does @emph{not} expand environment 2007Note that @code{expand-file-name} does @emph{not} expand environment
1994variables; only @code{substitute-in-file-name} does that. 2008variables; only @code{substitute-in-file-name} does that.
1995 2009
diff --git a/lispref/frames.texi b/lispref/frames.texi
index 1bad33cdb4e..527f27385f3 100644
--- a/lispref/frames.texi
+++ b/lispref/frames.texi
@@ -150,6 +150,13 @@ screens belonging to one server, Emacs knows by the similarity in their
150names that they share a single keyboard, and it treats them as a single 150names that they share a single keyboard, and it treats them as a single
151terminal. 151terminal.
152 152
153 Note that some graphical terminals can output to more than a one
154monitor (or other output device) at the same time. On these
155``multi-monitor'' setups, a single @var{display} value controls the
156output to all the physical monitors. In this situation, there is
157currently no platform-independent way for Emacs to distinguish between
158the different physical monitors.
159
153@deffn Command make-frame-on-display display &optional parameters 160@deffn Command make-frame-on-display display &optional parameters
154This creates and returns a new frame on display @var{display}, taking 161This creates and returns a new frame on display @var{display}, taking
155the other frame parameters from @var{parameters}. Aside from the 162the other frame parameters from @var{parameters}. Aside from the
@@ -2089,11 +2096,19 @@ This function returns the number of screens associated with the display.
2089@defun display-pixel-height &optional display 2096@defun display-pixel-height &optional display
2090This function returns the height of the screen in pixels. 2097This function returns the height of the screen in pixels.
2091On a character terminal, it gives the height in characters. 2098On a character terminal, it gives the height in characters.
2099
2100For graphical terminals, note that on ``multi-monitor'' setups this
2101refers to the pixel width for all physical monitors associated with
2102@var{display}. @xref{Multiple Displays}.
2092@end defun 2103@end defun
2093 2104
2094@defun display-pixel-width &optional display 2105@defun display-pixel-width &optional display
2095This function returns the width of the screen in pixels. 2106This function returns the width of the screen in pixels.
2096On a character terminal, it gives the width in characters. 2107On a character terminal, it gives the width in characters.
2108
2109For graphical terminals, note that on ``multi-monitor'' setups this
2110refers to the pixel width for all physical monitors associated with
2111@var{display}. @xref{Multiple Displays}.
2097@end defun 2112@end defun
2098 2113
2099@defun display-mm-height &optional display 2114@defun display-mm-height &optional display
diff --git a/lispref/keymaps.texi b/lispref/keymaps.texi
index d94de6d70f0..88b312d227b 100644
--- a/lispref/keymaps.texi
+++ b/lispref/keymaps.texi
@@ -255,7 +255,7 @@ lisp-mode-map
255 (24 . lisp-send-defun) 255 (24 . lisp-send-defun)
256 keymap 256 keymap
257 ;; @r{@kbd{M-C-q}, treated as @kbd{@key{ESC} C-q}} 257 ;; @r{@kbd{M-C-q}, treated as @kbd{@key{ESC} C-q}}
258 (17 . indent-sexp))) 258 (17 . indent-sexp))
259@end group 259@end group
260@group 260@group
261 ;; @r{This part is inherited from @code{lisp-mode-shared-map}.} 261 ;; @r{This part is inherited from @code{lisp-mode-shared-map}.}
@@ -2094,7 +2094,17 @@ Here, @var{item-name} is an expression which evaluates to the menu item
2094string. Thus, the string need not be a constant. The third element, 2094string. Thus, the string need not be a constant. The third element,
2095@var{real-binding}, is the command to execute. The tail of the list, 2095@var{real-binding}, is the command to execute. The tail of the list,
2096@var{item-property-list}, has the form of a property list which contains 2096@var{item-property-list}, has the form of a property list which contains
2097other information. Here is a table of the properties that are supported: 2097other information.
2098
2099 When an equivalent keyboard key binding is cached, the extended menu
2100item binding looks like this:
2101
2102@example
2103(menu-item @var{item-name} @var{real-binding} (@var{key-binding-data})
2104 . @var{item-property-list})
2105@end example
2106
2107 Here is a table of the properties that are supported:
2098 2108
2099@table @code 2109@table @code
2100@item :enable @var{form} 2110@item :enable @var{form}
@@ -2180,13 +2190,6 @@ operates on menu data structures, so you should write it so it can
2180safely be called at any time. 2190safely be called at any time.
2181@end table 2191@end table
2182 2192
2183 When an equivalent key binding is cached, the binding looks like this.
2184
2185@example
2186(menu-item @var{item-name} @var{real-binding} (@var{key-binding-data})
2187 . @var{item-property-list})
2188@end example
2189
2190@node Menu Separators 2193@node Menu Separators
2191@subsubsection Menu Separators 2194@subsubsection Menu Separators
2192@cindex menu separators 2195@cindex menu separators
diff --git a/lispref/lists.texi b/lispref/lists.texi
index 53fe64c3cc6..ffe4df2413d 100644
--- a/lispref/lists.texi
+++ b/lispref/lists.texi
@@ -1366,6 +1366,9 @@ and the @code{(4)} in the @code{sample-list} are not @code{eq}:
1366(delq '(4) sample-list) 1366(delq '(4) sample-list)
1367 @result{} (a c (4)) 1367 @result{} (a c (4))
1368@end group 1368@end group
1369
1370If you want to delete elements that are @code{equal} to a given value,
1371use @code{delete} (see below).
1369@end example 1372@end example
1370 1373
1371@defun remq object list 1374@defun remq object list
@@ -1388,9 +1391,6 @@ sample-list
1388 @result{} (a b c a b c) 1391 @result{} (a b c a b c)
1389@end group 1392@end group
1390@end example 1393@end example
1391@noindent
1392The function @code{delq} offers a way to perform this operation
1393destructively. See @ref{Sets And Lists}.
1394@end defun 1394@end defun
1395 1395
1396@defun memql object list 1396@defun memql object list
@@ -1448,8 +1448,8 @@ If @code{sequence} is a list, this function destructively removes all
1448elements @code{equal} to @var{object} from @var{sequence}. For lists, 1448elements @code{equal} to @var{object} from @var{sequence}. For lists,
1449@code{delete} is to @code{delq} as @code{member} is to @code{memq}: it 1449@code{delete} is to @code{delq} as @code{member} is to @code{memq}: it
1450uses @code{equal} to compare elements with @var{object}, like 1450uses @code{equal} to compare elements with @var{object}, like
1451@code{member}; when it finds an element that matches, it removes the 1451@code{member}; when it finds an element that matches, it cuts the
1452element just as @code{delq} would. 1452element out just as @code{delq} would.
1453 1453
1454If @code{sequence} is a vector or string, @code{delete} returns a copy 1454If @code{sequence} is a vector or string, @code{delete} returns a copy
1455of @code{sequence} with all elements @code{equal} to @code{object} 1455of @code{sequence} with all elements @code{equal} to @code{object}
@@ -1459,8 +1459,22 @@ For example:
1459 1459
1460@example 1460@example
1461@group 1461@group
1462(delete '(2) '((2) (1) (2))) 1462(setq l '((2) (1) (2)))
1463(delete '(2) l)
1463 @result{} ((1)) 1464 @result{} ((1))
1465l
1466 @result{} ((2) (1))
1467;; @r{If you want to change @code{l} reliably,}
1468;; @r{write @code{(setq l (delete elt l))}.}
1469@end group
1470@group
1471(setq l '((2) (1) (2)))
1472(delete '(1) l)
1473 @result{} ((2) (2))
1474l
1475 @result{} ((2) (2))
1476;; @r{In this case, it makes no difference whether you set @code{l},}
1477;; @r{but you should do so for the sake of the other case.}
1464@end group 1478@end group
1465@group 1479@group
1466(delete '(2) [(2) (1) (2)]) 1480(delete '(2) [(2) (1) (2)])
@@ -1470,7 +1484,7 @@ For example:
1470@end defun 1484@end defun
1471 1485
1472@defun remove object sequence 1486@defun remove object sequence
1473This function is the non-destructive counterpart of @code{delete}. If 1487This function is the non-destructive counterpart of @code{delete}. It
1474returns a copy of @code{sequence}, a list, vector, or string, with 1488returns a copy of @code{sequence}, a list, vector, or string, with
1475elements @code{equal} to @code{object} removed. For example: 1489elements @code{equal} to @code{object} removed. For example:
1476 1490
@@ -1509,7 +1523,8 @@ several @code{equal} occurrences of an element in @var{list},
1509@end defun 1523@end defun
1510 1524
1511 See also the function @code{add-to-list}, in @ref{List Variables}, 1525 See also the function @code{add-to-list}, in @ref{List Variables},
1512for another way to add an element to a list stored in a variable. 1526for a way to add an element to a list stored in a variable and used as a
1527set.
1513 1528
1514@node Association Lists 1529@node Association Lists
1515@section Association Lists 1530@section Association Lists
diff --git a/lispref/minibuf.texi b/lispref/minibuf.texi
index efe2d7575c7..98901df87f8 100644
--- a/lispref/minibuf.texi
+++ b/lispref/minibuf.texi
@@ -767,7 +767,7 @@ completion possibility specified by @var{collection} and
767strings, this is true if @var{string} appears in the list and 767strings, this is true if @var{string} appears in the list and
768@var{predicate} is satisfied. 768@var{predicate} is satisfied.
769 769
770@code{test-completion} uses @code{completion-regexp-list} in the same 770This function uses @code{completion-regexp-list} in the same
771way that @code{try-completion} does. 771way that @code{try-completion} does.
772 772
773If @var{predicate} is non-@code{nil} and if @var{collection} contains 773If @var{predicate} is non-@code{nil} and if @var{collection} contains
diff --git a/lispref/nonascii.texi b/lispref/nonascii.texi
index 899899f8f93..dd0f15c817e 100644
--- a/lispref/nonascii.texi
+++ b/lispref/nonascii.texi
@@ -1105,11 +1105,11 @@ for decoding (in case @var{operation} does decoding), and
1105@var{encoding-system} is the coding system for encoding (in case 1105@var{encoding-system} is the coding system for encoding (in case
1106@var{operation} does encoding). 1106@var{operation} does encoding).
1107 1107
1108The argument @var{operation} should be a symbol, any one of 1108The argument @var{operation} is a symbol, one of @code{write-region},
1109@code{insert-file-contents}, @code{write-region},
1110@code{start-process}, @code{call-process}, @code{call-process-region}, 1109@code{start-process}, @code{call-process}, @code{call-process-region},
1111or @code{open-network-stream}. These are the names of the Emacs I/O 1110@code{insert-file-contents}, or @code{open-network-stream}. These are
1112primitives that can do character code and eol conversion. 1111the names of the Emacs I/O primitives that can do character code and
1112eol conversion.
1113 1113
1114The remaining arguments should be the same arguments that might be given 1114The remaining arguments should be the same arguments that might be given
1115to the corresponding I/O primitive. Depending on the primitive, one 1115to the corresponding I/O primitive. Depending on the primitive, one
@@ -1165,9 +1165,9 @@ of the right way to use the variable:
1165 (insert-file-contents filename)) 1165 (insert-file-contents filename))
1166@end example 1166@end example
1167 1167
1168When its value is non-@code{nil}, @code{coding-system-for-read} takes 1168When its value is non-@code{nil}, this variable takes precedence over
1169precedence over all other methods of specifying a coding system to use for 1169all other methods of specifying a coding system to use for input,
1170input, including @code{file-coding-system-alist}, 1170including @code{file-coding-system-alist},
1171@code{process-coding-system-alist} and 1171@code{process-coding-system-alist} and
1172@code{network-coding-system-alist}. 1172@code{network-coding-system-alist}.
1173@end defvar 1173@end defvar
diff --git a/lispref/processes.texi b/lispref/processes.texi
index 34b9b34e762..fbc8b785c11 100644
--- a/lispref/processes.texi
+++ b/lispref/processes.texi
@@ -349,7 +349,7 @@ handler could be different from the handler chosen for the
349@var{infile} is on another remote host. Or @code{default-directory} 349@var{infile} is on another remote host. Or @code{default-directory}
350could be non-special, whereas @var{infile} is on a remote host.) 350could be non-special, whereas @var{infile} is on a remote host.)
351 351
352If @var{buffer} has the form @code{(@var{real-destination} 352If @var{buffer} is a list of the form @code{(@var{real-destination}
353@var{error-destination})}, and @var{error-destination} names a file, 353@var{error-destination})}, and @var{error-destination} names a file,
354then the same remarks as for @var{infile} apply. 354then the same remarks as for @var{infile} apply.
355 355
@@ -2066,8 +2066,9 @@ number @var{p}. @code{format-network-address} converts that to the
2066string @code{"@var{a}.@var{b}.@var{c}.@var{d}:@var{p}"}. 2066string @code{"@var{a}.@var{b}.@var{c}.@var{d}:@var{p}"}.
2067 2067
2068A nine-element vector @code{[@var{a} @var{b} @var{c} @var{d} @var{e} 2068A nine-element vector @code{[@var{a} @var{b} @var{c} @var{d} @var{e}
2069@var{f} @var{g} @var{h} @var{p}]} represents an IPv6 address and port 2069@var{f} @var{g} @var{h} @var{p}]} represents an IPv6 address along
2070number. @code{format-network-address} converts that to the string 2070with a port number. @code{format-network-address} converts that to
2071the string
2071@code{"[@var{a}:@var{b}:@var{c}:@var{d}:@var{e}:@var{f}:@var{g}:@var{h}]:@var{p}"}. 2072@code{"[@var{a}:@var{b}:@var{c}:@var{d}:@var{e}:@var{f}:@var{g}:@var{h}]:@var{p}"}.
2072 2073
2073If the vector does not include the port number, @var{p}, or if 2074If the vector does not include the port number, @var{p}, or if
diff --git a/lispref/searching.texi b/lispref/searching.texi
index 056e1bd51a5..10e8c672962 100644
--- a/lispref/searching.texi
+++ b/lispref/searching.texi
@@ -309,17 +309,16 @@ first tries to match all three @samp{a}s; but the rest of the pattern is
309The next alternative is for @samp{a*} to match only two @samp{a}s. With 309The next alternative is for @samp{a*} to match only two @samp{a}s. With
310this choice, the rest of the regexp matches successfully. 310this choice, the rest of the regexp matches successfully.
311 311
312@strong{Warning:} Nested repetition operators take a long time, 312@strong{Warning:} Nested repetition operators can run for an
313or even forever, if they 313indefinitely long time, if they lead to ambiguous matching. For
314lead to ambiguous matching. For example, trying to match the regular 314example, trying to match the regular expression @samp{\(x+y*\)*a}
315expression @samp{\(x+y*\)*a} against the string 315against the string @samp{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz} could
316@samp{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz} could take hours before it 316take hours before it ultimately fails. Emacs must try each way of
317ultimately fails. Emacs must try each way of grouping the 35 317grouping the @samp{x}s before concluding that none of them can work.
318@samp{x}s before concluding that none of them can work. Even worse, 318Even worse, @samp{\(x*\)*} can match the null string in infinitely
319@samp{\(x*\)*} can match the null string in infinitely many ways, so 319many ways, so it causes an infinite loop. To avoid these problems,
320it causes an infinite loop. To avoid these problems, check nested 320check nested repetitions carefully, to make sure that they do not
321repetitions carefully, to make sure that they do not cause combinatorial 321cause combinatorial explosions in backtracking.
322explosions in backtracking.
323 322
324@item @samp{+} 323@item @samp{+}
325@cindex @samp{+} in regexp 324@cindex @samp{+} in regexp
diff --git a/lispref/syntax.texi b/lispref/syntax.texi
index 1e4b1b1fefe..340f74632bd 100644
--- a/lispref/syntax.texi
+++ b/lispref/syntax.texi
@@ -1011,8 +1011,9 @@ corresponds to each syntax flag.
1011@end multitable 1011@end multitable
1012 1012
1013@defun string-to-syntax @var{desc} 1013@defun string-to-syntax @var{desc}
1014This function returns the internal form @code{(@var{syntax-code} . 1014This function returns the internal form corresponding to the syntax
1015@var{matching-char})} corresponding to the syntax descriptor @var{desc}. 1015descriptor @var{desc}, a cons cell @code{(@var{syntax-code}
1016. @var{matching-char})}.
1016@end defun 1017@end defun
1017 1018
1018@defun syntax-after pos 1019@defun syntax-after pos
diff --git a/lispref/text.texi b/lispref/text.texi
index 4065aba4aef..13d2d543f94 100644
--- a/lispref/text.texi
+++ b/lispref/text.texi
@@ -2987,13 +2987,13 @@ time you want to specify a particular attribute for certain text.
2987@xref{Face Attributes}. 2987@xref{Face Attributes}.
2988 2988
2989@item 2989@item
2990A cons cell of the form @code{(foreground-color . @var{color-name})} or 2990A cons cell with the form @code{(foreground-color . @var{color-name})} or
2991@code{(background-color . @var{color-name})}. These elements specify 2991@code{(background-color . @var{color-name})}. These elements specify
2992just the foreground color or just the background color. @xref{Color 2992just the foreground color or just the background color. @xref{Color
2993Names}, for the supported forms of @var{color-name}. 2993Names}, for the supported forms of @var{color-name}.
2994 2994
2995@code{(foreground-color . @var{color-name})} is equivalent to 2995A cons cell of @code{(foreground-color . @var{color-name})} is equivalent to
2996specifying @code{(:foreground @var{color-name})}, and likewise for the 2996specifying @code{(:foreground @var{color-name})}; likewise for the
2997background. 2997background.
2998@end itemize 2998@end itemize
2999 2999
@@ -3241,7 +3241,6 @@ functions (which may be the same function). In any case, all the
3241It is possible with @code{char-after} to examine characters at various 3241It is possible with @code{char-after} to examine characters at various
3242buffer positions without moving point to those positions. Only an 3242buffer positions without moving point to those positions. Only an
3243actual change in the value of point runs these hook functions. 3243actual change in the value of point runs these hook functions.
3244@end table
3245 3244
3246@defvar inhibit-point-motion-hooks 3245@defvar inhibit-point-motion-hooks
3247When this variable is non-@code{nil}, @code{point-left} and 3246When this variable is non-@code{nil}, @code{point-left} and
@@ -3260,6 +3259,30 @@ string to display. Tooltip mode (@pxref{Tooltips,,, emacs, The GNU Emacs
3260Manual}) provides an example. 3259Manual}) provides an example.
3261@end defvar 3260@end defvar
3262 3261
3262@item composition
3263@kindex composition @r{(text property)}
3264This text property is used to display a sequence of characters as a
3265single glyph composed from components. For instance, in Thai a base
3266consonant is composed with the following combining vowel as a single
3267glyph. The value should be a character or a sequence (vector, list,
3268or string) of integers.
3269
3270@itemize @bullet
3271@item
3272If it is a character, it means to display that character instead of
3273the text in the region.
3274
3275@item
3276If it is a string, it means to display that string's contents instead
3277of the text in the region.
3278
3279@item
3280If it is a vector or list, the elements are characters interleaved
3281with internal codes specifying how to compose the following character
3282with the previous one.
3283@end itemize
3284@end table
3285
3263@node Format Properties 3286@node Format Properties
3264@subsection Formatted Text Properties 3287@subsection Formatted Text Properties
3265 3288
@@ -3470,7 +3493,7 @@ once for the same part of the buffer, you can use the variable
3470@code{buffer-access-fontified-property}. 3493@code{buffer-access-fontified-property}.
3471 3494
3472@defvar buffer-access-fontified-property 3495@defvar buffer-access-fontified-property
3473If this value's variable is non-@code{nil}, it is a symbol which is used 3496If this variable's value is non-@code{nil}, it is a symbol which is used
3474as a text property name. A non-@code{nil} value for that text property 3497as a text property name. A non-@code{nil} value for that text property
3475means, ``the other text properties for this character have already been 3498means, ``the other text properties for this character have already been
3476computed.'' 3499computed.''
diff --git a/mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings b/mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings
index e064b75f487..c9f8190c883 100644
--- a/mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings
+++ b/mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings
@@ -1,5 +1,5 @@
1/* Localized versions of Info.plist keys */ 1/* Localized versions of Info.plist keys */
2 2
3CFBundleName = "Emacs"; 3CFBundleName = "Emacs";
4CFBundleShortVersionString = "22.0.97"; 4CFBundleShortVersionString = "22.0.98";
5CFBundleGetInfoString = "22.0.97, Copyright (C) 2007 Free Software Foundation, Inc."; 5CFBundleGetInfoString = "22.0.98, Copyright (C) 2007 Free Software Foundation, Inc.";
diff --git a/mac/src/Emacs.r b/mac/src/Emacs.r
index 78626b09fb3..0a17e379168 100644
--- a/mac/src/Emacs.r
+++ b/mac/src/Emacs.r
@@ -221,10 +221,10 @@ resource 'vers' (1) {
221 0x22, /* Major revision in BCD */ 221 0x22, /* Major revision in BCD */
222 0x0, /* Minor revision in BCD */ 222 0x0, /* Minor revision in BCD */
223 alpha, /* development, alpha, beta, or final (release) */ 223 alpha, /* development, alpha, beta, or final (release) */
224 97, /* Non-final release # */ 224 98, /* Non-final release # */
225 0, /* Region code */ 225 0, /* Region code */
226 "22.0.97", /* Short version number */ 226 "22.0.98", /* Short version number */
227 "22.0.97, Copyright \0xa9 2007 " 227 "22.0.98, Copyright \0xa9 2007 "
228 "Free Software Foundation, Inc." /* Long version number */ 228 "Free Software Foundation, Inc." /* Long version number */
229}; 229};
230 230
diff --git a/man/ChangeLog b/man/ChangeLog
index 8fe3bcd9484..3981e0c7d25 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,122 @@
12007-04-23 Jay Belanger <jay.p.belanger@gmail.com>
2
3 * calc.texi (Reporting bugs): Update maintainer's address.
4
52007-04-23 Chong Yidong <cyd@stupidchicken.com>
6
7 * display.texi (Highlight Interactively): Correct description of
8 hi-lock-file-patterns-policy.
9
10 * files.texi (File Archives): Mention self-extracting executables.
11
122007-04-23 Eli Zaretskii <eliz@gnu.org>
13
14 * search.texi (Unconditional Replace, Query Replace): Add xref to
15 "Replacement and Case".
16
172007-04-22 Chong Yidong <cyd@stupidchicken.com>
18
19 * dired.texi (Image-Dired): Move from Thumbnails node.
20 * misc.texi (Thumbnails): Node deleted.
21 * emacs.texi (Top): Update node listing.
22
23 * files.texi (File Conveniences):
24 * ack.texi (Acknowledgments):
25 * faq.texi (New in Emacs 22): Rename "tumme" to "image-dired".
26
272007-04-21 Richard Stallman <rms@gnu.org>
28
29 * display.texi (Highlight Interactively): Correct previous change.
30 Clarify doc of hi-lock-find-patterns, and move new features into it.
31
322007-04-20 David Koppelman <koppel@ece.lsu.edu>
33
34 * display.texi (Highlight Interactively): Document
35 hi-lock-file-patterns-policy.
36
372007-04-20 Martin Rudalics <rudalics@gmx.at>
38
39 * display.texi (Scrolling): Fix typo.
40
412007-04-15 Jay Belanger <belanger@truman.edu>
42
43 * calc.texi (Title page): Remove the date.
44 (Basic Arithmetic): Emphasize that / binds less strongly than *.
45 (The Standard Calc Interface): Change trail title.
46 (Floats): Mention that when non-decimal floats are entered, only
47 approximations are stored.
48 (Copying): Move to the appendices.
49 (GNU Free Documentation License): Add as an appendix.
50
512007-04-15 Chong Yidong <cyd@stupidchicken.com>
52
53 * ada-mode.texi, autotype.texi, cc-mode.texi, cl.texi:
54 * dired-x.texi, ebrowse.texi, ediff.texi:
55 * emacs-mime.texi, erc.texi, eshell.texi:
56 * eudc.texi, flymake.texi, forms.texi, gnus.texi:
57 * idlwave.texi, message.texi, newsticker.texi, org.texi:
58 * pcl-cvs.texi, pgg.texi, rcirc.texi, reftex.texi, sc.texi:
59 * ses.texi, sieve.texi, smtpmail.texi, speedbar.texi:
60 * tramp.texi, url.texi, vip.texi, viper.texi, widget.texi:
61 * woman.texi: Include GFDL.
62
63 * doclicense.texi: Remove node heading, so that it can be included by
64 other files.
65
66 * emacs.texi: Insert node heading for GFDL.
67
68 * dired-x.texi: Relicence under GFDL. Remove date from title page.
69
70 * calc.texi (Algebraic Tutorial): Emphasize that / binds less strongly
71 than *.
72
732007-04-14 Carsten Dominik <dominik@science.uva.nl>
74
75 * org.texi (Formula syntax for Calc): Emphasize the operator precedence
76 in Calc.
77
782007-04-14 Eli Zaretskii <eliz@gnu.org>
79
80 * cmdargs.texi (Colors): Qualify "color of window" index entry by
81 "command line".
82
83 * display.texi (Faces): Refer to "Creating Frames" for face
84 and other frame customizations in .emacs.
85
86 * frames.texi (Creating Frames): Mention that face customizations can
87 be put in .emacs. Add index entries.
88
892007-04-12 Richard Stallman <rms@gnu.org>
90
91 * glossary.texi (Glossary): Explain `iff'.
92
932007-04-11 Karl Berry <karl@gnu.org>
94
95 * gnu.texi (Top),
96 * macos.texi (Mac Font Specs),
97 * anti.texi (Antinews),
98 * xresources.texi (Resources),
99 * misc.texi (Emulation),
100 * calendar.texi (Daylight Saving),
101 * dired.texi (Dired and Find),
102 * rmail.texi (Remote Mailboxes),
103 * sending.texi (Mail Headers),
104 * programs.texi (Which Function),
105 * files.texi (Recover),
106 * buffers.texi (Uniquify),
107 * frames.texi (Wheeled Mice),
108 * killing.texi (Rectangles): Wording to improve breaks in
109 8.5x11 format.
110 * mule.texi (Language Environments): \hbadness=10000 since there's
111 no way to reword.
112 * emacs.texi (smallbook): New @set to more easily switch between
113 smallbook and 8.5x11.
114
1152007-04-11 Richard Stallman <rms@gnu.org>
116
117 * files.texi (File Conveniences): Add xref to Tumme.
118 Delete text about Thumbnail mode.
119
12007-04-09 Romain Francoise <romain@orebokech.com> 1202007-04-09 Romain Francoise <romain@orebokech.com>
2 121
3 * faq.texi (New in Emacs 22): Mention improvements to the Windows and 122 * faq.texi (New in Emacs 22): Mention improvements to the Windows and
diff --git a/man/ack.texi b/man/ack.texi
index 51397f0b13f..46213aa8cf5 100644
--- a/man/ack.texi
+++ b/man/ack.texi
@@ -186,8 +186,8 @@ Doug Cutting and Jamie Zawinski wrote @file{disass.el}, a disassembler
186for compiled Emacs Lisp code. 186for compiled Emacs Lisp code.
187 187
188@item 188@item
189Mathias Dahl wrote @file{tumme.el}, a package for viewing image files 189Mathias Dahl wrote @file{image-dired.el}, a package for viewing image
190as ``thumbnails.'' 190files as ``thumbnails.''
191 191
192@item 192@item
193Michael DeCorte wrote @file{emacs.csh}, a C-shell script that starts a 193Michael DeCorte wrote @file{emacs.csh}, a C-shell script that starts a
diff --git a/man/ada-mode.texi b/man/ada-mode.texi
index 7acae36c74f..241149803e8 100644
--- a/man/ada-mode.texi
+++ b/man/ada-mode.texi
@@ -64,6 +64,7 @@ license to the document, as described in section 6 of the license.
64* Automatic Casing:: Adjusting the case of words automatically 64* Automatic Casing:: Adjusting the case of words automatically
65* Statement Templates:: Inserting code templates 65* Statement Templates:: Inserting code templates
66* Comment Handling:: Reformatting comments easily 66* Comment Handling:: Reformatting comments easily
67* GNU Free Documentation License:: The license for this documentation.
67* Index:: 68* Index::
68@end menu 69@end menu
69 70
@@ -1373,7 +1374,7 @@ exception (@code{ada-exception}).
1373type (@code{ada-type}). 1374type (@code{ada-type}).
1374@end table 1375@end table
1375 1376
1376@node Comment Handling, Index, Statement Templates, Top 1377@node Comment Handling, GNU Free Documentation License, Statement Templates, Top
1377@chapter Comment Handling 1378@chapter Comment Handling
1378 1379
1379By default, comment lines get indented like Ada code. There are a few 1380By default, comment lines get indented like Ada code. There are a few
@@ -1392,7 +1393,11 @@ Uncomment the selected region
1392autofill the current comment. 1393autofill the current comment.
1393@end table 1394@end table
1394 1395
1395@node Index, , Comment Handling, Top 1396@node GNU Free Documentation License, Index, Comment Handling, Top
1397@appendix GNU Free Documentation License
1398@include doclicense.texi
1399
1400@node Index, , GNU Free Documentation License, Top
1396@unnumbered Index 1401@unnumbered Index
1397 1402
1398@printindex fn 1403@printindex fn
diff --git a/man/anti.texi b/man/anti.texi
index a0003c012db..ebff1c7677f 100644
--- a/man/anti.texi
+++ b/man/anti.texi
@@ -53,9 +53,9 @@ command-line option @samp{--no-splash} is therefore obsolete, and has
53been removed. 53been removed.
54 54
55@item 55@item
56The command line options @samp{--color}, @samp{--fullwidth}, 56These command line options have also been removed: @samp{--color},
57@samp{--fullheight}, @samp{--fullscreen}, @samp{--no-blinking-cursor}, 57@samp{--fullwidth}, @samp{--fullheight}, @samp{--fullscreen},
58@samp{--no-desktop}, and @samp{-Q} have also been removed. 58@samp{--no-blinking-cursor}, @samp{--no-desktop}, and @samp{-Q}.
59 59
60@item 60@item
61The @samp{--geometry} option applies only to the initial frame, and 61The @samp{--geometry} option applies only to the initial frame, and
diff --git a/man/autotype.texi b/man/autotype.texi
index a462b7a97a2..7b51f3115ac 100644
--- a/man/autotype.texi
+++ b/man/autotype.texi
@@ -101,6 +101,7 @@ completions and expansions of text at point.
101* Tempo:: Flexible template insertion. 101* Tempo:: Flexible template insertion.
102* Hippie Expand:: Expansion of text trying various methods. 102* Hippie Expand:: Expansion of text trying various methods.
103 103
104* GNU Free Documentation License:: The license for this documentation.
104* Concept Index:: 105* Concept Index::
105* Command Index:: 106* Command Index::
106* Variable Index:: 107* Variable Index::
@@ -650,6 +651,9 @@ Typically you would bind @code{hippie-expand} to @kbd{M-/} with
650@code{dabbrev-expand}, the standard binding of @kbd{M-/}, providing one 651@code{dabbrev-expand}, the standard binding of @kbd{M-/}, providing one
651of the expansion possibilities. 652of the expansion possibilities.
652 653
654@node GNU Free Documentation License
655@appendix GNU Free Documentation License
656@include doclicense.texi
653 657
654@node Concept Index 658@node Concept Index
655@unnumbered Concept Index 659@unnumbered Concept Index
diff --git a/man/buffers.texi b/man/buffers.texi
index ed4b855b684..b43d72b1067 100644
--- a/man/buffers.texi
+++ b/man/buffers.texi
@@ -573,14 +573,14 @@ names (all but one of them).
573buffer name. To select one, customize the variable 573buffer name. To select one, customize the variable
574@code{uniquify-buffer-name-style} (@pxref{Easy Customization}). 574@code{uniquify-buffer-name-style} (@pxref{Easy Customization}).
575 575
576 For instance, the @code{forward} naming method puts part of the 576 To begin with, the @code{forward} naming method includes part of the
577directory name at the beginning of the buffer name; using this method, 577file's directory name at the beginning of the buffer name; using this
578buffers visiting @file{/u/rms/tmp/Makefile} and 578method, buffers visiting the files @file{/u/rms/tmp/Makefile} and
579@file{/usr/projects/zaphod/Makefile} would be named 579@file{/usr/projects/zaphod/Makefile} would be named
580@samp{tmp/Makefile} and @samp{zaphod/Makefile}, respectively (instead 580@samp{tmp/Makefile} and @samp{zaphod/Makefile}, respectively (instead
581of @samp{Makefile} and @samp{Makefile<2>}). 581of @samp{Makefile} and @samp{Makefile<2>}).
582 582
583 By contrast, the @code{post-forward} naming method would call the 583 In contrast, the @code{post-forward} naming method would call the
584buffers @samp{Makefile|tmp} and @samp{Makefile|zaphod}, and the 584buffers @samp{Makefile|tmp} and @samp{Makefile|zaphod}, and the
585@code{reverse} naming method would call them @samp{Makefile\tmp} and 585@code{reverse} naming method would call them @samp{Makefile\tmp} and
586@samp{Makefile\zaphod}. The nontrivial difference between 586@samp{Makefile\zaphod}. The nontrivial difference between
diff --git a/man/calc.texi b/man/calc.texi
index 0544bc1e3b4..ecf85a450bd 100644
--- a/man/calc.texi
+++ b/man/calc.texi
@@ -92,7 +92,8 @@ under the terms of the GNU Free Documentation License, Version 1.2 or
92any later version published by the Free Software Foundation; with the 92any later version published by the Free Software Foundation; with the
93Invariant Sections being just ``GNU GENERAL PUBLIC LICENSE'', with the 93Invariant Sections being just ``GNU GENERAL PUBLIC LICENSE'', with the
94Front-Cover texts being ``A GNU Manual,'' and with the Back-Cover 94Front-Cover texts being ``A GNU Manual,'' and with the Back-Cover
95Texts as in (a) below. 95Texts as in (a) below. A copy of the license is included in the section
96entitled ``GNU Free Documentation License.''
96 97
97(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify 98(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
98this GNU Manual, like GNU software. Copies published by the Free 99this GNU Manual, like GNU software. Copies published by the Free
@@ -111,8 +112,6 @@ Software Foundation raise funds for GNU development.''
111@sp 4 112@sp 4
112@center GNU Emacs Calc Version 2.1 113@center GNU Emacs Calc Version 2.1
113@c [volume] 114@c [volume]
114@sp 1
115@center March 2005
116@sp 5 115@sp 5
117@center Dave Gillespie 116@center Dave Gillespie
118@center daveg@@synaptics.com 117@center daveg@@synaptics.com
@@ -126,7 +125,7 @@ Copyright @copyright{} 1990, 1991, 2001, 2002, 2003, 2004,
126 125
127@c [begin] 126@c [begin]
128@ifinfo 127@ifinfo
129@node Top, , (dir), (dir) 128@node Top, Getting Started, (dir), (dir)
130@chapter The GNU Emacs Calculator 129@chapter The GNU Emacs Calculator
131 130
132@noindent 131@noindent
@@ -145,8 +144,6 @@ longer Info tutorial.)
145 144
146@end ifinfo 145@end ifinfo
147@menu 146@menu
148* Copying:: How you can copy and share Calc.
149
150* Getting Started:: General description and overview. 147* Getting Started:: General description and overview.
151* Interactive Tutorial:: 148* Interactive Tutorial::
152* Tutorial:: A step-by-step introduction for beginners. 149* Tutorial:: A step-by-step introduction for beginners.
@@ -167,7 +164,9 @@ longer Info tutorial.)
167* Embedded Mode:: Working with formulas embedded in a file. 164* Embedded Mode:: Working with formulas embedded in a file.
168* Programming:: Calc as a programmable calculator. 165* Programming:: Calc as a programmable calculator.
169 166
170* Customizing Calc:: Customizing Calc. 167* Copying:: How you can copy and share Calc.
168* GNU Free Documentation License:: The license for this documentation.
169* Customizing Calc:: Customizing Calc.
171* Reporting Bugs:: How to report bugs and make suggestions. 170* Reporting Bugs:: How to report bugs and make suggestions.
172 171
173* Summary:: Summary of Calc commands and functions. 172* Summary:: Summary of Calc commands and functions.
@@ -180,400 +179,7 @@ longer Info tutorial.)
180* Lisp Function Index:: Internal Lisp math functions. 179* Lisp Function Index:: Internal Lisp math functions.
181@end menu 180@end menu
182 181
183@node Copying, Getting Started, Top, Top 182@node Getting Started, Interactive Tutorial, Top, Top
184@unnumbered GNU GENERAL PUBLIC LICENSE
185@center Version 2, June 1991
186
187@c This file is intended to be included in another file.
188
189@display
190Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
19151 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
192
193Everyone is permitted to copy and distribute verbatim copies
194of this license document, but changing it is not allowed.
195@end display
196
197@unnumberedsec Preamble
198
199 The licenses for most software are designed to take away your
200freedom to share and change it. By contrast, the GNU General Public
201License is intended to guarantee your freedom to share and change free
202software---to make sure the software is free for all its users. This
203General Public License applies to most of the Free Software
204Foundation's software and to any other program whose authors commit to
205using it. (Some other Free Software Foundation software is covered by
206the GNU Lesser General Public License instead.) You can apply it to
207your programs, too.
208
209 When we speak of free software, we are referring to freedom, not
210price. Our General Public Licenses are designed to make sure that you
211have the freedom to distribute copies of free software (and charge for
212this service if you wish), that you receive source code or can get it
213if you want it, that you can change the software or use pieces of it
214in new free programs; and that you know you can do these things.
215
216 To protect your rights, we need to make restrictions that forbid
217anyone to deny you these rights or to ask you to surrender the rights.
218These restrictions translate to certain responsibilities for you if you
219distribute copies of the software, or if you modify it.
220
221 For example, if you distribute copies of such a program, whether
222gratis or for a fee, you must give the recipients all the rights that
223you have. You must make sure that they, too, receive or can get the
224source code. And you must show them these terms so they know their
225rights.
226
227 We protect your rights with two steps: (1) copyright the software, and
228(2) offer you this license which gives you legal permission to copy,
229distribute and/or modify the software.
230
231 Also, for each author's protection and ours, we want to make certain
232that everyone understands that there is no warranty for this free
233software. If the software is modified by someone else and passed on, we
234want its recipients to know that what they have is not the original, so
235that any problems introduced by others will not reflect on the original
236authors' reputations.
237
238 Finally, any free program is threatened constantly by software
239patents. We wish to avoid the danger that redistributors of a free
240program will individually obtain patent licenses, in effect making the
241program proprietary. To prevent this, we have made it clear that any
242patent must be licensed for everyone's free use or not licensed at all.
243
244 The precise terms and conditions for copying, distribution and
245modification follow.
246
247@iftex
248@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
249@end iftex
250@ifinfo
251@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
252@end ifinfo
253
254@enumerate 0
255@item
256This License applies to any program or other work which contains
257a notice placed by the copyright holder saying it may be distributed
258under the terms of this General Public License. The ``Program'', below,
259refers to any such program or work, and a ``work based on the Program''
260means either the Program or any derivative work under copyright law:
261that is to say, a work containing the Program or a portion of it,
262either verbatim or with modifications and/or translated into another
263language. (Hereinafter, translation is included without limitation in
264the term ``modification''.) Each licensee is addressed as ``you''.
265
266Activities other than copying, distribution and modification are not
267covered by this License; they are outside its scope. The act of
268running the Program is not restricted, and the output from the Program
269is covered only if its contents constitute a work based on the
270Program (independent of having been made by running the Program).
271Whether that is true depends on what the Program does.
272
273@item
274You may copy and distribute verbatim copies of the Program's
275source code as you receive it, in any medium, provided that you
276conspicuously and appropriately publish on each copy an appropriate
277copyright notice and disclaimer of warranty; keep intact all the
278notices that refer to this License and to the absence of any warranty;
279and give any other recipients of the Program a copy of this License
280along with the Program.
281
282You may charge a fee for the physical act of transferring a copy, and
283you may at your option offer warranty protection in exchange for a fee.
284
285@item
286You may modify your copy or copies of the Program or any portion
287of it, thus forming a work based on the Program, and copy and
288distribute such modifications or work under the terms of Section 1
289above, provided that you also meet all of these conditions:
290
291@enumerate a
292@item
293You must cause the modified files to carry prominent notices
294stating that you changed the files and the date of any change.
295
296@item
297You must cause any work that you distribute or publish, that in
298whole or in part contains or is derived from the Program or any
299part thereof, to be licensed as a whole at no charge to all third
300parties under the terms of this License.
301
302@item
303If the modified program normally reads commands interactively
304when run, you must cause it, when started running for such
305interactive use in the most ordinary way, to print or display an
306announcement including an appropriate copyright notice and a
307notice that there is no warranty (or else, saying that you provide
308a warranty) and that users may redistribute the program under
309these conditions, and telling the user how to view a copy of this
310License. (Exception: if the Program itself is interactive but
311does not normally print such an announcement, your work based on
312the Program is not required to print an announcement.)
313@end enumerate
314
315These requirements apply to the modified work as a whole. If
316identifiable sections of that work are not derived from the Program,
317and can be reasonably considered independent and separate works in
318themselves, then this License, and its terms, do not apply to those
319sections when you distribute them as separate works. But when you
320distribute the same sections as part of a whole which is a work based
321on the Program, the distribution of the whole must be on the terms of
322this License, whose permissions for other licensees extend to the
323entire whole, and thus to each and every part regardless of who wrote it.
324
325Thus, it is not the intent of this section to claim rights or contest
326your rights to work written entirely by you; rather, the intent is to
327exercise the right to control the distribution of derivative or
328collective works based on the Program.
329
330In addition, mere aggregation of another work not based on the Program
331with the Program (or with a work based on the Program) on a volume of
332a storage or distribution medium does not bring the other work under
333the scope of this License.
334
335@item
336You may copy and distribute the Program (or a work based on it,
337under Section 2) in object code or executable form under the terms of
338Sections 1 and 2 above provided that you also do one of the following:
339
340@enumerate a
341@item
342Accompany it with the complete corresponding machine-readable
343source code, which must be distributed under the terms of Sections
3441 and 2 above on a medium customarily used for software interchange; or,
345
346@item
347Accompany it with a written offer, valid for at least three
348years, to give any third party, for a charge no more than your
349cost of physically performing source distribution, a complete
350machine-readable copy of the corresponding source code, to be
351distributed under the terms of Sections 1 and 2 above on a medium
352customarily used for software interchange; or,
353
354@item
355Accompany it with the information you received as to the offer
356to distribute corresponding source code. (This alternative is
357allowed only for noncommercial distribution and only if you
358received the program in object code or executable form with such
359an offer, in accord with Subsection b above.)
360@end enumerate
361
362The source code for a work means the preferred form of the work for
363making modifications to it. For an executable work, complete source
364code means all the source code for all modules it contains, plus any
365associated interface definition files, plus the scripts used to
366control compilation and installation of the executable. However, as a
367special exception, the source code distributed need not include
368anything that is normally distributed (in either source or binary
369form) with the major components (compiler, kernel, and so on) of the
370operating system on which the executable runs, unless that component
371itself accompanies the executable.
372
373If distribution of executable or object code is made by offering
374access to copy from a designated place, then offering equivalent
375access to copy the source code from the same place counts as
376distribution of the source code, even though third parties are not
377compelled to copy the source along with the object code.
378
379@item
380You may not copy, modify, sublicense, or distribute the Program
381except as expressly provided under this License. Any attempt
382otherwise to copy, modify, sublicense or distribute the Program is
383void, and will automatically terminate your rights under this License.
384However, parties who have received copies, or rights, from you under
385this License will not have their licenses terminated so long as such
386parties remain in full compliance.
387
388@item
389You are not required to accept this License, since you have not
390signed it. However, nothing else grants you permission to modify or
391distribute the Program or its derivative works. These actions are
392prohibited by law if you do not accept this License. Therefore, by
393modifying or distributing the Program (or any work based on the
394Program), you indicate your acceptance of this License to do so, and
395all its terms and conditions for copying, distributing or modifying
396the Program or works based on it.
397
398@item
399Each time you redistribute the Program (or any work based on the
400Program), the recipient automatically receives a license from the
401original licensor to copy, distribute or modify the Program subject to
402these terms and conditions. You may not impose any further
403restrictions on the recipients' exercise of the rights granted herein.
404You are not responsible for enforcing compliance by third parties to
405this License.
406
407@item
408If, as a consequence of a court judgment or allegation of patent
409infringement or for any other reason (not limited to patent issues),
410conditions are imposed on you (whether by court order, agreement or
411otherwise) that contradict the conditions of this License, they do not
412excuse you from the conditions of this License. If you cannot
413distribute so as to satisfy simultaneously your obligations under this
414License and any other pertinent obligations, then as a consequence you
415may not distribute the Program at all. For example, if a patent
416license would not permit royalty-free redistribution of the Program by
417all those who receive copies directly or indirectly through you, then
418the only way you could satisfy both it and this License would be to
419refrain entirely from distribution of the Program.
420
421If any portion of this section is held invalid or unenforceable under
422any particular circumstance, the balance of the section is intended to
423apply and the section as a whole is intended to apply in other
424circumstances.
425
426It is not the purpose of this section to induce you to infringe any
427patents or other property right claims or to contest validity of any
428such claims; this section has the sole purpose of protecting the
429integrity of the free software distribution system, which is
430implemented by public license practices. Many people have made
431generous contributions to the wide range of software distributed
432through that system in reliance on consistent application of that
433system; it is up to the author/donor to decide if he or she is willing
434to distribute software through any other system and a licensee cannot
435impose that choice.
436
437This section is intended to make thoroughly clear what is believed to
438be a consequence of the rest of this License.
439
440@item
441If the distribution and/or use of the Program is restricted in
442certain countries either by patents or by copyrighted interfaces, the
443original copyright holder who places the Program under this License
444may add an explicit geographical distribution limitation excluding
445those countries, so that distribution is permitted only in or among
446countries not thus excluded. In such case, this License incorporates
447the limitation as if written in the body of this License.
448
449@item
450The Free Software Foundation may publish revised and/or new versions
451of the General Public License from time to time. Such new versions will
452be similar in spirit to the present version, but may differ in detail to
453address new problems or concerns.
454
455Each version is given a distinguishing version number. If the Program
456specifies a version number of this License which applies to it and ``any
457later version'', you have the option of following the terms and conditions
458either of that version or of any later version published by the Free
459Software Foundation. If the Program does not specify a version number of
460this License, you may choose any version ever published by the Free Software
461Foundation.
462
463@item
464If you wish to incorporate parts of the Program into other free
465programs whose distribution conditions are different, write to the author
466to ask for permission. For software which is copyrighted by the Free
467Software Foundation, write to the Free Software Foundation; we sometimes
468make exceptions for this. Our decision will be guided by the two goals
469of preserving the free status of all derivatives of our free software and
470of promoting the sharing and reuse of software generally.
471
472@iftex
473@heading NO WARRANTY
474@end iftex
475@ifinfo
476@center NO WARRANTY
477@end ifinfo
478
479@item
480BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
481FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
482OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
483PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
484OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
485MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
486TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
487PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
488REPAIR OR CORRECTION.
489
490@item
491IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
492WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
493REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
494INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
495OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
496TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
497YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
498PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
499POSSIBILITY OF SUCH DAMAGES.
500@end enumerate
501
502@iftex
503@heading END OF TERMS AND CONDITIONS
504@end iftex
505@ifinfo
506@center END OF TERMS AND CONDITIONS
507@end ifinfo
508
509@page
510@unnumberedsec Appendix: How to Apply These Terms to Your New Programs
511
512 If you develop a new program, and you want it to be of the greatest
513possible use to the public, the best way to achieve this is to make it
514free software which everyone can redistribute and change under these terms.
515
516 To do so, attach the following notices to the program. It is safest
517to attach them to the start of each source file to most effectively
518convey the exclusion of warranty; and each file should have at least
519the ``copyright'' line and a pointer to where the full notice is found.
520
521@smallexample
522@var{one line to give the program's name and a brief idea of what it does.}
523Copyright (C) @var{yyyy} @var{name of author}
524
525This program is free software; you can redistribute it and/or modify
526it under the terms of the GNU General Public License as published by
527the Free Software Foundation; either version 2 of the License, or
528(at your option) any later version.
529
530This program is distributed in the hope that it will be useful,
531but WITHOUT ANY WARRANTY; without even the implied warranty of
532MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
533GNU General Public License for more details.
534
535You should have received a copy of the GNU General Public License
536along with this program; if not, write to the Free Software
537Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
538@end smallexample
539
540Also add information on how to contact you by electronic and paper mail.
541
542If the program is interactive, make it output a short notice like this
543when it starts in an interactive mode:
544
545@smallexample
546Gnomovision version 69, Copyright (C) @var{yyyy} @var{name of author}
547Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
548This is free software, and you are welcome to redistribute it
549under certain conditions; type `show c' for details.
550@end smallexample
551
552The hypothetical commands @samp{show w} and @samp{show c} should show
553the appropriate parts of the General Public License. Of course, the
554commands you use may be called something other than @samp{show w} and
555@samp{show c}; they could even be mouse-clicks or menu items---whatever
556suits your program.
557
558You should also get your employer (if you work as a programmer) or your
559school, if any, to sign a ``copyright disclaimer'' for the program, if
560necessary. Here is a sample; alter the names:
561
562@example
563Yoyodyne, Inc., hereby disclaims all copyright interest in the program
564`Gnomovision' (which makes passes at compilers) written by James Hacker.
565
566@var{signature of Ty Coon}, 1 April 1989
567Ty Coon, President of Vice
568@end example
569
570This General Public License does not permit incorporating your program into
571proprietary programs. If your program is a subroutine library, you may
572consider it more useful to permit linking proprietary applications with the
573library. If this is what you want to do, use the GNU Lesser General
574Public License instead of this License.
575
576@node Getting Started, Tutorial, Copying, Top
577@chapter Getting Started 183@chapter Getting Started
578@noindent 184@noindent
579This chapter provides a general overview of Calc, the GNU Emacs 185This chapter provides a general overview of Calc, the GNU Emacs
@@ -1019,7 +625,7 @@ with the file you were editing on top and Calc on the bottom.
1019 625
1020... 626...
1021--**-Emacs: myfile (Fundamental)----All---------------------- 627--**-Emacs: myfile (Fundamental)----All----------------------
1022--- Emacs Calculator Mode --- |Emacs Calc Mode v2.1 ... 628--- Emacs Calculator Mode --- |Emacs Calculator Trail
10232: 17.3 | 17.3 6292: 17.3 | 17.3
10241: -5 | 3 6301: -5 | 3
1025 . | 2 631 . | 2
@@ -1348,7 +954,7 @@ A slope of one-third corresponds to an angle of 18.4349488229 degrees.
1348@c [fix-ref Embedded Mode] 954@c [fix-ref Embedded Mode]
1349@xref{Embedded Mode}, for full details. 955@xref{Embedded Mode}, for full details.
1350 956
1351@node Other C-x * Commands, , Embedded Mode Overview, Using Calc 957@node Other C-x * Commands, , Embedded Mode Overview, Using Calc
1352@subsection Other @kbd{C-x *} Commands 958@subsection Other @kbd{C-x *} Commands
1353 959
1354@noindent 960@noindent
@@ -1514,7 +1120,7 @@ and record them as the current keyboard macro.
1514its initial state: Empty stack, and initial mode settings. 1120its initial state: Empty stack, and initial mode settings.
1515@end table 1121@end table
1516 1122
1517@node History and Acknowledgements, , Using Calc, Getting Started 1123@node History and Acknowledgements, , Using Calc, Getting Started
1518@section History and Acknowledgements 1124@section History and Acknowledgements
1519 1125
1520@noindent 1126@noindent
@@ -1617,7 +1223,7 @@ finished in two weeks.
1617 1223
1618@ifinfo 1224@ifinfo
1619@c This node is accessed by the `C-x * t' command. 1225@c This node is accessed by the `C-x * t' command.
1620@node Interactive Tutorial, , , Top 1226@node Interactive Tutorial, Tutorial, Getting Started, Top
1621@chapter Tutorial 1227@chapter Tutorial
1622 1228
1623@noindent 1229@noindent
@@ -1647,7 +1253,7 @@ Press @kbd{1} now to enter the first section of the Tutorial.
1647@end menu 1253@end menu
1648@end ifinfo 1254@end ifinfo
1649 1255
1650@node Tutorial, Introduction, Getting Started, Top 1256@node Tutorial, Introduction, Interactive Tutorial, Top
1651@chapter Tutorial 1257@chapter Tutorial
1652 1258
1653@noindent 1259@noindent
@@ -2128,6 +1734,10 @@ Calculator in Algebraic mode, which is closer to the way
2128non-RPN calculators work. In Algebraic mode, you enter formulas 1734non-RPN calculators work. In Algebraic mode, you enter formulas
2129in traditional @expr{2+3} notation. 1735in traditional @expr{2+3} notation.
2130 1736
1737@strong{Warning:} Note that @samp{/} has lower precedence than
1738@samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}. See
1739below for details.
1740
2131You don't really need any special ``mode'' to enter algebraic formulas. 1741You don't really need any special ``mode'' to enter algebraic formulas.
2132You can enter a formula at any time by pressing the apostrophe (@kbd{'}) 1742You can enter a formula at any time by pressing the apostrophe (@kbd{'})
2133key. Answer the prompt with the desired formula, then press @key{RET}. 1743key. Answer the prompt with the desired formula, then press @key{RET}.
@@ -2553,7 +2163,7 @@ new number. This works for formulas, vectors, and all other types
2553of values you can put on the stack. The @kbd{`} key also works 2163of values you can put on the stack. The @kbd{`} key also works
2554during entry of a number or algebraic formula. 2164during entry of a number or algebraic formula.
2555 2165
2556@node Modes Tutorial, , Undo Tutorial, Basic Tutorial 2166@node Modes Tutorial, , Undo Tutorial, Basic Tutorial
2557@subsection Mode-Setting Commands 2167@subsection Mode-Setting Commands
2558 2168
2559@noindent 2169@noindent
@@ -3891,7 +3501,7 @@ $$
3891@noindent 3501@noindent
3892@xref{Matrix Answer 3, 3}. (@bullet{}) 3502@xref{Matrix Answer 3, 3}. (@bullet{})
3893 3503
3894@node List Tutorial, , Matrix Tutorial, Vector/Matrix Tutorial 3504@node List Tutorial, , Matrix Tutorial, Vector/Matrix Tutorial
3895@subsection Vectors as Lists 3505@subsection Vectors as Lists
3896 3506
3897@noindent 3507@noindent
@@ -5641,7 +5251,7 @@ details and examples.
5641@c hard exercise: simplify (2^(n r) - 2^(r*(n - 1))) / (2^r - 1) 2^(n - 1) 5251@c hard exercise: simplify (2^(n r) - 2^(r*(n - 1))) / (2^r - 1) 2^(n - 1)
5642@c to 2^((n-1)*(r-1)). 5252@c to 2^((n-1)*(r-1)).
5643 5253
5644@node Rewrites Tutorial, , Basic Algebra Tutorial, Algebra Tutorial 5254@node Rewrites Tutorial, , Basic Algebra Tutorial, Algebra Tutorial
5645@subsection Rewrite Rules 5255@subsection Rewrite Rules
5646 5256
5647@noindent 5257@noindent
@@ -6757,7 +6367,7 @@ The rest of this manual tells the whole story.
6757@c Volume II of this manual, the @dfn{Calc Reference}, tells the whole story. 6367@c Volume II of this manual, the @dfn{Calc Reference}, tells the whole story.
6758 6368
6759@page 6369@page
6760@node Answers to Exercises, , Programming Tutorial, Tutorial 6370@node Answers to Exercises, , Programming Tutorial, Tutorial
6761@section Answers to Exercises 6371@section Answers to Exercises
6762 6372
6763@noindent 6373@noindent
@@ -9945,7 +9555,7 @@ first, because @code{read-kbd-macro} doesn't need to execute the
9945definition as it reads it in. For this reason, @code{C-x * m} is often 9555definition as it reads it in. For this reason, @code{C-x * m} is often
9946the easiest way to create recursive programs in Calc. 9556the easiest way to create recursive programs in Calc.
9947 9557
9948@node Programming Answer 12, , Programming Answer 11, Answers to Exercises 9558@node Programming Answer 12, , Programming Answer 11, Answers to Exercises
9949@subsection Programming Tutorial Exercise 12 9559@subsection Programming Tutorial Exercise 12
9950 9560
9951@noindent 9561@noindent
@@ -10738,7 +10348,7 @@ the stack and mode settings of the buffer being quit as the new defaults.
10738There is only one trail buffer, @samp{*Calc Trail*}, used by all 10348There is only one trail buffer, @samp{*Calc Trail*}, used by all
10739Calculator buffers. 10349Calculator buffers.
10740 10350
10741@node Troubleshooting Commands, , Multiple Calculators, Introduction 10351@node Troubleshooting Commands, , Multiple Calculators, Introduction
10742@section Troubleshooting Commands 10352@section Troubleshooting Commands
10743 10353
10744@noindent 10354@noindent
@@ -10829,7 +10439,7 @@ If you suspect a Calculator cache has become corrupt, you can use the
10829The @kbd{C-x * 0} (with the zero key) command also resets caches along 10439The @kbd{C-x * 0} (with the zero key) command also resets caches along
10830with all other aspects of the Calculator's state. 10440with all other aspects of the Calculator's state.
10831 10441
10832@node Debugging Calc, , Caches, Troubleshooting Commands 10442@node Debugging Calc, , Caches, Troubleshooting Commands
10833@subsection Debugging Calc 10443@subsection Debugging Calc
10834 10444
10835@noindent 10445@noindent
@@ -11022,16 +10632,19 @@ Calculator's arithmetic is not intended to be IEEE-conformant in any
11022way. 10632way.
11023 10633
11024While floats are always @emph{stored} in decimal, they can be entered 10634While floats are always @emph{stored} in decimal, they can be entered
11025and displayed in any radix just like integers and fractions. The 10635and displayed in any radix just like integers and fractions. Since a
11026notation @samp{@var{radix}#@var{ddd}.@var{ddd}} is a floating-point 10636float that is entered in a radix other that 10 will be converted to
11027number whose digits are in the specified radix. Note that the @samp{.} 10637decimal, the number that Calc stores may not be exactly the number that
11028is more aptly referred to as a ``radix point'' than as a decimal 10638was entered, it will be the closest decimal approximation given the
11029point in this case. The number @samp{8#123.4567} is defined as 10639current precison. The notation @samp{@var{radix}#@var{ddd}.@var{ddd}}
11030@samp{8#1234567 * 8^-4}. If the radix is 14 or less, you can use 10640is a floating-point number whose digits are in the specified radix.
11031@samp{e} notation to write a non-decimal number in scientific notation. 10641Note that the @samp{.} is more aptly referred to as a ``radix point''
11032The exponent is written in decimal, and is considered to be a power 10642than as a decimal point in this case. The number @samp{8#123.4567} is
11033of the radix: @samp{8#1234567e-4}. If the radix is 15 or above, the 10643defined as @samp{8#1234567 * 8^-4}. If the radix is 14 or less, you can
11034letter @samp{e} is a digit, so scientific notation must be written 10644use @samp{e} notation to write a non-decimal number in scientific
10645notation. The exponent is written in decimal, and is considered to be a
10646power of the radix: @samp{8#1234567e-4}. If the radix is 15 or above,
10647the letter @samp{e} is a digit, so scientific notation must be written
11035out, e.g., @samp{16#123.4567*16^2}. The first two exercises of the 10648out, e.g., @samp{16#123.4567*16^2}. The first two exercises of the
11036Modes Tutorial explore some of the properties of non-decimal floats. 10649Modes Tutorial explore some of the properties of non-decimal floats.
11037 10650
@@ -11906,7 +11519,7 @@ a value into any of these special variables.
11906 11519
11907@xref{Store and Recall}, for a discussion of commands dealing with variables. 11520@xref{Store and Recall}, for a discussion of commands dealing with variables.
11908 11521
11909@node Formulas, , Variables, Data Types 11522@node Formulas, , Variables, Data Types
11910@section Formulas 11523@section Formulas
11911 11524
11912@noindent 11525@noindent
@@ -12352,7 +11965,7 @@ kills the @var{n} lines below or above the selected one.
12352The @kbd{t .} (@code{calc-full-trail-vectors}) command is described 11965The @kbd{t .} (@code{calc-full-trail-vectors}) command is described
12353elsewhere; @pxref{Vector and Matrix Formats}. 11966elsewhere; @pxref{Vector and Matrix Formats}.
12354 11967
12355@node Keep Arguments, , Trail Commands, Stack and Trail 11968@node Keep Arguments, , Trail Commands, Stack and Trail
12356@section Keep Arguments 11969@section Keep Arguments
12357 11970
12358@noindent 11971@noindent
@@ -12854,7 +12467,7 @@ To update @samp{=>} operators in an Embedded buffer while
12854automatic recomputation is off, use @w{@kbd{C-x * u}}. 12467automatic recomputation is off, use @w{@kbd{C-x * u}}.
12855@xref{Embedded Mode}. 12468@xref{Embedded Mode}.
12856 12469
12857@node Working Message, , Automatic Recomputation, Calculation Modes 12470@node Working Message, , Automatic Recomputation, Calculation Modes
12858@subsection Working Messages 12471@subsection Working Messages
12859 12472
12860@noindent 12473@noindent
@@ -13235,7 +12848,7 @@ using a variable for a new purpose, it is best to use @kbd{s d}
13235or @kbd{s D} to check to make sure you don't still have an old 12848or @kbd{s D} to check to make sure you don't still have an old
13236declaration for the variable that will conflict with its new meaning. 12849declaration for the variable that will conflict with its new meaning.
13237 12850
13238@node Functions for Declarations, , Kinds of Declarations, Declarations 12851@node Functions for Declarations, , Kinds of Declarations, Declarations
13239@subsection Functions for Declarations 12852@subsection Functions for Declarations
13240 12853
13241@noindent 12854@noindent
@@ -13935,7 +13548,7 @@ minus sign on the year value.
13935If you always enter a four-digit year, and use a name instead 13548If you always enter a four-digit year, and use a name instead
13936of a number for the month, there is no danger of ambiguity. 13549of a number for the month, there is no danger of ambiguity.
13937 13550
13938@node Standard Date Formats, , Free-Form Dates, Date Formats 13551@node Standard Date Formats, , Free-Form Dates, Date Formats
13939@subsubsection Standard Date Formats 13552@subsubsection Standard Date Formats
13940 13553
13941@noindent 13554@noindent
@@ -14070,7 +13683,7 @@ when positioning by explicit origins and widths. In the latter
14070case, the display is formatted as specified, and then uniformly 13683case, the display is formatted as specified, and then uniformly
14071shifted over four spaces to fit the line numbers. 13684shifted over four spaces to fit the line numbers.
14072 13685
14073@node Labels, , Justification, Display Modes 13686@node Labels, , Justification, Display Modes
14074@subsection Labels 13687@subsection Labels
14075 13688
14076@noindent 13689@noindent
@@ -15361,7 +14974,7 @@ For @samp{a / b} in Big mode, @code{cascent} returns 2 and @code{cdescent}
15361returns 1. The only formula for which @code{cascent} will return zero 14974returns 1. The only formula for which @code{cascent} will return zero
15362is @samp{cvspace(0)} or equivalents. 14975is @samp{cvspace(0)} or equivalents.
15363 14976
15364@node User-Defined Compositions, , Information about Compositions, Compositions 14977@node User-Defined Compositions, , Information about Compositions, Compositions
15365@subsubsection User-Defined Compositions 14978@subsubsection User-Defined Compositions
15366 14979
15367@noindent 14980@noindent
@@ -15492,7 +15105,7 @@ produce a large, unwieldy integer.
15492You can save your display formats permanently using the @kbd{Z P} 15105You can save your display formats permanently using the @kbd{Z P}
15493command (@pxref{Creating User Keys}). 15106command (@pxref{Creating User Keys}).
15494 15107
15495@node Syntax Tables, , Compositions, Language Modes 15108@node Syntax Tables, , Compositions, Language Modes
15496@subsection Syntax Tables 15109@subsection Syntax Tables
15497 15110
15498@noindent 15111@noindent
@@ -15825,7 +15438,7 @@ backs up and tries the other alternative. Thus Calc has ``partial''
15825backtracking. A fully backtracking parser would go on to make sure 15438backtracking. A fully backtracking parser would go on to make sure
15826the rest of the pattern matched before finalizing the choice. 15439the rest of the pattern matched before finalizing the choice.
15827 15440
15828@node Conditional Syntax Rules, , Advanced Syntax Patterns, Syntax Tables 15441@node Conditional Syntax Rules, , Advanced Syntax Patterns, Syntax Tables
15829@subsubsection Conditional Syntax Rules 15442@subsubsection Conditional Syntax Rules
15830 15443
15831@noindent 15444@noindent
@@ -16001,7 +15614,7 @@ would not work for fixed-point mode, but it wouldn't be hard to
16001do a full emulation with the help of the @kbd{Z [} and @kbd{Z ]} 15614do a full emulation with the help of the @kbd{Z [} and @kbd{Z ]}
16002programming commands. @xref{Conditionals in Macros}.) 15615programming commands. @xref{Conditionals in Macros}.)
16003 15616
16004@node Calc Mode Line, , Modes Variable, Mode Settings 15617@node Calc Mode Line, , Modes Variable, Mode Settings
16005@section The Calc Mode Line 15618@section The Calc Mode Line
16006 15619
16007@noindent 15620@noindent
@@ -16362,20 +15975,24 @@ whereas @w{@samp{[-2 ..@: 3] ^ 2}} is @samp{[0 ..@: 9]}.
16362@mindex @null 15975@mindex @null
16363@end ignore 15976@end ignore
16364@tindex / 15977@tindex /
16365The @kbd{/} (@code{calc-divide}) command divides two numbers. When 15978The @kbd{/} (@code{calc-divide}) command divides two numbers. Note that
16366dividing a scalar @expr{B} by a square matrix @expr{A}, the computation 15979when using algebraic entry, @samp{/} has lower precedence than @samp{*},
16367performed is @expr{B} times the inverse of @expr{A}. This also occurs 15980so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.
16368if @expr{B} is itself a vector or matrix, in which case the effect is 15981
16369to solve the set of linear equations represented by @expr{B}. If @expr{B} 15982When dividing a scalar @expr{B} by a square matrix @expr{A}, the
16370is a matrix with the same number of rows as @expr{A}, or a plain vector 15983computation performed is @expr{B} times the inverse of @expr{A}. This
16371(which is interpreted here as a column vector), then the equation 15984also occurs if @expr{B} is itself a vector or matrix, in which case the
16372@expr{A X = B} is solved for the vector or matrix @expr{X}. Otherwise, 15985effect is to solve the set of linear equations represented by @expr{B}.
16373if @expr{B} is a non-square matrix with the same number of @emph{columns} 15986If @expr{B} is a matrix with the same number of rows as @expr{A}, or a
16374as @expr{A}, the equation @expr{X A = B} is solved. If you wish a vector 15987plain vector (which is interpreted here as a column vector), then the
16375@expr{B} to be interpreted as a row vector to be solved as @expr{X A = B}, 15988equation @expr{A X = B} is solved for the vector or matrix @expr{X}.
16376make it into a one-row matrix with @kbd{C-u 1 v p} first. To force a 15989Otherwise, if @expr{B} is a non-square matrix with the same number of
16377left-handed solution with a square matrix @expr{B}, transpose @expr{A} and 15990@emph{columns} as @expr{A}, the equation @expr{X A = B} is solved. If
16378@expr{B} before dividing, then transpose the result. 15991you wish a vector @expr{B} to be interpreted as a row vector to be
15992solved as @expr{X A = B}, make it into a one-row matrix with @kbd{C-u 1
15993v p} first. To force a left-handed solution with a square matrix
15994@expr{B}, transpose @expr{A} and @expr{B} before dividing, then
15995transpose the result.
16379 15996
16380HMS forms can be divided by real numbers or by other HMS forms. Error 15997HMS forms can be divided by real numbers or by other HMS forms. Error
16381forms can be divided in any combination of ways. Modulo forms where both 15998forms can be divided in any combination of ways. Modulo forms where both
@@ -17359,7 +16976,7 @@ any date form and returns 1 if that date falls on a weekend or
17359holiday, as defined in @code{Holidays}, or 0 if the date is a 16976holiday, as defined in @code{Holidays}, or 0 if the date is a
17360business day. 16977business day.
17361 16978
17362@node Time Zones, , Business Days, Date Arithmetic 16979@node Time Zones, , Business Days, Date Arithmetic
17363@subsection Time Zones 16980@subsection Time Zones
17364 16981
17365@noindent 16982@noindent
@@ -18006,7 +17623,7 @@ Summing columns with @kbd{V R : +} yields @expr{[10000, 10000, 10000]};
18006the total depreciation in any method is (by definition) the 17623the total depreciation in any method is (by definition) the
18007difference between the cost and the salvage value. 17624difference between the cost and the salvage value.
18008 17625
18009@node Definitions of Financial Functions, , Depreciation Functions, Financial Functions 17626@node Definitions of Financial Functions, , Depreciation Functions, Financial Functions
18010@subsection Definitions 17627@subsection Definitions
18011 17628
18012@noindent 17629@noindent
@@ -18161,7 +17778,7 @@ and the depreciation is zero for all subsequent periods. The @code{ddb}
18161function returns the amount the book value decreased in the specified 17778function returns the amount the book value decreased in the specified
18162period. 17779period.
18163 17780
18164@node Binary Functions, , Financial Functions, Arithmetic 17781@node Binary Functions, , Financial Functions, Arithmetic
18165@section Binary Number Functions 17782@section Binary Number Functions
18166 17783
18167@noindent 17784@noindent
@@ -19092,7 +18709,7 @@ elements of this vector. @xref{Matrix Functions}.
19092* Random Number Generator:: (Complete description of Calc's algorithm) 18709* Random Number Generator:: (Complete description of Calc's algorithm)
19093@end menu 18710@end menu
19094 18711
19095@node Random Number Generator, , Random Numbers, Random Numbers 18712@node Random Number Generator, , Random Numbers, Random Numbers
19096@subsection Random Number Generator 18713@subsection Random Number Generator
19097 18714
19098Calc's random number generator uses several methods to ensure that 18715Calc's random number generator uses several methods to ensure that
@@ -19408,7 +19025,7 @@ distinct factors, this is @expr{(-1)^k}. If the input number has any
19408duplicate factors (i.e., can be divided by the same prime more than once), 19025duplicate factors (i.e., can be divided by the same prime more than once),
19409the result is zero. 19026the result is zero.
19410 19027
19411@node Probability Distribution Functions, , Combinatorial Functions, Scientific Functions 19028@node Probability Distribution Functions, , Combinatorial Functions, Scientific Functions
19412@section Probability Distribution Functions 19029@section Probability Distribution Functions
19413 19030
19414@noindent 19031@noindent
@@ -20858,7 +20475,7 @@ arguments, interpreted in the same way as the other functions
20858in this section. For example, @samp{vflat(1, [2, [3, 4]], 5)} 20475in this section. For example, @samp{vflat(1, [2, [3, 4]], 5)}
20859returns @samp{[1, 2, 3, 4, 5]}. 20476returns @samp{[1, 2, 3, 4, 5]}.
20860 20477
20861@node Paired-Sample Statistics, , Single-Variable Statistics, Statistical Operations 20478@node Paired-Sample Statistics, , Single-Variable Statistics, Statistical Operations
20862@subsection Paired-Sample Statistics 20479@subsection Paired-Sample Statistics
20863 20480
20864@noindent 20481@noindent
@@ -21350,7 +20967,7 @@ computes the square root of @samp{A} given the initial guess @samp{B},
21350stopping when the result is correct within the specified tolerance, or 20967stopping when the result is correct within the specified tolerance, or
21351when 20 steps have been taken, whichever is sooner. 20968when 20 steps have been taken, whichever is sooner.
21352 20969
21353@node Generalized Products, , Nesting and Fixed Points, Reducing and Mapping 20970@node Generalized Products, , Nesting and Fixed Points, Reducing and Mapping
21354@subsection Generalized Products 20971@subsection Generalized Products
21355 20972
21356@kindex V O 20973@kindex V O
@@ -21385,7 +21002,7 @@ use @kbd{$} twice to take both operator formulas from the stack, the
21385first (multiplicative) operator is taken from the top of the stack 21002first (multiplicative) operator is taken from the top of the stack
21386and the second (additive) operator is taken from second-to-top. 21003and the second (additive) operator is taken from second-to-top.
21387 21004
21388@node Vector and Matrix Formats, , Reducing and Mapping, Matrix Functions 21005@node Vector and Matrix Formats, , Reducing and Mapping, Matrix Functions
21389@section Vector and Matrix Display Formats 21006@section Vector and Matrix Display Formats
21390 21007
21391@noindent 21008@noindent
@@ -22006,7 +21623,7 @@ to be simplified.
22006@end group 21623@end group
22007@end smallexample 21624@end smallexample
22008 21625
22009@node Rearranging with Selections, , Operating on Selections, Selecting Subformulas 21626@node Rearranging with Selections, , Operating on Selections, Selecting Subformulas
22010@subsection Rearranging Formulas using Selections 21627@subsection Rearranging Formulas using Selections
22011 21628
22012@noindent 21629@noindent
@@ -23104,7 +22721,7 @@ on whether you believe @expr{x} is positive or negative).
23104The @kbd{a M /} command can be used to divide a factor out of 22721The @kbd{a M /} command can be used to divide a factor out of
23105both sides of an inequality. 22722both sides of an inequality.
23106 22723
23107@node Simplification of Units, , Unsafe Simplifications, Simplifying Formulas 22724@node Simplification of Units, , Unsafe Simplifications, Simplifying Formulas
23108@subsection Simplification of Units 22725@subsection Simplification of Units
23109 22726
23110@noindent 22727@noindent
@@ -23738,7 +23355,7 @@ The integral of @samp{1/sqrt(x)} from 0 to 1 exists (it can be found
23738by Calc's symbolic integrator, for example), but @kbd{a I} will fail 23355by Calc's symbolic integrator, for example), but @kbd{a I} will fail
23739because the integrand goes to infinity at one of the endpoints. 23356because the integrand goes to infinity at one of the endpoints.
23740 23357
23741@node Taylor Series, , Numerical Integration, Calculus 23358@node Taylor Series, , Numerical Integration, Calculus
23742@subsection Taylor Series 23359@subsection Taylor Series
23743 23360
23744@noindent 23361@noindent
@@ -23984,7 +23601,7 @@ Another way to deal with certain kinds of overdetermined systems of
23984equations is the @kbd{a F} command, which does least-squares fitting 23601equations is the @kbd{a F} command, which does least-squares fitting
23985to satisfy the equations. @xref{Curve Fitting}. 23602to satisfy the equations. @xref{Curve Fitting}.
23986 23603
23987@node Decomposing Polynomials, , Solving Systems of Equations, Solving Equations 23604@node Decomposing Polynomials, , Solving Systems of Equations, Solving Equations
23988@subsection Decomposing Polynomials 23605@subsection Decomposing Polynomials
23989 23606
23990@noindent 23607@noindent
@@ -24295,7 +23912,7 @@ the initial guess is a complex number the variable will be minimized
24295over the complex numbers; if it is real or an interval it will 23912over the complex numbers; if it is real or an interval it will
24296be minimized over the reals. 23913be minimized over the reals.
24297 23914
24298@node Numerical Systems of Equations, , Minimization, Numerical Solutions 23915@node Numerical Systems of Equations, , Minimization, Numerical Solutions
24299@subsection Systems of Equations 23916@subsection Systems of Equations
24300 23917
24301@noindent 23918@noindent
@@ -25343,7 +24960,7 @@ linearizer was unable to put the model into the required form.
25343The @code{efit} (corresponding to @kbd{H a F}) and @code{xfit} 24960The @code{efit} (corresponding to @kbd{H a F}) and @code{xfit}
25344(for @kbd{I a F}) functions are completely analogous. 24961(for @kbd{I a F}) functions are completely analogous.
25345 24962
25346@node Interpolation, , Curve Fitting Details, Curve Fitting 24963@node Interpolation, , Curve Fitting Details, Curve Fitting
25347@subsection Polynomial Interpolation 24964@subsection Polynomial Interpolation
25348 24965
25349@kindex a p 24966@kindex a p
@@ -25940,7 +25557,7 @@ declarations are used when deciding whether a formula is true;
25940it returns 0 when @code{dnonzero} would return 0 or leave itself 25557it returns 0 when @code{dnonzero} would return 0 or leave itself
25941in symbolic form.) 25558in symbolic form.)
25942 25559
25943@node Rewrite Rules, , Logical Operations, Algebra 25560@node Rewrite Rules, , Logical Operations, Algebra
25944@section Rewrite Rules 25561@section Rewrite Rules
25945 25562
25946@noindent 25563@noindent
@@ -27607,7 +27224,7 @@ buffer (with @kbd{C-x k *Trace* @key{RET}}). If you leave it in
27607existence and forget about it, all your future rewrite commands will 27224existence and forget about it, all your future rewrite commands will
27608be needlessly slow. 27225be needlessly slow.
27609 27226
27610@node Examples of Rewrite Rules, , Debugging Rewrites, Rewrite Rules 27227@node Examples of Rewrite Rules, , Debugging Rewrites, Rewrite Rules
27611@subsection Examples of Rewrite Rules 27228@subsection Examples of Rewrite Rules
27612 27229
27613@noindent 27230@noindent
@@ -28029,7 +27646,7 @@ really is unitless.)
28029 27646
28030@c Describe angular units, luminosity vs. steradians problem. 27647@c Describe angular units, luminosity vs. steradians problem.
28031 27648
28032@node User-Defined Units, , Predefined Units, Units 27649@node User-Defined Units, , Predefined Units, Units
28033@section User-Defined Units 27650@section User-Defined Units
28034 27651
28035@noindent 27652@noindent
@@ -28573,7 +28190,7 @@ example, letting @expr{n=2} in @samp{f(n pi)} with @kbd{a b} will
28573produce @samp{f(2 pi)}, whereas @kbd{s l} would give @samp{f(6.28)} 28190produce @samp{f(2 pi)}, whereas @kbd{s l} would give @samp{f(6.28)}
28574since the evaluation step will also evaluate @code{pi}. 28191since the evaluation step will also evaluate @code{pi}.
28575 28192
28576@node Evaluates-To Operator, , Let Command, Store and Recall 28193@node Evaluates-To Operator, , Let Command, Store and Recall
28577@section The Evaluates-To Operator 28194@section The Evaluates-To Operator
28578 28195
28579@noindent 28196@noindent
@@ -29206,7 +28823,7 @@ lines, and the third curve to have lines in style 3. Point styles will
29206still be assigned automatically, but you could store another vector in 28823still be assigned automatically, but you could store another vector in
29207@code{PointStyles} to define them, too. 28824@code{PointStyles} to define them, too.
29208 28825
29209@node Devices, , Graphics Options, Graphics 28826@node Devices, , Graphics Options, Graphics
29210@section Graphical Devices 28827@section Graphical Devices
29211 28828
29212@noindent 28829@noindent
@@ -29637,7 +29254,7 @@ The @kbd{C-x * y} key sequence is equivalent to @kbd{y} except that
29637it can be typed anywhere, not just in Calc. This provides an easy 29254it can be typed anywhere, not just in Calc. This provides an easy
29638way to guarantee that Calc knows which editing buffer you want to use! 29255way to guarantee that Calc knows which editing buffer you want to use!
29639 29256
29640@node X Cut and Paste, , Yanking Into Buffers, Kill and Yank 29257@node X Cut and Paste, , Yanking Into Buffers, Kill and Yank
29641@section X Cut and Paste 29258@section X Cut and Paste
29642 29259
29643@noindent 29260@noindent
@@ -30007,7 +29624,7 @@ With @key{INV}, @key{HYP}, or @key{INV} and @key{HYP}, the
30007@kbd{"x"} key pushes the variable names @expr{y}, @expr{z}, and 29624@kbd{"x"} key pushes the variable names @expr{y}, @expr{z}, and
30008@expr{t}, respectively. 29625@expr{t}, respectively.
30009 29626
30010@node Keypad Modes Menu, , Keypad Vectors Menu, Keypad Mode 29627@node Keypad Modes Menu, , Keypad Vectors Menu, Keypad Mode
30011@section Modes Menu 29628@section Modes Menu
30012 29629
30013@smallexample 29630@smallexample
@@ -30799,7 +30416,7 @@ annotations at all.
30799When Embedded mode is not enabled, mode-recording modes except 30416When Embedded mode is not enabled, mode-recording modes except
30800for @code{Save} have no effect. 30417for @code{Save} have no effect.
30801 30418
30802@node Customizing Embedded Mode, , Mode Settings in Embedded Mode, Embedded Mode 30419@node Customizing Embedded Mode, , Mode Settings in Embedded Mode, Embedded Mode
30803@section Customizing Embedded Mode 30420@section Customizing Embedded Mode
30804 30421
30805@noindent 30422@noindent
@@ -30953,7 +30570,7 @@ is simply a newline, @code{"\n"}, but may be different for different
30953major modes. If you change this, it is a good idea still to end with a 30570major modes. If you change this, it is a good idea still to end with a
30954newline so that mode annotations will appear on lines by themselves. 30571newline so that mode annotations will appear on lines by themselves.
30955 30572
30956@node Programming, Customizing Calc, Embedded Mode, Top 30573@node Programming, Copying, Embedded Mode, Top
30957@chapter Programming 30574@chapter Programming
30958 30575
30959@noindent 30576@noindent
@@ -31406,7 +31023,7 @@ The contents of the stack and trail, values of non-quick variables, and
31406other settings such as the language mode and the various display modes, 31023other settings such as the language mode and the various display modes,
31407are @emph{not} affected by @kbd{Z `} and @kbd{Z '}. 31024are @emph{not} affected by @kbd{Z `} and @kbd{Z '}.
31408 31025
31409@node Queries in Macros, , Local Values in Macros, Keyboard Macros 31026@node Queries in Macros, , Local Values in Macros, Keyboard Macros
31410@subsection Queries in Keyboard Macros 31027@subsection Queries in Keyboard Macros
31411 31028
31412@c @noindent 31029@c @noindent
@@ -31591,7 +31208,7 @@ default simplifications cures this problem: The definition will be stored
31591in symbolic form without ever activating the @code{deriv} function. Press 31208in symbolic form without ever activating the @code{deriv} function. Press
31592@kbd{m D} to turn the default simplifications back on afterwards. 31209@kbd{m D} to turn the default simplifications back on afterwards.
31593 31210
31594@node Lisp Definitions, , Algebraic Definitions, Programming 31211@node Lisp Definitions, , Algebraic Definitions, Programming
31595@section Programming with Lisp 31212@section Programming with Lisp
31596 31213
31597@noindent 31214@noindent
@@ -32296,7 +31913,7 @@ actually they are less efficient because each operation is really
32296a division by 512 in disguise; @code{idivmod} allows us to do the 31913a division by 512 in disguise; @code{idivmod} allows us to do the
32297same thing with a single division by 512. 31914same thing with a single division by 512.
32298 31915
32299@node Sine Example, , Bit Counting Example, Example Definitions 31916@node Sine Example, , Bit Counting Example, Example Definitions
32300@subsubsection The Sine Function 31917@subsubsection The Sine Function
32301 31918
32302@noindent 31919@noindent
@@ -32776,7 +32393,7 @@ Note the use of @code{insert-before-markers} when changing between
32776``F'' and ``C'', so that the character winds up before the cursor 32393``F'' and ``C'', so that the character winds up before the cursor
32777instead of after it. 32394instead of after it.
32778 32395
32779@node Internals, , Calling Calc from Your Programs, Lisp Definitions 32396@node Internals, , Calling Calc from Your Programs, Lisp Definitions
32780@subsection Calculator Internals 32397@subsection Calculator Internals
32781 32398
32782@noindent 32399@noindent
@@ -34668,7 +34285,7 @@ If composition @var{c} is a ``flat'' composition, return the last
34668@comment @noindent 34285@comment @noindent
34669@comment (This section is currently unfinished.) 34286@comment (This section is currently unfinished.)
34670 34287
34671@node Hooks, , Formatting Lisp Functions, Internals 34288@node Hooks, , Formatting Lisp Functions, Internals
34672@subsubsection Hooks 34289@subsubsection Hooks
34673 34290
34674@noindent 34291@noindent
@@ -34832,7 +34449,404 @@ used the first time, your hook should add a variable to the
34832list and also call @code{make-local-variable} itself. 34449list and also call @code{make-local-variable} itself.
34833@end defvar 34450@end defvar
34834 34451
34835@node Customizing Calc, Reporting Bugs, Programming, Top 34452@node Copying, GNU Free Documentation License, Programming, Top
34453@appendix GNU GENERAL PUBLIC LICENSE
34454@center Version 2, June 1991
34455
34456@c This file is intended to be included in another file.
34457
34458@display
34459Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
3446051 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
34461
34462Everyone is permitted to copy and distribute verbatim copies
34463of this license document, but changing it is not allowed.
34464@end display
34465
34466@unnumberedsec Preamble
34467
34468 The licenses for most software are designed to take away your
34469freedom to share and change it. By contrast, the GNU General Public
34470License is intended to guarantee your freedom to share and change free
34471software---to make sure the software is free for all its users. This
34472General Public License applies to most of the Free Software
34473Foundation's software and to any other program whose authors commit to
34474using it. (Some other Free Software Foundation software is covered by
34475the GNU Lesser General Public License instead.) You can apply it to
34476your programs, too.
34477
34478 When we speak of free software, we are referring to freedom, not
34479price. Our General Public Licenses are designed to make sure that you
34480have the freedom to distribute copies of free software (and charge for
34481this service if you wish), that you receive source code or can get it
34482if you want it, that you can change the software or use pieces of it
34483in new free programs; and that you know you can do these things.
34484
34485 To protect your rights, we need to make restrictions that forbid
34486anyone to deny you these rights or to ask you to surrender the rights.
34487These restrictions translate to certain responsibilities for you if you
34488distribute copies of the software, or if you modify it.
34489
34490 For example, if you distribute copies of such a program, whether
34491gratis or for a fee, you must give the recipients all the rights that
34492you have. You must make sure that they, too, receive or can get the
34493source code. And you must show them these terms so they know their
34494rights.
34495
34496 We protect your rights with two steps: (1) copyright the software, and
34497(2) offer you this license which gives you legal permission to copy,
34498distribute and/or modify the software.
34499
34500 Also, for each author's protection and ours, we want to make certain
34501that everyone understands that there is no warranty for this free
34502software. If the software is modified by someone else and passed on, we
34503want its recipients to know that what they have is not the original, so
34504that any problems introduced by others will not reflect on the original
34505authors' reputations.
34506
34507 Finally, any free program is threatened constantly by software
34508patents. We wish to avoid the danger that redistributors of a free
34509program will individually obtain patent licenses, in effect making the
34510program proprietary. To prevent this, we have made it clear that any
34511patent must be licensed for everyone's free use or not licensed at all.
34512
34513 The precise terms and conditions for copying, distribution and
34514modification follow.
34515
34516@iftex
34517@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
34518@end iftex
34519@ifinfo
34520@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
34521@end ifinfo
34522
34523@enumerate 0
34524@item
34525This License applies to any program or other work which contains
34526a notice placed by the copyright holder saying it may be distributed
34527under the terms of this General Public License. The ``Program'', below,
34528refers to any such program or work, and a ``work based on the Program''
34529means either the Program or any derivative work under copyright law:
34530that is to say, a work containing the Program or a portion of it,
34531either verbatim or with modifications and/or translated into another
34532language. (Hereinafter, translation is included without limitation in
34533the term ``modification''.) Each licensee is addressed as ``you''.
34534
34535Activities other than copying, distribution and modification are not
34536covered by this License; they are outside its scope. The act of
34537running the Program is not restricted, and the output from the Program
34538is covered only if its contents constitute a work based on the
34539Program (independent of having been made by running the Program).
34540Whether that is true depends on what the Program does.
34541
34542@item
34543You may copy and distribute verbatim copies of the Program's
34544source code as you receive it, in any medium, provided that you
34545conspicuously and appropriately publish on each copy an appropriate
34546copyright notice and disclaimer of warranty; keep intact all the
34547notices that refer to this License and to the absence of any warranty;
34548and give any other recipients of the Program a copy of this License
34549along with the Program.
34550
34551You may charge a fee for the physical act of transferring a copy, and
34552you may at your option offer warranty protection in exchange for a fee.
34553
34554@item
34555You may modify your copy or copies of the Program or any portion
34556of it, thus forming a work based on the Program, and copy and
34557distribute such modifications or work under the terms of Section 1
34558above, provided that you also meet all of these conditions:
34559
34560@enumerate a
34561@item
34562You must cause the modified files to carry prominent notices
34563stating that you changed the files and the date of any change.
34564
34565@item
34566You must cause any work that you distribute or publish, that in
34567whole or in part contains or is derived from the Program or any
34568part thereof, to be licensed as a whole at no charge to all third
34569parties under the terms of this License.
34570
34571@item
34572If the modified program normally reads commands interactively
34573when run, you must cause it, when started running for such
34574interactive use in the most ordinary way, to print or display an
34575announcement including an appropriate copyright notice and a
34576notice that there is no warranty (or else, saying that you provide
34577a warranty) and that users may redistribute the program under
34578these conditions, and telling the user how to view a copy of this
34579License. (Exception: if the Program itself is interactive but
34580does not normally print such an announcement, your work based on
34581the Program is not required to print an announcement.)
34582@end enumerate
34583
34584These requirements apply to the modified work as a whole. If
34585identifiable sections of that work are not derived from the Program,
34586and can be reasonably considered independent and separate works in
34587themselves, then this License, and its terms, do not apply to those
34588sections when you distribute them as separate works. But when you
34589distribute the same sections as part of a whole which is a work based
34590on the Program, the distribution of the whole must be on the terms of
34591this License, whose permissions for other licensees extend to the
34592entire whole, and thus to each and every part regardless of who wrote it.
34593
34594Thus, it is not the intent of this section to claim rights or contest
34595your rights to work written entirely by you; rather, the intent is to
34596exercise the right to control the distribution of derivative or
34597collective works based on the Program.
34598
34599In addition, mere aggregation of another work not based on the Program
34600with the Program (or with a work based on the Program) on a volume of
34601a storage or distribution medium does not bring the other work under
34602the scope of this License.
34603
34604@item
34605You may copy and distribute the Program (or a work based on it,
34606under Section 2) in object code or executable form under the terms of
34607Sections 1 and 2 above provided that you also do one of the following:
34608
34609@enumerate a
34610@item
34611Accompany it with the complete corresponding machine-readable
34612source code, which must be distributed under the terms of Sections
346131 and 2 above on a medium customarily used for software interchange; or,
34614
34615@item
34616Accompany it with a written offer, valid for at least three
34617years, to give any third party, for a charge no more than your
34618cost of physically performing source distribution, a complete
34619machine-readable copy of the corresponding source code, to be
34620distributed under the terms of Sections 1 and 2 above on a medium
34621customarily used for software interchange; or,
34622
34623@item
34624Accompany it with the information you received as to the offer
34625to distribute corresponding source code. (This alternative is
34626allowed only for noncommercial distribution and only if you
34627received the program in object code or executable form with such
34628an offer, in accord with Subsection b above.)
34629@end enumerate
34630
34631The source code for a work means the preferred form of the work for
34632making modifications to it. For an executable work, complete source
34633code means all the source code for all modules it contains, plus any
34634associated interface definition files, plus the scripts used to
34635control compilation and installation of the executable. However, as a
34636special exception, the source code distributed need not include
34637anything that is normally distributed (in either source or binary
34638form) with the major components (compiler, kernel, and so on) of the
34639operating system on which the executable runs, unless that component
34640itself accompanies the executable.
34641
34642If distribution of executable or object code is made by offering
34643access to copy from a designated place, then offering equivalent
34644access to copy the source code from the same place counts as
34645distribution of the source code, even though third parties are not
34646compelled to copy the source along with the object code.
34647
34648@item
34649You may not copy, modify, sublicense, or distribute the Program
34650except as expressly provided under this License. Any attempt
34651otherwise to copy, modify, sublicense or distribute the Program is
34652void, and will automatically terminate your rights under this License.
34653However, parties who have received copies, or rights, from you under
34654this License will not have their licenses terminated so long as such
34655parties remain in full compliance.
34656
34657@item
34658You are not required to accept this License, since you have not
34659signed it. However, nothing else grants you permission to modify or
34660distribute the Program or its derivative works. These actions are
34661prohibited by law if you do not accept this License. Therefore, by
34662modifying or distributing the Program (or any work based on the
34663Program), you indicate your acceptance of this License to do so, and
34664all its terms and conditions for copying, distributing or modifying
34665the Program or works based on it.
34666
34667@item
34668Each time you redistribute the Program (or any work based on the
34669Program), the recipient automatically receives a license from the
34670original licensor to copy, distribute or modify the Program subject to
34671these terms and conditions. You may not impose any further
34672restrictions on the recipients' exercise of the rights granted herein.
34673You are not responsible for enforcing compliance by third parties to
34674this License.
34675
34676@item
34677If, as a consequence of a court judgment or allegation of patent
34678infringement or for any other reason (not limited to patent issues),
34679conditions are imposed on you (whether by court order, agreement or
34680otherwise) that contradict the conditions of this License, they do not
34681excuse you from the conditions of this License. If you cannot
34682distribute so as to satisfy simultaneously your obligations under this
34683License and any other pertinent obligations, then as a consequence you
34684may not distribute the Program at all. For example, if a patent
34685license would not permit royalty-free redistribution of the Program by
34686all those who receive copies directly or indirectly through you, then
34687the only way you could satisfy both it and this License would be to
34688refrain entirely from distribution of the Program.
34689
34690If any portion of this section is held invalid or unenforceable under
34691any particular circumstance, the balance of the section is intended to
34692apply and the section as a whole is intended to apply in other
34693circumstances.
34694
34695It is not the purpose of this section to induce you to infringe any
34696patents or other property right claims or to contest validity of any
34697such claims; this section has the sole purpose of protecting the
34698integrity of the free software distribution system, which is
34699implemented by public license practices. Many people have made
34700generous contributions to the wide range of software distributed
34701through that system in reliance on consistent application of that
34702system; it is up to the author/donor to decide if he or she is willing
34703to distribute software through any other system and a licensee cannot
34704impose that choice.
34705
34706This section is intended to make thoroughly clear what is believed to
34707be a consequence of the rest of this License.
34708
34709@item
34710If the distribution and/or use of the Program is restricted in
34711certain countries either by patents or by copyrighted interfaces, the
34712original copyright holder who places the Program under this License
34713may add an explicit geographical distribution limitation excluding
34714those countries, so that distribution is permitted only in or among
34715countries not thus excluded. In such case, this License incorporates
34716the limitation as if written in the body of this License.
34717
34718@item
34719The Free Software Foundation may publish revised and/or new versions
34720of the General Public License from time to time. Such new versions will
34721be similar in spirit to the present version, but may differ in detail to
34722address new problems or concerns.
34723
34724Each version is given a distinguishing version number. If the Program
34725specifies a version number of this License which applies to it and ``any
34726later version'', you have the option of following the terms and conditions
34727either of that version or of any later version published by the Free
34728Software Foundation. If the Program does not specify a version number of
34729this License, you may choose any version ever published by the Free Software
34730Foundation.
34731
34732@item
34733If you wish to incorporate parts of the Program into other free
34734programs whose distribution conditions are different, write to the author
34735to ask for permission. For software which is copyrighted by the Free
34736Software Foundation, write to the Free Software Foundation; we sometimes
34737make exceptions for this. Our decision will be guided by the two goals
34738of preserving the free status of all derivatives of our free software and
34739of promoting the sharing and reuse of software generally.
34740
34741@iftex
34742@heading NO WARRANTY
34743@end iftex
34744@ifinfo
34745@center NO WARRANTY
34746@end ifinfo
34747
34748@item
34749BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
34750FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
34751OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
34752PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
34753OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
34754MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
34755TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
34756PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
34757REPAIR OR CORRECTION.
34758
34759@item
34760IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
34761WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
34762REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
34763INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
34764OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
34765TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
34766YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
34767PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
34768POSSIBILITY OF SUCH DAMAGES.
34769@end enumerate
34770
34771@iftex
34772@heading END OF TERMS AND CONDITIONS
34773@end iftex
34774@ifinfo
34775@center END OF TERMS AND CONDITIONS
34776@end ifinfo
34777
34778@page
34779@unnumberedsec Appendix: How to Apply These Terms to Your New Programs
34780
34781 If you develop a new program, and you want it to be of the greatest
34782possible use to the public, the best way to achieve this is to make it
34783free software which everyone can redistribute and change under these terms.
34784
34785 To do so, attach the following notices to the program. It is safest
34786to attach them to the start of each source file to most effectively
34787convey the exclusion of warranty; and each file should have at least
34788the ``copyright'' line and a pointer to where the full notice is found.
34789
34790@smallexample
34791@var{one line to give the program's name and a brief idea of what it does.}
34792Copyright (C) @var{yyyy} @var{name of author}
34793
34794This program is free software; you can redistribute it and/or modify
34795it under the terms of the GNU General Public License as published by
34796the Free Software Foundation; either version 2 of the License, or
34797(at your option) any later version.
34798
34799This program is distributed in the hope that it will be useful,
34800but WITHOUT ANY WARRANTY; without even the implied warranty of
34801MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
34802GNU General Public License for more details.
34803
34804You should have received a copy of the GNU General Public License
34805along with this program; if not, write to the Free Software
34806Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
34807@end smallexample
34808
34809Also add information on how to contact you by electronic and paper mail.
34810
34811If the program is interactive, make it output a short notice like this
34812when it starts in an interactive mode:
34813
34814@smallexample
34815Gnomovision version 69, Copyright (C) @var{yyyy} @var{name of author}
34816Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
34817This is free software, and you are welcome to redistribute it
34818under certain conditions; type `show c' for details.
34819@end smallexample
34820
34821The hypothetical commands @samp{show w} and @samp{show c} should show
34822the appropriate parts of the General Public License. Of course, the
34823commands you use may be called something other than @samp{show w} and
34824@samp{show c}; they could even be mouse-clicks or menu items---whatever
34825suits your program.
34826
34827You should also get your employer (if you work as a programmer) or your
34828school, if any, to sign a ``copyright disclaimer'' for the program, if
34829necessary. Here is a sample; alter the names:
34830
34831@example
34832Yoyodyne, Inc., hereby disclaims all copyright interest in the program
34833`Gnomovision' (which makes passes at compilers) written by James Hacker.
34834
34835@var{signature of Ty Coon}, 1 April 1989
34836Ty Coon, President of Vice
34837@end example
34838
34839This General Public License does not permit incorporating your program into
34840proprietary programs. If your program is a subroutine library, you may
34841consider it more useful to permit linking proprietary applications with the
34842library. If this is what you want to do, use the GNU Lesser General
34843Public License instead of this License.
34844
34845@node GNU Free Documentation License, Customizing Calc, Copying, Top
34846@appendix GNU Free Documentation License
34847@include doclicense.texi
34848
34849@node Customizing Calc, Reporting Bugs, GNU Free Documentation License, Top
34836@appendix Customizing Calc 34850@appendix Customizing Calc
34837 34851
34838The usual prefix for Calc is the key sequence @kbd{C-x *}. If you wish 34852The usual prefix for Calc is the key sequence @kbd{C-x *}. If you wish
@@ -35151,7 +35165,7 @@ and @code{calc-embedded-open-close-plain-alist}.
35151If you find a bug in Calc, send e-mail to Jay Belanger, 35165If you find a bug in Calc, send e-mail to Jay Belanger,
35152 35166
35153@example 35167@example
35154belanger@@truman.edu 35168jay.p.belanger@@gmail.com
35155@end example 35169@end example
35156 35170
35157@noindent 35171@noindent
@@ -36457,7 +36471,7 @@ in your Calc init file or @file{.emacs} file.
36457 36471
36458@printindex vr 36472@printindex vr
36459 36473
36460@node Lisp Function Index, , Variable Index, Top 36474@node Lisp Function Index, , Variable Index, Top
36461@unnumbered Index of Lisp Math Functions 36475@unnumbered Index of Lisp Math Functions
36462 36476
36463The following functions are meant to be used with @code{defmath}, not 36477The following functions are meant to be used with @code{defmath}, not
diff --git a/man/calendar.texi b/man/calendar.texi
index 11b24f7c210..58ca24af7d9 100644
--- a/man/calendar.texi
+++ b/man/calendar.texi
@@ -1614,11 +1614,12 @@ minutes. The value for Cambridge, Massachusetts is 60.
1614 1614
1615@c @vindex calendar-daylight-savings-starts-time too long! 1615@c @vindex calendar-daylight-savings-starts-time too long!
1616@vindex calendar-daylight-savings-ends-time 1616@vindex calendar-daylight-savings-ends-time
1617 The two variables @code{calendar-daylight-savings-starts-time} and 1617 Finally, the two variables
1618@code{calendar-daylight-savings-ends-time} specify the number of minutes 1618@code{calendar-daylight-savings-starts-time} and
1619after midnight local time when the transition to and from daylight 1619@code{calendar-daylight-savings-ends-time} specify the number of
1620saving time should occur. For Cambridge, Massachusetts both variables' 1620minutes after midnight local time when the transition to and from
1621values are 120. 1621daylight saving time should occur. For Cambridge, Massachusetts both
1622variables' values are 120.
1622 1623
1623@node Time Intervals 1624@node Time Intervals
1624@section Summing Time Intervals 1625@section Summing Time Intervals
diff --git a/man/cc-mode.texi b/man/cc-mode.texi
index bc804fa01dc..217c32ff911 100644
--- a/man/cc-mode.texi
+++ b/man/cc-mode.texi
@@ -255,6 +255,7 @@ functions, classes etc - there are other packages for that.
255* FAQ:: 255* FAQ::
256* Updating CC Mode:: 256* Updating CC Mode::
257* Mailing Lists and Bug Reports:: 257* Mailing Lists and Bug Reports::
258* GNU Free Documentation License::
258* Command and Function Index:: 259* Command and Function Index::
259* Variable Index:: 260* Variable Index::
260* Concept and Key Index:: 261* Concept and Key Index::
@@ -6892,7 +6893,7 @@ compatibility, etc. are all available on the web site:
6892 6893
6893 6894
6894@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6895@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
6895@node Mailing Lists and Bug Reports, Command and Function Index, Updating CC Mode, Top 6896@node Mailing Lists and Bug Reports, GNU Free Documentation License, Updating CC Mode, Top
6896@comment node-name, next, previous, up 6897@comment node-name, next, previous, up
6897@appendix Mailing Lists and Submitting Bug Reports 6898@appendix Mailing Lists and Submitting Bug Reports
6898@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6899@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -6934,9 +6935,15 @@ to the Usenet newsgroups @code{gnu.emacs.sources}, @code{comp.emacs},
6934@code{comp.lang.idl}, and @code{comp.lang.awk}. 6935@code{comp.lang.idl}, and @code{comp.lang.awk}.
6935@c There is no newsgroup for Pike. :-( 6936@c There is no newsgroup for Pike. :-(
6936 6937
6938
6939@node GNU Free Documentation License, Command and Function Index, Mailing Lists and Bug Reports, Top
6940@appendix GNU Free Documentation License
6941@include doclicense.texi
6942
6943
6937@c Removed the tentative node "Mode Initialization" from here, 2005/8/27. 6944@c Removed the tentative node "Mode Initialization" from here, 2005/8/27.
6938@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6945@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
6939@node Command and Function Index, Variable Index, Mailing Lists and Bug Reports, Top 6946@node Command and Function Index, Variable Index, GNU Free Documentation License, Top
6940@comment node-name, next, previous, up 6947@comment node-name, next, previous, up
6941@unnumbered Command and Function Index 6948@unnumbered Command and Function Index
6942@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6949@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
diff --git a/man/cl.texi b/man/cl.texi
index 6a6663fcd5b..676b9edc5ad 100644
--- a/man/cl.texi
+++ b/man/cl.texi
@@ -78,6 +78,7 @@ does assume a basic familiarity with Emacs Lisp.
78* Old CL Compatibility:: All known differences with old cl.el 78* Old CL Compatibility:: All known differences with old cl.el
79* Porting Common Lisp:: Hints for porting Common Lisp code 79* Porting Common Lisp:: Hints for porting Common Lisp code
80 80
81* GNU Free Documentation License:: The license for this documentation.
81* Function Index:: 82* Function Index::
82* Variable Index:: 83* Variable Index::
83@end menu 84@end menu
@@ -5141,7 +5142,7 @@ older versions of the old package used the unadorned names
5141@code{floor}, @code{ceiling}, etc.; @code{cl-compat} cannot use 5142@code{floor}, @code{ceiling}, etc.; @code{cl-compat} cannot use
5142these names because they conflict with Emacs built-ins. 5143these names because they conflict with Emacs built-ins.
5143 5144
5144@node Porting Common Lisp, Function Index, Old CL Compatibility, Top 5145@node Porting Common Lisp, GNU Free Documentation License, Old CL Compatibility, Top
5145@appendix Porting Common Lisp 5146@appendix Porting Common Lisp
5146 5147
5147@noindent 5148@noindent
@@ -5353,7 +5354,11 @@ note that the current Emacs Lisp compiler does not optimize tail
5353recursion. 5354recursion.
5354@end itemize 5355@end itemize
5355 5356
5356@node Function Index, Variable Index, Porting Common Lisp, Top 5357@node GNU Free Documentation License, Function Index, Porting Common Lisp, Top
5358@appendix GNU Free Documentation License
5359@include doclicense.texi
5360
5361@node Function Index, Variable Index, GNU Free Documentation License, Top
5357@unnumbered Function Index 5362@unnumbered Function Index
5358 5363
5359@printindex fn 5364@printindex fn
diff --git a/man/cmdargs.texi b/man/cmdargs.texi
index 860d9ac1403..676d4cdf3b5 100644
--- a/man/cmdargs.texi
+++ b/man/cmdargs.texi
@@ -892,7 +892,7 @@ displays the entire font @samp{6x13}.
892 892
893@node Colors 893@node Colors
894@appendixsec Window Color Options 894@appendixsec Window Color Options
895@cindex color of window 895@cindex color of window, from command line
896@cindex text colors, from command line 896@cindex text colors, from command line
897 897
898@findex list-colors-display 898@findex list-colors-display
diff --git a/man/dired-x.texi b/man/dired-x.texi
index 0d9e385b789..bf2d5288abc 100644
--- a/man/dired-x.texi
+++ b/man/dired-x.texi
@@ -25,38 +25,27 @@
25@comment %**end of header (This is for running Texinfo on a region.) 25@comment %**end of header (This is for running Texinfo on a region.)
26 26
27@copying 27@copying
28This documents the ``extra'' features for Dired Mode for GNU Emacs found in 28Copyright @copyright{} 1994, 1995, 1999, 2001, 2002, 2003, 2004,
29the file @file{dired-x.el}.
30
31Copyright @copyright{} 1993, 1994, 2001, 2002, 2003, 2004,
322005, 2006, 2007 Free Software Foundation, Inc. 292005, 2006, 2007 Free Software Foundation, Inc.
33 30
34@quotation 31@quotation
35Permission is granted to make and distribute verbatim copies of this 32Permission is granted to copy, distribute and/or modify this document
36manual provided the copyright notice and this permission notice are 33under the terms of the GNU Free Documentation License, Version 1.2 or
37preserved on all copies. 34any later version published by the Free Software Foundation; with the
38 35Invariant Sections being ``The GNU Manifesto'', ``Distribution'' and
39Permission is granted to copy and distribute modified versions of 36``GNU GENERAL PUBLIC LICENSE'', with the Front-Cover texts being ``A GNU
40this manual under the conditions for verbatim copying, provided that 37Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
41the entire resulting derived work is distributed under the terms of 38license is included in the section entitled ``GNU Free Documentation
42a permission notice identical to this one. 39License'' in the Emacs manual.
43 40
44Permission is granted to copy and distribute translations of this 41(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
45manual into another language, under the above conditions for 42this GNU Manual, like GNU software. Copies published by the Free
46modified versions, except that this permission notice may be stated 43Software Foundation raise funds for GNU development.''
47in a translation approved by the Free Software Foundation. 44
48 45This document is part of a collection distributed under the GNU Free
49The file used to create this is called @file{dired-x.texi}, but the 46Documentation License. If you want to distribute this document
50original work that was altered to make that file was called 47separately from the collection, you can do so by adding a copy of the
51@file{dired.texi} written by Sebastian Kremer. 48license to the document, as described in section 6 of the license.
52
53@ignore
54Permission is granted to process this file through TeX and print the
55results, provided the printed document carries copying permission
56notice identical to this one except for the removal of this paragraph
57(this paragraph not being relevant to the printed manual).
58
59@end ignore
60@end quotation 49@end quotation
61@end copying 50@end copying
62 51
@@ -80,9 +69,6 @@ notice identical to this one except for the removal of this paragraph
80@sp 1 69@sp 1
81@center @titlefont{Directory Editor} 70@center @titlefont{Directory Editor}
82@sp 4 71@sp 4
83@center Manual Revision: 2.53
84@center 2001/02/25 14:05:46
85@sp 5
86@center Lawrence R@. Dodd 72@center Lawrence R@. Dodd
87@c @center @t{dodd@@roebling.poly.edu} 73@c @center @t{dodd@@roebling.poly.edu}
88@sp 5 74@sp 5
@@ -138,6 +124,7 @@ For @file{dired-x.el} revision 2
138* Miscellaneous Commands:: 124* Miscellaneous Commands::
139* Bugs:: 125* Bugs::
140 126
127* GNU Free Documentation License::
141* Concept Index:: 128* Concept Index::
142* Command Index:: 129* Command Index::
143* Key Index:: 130* Key Index::
@@ -1228,7 +1215,7 @@ Bound to @kbd{%Y}. Relative symlink all marked files containing
1228info. 1215info.
1229@end table 1216@end table
1230 1217
1231@node Bugs, Concept Index, Miscellaneous Commands, Top 1218@node Bugs, GNU Free Documentation License, Miscellaneous Commands, Top
1232@comment node-name, next, previous, up 1219@comment node-name, next, previous, up
1233@chapter Bugs 1220@chapter Bugs
1234@cindex Bugs 1221@cindex Bugs
@@ -1252,7 +1239,11 @@ maladjustment.
1252Lawrence R. Dodd 1239Lawrence R. Dodd
1253@c <dodd@@roebling.poly.edu> 1240@c <dodd@@roebling.poly.edu>
1254 1241
1255@node Concept Index, Command Index, Bugs, Top 1242@node GNU Free Documentation License, Concept Index, Bugs, Top
1243@appendix GNU Free Documentation License
1244@include doclicense.texi
1245
1246@node Concept Index, Command Index, GNU Free Documentation License, Top
1256@comment node-name, next, previous, up 1247@comment node-name, next, previous, up
1257@unnumbered Concept Index 1248@unnumbered Concept Index
1258@printindex cp 1249@printindex cp
diff --git a/man/dired.texi b/man/dired.texi
index c40030147b4..922914a123f 100644
--- a/man/dired.texi
+++ b/man/dired.texi
@@ -44,6 +44,7 @@ on all of them with on command.
44* Updating: Dired Updating. Discarding lines for files of no interest. 44* Updating: Dired Updating. Discarding lines for files of no interest.
45* Find: Dired and Find. Using `find' to choose the files for Dired. 45* Find: Dired and Find. Using `find' to choose the files for Dired.
46* Wdired:: Operating on files by editing the Dired buffer. 46* Wdired:: Operating on files by editing the Dired buffer.
47* Image-Dired:: Viewing image thumbnails in Dired
47* Misc: Misc Dired Features. Various other features. 48* Misc: Misc Dired Features. Various other features.
48@end menu 49@end menu
49 50
@@ -920,6 +921,9 @@ Use the @kbd{l} command (@code{dired-do-redisplay}) to update the
920subdirectory's contents. Use @kbd{C-u k} on the subdirectory header 921subdirectory's contents. Use @kbd{C-u k} on the subdirectory header
921line to delete the subdirectory. @xref{Dired Updating}. 922line to delete the subdirectory. @xref{Dired Updating}.
922 923
924
925
926
923@ifnottex 927@ifnottex
924@include dired-xtra.texi 928@include dired-xtra.texi
925@end ifnottex 929@end ifnottex
@@ -1132,9 +1136,9 @@ may need to change the value of this variable.
1132@findex locate-with-filter 1136@findex locate-with-filter
1133@cindex file database (locate) 1137@cindex file database (locate)
1134@vindex locate-command 1138@vindex locate-command
1135 @kbd{M-x locate} provides a similar interface to the @code{locate} 1139 The command @kbd{M-x locate} provides a similar interface to the
1136program. @kbd{M-x locate-with-filter} is similar, but keeps only files 1140@code{locate} program. @kbd{M-x locate-with-filter} is similar, but
1137whose names match a given regular expression. 1141keeps only files whose names match a given regular expression.
1138 1142
1139 These buffers don't work entirely like ordinary Dired buffers: file 1143 These buffers don't work entirely like ordinary Dired buffers: file
1140operations work, but do not always automatically update the buffer. 1144operations work, but do not always automatically update the buffer.
@@ -1174,6 +1178,78 @@ change @samp{-rw-r--r--} to @samp{-rw-rw-rw-} to make a file
1174world-writable. These changes also take effect when you type @kbd{C-c 1178world-writable. These changes also take effect when you type @kbd{C-c
1175C-c}. 1179C-c}.
1176 1180
1181@node Image-Dired
1182@section Viewing Image Thumbnails in Dired
1183@cindex image-dired mode
1184@cindex image-dired
1185
1186 Image-Dired is a facility for browsing image files. It provides viewing
1187the images either as thumbnails or in full size, either inside Emacs
1188or through an external viewer.
1189
1190@kindex C-t d @r{(Image-Dired)}
1191@findex image-dired-display-thumbs
1192 To enter Image-Dired, mark the image files you want to look at in
1193the Dired buffer, using @kbd{m} as usual. Then type @kbd{C-t d}
1194(@code{image-dired-display-thumbs}). This creates and switches to a
1195buffer containing image-dired, corresponding to the marked files.
1196
1197 You can also enter Image-Dired directly by typing @kbd{M-x
1198image-dired}. This prompts for a directory; specify one that has
1199images files. This creates thumbnails for all the images in that
1200directory, and displays them all in the ``thumbnail buffer.'' This
1201takes a long time if the directory contains many image files, and it
1202asks for confirmation if the number of image files exceeds
1203@code{image-dired-show-all-from-dir-max-files}.
1204
1205 With point in the thumbnail buffer, type @kbd{RET}
1206(@code{image-dired-display-thumbnail-original-image}) to display a
1207sized version of it in another window. This sizes the image to fit
1208the window. Use the arrow keys to move around in the buffer. For
1209easy browsing, type @kbd{SPC}
1210(@code{image-dired-display-next-thumbnail-original}) to advance and
1211display the next image. Typing @kbd{DEL}
1212(@code{image-dired-display-previous-thumbnail-original}) backs up to
1213the previous thumbnail and displays that instead.
1214
1215@vindex image-dired-external-viewer
1216 To view and the image in its original size, either provide a prefix
1217argument (@kbd{C-u}) before pressing @kbd{RET}, or type
1218@kbd{C-@key{RET}} (@code{image-dired-thumbnail-display-external}) to
1219display the image in an external viewer. You must first configure
1220@code{image-dired-external-viewer}.
1221
1222 You can delete images through Image-Dired also. Type @kbd{d}
1223(@code{image-dired-flag-thumb-original-file}) to flag the image file
1224for deletion in the Dired buffer. You can also delete the thumbnail
1225image from the thumbnail buffer with @kbd{C-d}
1226(@code{image-dired-delete-char}).
1227
1228 More advanced features include @dfn{image tags}, which are metadata
1229used to categorize image files. The tags are stored in a plain text
1230file configured by @code{image-dired-db-file}.
1231
1232 To tag image files, mark them in the dired buffer (you can also mark
1233files in Dired from the thumbnail buffer by typing @kbd{m}) and type
1234@kbd{C-t t} (@code{image-dired-tag-files}). You will be prompted for
1235a tag. To mark files having a certain tag, type @kbd{C-t f}
1236(@code{image-dired-mark-tagged-files}). After marking image files
1237with a certain tag, you can use @kbd{C-t d} to view them.
1238
1239 You can also tag a file directly from the thumbnail buffer by typing
1240@kbd{t t} and you can remove a tag by typing @kbd{t r}. There is also
1241a special ``tag'' called ``comment'' for each file (it is not a tag in
1242the exact same sense as the other tags, it is handled slightly
1243different). That is used to enter a comment or description about the
1244image. You comment a file from the thumbnail buffer by typing
1245@kbd{c}. You will be prompted for a comment. Type @kbd{C-t c} to add
1246a comment from Dired (@code{image-dired-dired-comment-files}).
1247
1248 Image-Dired also provides simple image manipulation. In the
1249thumbnail buffer, type @kbd{L} to rotate the original image 90 degrees
1250anti clockwise, and @kbd{R} to rotate it 90 degrees clockwise. This
1251rotation is lossless, and uses an external utility called JpegTRAN.
1252
1177@node Misc Dired Features 1253@node Misc Dired Features
1178@section Other Dired Features 1254@section Other Dired Features
1179 1255
diff --git a/man/display.texi b/man/display.texi
index 020721fb462..6cb2d857165 100644
--- a/man/display.texi
+++ b/man/display.texi
@@ -128,7 +128,7 @@ same screen line. To enable this behavior, set the variable
128@code{scroll-preserve-screen-position} to a non-@code{nil} value. In 128@code{scroll-preserve-screen-position} to a non-@code{nil} value. In
129this mode, when these commands would scroll the text around point off 129this mode, when these commands would scroll the text around point off
130the screen, or within @code{scroll-margin} lines of the edge, they 130the screen, or within @code{scroll-margin} lines of the edge, they
131moves point to keep the same vertical position within the window. 131move point to keep the same vertical position within the window.
132This mode is convenient for browsing through a file by scrolling by 132This mode is convenient for browsing through a file by scrolling by
133screenfuls; if you come back to the screen where you started, point 133screenfuls; if you come back to the screen where you started, point
134goes back to the line where it started. However, this mode is 134goes back to the line where it started. However, this mode is
@@ -333,6 +333,11 @@ those to be created in the future. (You can also set foreground and
333background colors for the current frame only; see @ref{Frame 333background colors for the current frame only; see @ref{Frame
334Parameters}.) 334Parameters}.)
335 335
336 If you want to alter the appearance of all Emacs frames, you need to
337customize the frame parameters in the variable
338@code{default-frame-alist}; see @ref{Creating Frames,
339default-frame-alist}.
340
336 Emacs can correctly display variable-width fonts, but Emacs commands 341 Emacs can correctly display variable-width fonts, but Emacs commands
337that calculate width and indentation do not know how to calculate 342that calculate width and indentation do not know how to calculate
338variable widths. This can sometimes lead to incorrect results when 343variable widths. This can sometimes lead to incorrect results when
@@ -646,15 +651,14 @@ recently.
646 651
647@cindex Hi Lock mode 652@cindex Hi Lock mode
648@findex hi-lock-mode 653@findex hi-lock-mode
649 Hi Lock mode is another minor mode, which highlights text that 654 Hi Lock mode highlights text that matches regular expressions you
650matches your specified regular expressions. For example, you might 655specify. For example, you might wish to see all the references to a
651wish to see all the references to a certain variable in a program 656certain variable in a program source file, highlight certain parts in
652source file, highlight certain parts in a voluminous output of some 657a voluminous output of some program, or make certain names stand out
653program, or make certain names stand out in an article. Use the 658in an article. Use the @kbd{M-x hi-lock-mode} command to enable (or
654@kbd{M-x hi-lock-mode} command to enable (or disable) Hi Lock mode. 659disable) Hi Lock mode. To enable Hi Lock mode for all buffers, use
655To enable Hi Lock mode for all buffers, use @kbd{M-x 660@kbd{M-x global-hi-lock-mode} or place @code{(global-hi-lock-mode 1)}
656global-hi-lock-mode} or place @code{(global-hi-lock-mode 1)} in your 661in your @file{.emacs} file.
657@file{.emacs} file.
658 662
659 Hi Lock mode works like Font Lock mode (@pxref{Font Lock}), except 663 Hi Lock mode works like Font Lock mode (@pxref{Font Lock}), except
660that you specify explicitly the regular expressions to highlight. You 664that you specify explicitly the regular expressions to highlight. You
@@ -706,26 +710,36 @@ at point, with comment delimiters to prevent them from changing your
706program. (This key binding runs the 710program. (This key binding runs the
707@code{hi-lock-write-interactive-patterns} command.) 711@code{hi-lock-write-interactive-patterns} command.)
708 712
709These patterns will be read the next time you visit the file while 713These patterns are extracted from the comments, if appropriate, if you
710Hi Lock mode is enabled, or whenever you use the @kbd{M-x 714invoke @kbd{M-x hi-lock-find-patterns}, or if you visit the file while
711hi-lock-find-patterns} command. 715Hi Lock mode is enabled (since that runs @code{hi-lock-find-patterns}).
712 716
713@item C-x w i 717@item C-x w i
714@kindex C-x w i 718@kindex C-x w i
715@findex hi-lock-find-patterns 719@findex hi-lock-find-patterns
716@vindex hi-lock-exclude-modes 720Extract regexp/face pairs from comments in the current buffer
717Re-read regexp/face pairs in the current buffer 721(@code{hi-lock-find-patterns}). Thus, you can enter patterns
718(@code{hi-lock-write-interactive-patterns}). Users familiar with Font 722interactively with @code{highlight-regexp}, store them into the file
719Lock keywords might interactively enter patterns 723with @code{hi-lock-write-interactive-patterns}, edit them (perhaps
720(@code{highlight-regexp}), write them into the file
721(@code{hi-lock-write-interactive-patterns}), edit them, perhaps
722including different faces for different parenthesized parts of the 724including different faces for different parenthesized parts of the
723match, and finally use this command 725match), and finally use this command (@code{hi-lock-find-patterns}) to
724(@code{hi-lock-write-interactive-patterns}) to have Hi Lock highlight 726have Hi Lock highlight the edited patterns.
725them. 727
728@vindex hi-lock-file-patterns-policy
729The variable @code{hi-lock-file-patterns-policy} controls whether Hi
730Lock mode should automatically extract and highlight patterns found in
731a file when it is visited. Its value can be @code{nil} (never
732highlight), @code{t} (highlight the patterns), @code{ask} (query the
733user), or a function. If it is a function,
734@code{hi-lock-find-patterns} calls it with the patterns as argument;
735if the function returns non-@code{nil}, the patterns are used. The
736default is @code{nil}. Note that patterns are always highlighted if
737you call @code{hi-lock-find-patterns} directly, regardless of the
738value of this variable.
726 739
727This command does nothing if the current major mode's symbol is a member 740@vindex hi-lock-exclude-modes
728of the list @code{hi-lock-exclude-modes}. 741Also, @code{hi-lock-find-patterns} does nothing if the current major
742mode's symbol is a member of the list @code{hi-lock-exclude-modes}.
729@end table 743@end table
730 744
731@node Fringes 745@node Fringes
diff --git a/man/doclicense.texi b/man/doclicense.texi
index 14fb9926897..83e9d6b5579 100644
--- a/man/doclicense.texi
+++ b/man/doclicense.texi
@@ -1,6 +1,4 @@
1@c -*-texinfo-*- 1@c -*-texinfo-*-
2@node GNU Free Documentation License, Emacs Invocation, Copying, Top
3@appendix GNU Free Documentation License
4@center Version 1.2, November 2002 2@center Version 1.2, November 2002
5 3
6@display 4@display
diff --git a/man/ebrowse.texi b/man/ebrowse.texi
index 25262625e92..c04f99f954c 100644
--- a/man/ebrowse.texi
+++ b/man/ebrowse.texi
@@ -42,8 +42,6 @@ license to the document, as described in section 6 of the license.
42@title Ebrowse User's Manual 42@title Ebrowse User's Manual
43@sp 4 43@sp 4
44@subtitle Ebrowse/Emacs 44@subtitle Ebrowse/Emacs
45@sp 1
46@subtitle May 2000
47@sp 5 45@sp 5
48@author Gerd Moellmann 46@author Gerd Moellmann
49@page 47@page
@@ -65,6 +63,7 @@ Ebrowse.
65* Tree Buffers:: Traversing class hierarchies 63* Tree Buffers:: Traversing class hierarchies
66* Member Buffers:: Looking at member information 64* Member Buffers:: Looking at member information
67* Tags-like Functions:: Finding members from source files 65* Tags-like Functions:: Finding members from source files
66* GNU Free Documentation License:: The license for this documentation.
68* Concept Index:: An entry for each concept defined 67* Concept Index:: An entry for each concept defined
69@end menu 68@end menu
70 69
@@ -1240,7 +1239,7 @@ This key is bound to @code{describe-mode}.
1240@comment *** TAGS LIKE FUNCTIONS 1239@comment *** TAGS LIKE FUNCTIONS
1241@comment ************************************************************** 1240@comment **************************************************************
1242 1241
1243@node Tags-like Functions, Concept Index, Member Buffers, Top 1242@node Tags-like Functions, GNU Free Documentation License, Member Buffers, Top
1244@comment node-name, next, previous, up 1243@comment node-name, next, previous, up
1245@chapter Tags-like Functions 1244@chapter Tags-like Functions
1246 1245
@@ -1438,7 +1437,7 @@ The command @kbd{C-c C-m @key{TAB}} completes the symbol in front of point.
1438 1437
1439 1438
1440 1439
1441@node Member Buffer Display, , Symbol Completion, Tags-like Functions 1440@node Member Buffer Display, , Symbol Completion, Tags-like Functions
1442@section Quick Member Display 1441@section Quick Member Display
1443@cindex member buffer, for member at point 1442@cindex member buffer, for member at point
1444 1443
@@ -1446,7 +1445,12 @@ You can quickly display a member buffer containing the member the cursor
1446in on with the command @kbd{C-c C-m m}. 1445in on with the command @kbd{C-c C-m m}.
1447 1446
1448 1447
1449@node Concept Index, , Tags-like Functions, Top 1448@node GNU Free Documentation License, Concept Index, Tags-like Functions, Top
1449@appendix GNU Free Documentation License
1450@include doclicense.texi
1451
1452
1453@node Concept Index, , GNU Free Documentation License, Top
1450@unnumbered Concept Index 1454@unnumbered Concept Index
1451@printindex cp 1455@printindex cp
1452 1456
diff --git a/man/ediff.texi b/man/ediff.texi
index 52823cdb8fb..6bb2605e0c6 100644
--- a/man/ediff.texi
+++ b/man/ediff.texi
@@ -56,9 +56,9 @@ license to the document, as described in section 6 of the license.
56@titlepage 56@titlepage
57@title Ediff User's Manual 57@title Ediff User's Manual
58@sp 4 58@sp 4
59@subtitle Ediff version 2.76.1 59@subtitle Ediff version 2.81.1
60@sp 1 60@sp 1
61@subtitle January 2002 61@subtitle April 2007
62@sp 5 62@sp 5
63@author Michael Kifer 63@author Michael Kifer
64@page 64@page
@@ -80,6 +80,7 @@ license to the document, as described in section 6 of the license.
80* Remote and Compressed Files:: You may want to know about this. 80* Remote and Compressed Files:: You may want to know about this.
81* Customization:: How to make Ediff work the way YOU want. 81* Customization:: How to make Ediff work the way YOU want.
82* Credits:: Thanks to those who helped. 82* Credits:: Thanks to those who helped.
83* GNU Free Documentation License:: The license for this documentation.
83* Index:: 84* Index::
84@end menu 85@end menu
85 86
@@ -2411,7 +2412,7 @@ non-@code{nil} only if Ediff uses the multiframe display, i.e., when
2411the control buffer is in its own frame. 2412the control buffer is in its own frame.
2412@end table 2413@end table
2413 2414
2414@node Credits, Index, Customization, Top 2415@node Credits, GNU Free Documentation License, Customization, Top
2415@chapter Credits 2416@chapter Credits
2416 2417
2417Ediff was written by Michael Kifer <kifer@@cs.stonybrook.edu>. It was inspired 2418Ediff was written by Michael Kifer <kifer@@cs.stonybrook.edu>. It was inspired
@@ -2527,7 +2528,12 @@ Ilya Zakharevich (ilya@@math.ohio-state.edu),
2527Eli Zaretskii (eliz@@is.elta.co.il) 2528Eli Zaretskii (eliz@@is.elta.co.il)
2528@end example 2529@end example
2529 2530
2530@node Index, , Credits, Top 2531@node GNU Free Documentation License, Index, Credits, Top
2532@appendix GNU Free Documentation License
2533@include doclicense.texi
2534
2535
2536@node Index, , GNU Free Documentation License, Top
2531@unnumbered Index 2537@unnumbered Index
2532@printindex cp 2538@printindex cp
2533 2539
diff --git a/man/emacs-mime.texi b/man/emacs-mime.texi
index a805b3f581b..56f130b67fb 100644
--- a/man/emacs-mime.texi
+++ b/man/emacs-mime.texi
@@ -75,6 +75,7 @@ read at least RFC2045 and RFC2047.
75* Interface Functions:: An abstraction over the basic functions. 75* Interface Functions:: An abstraction over the basic functions.
76* Basic Functions:: Utility and basic parsing functions. 76* Basic Functions:: Utility and basic parsing functions.
77* Standards:: A summary of RFCs and working documents used. 77* Standards:: A summary of RFCs and working documents used.
78* GNU Free Documentation License:: The license for this documentation.
78* Index:: Function and variable index. 79* Index:: Function and variable index.
79@end menu 80@end menu
80 81
@@ -1805,6 +1806,9 @@ Documentation of the text/plain format parameter for flowed text.
1805 1806
1806@end table 1807@end table
1807 1808
1809@node GNU Free Documentation License
1810@chapter GNU Free Documentation License
1811@include doclicense.texi
1808 1812
1809@node Index 1813@node Index
1810@chapter Index 1814@chapter Index
diff --git a/man/emacs.texi b/man/emacs.texi
index 800532edf2f..bf18bfb6f02 100644
--- a/man/emacs.texi
+++ b/man/emacs.texi
@@ -5,7 +5,7 @@
5 5
6@c The edition number appears in several places in this file 6@c The edition number appears in several places in this file
7@set EDITION Sixteenth 7@set EDITION Sixteenth
8@set EMACSVER 22.0.97 8@set EMACSVER 22.0.98
9 9
10@copying 10@copying
11This is the @value{EDITION} edition of the @cite{GNU Emacs Manual}, 11This is the @value{EDITION} edition of the @cite{GNU Emacs Manual},
@@ -39,15 +39,20 @@ Software Foundation raise funds for GNU development.''
39@c in general, keep the following line commented out, unless doing a 39@c in general, keep the following line commented out, unless doing a
40@c copy of this manual that will be published. the manual should go 40@c copy of this manual that will be published. the manual should go
41@c onto the distribution in the full, 8.5 x 11" size. 41@c onto the distribution in the full, 8.5 x 11" size.
42@set smallbook
42 43
44@ifset smallbook
43@smallbook 45@smallbook
46@end ifset
44 47
45@c per rms and peterb, use 10pt fonts for the main text, mostly to 48@c per rms and peterb, use 10pt fonts for the main text, mostly to
46@c save on paper cost. Also do not declare @setchapternewpage odd. 49@c save on paper cost. Also do not declare @setchapternewpage odd.
47@c Do this inside @tex for now, so current makeinfo does not complain. 50@c Do this inside @tex for now, so current makeinfo does not complain.
48@tex 51@tex
52@ifset smallbook
49@fonttextsize 10 53@fonttextsize 10
50\global\hbadness=6000 % don't worry about not-too-underfull boxes 54@end ifset
55\global\hbadness=6666 % don't worry about not-too-underfull boxes
51@end tex 56@end tex
52 57
53@defcodeindex op 58@defcodeindex op
@@ -217,7 +222,6 @@ Advanced Features
217 "recursive editing level". 222 "recursive editing level".
218* Emulation:: Emulating some other editors with Emacs. 223* Emulation:: Emulating some other editors with Emacs.
219* Hyperlinking:: Following links in buffers. 224* Hyperlinking:: Following links in buffers.
220* Thumbnails:: Browsing images using thumbnails.
221* Dissociated Press:: Dissociating text for fun. 225* Dissociated Press:: Dissociating text for fun.
222* Amusements:: Various games and hacks. 226* Amusements:: Various games and hacks.
223* Customization:: Modifying the behavior of Emacs. 227* Customization:: Modifying the behavior of Emacs.
@@ -796,6 +800,7 @@ Dired, the Directory Editor
796* Dired Updating:: Discarding lines for files of no interest. 800* Dired Updating:: Discarding lines for files of no interest.
797* Dired and Find:: Using `find' to choose the files for Dired. 801* Dired and Find:: Using `find' to choose the files for Dired.
798* Wdired:: Operating on files by editing the Dired buffer. 802* Wdired:: Operating on files by editing the Dired buffer.
803* Image-Dired:: Viewing image thumbnails in Dired
799* Misc Dired Features:: Various other features. 804* Misc Dired Features:: Various other features.
800 805
801The Calendar and the Diary 806The Calendar and the Diary
@@ -1683,7 +1688,10 @@ consider it more useful to permit linking proprietary applications with the
1683library. If this is what you want to do, use the GNU Lesser General 1688library. If this is what you want to do, use the GNU Lesser General
1684Public License instead of this License. 1689Public License instead of this License.
1685 1690
1691@node GNU Free Documentation License, Emacs Invocation, Copying, Top
1692@appendix GNU Free Documentation License
1686@include doclicense.texi 1693@include doclicense.texi
1694
1687@include cmdargs.texi 1695@include cmdargs.texi
1688@include xresources.texi 1696@include xresources.texi
1689 1697
diff --git a/man/erc.texi b/man/erc.texi
index 3f9f506bef8..72561b33072 100644
--- a/man/erc.texi
+++ b/man/erc.texi
@@ -20,7 +20,14 @@ Copyright @copyright{} 2005, 2006, 2007 Free Software Foundation, Inc.
20Permission is granted to copy, distribute and/or modify this document 20Permission is granted to copy, distribute and/or modify this document
21under the terms of the GNU Free Documentation License, Version 1.2 or 21under the terms of the GNU Free Documentation License, Version 1.2 or
22any later version published by the Free Software Foundation; with no 22any later version published by the Free Software Foundation; with no
23Invariant Sections, Front-Cover texts, or Back-Cover Texts. 23Invariant Sections, Front-Cover texts, or Back-Cover Texts. A copy of
24the license is included in the section entitled ``GNU Free
25Documentation License'' in the Emacs manual.
26
27This document is part of a collection distributed under the GNU Free
28Documentation License. If you want to distribute this document
29separately from the collection, you can do so by adding a copy of the
30license to the document, as described in section 6 of the license.
24 31
25All Emacs Lisp code contained in this document may be used, distributed, 32All Emacs Lisp code contained in this document may be used, distributed,
26and modified without restriction. 33and modified without restriction.
@@ -61,6 +68,7 @@ and modified without restriction.
61* Advanced Usage:: Cool ways of using ERC. 68* Advanced Usage:: Cool ways of using ERC.
62* Getting Help and Reporting Bugs:: 69* Getting Help and Reporting Bugs::
63* History:: The history of ERC. 70* History:: The history of ERC.
71* GNU Free Documentation License:: The license for this documentation.
64* Concept Index:: Search for terms. 72* Concept Index:: Search for terms.
65 73
66@detailmenu 74@detailmenu
@@ -939,7 +947,7 @@ questions.
939@end itemize 947@end itemize
940 948
941 949
942@node History, Concept Index, Getting Help and Reporting Bugs, Top 950@node History, GNU Free Documentation License, Getting Help and Reporting Bugs, Top
943@comment node-name, next, previous, up 951@comment node-name, next, previous, up
944@chapter History 952@chapter History
945@cindex history, of ERC 953@cindex history, of ERC
@@ -1001,7 +1009,11 @@ our revision control system. Our mailing list address changed as well.
1001 1009
1002@end itemize 1010@end itemize
1003 1011
1004@node Concept Index, , History, Top 1012@node GNU Free Documentation License, Concept Index, History, Top
1013@appendix GNU Free Documentation License
1014@include doclicense.texi
1015
1016@node Concept Index, , GNU Free Documentation License, Top
1005@comment node-name, next, previous, up 1017@comment node-name, next, previous, up
1006@unnumbered Index 1018@unnumbered Index
1007 1019
diff --git a/man/eshell.texi b/man/eshell.texi
index 47f76a1d69a..3a4b705d2c9 100644
--- a/man/eshell.texi
+++ b/man/eshell.texi
@@ -89,6 +89,7 @@ handling the sort of tasks accomplished by those tools.
89* Extension modules:: 89* Extension modules::
90* Extras and Goodies:: 90* Extras and Goodies::
91* Bugs and ideas:: Known problems, and future ideas. 91* Bugs and ideas:: Known problems, and future ideas.
92* GNU Free Documentation License:: The license for this documentation.
92* Concept Index:: 93* Concept Index::
93* Function and Variable Index:: 94* Function and Variable Index::
94* Key Index:: 95* Key Index::
@@ -922,6 +923,10 @@ Since it keeps the cursor up where the command was invoked.
922 923
923@end table 924@end table
924 925
926@node GNU Free Documentation License
927@appendix GNU Free Documentation License
928@include doclicense.texi
929
925@node Concept Index 930@node Concept Index
926@unnumbered Concept Index 931@unnumbered Concept Index
927 932
diff --git a/man/eudc.texi b/man/eudc.texi
index 08c02131f3e..7a8dbbee524 100644
--- a/man/eudc.texi
+++ b/man/eudc.texi
@@ -70,6 +70,7 @@ LDAP or the CCSO white pages directory system (PH/QI)
70* Installation:: How to install EUDC 70* Installation:: How to install EUDC
71* Usage:: The various usage possibilities explained 71* Usage:: The various usage possibilities explained
72* Credits:: Who's done what 72* Credits:: Who's done what
73* GNU Free Documentation License:: The license for this documentation.
73* Command and Function Index:: 74* Command and Function Index::
74* Variables Index:: 75* Variables Index::
75@end menu 76@end menu
@@ -949,7 +950,7 @@ Update all EUDC variables according to their local settings.
949 950
950 951
951 952
952@node Credits, Command and Function Index, Usage, Top 953@node Credits, GNU Free Documentation License, Usage, Top
953@comment node-name, next, previous, up 954@comment node-name, next, previous, up
954@chapter Credits 955@chapter Credits
955 956
@@ -959,7 +960,11 @@ same author.
959Thanks to Soren Dayton for his suggestions, his enthusiasm and his help 960Thanks to Soren Dayton for his suggestions, his enthusiasm and his help
960in testing and proofreading the code and docs of @file{ph.el}. 961in testing and proofreading the code and docs of @file{ph.el}.
961 962
962@node Command and Function Index, Variables Index, Credits, Top 963@node GNU Free Documentation License, Command and Function Index, Credits, Top
964@appendix GNU Free Documentation License
965@include doclicense.texi
966
967@node Command and Function Index, Variables Index, GNU Free Documentation License, Top
963@comment node-name, next, previous, up 968@comment node-name, next, previous, up
964@unnumbered Command and Function Index 969@unnumbered Command and Function Index
965 970
diff --git a/man/faq.texi b/man/faq.texi
index 781d7b5ce56..787a85443fc 100644
--- a/man/faq.texi
+++ b/man/faq.texi
@@ -1211,8 +1211,8 @@ indicated in the source buffer.
1211@item 1211@item
1212@cindex New modes 1212@cindex New modes
1213Many new modes and packages have been included in Emacs, such as Calc, 1213Many new modes and packages have been included in Emacs, such as Calc,
1214TRAMP, URL, IDO, CUA, ERC, rcirc, Table, Tumme, SES, Ruler, Org, PGG, 1214TRAMP, URL, IDO, CUA, ERC, rcirc, Table, Image-Dired, SES, Ruler, Org,
1215Flymake, Password, Printing, Reveal, wdired, t-mouse, longlines, 1215PGG, Flymake, Password, Printing, Reveal, wdired, t-mouse, longlines,
1216savehist, Conf mode, Python mode, DNS mode, etc. 1216savehist, Conf mode, Python mode, DNS mode, etc.
1217 1217
1218@cindex Multilingual Environment 1218@cindex Multilingual Environment
diff --git a/man/files.texi b/man/files.texi
index 49c310452b4..16acf241433 100644
--- a/man/files.texi
+++ b/man/files.texi
@@ -1153,13 +1153,14 @@ recover are present in Emacs buffers. You should then save them. Only
1153this---saving them---updates the files themselves. 1153this---saving them---updates the files themselves.
1154 1154
1155@vindex auto-save-list-file-prefix 1155@vindex auto-save-list-file-prefix
1156 Emacs records interrupted sessions for later recovery in files named 1156 Emacs records information about interrupted sessions for later
1157recovery in files named
1157@file{~/.emacs.d/auto-save-list/.saves-@var{pid}-@var{hostname}}. All 1158@file{~/.emacs.d/auto-save-list/.saves-@var{pid}-@var{hostname}}. All
1158of this name except @file{@var{pid}-@var{hostname}} comes from the 1159of this name except the @file{@var{pid}-@var{hostname}} part comes
1159value of @code{auto-save-list-file-prefix}. You can record sessions 1160from the value of @code{auto-save-list-file-prefix}. You can record
1160in a different place by customizing that variable. If you set 1161sessions in a different place by customizing that variable. If you
1161@code{auto-save-list-file-prefix} to @code{nil} in your @file{.emacs} 1162set @code{auto-save-list-file-prefix} to @code{nil} in your
1162file, sessions are not recorded for recovery. 1163@file{.emacs} file, sessions are not recorded for recovery.
1163 1164
1164@node File Aliases 1165@node File Aliases
1165@section File Name Aliases 1166@section File Name Aliases
@@ -2582,6 +2583,8 @@ requires the appropriate uncompression program.
2582 A separate but similar Archive mode is used for archives produced by 2583 A separate but similar Archive mode is used for archives produced by
2583the programs @code{arc}, @code{jar}, @code{lzh}, @code{zip}, and 2584the programs @code{arc}, @code{jar}, @code{lzh}, @code{zip}, and
2584@code{zoo}, which have extensions corresponding to the program names. 2585@code{zoo}, which have extensions corresponding to the program names.
2586Archive mode also works for those @code{exe} files that are
2587self-extracting executables.
2585 2588
2586 The key bindings of Archive mode are similar to those in Tar mode, 2589 The key bindings of Archive mode are similar to those in Tar mode,
2587with the addition of the @kbd{m} key which marks a file for subsequent 2590with the addition of the @kbd{m} key which marks a file for subsequent
@@ -2815,13 +2818,8 @@ works only when Emacs can display the specific image type.
2815 2818
2816@findex thumbs-mode 2819@findex thumbs-mode
2817@findex mode, thumbs 2820@findex mode, thumbs
2818 Thumbs mode is a major mode for viewing directories containing many 2821 See also the Image-Dired package (@pxref{Image-Dired}) for viewing
2819image files. To use it, type @kbd{M-x thumbs} and specify the 2822images as thumbnails.
2820directory to view. The images in that directory will be displayed in
2821a @samp{Thumbs} buffer as @dfn{thumbnails}; type @kbd{RET} on a
2822thumbnail to view the full-size image. Thumbs mode requires the
2823@file{convert} program, which is part of the ImageMagick software
2824package.
2825 2823
2826@node Filesets 2824@node Filesets
2827@section Filesets 2825@section Filesets
diff --git a/man/flymake.texi b/man/flymake.texi
index 4d6b8303f4a..16947d7f2de 100644
--- a/man/flymake.texi
+++ b/man/flymake.texi
@@ -44,6 +44,7 @@ license to the document, as described in section 6 of the license.
44@author Pavel Kobiakov(@email{pk_at_work@@yahoo.com}) 44@author Pavel Kobiakov(@email{pk_at_work@@yahoo.com})
45@page 45@page
46@vskip 0pt plus 1filll 46@vskip 0pt plus 1filll
47@insertcopying
47@end titlepage 48@end titlepage
48 49
49@contents 50@contents
@@ -59,6 +60,7 @@ license to the document, as described in section 6 of the license.
59* Using Flymake:: 60* Using Flymake::
60* Configuring Flymake:: 61* Configuring Flymake::
61* Flymake Implementation:: 62* Flymake Implementation::
63* GNU Free Documentation License::
62* Index:: 64* Index::
63@end menu 65@end menu
64 66
@@ -744,6 +746,10 @@ Flymake also provides an alternative command for starting compilation,
744It just kills all the active syntax check processes before calling 746It just kills all the active syntax check processes before calling
745@code{compile}. 747@code{compile}.
746 748
749@node GNU Free Documentation License
750@appendix GNU Free Documentation License
751@include doclicense.texi
752
747@node Index 753@node Index
748@unnumbered Index 754@unnumbered Index
749 755
diff --git a/man/forms.texi b/man/forms.texi
index 46210dc8e41..4114453df6c 100644
--- a/man/forms.texi
+++ b/man/forms.texi
@@ -53,9 +53,9 @@ license to the document, as described in section 6 of the license.
53@sp 4 53@sp 4
54@center Forms-Mode version 2 54@center Forms-Mode version 2
55@sp 1 55@sp 1
56@center for GNU Emacs 20.1 56@center for GNU Emacs 22.1
57@sp 1 57@sp 1
58@center June 1997 58@center April 2007
59@sp 5 59@sp 5
60@center Johan Vromans 60@center Johan Vromans
61@center @i{jvromans@@squirrel.nl} 61@center @i{jvromans@@squirrel.nl}
@@ -91,6 +91,7 @@ how to present it.
91* Miscellaneous:: Forms mode messages and other remarks. 91* Miscellaneous:: Forms mode messages and other remarks.
92* Error Messages:: List of error messages forms mode can produce. 92* Error Messages:: List of error messages forms mode can produce.
93* Long Example:: A more complex control file example. 93* Long Example:: A more complex control file example.
94* GNU Free Documentation License:: The license for this documentation.
94* Credits:: Thanks everyone. 95* Credits:: Thanks everyone.
95* Index:: Index to this manual. 96* Index:: Index to this manual.
96@end menu 97@end menu
@@ -968,6 +969,10 @@ mode'' by Paul Davis at Schlumberger Cambridge Research
968None of this would have been possible without GNU Emacs of the Free 969None of this would have been possible without GNU Emacs of the Free
969Software Foundation. Thanks, Richard! 970Software Foundation. Thanks, Richard!
970 971
972@node GNU Free Documentation License
973@appendix GNU Free Documentation License
974@include doclicense.texi
975
971@node Index 976@node Index
972@unnumbered Index 977@unnumbered Index
973@printindex cp 978@printindex cp
diff --git a/man/frames.texi b/man/frames.texi
index 965ccb0a7b0..a45b582b455 100644
--- a/man/frames.texi
+++ b/man/frames.texi
@@ -515,6 +515,8 @@ frame. This runs @code{find-file-read-only-other-frame}.
515 515
516@cindex default-frame-alist 516@cindex default-frame-alist
517@cindex initial-frame-alist 517@cindex initial-frame-alist
518@cindex face customization, in @file{~/.emacs}
519@cindex color customization, in @file{~/.emacs}
518 You can control the appearance of new frames you create by setting the 520 You can control the appearance of new frames you create by setting the
519frame parameters in @code{default-frame-alist}. You can use the 521frame parameters in @code{default-frame-alist}. You can use the
520variable @code{initial-frame-alist} to specify parameters that affect 522variable @code{initial-frame-alist} to specify parameters that affect
@@ -538,6 +540,11 @@ Here's a similar example for specifying a foreground color:
538(add-to-list 'default-frame-alist '(foreground-color . "blue")) 540(add-to-list 'default-frame-alist '(foreground-color . "blue"))
539@end example 541@end example
540 542
543@noindent
544By putting such customizations in your @file{~/.emacs} init file, you
545can control the appearance of all the frames Emacs creates, including
546the initial one.
547
541@node Frame Commands 548@node Frame Commands
542@section Frame Commands 549@section Frame Commands
543 550
@@ -874,7 +881,7 @@ feature, use @kbd{M-x mouse-wheel-mode}.
874@vindex mouse-wheel-follow-mouse 881@vindex mouse-wheel-follow-mouse
875@vindex mouse-wheel-scroll-amount 882@vindex mouse-wheel-scroll-amount
876@vindex mouse-wheel-progressive-speed 883@vindex mouse-wheel-progressive-speed
877 The variables @code{mouse-wheel-follow-mouse} and 884 The two variables @code{mouse-wheel-follow-mouse} and
878@code{mouse-wheel-scroll-amount} determine where and by how much 885@code{mouse-wheel-scroll-amount} determine where and by how much
879buffers are scrolled. The variable 886buffers are scrolled. The variable
880@code{mouse-wheel-progressive-speed} determines whether the scroll 887@code{mouse-wheel-progressive-speed} determines whether the scroll
diff --git a/man/glossary.texi b/man/glossary.texi
index 2a55b49645b..d082e6ec077 100644
--- a/man/glossary.texi
+++ b/man/glossary.texi
@@ -601,6 +601,10 @@ have. To make a character Hyper, type it while holding down the
601@kbd{Hyper-} (usually written @kbd{H-} for short). @xref{User Input, 601@kbd{Hyper-} (usually written @kbd{H-} for short). @xref{User Input,
602Hyper}. 602Hyper}.
603 603
604@item Iff
605``Iff'' means ``if and only if.'' This terminology comes from
606mathematics.
607
604@item Inbox 608@item Inbox
605An inbox is a file in which mail is delivered by the operating system. 609An inbox is a file in which mail is delivered by the operating system.
606Rmail transfers mail from inboxes to Rmail files (q.v.@:) in which the 610Rmail transfers mail from inboxes to Rmail files (q.v.@:) in which the
diff --git a/man/gnu.texi b/man/gnu.texi
index 3b8a8e17f0a..1cf85f41c3c 100644
--- a/man/gnu.texi
+++ b/man/gnu.texi
@@ -41,10 +41,9 @@ Since that time, we have learned about certain common misunderstandings
41that different wording could help avoid. Footnotes added in 1993 help 41that different wording could help avoid. Footnotes added in 1993 help
42clarify these points. 42clarify these points.
43 43
44For up-to-date information about the available GNU software, please 44For up-to-date information about available GNU software, please see
45see @uref{http://www.gnu.org}. For software tasks to work on, see 45our web site, @uref{http://www.gnu.org}. For software tasks and other
46@uref{http://savannah.gnu.org/projects/tasklist}. For other ways to 46ways to contribute, see @uref{http://www.gnu.org/help}.
47contribute, see @uref{http://www.gnu.org/help}.
48@end quotation 47@end quotation
49 48
50@unnumberedsec What's GNU? Gnu's Not Unix! 49@unnumberedsec What's GNU? Gnu's Not Unix!
@@ -503,10 +502,11 @@ The sale of teaching, hand-holding and maintenance services could also
503employ programmers. 502employ programmers.
504 503
505People with new ideas could distribute programs as 504People with new ideas could distribute programs as
506freeware@footnote{Subsequently we have learned to distinguish between 505freeware@footnote{Subsequently we have discovered the need to
507"free software" and "freeware". The term "freeware" means software 506distinguish between ``free software'' and ``freeware''. The term
508you are free to redistribute, but usually you are not free to study 507``freeware'' means software you are free to redistribute, but usually
509and change the source code, so most of it is not free software. See 508you are not free to study and change the source code, so most of it is
509not free software. See
510@uref{http://www.gnu.org/philosophy/words-to-avoid.html} for more 510@uref{http://www.gnu.org/philosophy/words-to-avoid.html} for more
511explanation.}, asking for donations from satisfied users, or selling 511explanation.}, asking for donations from satisfied users, or selling
512hand-holding services. I have met people who are already working this 512hand-holding services. I have met people who are already working this
diff --git a/man/gnus.texi b/man/gnus.texi
index 7e5ab5a5342..48ecd630265 100644
--- a/man/gnus.texi
+++ b/man/gnus.texi
@@ -402,6 +402,7 @@ the program.
402* Various:: General purpose settings. 402* Various:: General purpose settings.
403* The End:: Farewell and goodbye. 403* The End:: Farewell and goodbye.
404* Appendices:: Terminology, Emacs intro, @acronym{FAQ}, History, Internals. 404* Appendices:: Terminology, Emacs intro, @acronym{FAQ}, History, Internals.
405* GNU Free Documentation License:: The license for this documentation.
405* Index:: Variable, function and concept index. 406* Index:: Variable, function and concept index.
406* Key Index:: Key Index. 407* Key Index:: Key Index.
407 408
@@ -29028,6 +29029,10 @@ former). The manual is unambiguous, but it can be confusing.
29028@page 29029@page
29029@include gnus-faq.texi 29030@include gnus-faq.texi
29030 29031
29032@node GNU Free Documentation License
29033@chapter GNU Free Documentation License
29034@include doclicense.texi
29035
29031@node Index 29036@node Index
29032@chapter Index 29037@chapter Index
29033@printindex cp 29038@printindex cp
diff --git a/man/idlwave.texi b/man/idlwave.texi
index 49ee0b7a110..94f59249892 100644
--- a/man/idlwave.texi
+++ b/man/idlwave.texi
@@ -106,6 +106,7 @@ Interactive Data Language (IDL), and running IDL as an inferior shell.
106* Configuration Examples:: The user is king 106* Configuration Examples:: The user is king
107* Windows and MacOS:: What still works, and how 107* Windows and MacOS:: What still works, and how
108* Troubleshooting:: When good computers turn bad 108* Troubleshooting:: When good computers turn bad
109* GNU Free Documentation License:: The license for this documentation.
109* Index:: Fast access 110* Index:: Fast access
110 111
111@detailmenu 112@detailmenu
@@ -4096,7 +4097,7 @@ help can skip the browser and use the HTMLHelp functionality directly.
4096@html 4097@html
4097<A NAME="TROUBLE"></A> 4098<A NAME="TROUBLE"></A>
4098@end html 4099@end html
4099@node Troubleshooting, Index, Windows and MacOS, Top 4100@node Troubleshooting, GNU Free Documentation License, Windows and MacOS, Top
4100@appendix Troubleshooting 4101@appendix Troubleshooting
4101@cindex Troubleshooting 4102@cindex Troubleshooting
4102 4103
@@ -4302,7 +4303,11 @@ IDLWAVE is @samp{fsf-compat, xemacs-base, mail-lib}.
4302 4303
4303@end enumerate 4304@end enumerate
4304 4305
4305@node Index, , Troubleshooting, Top 4306@node GNU Free Documentation License, Index, Troubleshooting, Top
4307@appendix GNU Free Documentation License
4308@include doclicense.texi
4309
4310@node Index, , GNU Free Documentation License, Top
4306@unnumbered Index 4311@unnumbered Index
4307@printindex cp 4312@printindex cp
4308 4313
diff --git a/man/killing.texi b/man/killing.texi
index 3903db82166..b626bfab385 100644
--- a/man/killing.texi
+++ b/man/killing.texi
@@ -551,13 +551,13 @@ Insert blank space to fill the space of the region-rectangle
551(@code{open-rectangle}). This pushes the previous contents of the 551(@code{open-rectangle}). This pushes the previous contents of the
552region-rectangle rightward. 552region-rectangle rightward.
553@item C-x r c 553@item C-x r c
554Clear the region-rectangle by replacing its contents with spaces 554Clear the region-rectangle by replacing all of its contents with spaces
555(@code{clear-rectangle}). 555(@code{clear-rectangle}).
556@item M-x delete-whitespace-rectangle 556@item M-x delete-whitespace-rectangle
557Delete whitespace in each of the lines on the specified rectangle, 557Delete whitespace in each of the lines on the specified rectangle,
558starting from the left edge column of the rectangle. 558starting from the left edge column of the rectangle.
559@item C-x r t @var{string} @key{RET} 559@item C-x r t @var{string} @key{RET}
560Replace rectangle contents with @var{string} on each line. 560Replace rectangle contents with @var{string} on each line
561(@code{string-rectangle}). 561(@code{string-rectangle}).
562@item M-x string-insert-rectangle @key{RET} @var{string} @key{RET} 562@item M-x string-insert-rectangle @key{RET} @var{string} @key{RET}
563Insert @var{string} on each line of the rectangle. 563Insert @var{string} on each line of the rectangle.
diff --git a/man/macos.texi b/man/macos.texi
index c38c03817ab..28d7f43df8e 100644
--- a/man/macos.texi
+++ b/man/macos.texi
@@ -319,8 +319,9 @@ by the name:
319-apple-monaco-medium-r-normal--12-*-*-*-*-*-iso10646-1 319-apple-monaco-medium-r-normal--12-*-*-*-*-*-iso10646-1
320@end example 320@end example
321 321
322Note that it must be specified in a format containing 14 @samp{-}s 322Note that these names must be specified using a format containing all
323(e.g., not by @samp{-apple-monaco-medium-r-normal--12-*-iso10646-1}), 32314 @samp{-}s (not by
324@samp{-apple-monaco-medium-r-normal--12-*-iso10646-1}, for instance),
324because every @acronym{ATSUI}-compatible font is a scalable one. 325because every @acronym{ATSUI}-compatible font is a scalable one.
325 326
326 QuickDraw Text fonts have maker name @code{apple} and various charset 327 QuickDraw Text fonts have maker name @code{apple} and various charset
@@ -340,7 +341,7 @@ font for Latin-1 characters introduces wrong glyphs.
340 341
341 Native Apple Traditional Chinese, Simplified Chinese, Japanese, 342 Native Apple Traditional Chinese, Simplified Chinese, Japanese,
342Korean, Central European, Cyrillic, Symbol, and Dingbats fonts have 343Korean, Central European, Cyrillic, Symbol, and Dingbats fonts have
343charsets @samp{big5-0}, @samp{gb2312.1980-0}, 344the charsets @samp{big5-0}, @samp{gb2312.1980-0},
344@samp{jisx0208.1983-sjis} and @samp{jisx0201.1976-0}, 345@samp{jisx0208.1983-sjis} and @samp{jisx0201.1976-0},
345@samp{ksc5601.1989-0}, @samp{mac-centraleurroman}, 346@samp{ksc5601.1989-0}, @samp{mac-centraleurroman},
346@samp{mac-cyrillic}, @samp{mac-symbol}, and @samp{mac-dingbats}, 347@samp{mac-cyrillic}, @samp{mac-symbol}, and @samp{mac-dingbats},
diff --git a/man/message.texi b/man/message.texi
index ccf44f2bade..c843d8c58d9 100644
--- a/man/message.texi
+++ b/man/message.texi
@@ -63,6 +63,7 @@ Message mode buffers.
63* Variables:: Customizing the message buffers. 63* Variables:: Customizing the message buffers.
64* Compatibility:: Making Message backwards compatible. 64* Compatibility:: Making Message backwards compatible.
65* Appendices:: More technical things. 65* Appendices:: More technical things.
66* GNU Free Documentation License:: The license for this documentation.
66* Index:: Variable, function and concept index. 67* Index:: Variable, function and concept index.
67* Key Index:: List of Message mode keys. 68* Key Index:: List of Message mode keys.
68@end menu 69@end menu
@@ -2338,6 +2339,9 @@ basis of the new @code{Cc} header, except if this header is
2338@end table 2339@end table
2339 2340
2340 2341
2342@node GNU Free Documentation License
2343@chapter GNU Free Documentation License
2344@include doclicense.texi
2341 2345
2342@node Index 2346@node Index
2343@chapter Index 2347@chapter Index
diff --git a/man/misc.texi b/man/misc.texi
index e3eca68532e..c4cdea4359d 100644
--- a/man/misc.texi
+++ b/man/misc.texi
@@ -2177,8 +2177,9 @@ also use the command @kbd{M-x scroll-all-mode} or set the variable
2177@item EDT (DEC VMS editor) 2177@item EDT (DEC VMS editor)
2178@findex edt-emulation-on 2178@findex edt-emulation-on
2179@findex edt-emulation-off 2179@findex edt-emulation-off
2180Turn on EDT emulation with @kbd{M-x edt-emulation-on}. @kbd{M-x 2180Turn on EDT emulation with the command @kbd{M-x edt-emulation-on},
2181edt-emulation-off} restores normal Emacs command bindings. 2181while @kbd{M-x edt-emulation-off} restores normal Emacs command
2182bindings.
2182 2183
2183Most of the EDT emulation commands are keypad keys, and most standard 2184Most of the EDT emulation commands are keypad keys, and most standard
2184Emacs key bindings are still available. The EDT emulation rebindings 2185Emacs key bindings are still available. The EDT emulation rebindings
@@ -2234,7 +2235,7 @@ not use it.
2234key bindings. 2235key bindings.
2235@end table 2236@end table
2236 2237
2237@node Hyperlinking, Thumbnails, Emulation, Top 2238@node Hyperlinking, Dissociated Press, Emulation, Top
2238@section Hyperlinking and Navigation Features 2239@section Hyperlinking and Navigation Features
2239 2240
2240@cindex hyperlinking 2241@cindex hyperlinking
@@ -2400,76 +2401,7 @@ Display a menu of files and URLs mentioned in current buffer, then
2400find the one you select (@code{ffap-menu}). 2401find the one you select (@code{ffap-menu}).
2401@end table 2402@end table
2402 2403
2403@node Thumbnails, Dissociated Press, Hyperlinking, Top 2404@node Dissociated Press, Amusements, Hyperlinking, Top
2404@section Viewing Images as Thumbnails
2405@cindex tumme mode
2406@cindex thumbnails
2407
2408 Tumme is a facility for browsing image files. It provides viewing
2409the images either as thumbnails or in full size, either inside Emacs
2410or through an external viewer.
2411
2412 To enter Tumme, type @kbd{M-x tumme}. It prompts for a directory;
2413specify one that has images files. This creates thumbnails for all
2414the images in that directory, and displays them all in the ``thumbnail
2415buffer.'' This takes a long time if the directory contains many image
2416files, and it asks for confirmation if the number of image files
2417exceeds @code{tumme-show-all-from-dir-max-files}.
2418
2419@kindex C-t d @r{(Tumme)}
2420@findex tumme-display-thumbs
2421 You can also enter Tumme through Dired. Mark the image files you
2422want to look at, using @kbd{m} as usual, then type @kbd{C-t d}
2423(@code{tumme-display-thumbs}). This too creates and switches to
2424a buffer containing thumbnails, corresponding to the marked files.
2425
2426 With point in the thumbnail buffer, type @kbd{RET}
2427(@code{tumme-display-thumbnail-original-image}) to display a sized
2428version of it in another window. This sizes the image to fit the
2429window. Use the arrow keys to move around in the buffer. For easy
2430browsing, type @kbd{SPC} (@code{tumme-display-next-thumbnail-original})
2431to advance and display the next image. Typing @kbd{DEL}
2432(@code{tumme-display-previous-thumbnail-original}) backs up to the
2433previous thumbnail and displays that instead.
2434
2435@vindex tumme-external-viewer
2436 To view and the image in its original size, either provide a prefix
2437argument (@kbd{C-u}) before pressing @kbd{RET}, or type @kbd{C-@key{RET}}
2438(@code{tumme-thumbnail-display-external}) to display the image in an
2439external viewer. You must first configure
2440@code{tumme-external-viewer}.
2441
2442 You can delete images through Tumme also. Type @kbd{d}
2443(@code{tumme-flag-thumb-original-file}) to flag the image file for
2444deletion in the Dired buffer. You can also delete the thumbnail image
2445from the thumbnail buffer with @kbd{C-d} (@code{tumme-delete-char}).
2446
2447 More advanced features include @dfn{image tags}, which are metadata
2448used to categorize image files. The tags are stored in a plain text
2449file configured by @code{tumme-db-file}.
2450
2451 To tag image files, mark them in the dired buffer (you can also mark
2452files in Dired from the thumbnail buffer by typing @kbd{m}) and type
2453@kbd{C-t t} (@code{tumme-tag-files}). You will be prompted for a tag.
2454To mark files having a certain tag, type @kbd{C-t f}
2455(@code{tumme-mark-tagged-files}). After marking image files with a
2456certain tag, you can use @kbd{C-t d} to view them.
2457
2458 You can also tag a file directly from the thumbnail buffer by typing
2459@kbd{t t} and you can remove a tag by typing @kbd{t r}. There is also
2460a special ``tag'' called ``comment'' for each file (it is not a tag in
2461the exact same sense as the other tags, it is handled slightly
2462different). That is used to enter a comment or description about the
2463image. You comment a file from the thumbnail buffer by typing
2464@kbd{c}. You will be prompted for a comment. Type @kbd{C-t c} to add
2465a comment from Dired (@code{tumme-dired-comment-files}).
2466
2467 Tumme also provides simple image manipulation. In the thumbnail
2468buffer, type @kbd{L} to rotate the original image 90 degrees anti
2469clockwise, and @kbd{R} to rotate it 90 degrees clockwise. This
2470rotation is lossless, and uses an external utility called JpegTRAN.
2471
2472@node Dissociated Press, Amusements, Thumbnails, Top
2473@section Dissociated Press 2405@section Dissociated Press
2474 2406
2475@findex dissociated-press 2407@findex dissociated-press
diff --git a/man/mule.texi b/man/mule.texi
index a812cf398b9..c71c820dc27 100644
--- a/man/mule.texi
+++ b/man/mule.texi
@@ -261,6 +261,9 @@ Thai, Tibetan, Turkish, UTF-8 (for a setup which prefers Unicode
261characters and files encoded in UTF-8), Ukrainian, Vietnamese, Welsh, 261characters and files encoded in UTF-8), Ukrainian, Vietnamese, Welsh,
262and Windows-1255 (for a setup which prefers Cyrillic characters and 262and Windows-1255 (for a setup which prefers Cyrillic characters and
263files encoded in Windows-1255). 263files encoded in Windows-1255).
264@tex
265\hbadness=10000\par % just avoid underfull hbox warning
266@end tex
264@end quotation 267@end quotation
265 268
266@cindex fonts for various scripts 269@cindex fonts for various scripts
diff --git a/man/newsticker.texi b/man/newsticker.texi
index 95934792a02..48d7f992667 100644
--- a/man/newsticker.texi
+++ b/man/newsticker.texi
@@ -48,6 +48,7 @@ license to the document, as described in section 6 of the license.
48@author @uref{http://de.geocities.com/ulf_jasper} 48@author @uref{http://de.geocities.com/ulf_jasper}
49@page 49@page
50@vskip 0pt plus 1filll 50@vskip 0pt plus 1filll
51@insertcopying
51@end titlepage 52@end titlepage
52 53
53@contents 54@contents
@@ -64,6 +65,7 @@ license to the document, as described in section 6 of the license.
64* Usage:: Basic newsticker instructions. 65* Usage:: Basic newsticker instructions.
65* Configuration:: Customizable newsticker settings. 66* Configuration:: Customizable newsticker settings.
66* Remarks:: Remarks about newsticker. 67* Remarks:: Remarks about newsticker.
68* GNU Free Documentation License:: The license for this documentation.
67* Index:: Variable, function, and concept index. 69* Index:: Variable, function, and concept index.
68@end menu 70@end menu
69 71
@@ -270,7 +272,9 @@ every once in a while.
270 272
271Byte-compiling newsticker.el is recommended. 273Byte-compiling newsticker.el is recommended.
272 274
273 275@node GNU Free Documentation License
276@appendix GNU Free Documentation License
277@include doclicense.texi
274 278
275@node Index 279@node Index
276@unnumbered Index 280@unnumbered Index
diff --git a/man/org.texi b/man/org.texi
index 4b484f25409..aacc2929d13 100644
--- a/man/org.texi
+++ b/man/org.texi
@@ -89,6 +89,7 @@ Software Foundation raise funds for GNU development.''
89* Miscellaneous:: All the rest which did not fit elsewhere 89* Miscellaneous:: All the rest which did not fit elsewhere
90* Extensions and Hacking:: It is possible to write add-on code 90* Extensions and Hacking:: It is possible to write add-on code
91* History and Acknowledgments:: How Org-mode came into being 91* History and Acknowledgments:: How Org-mode came into being
92* GNU Free Documentation License:: The license for this documentation.
92* Index:: The fast road to specific information 93* Index:: The fast road to specific information
93* Key Index:: Key bindings and where they are described 94* Key Index:: Key bindings and where they are described
94 95
@@ -1478,9 +1479,9 @@ described below, see @ref{Advanced features}.
1478@cindex syntax, of formulas 1479@cindex syntax, of formulas
1479 1480
1480A formula can be any algebraic expression understood by the Emacs 1481A formula can be any algebraic expression understood by the Emacs
1481@file{Calc} package. Note that @file{calc} has the slightly 1482@file{Calc} package. @b{Note that @file{calc} has the
1482non-standard convention that @samp{/} has lower precedence than 1483non-standard convention that @samp{/} has lower precedence than
1483@samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}. Before 1484@samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.} Before
1484evaluation by @code{calc-eval} (@pxref{Calling Calc from 1485evaluation by @code{calc-eval} (@pxref{Calling Calc from
1485Your Programs,calc-eval,Calling calc from Your Lisp Programs,calc,GNU 1486Your Programs,calc-eval,Calling calc from Your Lisp Programs,calc,GNU
1486Emacs Calc Manual}), 1487Emacs Calc Manual}),
@@ -6416,7 +6417,7 @@ MATCH is being ignored."
6416@end lisp 6417@end lisp
6417 6418
6418 6419
6419@node History and Acknowledgments, Index, Extensions and Hacking, Top 6420@node History and Acknowledgments, GNU Free Documentation License, Extensions and Hacking, Top
6420@appendix History and Acknowledgments 6421@appendix History and Acknowledgments
6421@cindex acknowledgments 6422@cindex acknowledgments
6422@cindex history 6423@cindex history
@@ -6567,8 +6568,12 @@ work on a tty.
6567and contributed various ideas and code snippets. 6568and contributed various ideas and code snippets.
6568@end itemize 6569@end itemize
6569 6570
6571@node GNU Free Documentation License, Index, History and Acknowledgments, Top
6572@appendix GNU Free Documentation License
6573@include doclicense.texi
6570 6574
6571@node Index, Key Index, History and Acknowledgments, Top 6575
6576@node Index, Key Index, GNU Free Documentation License, Top
6572@unnumbered Index 6577@unnumbered Index
6573 6578
6574@printindex cp 6579@printindex cp
diff --git a/man/pcl-cvs.texi b/man/pcl-cvs.texi
index e2030c5f758..93bd54eb456 100644
--- a/man/pcl-cvs.texi
+++ b/man/pcl-cvs.texi
@@ -91,6 +91,7 @@ of the various commands and major modes for further information.
91* Customization:: How you can tailor PCL-CVS to suit your needs. 91* Customization:: How you can tailor PCL-CVS to suit your needs.
92* Bugs:: Bugs (known and unknown). 92* Bugs:: Bugs (known and unknown).
93 93
94* GNU Free Documentation License:: The license for this documentation.
94* Function and Variable Index:: List of functions and variables. 95* Function and Variable Index:: List of functions and variables.
95* Concept Index:: List of concepts. 96* Concept Index:: List of concepts.
96* Key Index:: List of keystrokes. 97* Key Index:: List of keystrokes.
@@ -1363,7 +1364,7 @@ Used to highlight CVS messages.
1363@end table 1364@end table
1364 1365
1365 1366
1366@node Bugs, Function and Variable Index, Customization, Top 1367@node Bugs, GNU Free Documentation License, Customization, Top
1367@chapter Bugs (known and unknown) 1368@chapter Bugs (known and unknown)
1368@cindex Reporting bugs and ideas 1369@cindex Reporting bugs and ideas
1369@cindex Bugs, how to report them 1370@cindex Bugs, how to report them
@@ -1403,7 +1404,13 @@ output of the CVS process (which should be found in the @samp{ *cvs-tmp*}
1403buffer), and the versions of Emacs, PCL-CVS and CVS you are using. 1404buffer), and the versions of Emacs, PCL-CVS and CVS you are using.
1404@end table 1405@end table
1405 1406
1406@node Function and Variable Index, Concept Index, Bugs, Top 1407@node GNU Free Documentation License, Function and Variable Index, Bugs, Top
1408@appendix GNU Free Documentation License
1409@include doclicense.texi
1410
1411
1412
1413@node Function and Variable Index, Concept Index, GNU Free Documentation License, Top
1407@unnumbered Function and Variable Index 1414@unnumbered Function and Variable Index
1408 1415
1409This is an index of all the functions and variables documented in this 1416This is an index of all the functions and variables documented in this
diff --git a/man/pgg.texi b/man/pgg.texi
index 263169374d4..6a175db4cb9 100644
--- a/man/pgg.texi
+++ b/man/pgg.texi
@@ -52,6 +52,7 @@ user interface to encrypt, decrypt, sign, and verify MIME messages.
52* How to use:: Getting started quickly. 52* How to use:: Getting started quickly.
53* Architecture:: 53* Architecture::
54* Parsing OpenPGP packets:: 54* Parsing OpenPGP packets::
55* GNU Free Documentation License:: The license for this documentation.
55* Function Index:: 56* Function Index::
56* Variable Index:: 57* Variable Index::
57@end menu 58@end menu
@@ -474,12 +475,16 @@ and @var{end}.
474If non-@code{nil}, don't check the checksum of the packets. 475If non-@code{nil}, don't check the checksum of the packets.
475@end defvar 476@end defvar
476 477
478@node GNU Free Documentation License
479@appendix GNU Free Documentation License
480@include doclicense.texi
481
477@node Function Index 482@node Function Index
478@chapter Function Index 483@unnumbered Function Index
479@printindex fn 484@printindex fn
480 485
481@node Variable Index 486@node Variable Index
482@chapter Variable Index 487@unnumbered Variable Index
483@printindex vr 488@printindex vr
484 489
485@summarycontents 490@summarycontents
diff --git a/man/programs.texi b/man/programs.texi
index 5283a1de288..2472d7daabe 100644
--- a/man/programs.texi
+++ b/man/programs.texi
@@ -338,13 +338,13 @@ buffer.
338 338
339@findex which-function-mode 339@findex which-function-mode
340@vindex which-func-modes 340@vindex which-func-modes
341 To enable (or disable) Which Function mode, use the command @kbd{M-x 341 To either enable or disable Which Function mode, use the command
342which-function-mode}. This command is global; it applies to all 342@kbd{M-x which-function-mode}. This command is global; it applies to
343buffers, both existing ones and those yet to be created. However, it 343all buffers, both existing ones and those yet to be created. However,
344takes effect only in certain major modes, those listed in the value of 344it takes effect only in certain major modes, those listed in the value
345@code{which-func-modes}. If the value is @code{t}, then Which Function 345of @code{which-func-modes}. If the value is @code{t}, then Which
346mode applies to all major modes that know how to support it---in other 346Function mode applies to all major modes that know how to support
347words, all the major modes that support Imenu. 347it---in other words, all the major modes that support Imenu.
348 348
349@node Program Indent 349@node Program Indent
350@section Indentation for Programs 350@section Indentation for Programs
diff --git a/man/rcirc.texi b/man/rcirc.texi
index 7b2d6b1c945..6d5319cef4e 100644
--- a/man/rcirc.texi
+++ b/man/rcirc.texi
@@ -55,6 +55,7 @@ just one other user.
55* Basics:: 55* Basics::
56* Reference:: 56* Reference::
57* Hacking and Tweaking:: 57* Hacking and Tweaking::
58* GNU Free Documentation License::
58* Key Index:: 59* Key Index::
59* Variable Index:: 60* Variable Index::
60* Index:: 61* Index::
@@ -589,7 +590,7 @@ activation of this mode:
589 (rcirc-track-minor-mode 1))) 590 (rcirc-track-minor-mode 1)))
590@end example 591@end example
591 592
592@node Hacking and Tweaking, Key Index, Reference, Top 593@node Hacking and Tweaking, GNU Free Documentation License, Reference, Top
593@chapter Hacking and Tweaking 594@chapter Hacking and Tweaking
594@cindex hacking and tweaking 595@cindex hacking and tweaking
595 596
@@ -743,7 +744,12 @@ The real answer, therefore, is a @code{/reconnect} command:
743 channels)))) 744 channels))))
744@end smallexample 745@end smallexample
745 746
746@node Key Index, Variable Index, Hacking and Tweaking, Top 747@node GNU Free Documentation License, Key Index, Hacking and Tweaking, Top
748@appendix GNU Free Documentation License
749@include doclicense.texi
750
751
752@node Key Index, Variable Index, GNU Free Documentation License, Top
747@unnumbered Key Index 753@unnumbered Key Index
748@printindex ky 754@printindex ky
749 755
diff --git a/man/reftex.texi b/man/reftex.texi
index 10943c9d65e..a2c0a9689b2 100644
--- a/man/reftex.texi
+++ b/man/reftex.texi
@@ -116,6 +116,7 @@ needed.
116* Options:: How to extend and configure RefTeX. 116* Options:: How to extend and configure RefTeX.
117* Keymaps and Hooks:: For customization. 117* Keymaps and Hooks:: For customization.
118* Changes:: A List of recent changes to RefTeX. 118* Changes:: A List of recent changes to RefTeX.
119* GNU Free Documentation License:: The license for this documentation.
119 120
120The Index 121The Index
121 122
@@ -5149,7 +5150,7 @@ their own keymaps and mode hooks. See the respective sections. There
5149are many more hooks which are described in the relevant sections about 5150are many more hooks which are described in the relevant sections about
5150options for a specific part of @b{Ref@TeX{}}. 5151options for a specific part of @b{Ref@TeX{}}.
5151 5152
5152@node Changes, , Keymaps and Hooks, Top 5153@node Changes, GNU Free Documentation License, Keymaps and Hooks, Top
5153@chapter Changes 5154@chapter Changes
5154@cindex Changes 5155@cindex Changes
5155 5156
@@ -5880,11 +5881,11 @@ new labels.
5880released on 7 Jan 1997. 5881released on 7 Jan 1997.
5881@end itemize 5882@end itemize
5882 5883
5884@node GNU Free Documentation License, Index, Changes, Top
5885@appendix GNU Free Documentation License
5886@include doclicense.texi
5883 5887
5884 5888@node Index, , GNU Free Documentation License, Top
5885
5886
5887@node Index, , , Top
5888@unnumbered Index 5889@unnumbered Index
5889@printindex cp 5890@printindex cp
5890 5891
diff --git a/man/rmail.texi b/man/rmail.texi
index 16ecfee9015..7c36a31ff18 100644
--- a/man/rmail.texi
+++ b/man/rmail.texi
@@ -1382,9 +1382,10 @@ then Rmail will ask you for the password to use.
1382Otherwise, Rmail assumes no password is required. 1382Otherwise, Rmail assumes no password is required.
1383@end enumerate 1383@end enumerate
1384 1384
1385 For compatibility with previous versions, @code{rmail-pop-password} 1385 For compatibility with previous versions, the variables
1386and @code{rmail-pop-password-required} may be used instead of 1386@code{rmail-pop-password} and @code{rmail-pop-password-required} may
1387@code{rmail-remote-password} and @code{rmail-remote-password-required}. 1387be used instead of @code{rmail-remote-password} and
1388@code{rmail-remote-password-required}.
1388 1389
1389@vindex rmail-movemail-flags 1390@vindex rmail-movemail-flags
1390 If you need to pass additional command-line flags to @code{movemail}, 1391 If you need to pass additional command-line flags to @code{movemail},
diff --git a/man/sc.texi b/man/sc.texi
index d3f7264f4cc..5ac3b882ccd 100644
--- a/man/sc.texi
+++ b/man/sc.texi
@@ -1,5 +1,5 @@
1\input texinfo @comment -*-texinfo-*- 1\input texinfo @comment -*-texinfo-*-
2@comment 3.47 2@comment 3.48
3@comment %**start of header (This is for running Texinfo on a region.) 3@comment %**start of header (This is for running Texinfo on a region.)
4@setfilename ../info/sc 4@setfilename ../info/sc
5@settitle Supercite Version 3.1 User's Manual 5@settitle Supercite Version 3.1 User's Manual
@@ -52,8 +52,8 @@ license to the document, as described in section 6 of the license.
52@sp 2 52@sp 2
53@center @titlefont{Supercite Version 3.1} 53@center @titlefont{Supercite Version 3.1}
54@sp 4 54@sp 4
55@center Manual Revision: 3.47 55@center Manual Revision: 3.48
56@center August 1993 56@center April 2007
57@sp 5 57@sp 5
58@center Barry A@. Warsaw 58@center Barry A@. Warsaw
59@center @t{bwarsaw@@cen.com} 59@center @t{bwarsaw@@cen.com}
@@ -86,6 +86,7 @@ subsystems. The manual is divided into the following chapters.
86* Thanks and History:: 86* Thanks and History::
87* The Supercite Mailing List:: 87* The Supercite Mailing List::
88 88
89* GNU Free Documentation License::
89* Concept Index:: 90* Concept Index::
90* Command Index:: 91* Command Index::
91* Key Index:: 92* Key Index::
@@ -2444,7 +2445,7 @@ for adding the magic lisp to their code to support this.
2444 2445
2445All who have helped and contributed have been greatly appreciated. 2446All who have helped and contributed have been greatly appreciated.
2446 2447
2447@node The Supercite Mailing List, Concept Index, Thanks and History, Top 2448@node The Supercite Mailing List, GNU Free Documentation License, Thanks and History, Top
2448@comment node-name, next, previous, up 2449@comment node-name, next, previous, up
2449@cindex supercite mailing list address 2450@cindex supercite mailing list address
2450@cindex mailing list address 2451@cindex mailing list address
@@ -2481,7 +2482,11 @@ will set up a mail buffer automatically with this address on the
2481supercite-help@@python.org 2482supercite-help@@python.org
2482@end example 2483@end example
2483 2484
2484@node Concept Index, Command Index, The Supercite Mailing List, Top 2485@node GNU Free Documentation License, Concept Index, The Supercite Mailing List, Top
2486@appendix GNU Free Documentation License
2487@include doclicense.texi
2488
2489@node Concept Index, Command Index, GNU Free Documentation License, Top
2485@comment node-name, next, previous, up 2490@comment node-name, next, previous, up
2486@unnumbered Concept Index 2491@unnumbered Concept Index
2487@printindex cp 2492@printindex cp
diff --git a/man/search.texi b/man/search.texi
index 47d73bd26f6..1a8a6372ba2 100644
--- a/man/search.texi
+++ b/man/search.texi
@@ -1002,6 +1002,9 @@ C-@key{SPC}} to move back there.
1002 A numeric argument restricts replacement to matches that are surrounded 1002 A numeric argument restricts replacement to matches that are surrounded
1003by word boundaries. The argument's value doesn't matter. 1003by word boundaries. The argument's value doesn't matter.
1004 1004
1005 @xref{Replacement and Case}, for details about case-sensitivity in
1006replace commands.
1007
1005 What if you want to exchange @samp{x} and @samp{y}: replace every @samp{x} with a @samp{y} and vice versa? You can do it this way: 1008 What if you want to exchange @samp{x} and @samp{y}: replace every @samp{x} with a @samp{y} and vice versa? You can do it this way:
1006 1009
1007@example 1010@example
@@ -1155,9 +1158,9 @@ This command finds occurrences of @samp{foo} one by one, displays each
1155occurrence and asks you whether to replace it. Aside from querying, 1158occurrence and asks you whether to replace it. Aside from querying,
1156@code{query-replace} works just like @code{replace-string}. It 1159@code{query-replace} works just like @code{replace-string}. It
1157preserves case, like @code{replace-string}, provided 1160preserves case, like @code{replace-string}, provided
1158@code{case-replace} is non-@code{nil}, as it normally is. A numeric 1161@code{case-replace} is non-@code{nil}, as it normally is
1159argument means consider only occurrences that are bounded by 1162(@pxref{Replacement and Case}). A numeric argument means consider
1160word-delimiter characters. 1163only occurrences that are bounded by word-delimiter characters.
1161 1164
1162@kindex C-M-% 1165@kindex C-M-%
1163@findex query-replace-regexp 1166@findex query-replace-regexp
diff --git a/man/sending.texi b/man/sending.texi
index a130a58816a..5d6a7c83f3e 100644
--- a/man/sending.texi
+++ b/man/sending.texi
@@ -240,11 +240,11 @@ yourself, Emacs puts in one for you. The variable
240@item nil 240@item nil
241Use just the email address, as in @samp{king@@grassland.com}. 241Use just the email address, as in @samp{king@@grassland.com}.
242@item parens 242@item parens
243Use both email address and full name, as in @samp{king@@grassland.com (Elvis 243Use both email address and full name, as in:@*
244Parsley)}. 244@samp{king@@grassland.com (Elvis Parsley)}.
245@item angles 245@item angles
246Use both email address and full name, as in @samp{Elvis Parsley 246Use both email address and full name, as in:@*
247<king@@grassland.com>}. 247@samp{Elvis Parsley <king@@grassland.com>}.
248@item system-default 248@item system-default
249Allow the system to insert the @samp{From} field. 249Allow the system to insert the @samp{From} field.
250@end table 250@end table
diff --git a/man/ses.texi b/man/ses.texi
index ff4b47f2ee4..089e13a9cc0 100644
--- a/man/ses.texi
+++ b/man/ses.texi
@@ -77,6 +77,7 @@ To report bugs, send email to @email{jyavner@@member.fsf.org}.
77* For Gurus:: Want to know @emph{even more}? 77* For Gurus:: Want to know @emph{even more}?
78* Index:: Concept, Function and Variable Index 78* Index:: Concept, Function and Variable Index
79* Acknowledgements:: Acknowledgements 79* Acknowledgements:: Acknowledgements
80* GNU Free Documentation License:: The license for this documentation.
80@end menu 81@end menu
81 82
82@c =================================================================== 83@c ===================================================================
@@ -929,7 +930,7 @@ cell.
929 930
930@c =================================================================== 931@c ===================================================================
931 932
932@node Acknowledgements, , Index, Top 933@node Acknowledgements, GNU Free Documentation License, Index, Top
933@chapter Acknowledgements 934@chapter Acknowledgements
934 935
935Coding by: 936Coding by:
@@ -970,6 +971,10 @@ Jean-Philippe Theberge @email{jphil@@acs.pagesjaunes.fr}
970 971
971@c =================================================================== 972@c ===================================================================
972 973
974@node GNU Free Documentation License, , Acknowledgements, Top
975@appendix GNU Free Documentation License
976@include doclicense.texi
977
973@bye 978@bye
974 979
975@ignore 980@ignore
diff --git a/man/sieve.texi b/man/sieve.texi
index 5e11adcaac2..1030babd593 100644
--- a/man/sieve.texi
+++ b/man/sieve.texi
@@ -73,6 +73,7 @@ A good online Sieve resources is @uref{http://www.cyrusoft.com/sieve/}.
73* Examples :: A few Sieve code snippets. 73* Examples :: A few Sieve code snippets.
74* Manage Sieve API :: Interfacing to the Manage Sieve Protocol API. 74* Manage Sieve API :: Interfacing to the Manage Sieve Protocol API.
75* Standards:: A summary of RFCs and working documents used. 75* Standards:: A summary of RFCs and working documents used.
76* GNU Free Documentation License:: The license for this documentation.
76* Index:: Function and variable index. 77* Index:: Function and variable index.
77@end menu 78@end menu
78 79
@@ -349,9 +350,12 @@ A Protocol for Remotely Managing Sieve Scripts
349 350
350@end table 351@end table
351 352
353@node GNU Free Documentation License
354@appendix GNU Free Documentation License
355@include doclicense.texi
352 356
353@node Index 357@node Index
354@chapter Index 358@unnumbered Index
355@printindex cp 359@printindex cp
356 360
357@summarycontents 361@summarycontents
diff --git a/man/smtpmail.texi b/man/smtpmail.texi
index 860e06de0e1..644cd061b74 100644
--- a/man/smtpmail.texi
+++ b/man/smtpmail.texi
@@ -55,6 +55,7 @@ license to the document, as described in section 6 of the license.
55* Queued delivery:: Sending mail without an internet connection. 55* Queued delivery:: Sending mail without an internet connection.
56* Server workarounds:: Mail servers with special requirements. 56* Server workarounds:: Mail servers with special requirements.
57* Debugging:: Tracking down problems. 57* Debugging:: Tracking down problems.
58* GNU Free Documentation License:: The license for this documentation.
58 59
59Indices 60Indices
60 61
@@ -403,6 +404,10 @@ cannot accept mail.
403 404
404@end table 405@end table
405 406
407@node GNU Free Documentation License
408@chapter GNU Free Documentation License
409@include doclicense.texi
410
406@node Index 411@node Index
407@chapter Index 412@chapter Index
408 413
diff --git a/man/speedbar.texi b/man/speedbar.texi
index 42f9f3dcc48..2a05993f569 100644
--- a/man/speedbar.texi
+++ b/man/speedbar.texi
@@ -82,6 +82,7 @@ on. @xref{Basic Navigation}.
82* Minor Modes:: Additional minor modes such as Info and RMAIL. 82* Minor Modes:: Additional minor modes such as Info and RMAIL.
83* Customizing:: Changing speedbar behavior. 83* Customizing:: Changing speedbar behavior.
84* Extending:: Extend speedbar for your own project. 84* Extending:: Extend speedbar for your own project.
85* GNU Free Documentation License:: The license for this documentation.
85* Index:: 86* Index::
86@end menu 87@end menu
87 88
@@ -885,7 +886,7 @@ Set this to implement your own scanning or rescan safe functions with
885state data. 886state data.
886@end table 887@end table
887 888
888@node Extending, Index, Customizing, Top 889@node Extending, GNU Free Documentation License, Customizing, Top
889@comment node-name, next, previous, up 890@comment node-name, next, previous, up
890@chapter Extending 891@chapter Extending
891@cindex extending 892@cindex extending
@@ -1241,7 +1242,12 @@ Two good values are @code{nil} and @code{statictag}.
1241 1242
1242@end defun 1243@end defun
1243 1244
1244@node Index, , Extending, Top 1245@node GNU Free Documentation License, Index, Extending, Top
1246@appendix GNU Free Documentation License
1247@include doclicense.texi
1248
1249
1250@node Index, , GNU Free Documentation License, Top
1245@comment node-name, next, previous, up 1251@comment node-name, next, previous, up
1246@unnumbered Concept Index 1252@unnumbered Concept Index
1247@printindex cp 1253@printindex cp
diff --git a/man/tramp.texi b/man/tramp.texi
index 9597344ee0c..7acef2663e4 100644
--- a/man/tramp.texi
+++ b/man/tramp.texi
@@ -159,6 +159,8 @@ For the developer:
159* Files directories and localnames:: How file names, directories and localnames are mangled and managed. 159* Files directories and localnames:: How file names, directories and localnames are mangled and managed.
160* Issues:: Debatable Issues and What Was Decided. 160* Issues:: Debatable Issues and What Was Decided.
161 161
162* GNU Free Documentation License:: The license for this documentation.
163
162@detailmenu 164@detailmenu
163 --- The Detailed Node Listing --- 165 --- The Detailed Node Listing ---
164@c 166@c
@@ -2406,6 +2408,10 @@ for @value{emacsothername}.
2406@end ifset 2408@end ifset
2407@end itemize 2409@end itemize
2408 2410
2411@node GNU Free Documentation License
2412@appendix GNU Free Documentation License
2413@include doclicense.texi
2414
2409@node Concept Index 2415@node Concept Index
2410@comment node-name, next, previous, up 2416@comment node-name, next, previous, up
2411@unnumbered Concept Index 2417@unnumbered Concept Index
diff --git a/man/url.texi b/man/url.texi
index aeabc435bfd..0fc6b08acdc 100644
--- a/man/url.texi
+++ b/man/url.texi
@@ -74,6 +74,7 @@ License.''
74* General Facilities:: URLs can be cached, accessed via a gateway 74* General Facilities:: URLs can be cached, accessed via a gateway
75 and tracked in a history list. 75 and tracked in a history list.
76* Customization:: Variables you can alter. 76* Customization:: Variables you can alter.
77* GNU Free Documentation License:: The license for this documentation.
77* Function Index:: 78* Function Index::
78* Variable Index:: 79* Variable Index::
79* Concept Index:: 80* Concept Index::
@@ -1176,6 +1177,10 @@ Connect directly.
1176@end table 1177@end table
1177@end defopt 1178@end defopt
1178 1179
1180@node GNU Free Documentation License
1181@appendix GNU Free Documentation License
1182@include doclicense.texi
1183
1179@node Function Index 1184@node Function Index
1180@unnumbered Command and Function Index 1185@unnumbered Command and Function Index
1181@printindex fn 1186@printindex fn
diff --git a/man/vip.texi b/man/vip.texi
index 11c21cbdf6e..a3f4a447f82 100644
--- a/man/vip.texi
+++ b/man/vip.texi
@@ -73,6 +73,8 @@ Comments and bug reports are welcome. Please send messages to
73* Vi Commands:: Details of Vi commands. 73* Vi Commands:: Details of Vi commands.
74* Ex Commands:: Details of Ex commands. 74* Ex Commands:: Details of Ex commands.
75* Customization:: How to customize VIP. 75* Customization:: How to customize VIP.
76* GNU Free Documentation License:: The license for this documentation.
77
76@end menu 78@end menu
77@iftex 79@iftex
78@unnumbered Introduction 80@unnumbered Introduction
@@ -1935,6 +1937,11 @@ file.
1935(define-key vip-command-mode-map "X" 'vip-delete-backward-char) 1937(define-key vip-command-mode-map "X" 'vip-delete-backward-char)
1936@end example 1938@end example
1937 1939
1940@node GNU Free Documentation License,,, Top
1941@appendix GNU Free Documentation License
1942@include doclicense.texi
1943
1944
1938@unnumbered Key Index 1945@unnumbered Key Index
1939 1946
1940@printindex ky 1947@printindex ky
diff --git a/man/viper.texi b/man/viper.texi
index af78bd99e47..55c97f18c9c 100644
--- a/man/viper.texi
+++ b/man/viper.texi
@@ -42,7 +42,7 @@ license to the document, as described in section 6 of the license.
42@titlepage 42@titlepage
43@title Viper Is a Package for Emacs Rebels 43@title Viper Is a Package for Emacs Rebels
44@subtitle a Vi emulator for Emacs 44@subtitle a Vi emulator for Emacs
45@subtitle January 2002, Viper Version 3.11.2 45@subtitle April 2007, Viper Version 3.13.1
46 46
47@author Michael Kifer (Viper) 47@author Michael Kifer (Viper)
48@author Aamod Sane (VIP 4.4) 48@author Aamod Sane (VIP 4.4)
@@ -114,6 +114,8 @@ Please use the Ex command @kbd{:submitReport} for this purpose.@refill
114* Concept Index:: Vi, Ex and Emacs concepts 114* Concept Index:: Vi, Ex and Emacs concepts
115 115
116* Acknowledgments:: 116* Acknowledgments::
117* GNU Free Documentation License:: The license for this documentation.
118
117@end menu 119@end menu
118@iftex 120@iftex
119@unnumbered Introduction 121@unnumbered Introduction
@@ -4534,6 +4536,9 @@ whicken@@dragon.parasoft.com (Wendell Hicken),
4534zapman@@cc.gatech.edu (Jason Zapman II), 4536zapman@@cc.gatech.edu (Jason Zapman II),
4535@end example 4537@end example
4536 4538
4539@node GNU Free Documentation License,,, Top
4540@appendix GNU Free Documentation License
4541@include doclicense.texi
4537 4542
4538@node Key Index,Function Index,,Top 4543@node Key Index,Function Index,,Top
4539@comment node-name, next, previous, up 4544@comment node-name, next, previous, up
diff --git a/man/widget.texi b/man/widget.texi
index 72157289524..0cf77ee4600 100644
--- a/man/widget.texi
+++ b/man/widget.texi
@@ -57,6 +57,7 @@ Software Foundation raise funds for GNU development.''
57* Widget Minor Mode:: 57* Widget Minor Mode::
58* Utilities:: 58* Utilities::
59* Widget Wishlist:: 59* Widget Wishlist::
60* GNU Free Documentation License::
60* Index:: 61* Index::
61@end menu 62@end menu
62 63
@@ -1774,7 +1775,7 @@ Get the item which @var{widget} is assumed to toggle.
1774This is only meaningful for radio buttons or checkboxes in a list. 1775This is only meaningful for radio buttons or checkboxes in a list.
1775@end defun 1776@end defun
1776 1777
1777@node Widget Wishlist, Index, Utilities, Top 1778@node Widget Wishlist, GNU Free Documentation License, Utilities, Top
1778@comment node-name, next, previous, up 1779@comment node-name, next, previous, up
1779@section Wishlist 1780@section Wishlist
1780@cindex todo 1781@cindex todo
@@ -1833,7 +1834,11 @@ See @code{TeX-printer-list} for an explanation.
1833Add a @code{mailto} widget. 1834Add a @code{mailto} widget.
1834@end itemize 1835@end itemize
1835 1836
1836@node Index, , Widget Wishlist, Top 1837@node GNU Free Documentation License, Index, Widget Wishlist, Top
1838@appendix GNU Free Documentation License
1839@include doclicense.texi
1840
1841@node Index, , GNU Free Documentation License, Top
1837@comment node-name, next, previous, up 1842@comment node-name, next, previous, up
1838@unnumbered Index 1843@unnumbered Index
1839 1844
diff --git a/man/woman.texi b/man/woman.texi
index 575c90309ae..868bb510f50 100644
--- a/man/woman.texi
+++ b/man/woman.texi
@@ -99,6 +99,7 @@ Mile End Road, London E1 4NS, UK
99* Technical:: Technical Details 99* Technical:: Technical Details
100* Bugs:: Reporting Bugs 100* Bugs:: Reporting Bugs
101* Acknowledgements:: Acknowledgements 101* Acknowledgements:: Acknowledgements
102* GNU Free Documentation License:: The license for this documentation.
102* Command Index:: Command Index 103* Command Index:: Command Index
103* Variable Index:: Variable Index 104* Variable Index:: Variable Index
104* Keystroke Index:: Keystroke Index 105* Keystroke Index:: Keystroke Index
@@ -1334,7 +1335,7 @@ man source file from, but do not send it unless asked to send it.
1334 1335
1335@c =================================================================== 1336@c ===================================================================
1336 1337
1337@node Acknowledgements, Command Index, Bugs, Top 1338@node Acknowledgements, GNU Free Documentation License, Bugs, Top
1338@comment node-name, next, previous, up 1339@comment node-name, next, previous, up
1339@chapter Acknowledgements 1340@chapter Acknowledgements
1340@cindex acknowledgements 1341@cindex acknowledgements
@@ -1390,7 +1391,12 @@ Eli Zaretskii, @email{eliz@@is.elta.co.il}
1390@comment END OF MANUAL TEXT 1391@comment END OF MANUAL TEXT
1391@page 1392@page
1392 1393
1393@node Command Index, Variable Index, Acknowledgements, Top 1394
1395@node GNU Free Documentation License, Command Index, Acknowledgements, Top
1396@appendix GNU Free Documentation License
1397@include doclicense.texi
1398
1399@node Command Index, Variable Index, GNU Free Documentation License, Top
1394@comment node-name, next, previous, up 1400@comment node-name, next, previous, up
1395@unnumbered Command Index 1401@unnumbered Command Index
1396 1402
diff --git a/man/xresources.texi b/man/xresources.texi
index 45a890e7c39..c402ec89f88 100644
--- a/man/xresources.texi
+++ b/man/xresources.texi
@@ -58,14 +58,15 @@ collection of related options, for one program or for several programs
58(optionally even for all programs). 58(optionally even for all programs).
59 59
60@cindex Registry (MS-Windows) 60@cindex Registry (MS-Windows)
61 MS-Windows systems don't support @file{~/.Xdefaults} files, but 61 MS-Windows systems do not support @file{~/.Xdefaults} files, so
62Emacs compiled for Windows looks for X resources in the Windows 62instead Emacs compiled for Windows looks for X resources in the
63Registry, under the key @samp{HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs} 63Windows Registry, first under the key
64and then under the key @samp{HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs}. 64@samp{HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs} and then under the key
65The menu and scroll bars are native widgets on MS-Windows, so they are 65@samp{HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs}. The menu and scroll
66only customizable via the system-wide settings in the Display Control 66bars are native widgets on MS-Windows, so they are only customizable
67Panel. You can also set resources using the @samp{-xrm} command line 67via the system-wide settings in the Display Control Panel. You can
68option (see below.) 68also set resources using the @samp{-xrm} command line option (see
69below.)
69 70
70@iftex 71@iftex
71 Applications such as Emacs look for resources with specific names 72 Applications such as Emacs look for resources with specific names
diff --git a/nt/emacs.rc b/nt/emacs.rc
index 892d23df019..99427cc5742 100644
--- a/nt/emacs.rc
+++ b/nt/emacs.rc
@@ -6,8 +6,8 @@ Emacs ICON icons\emacs.ico
6#endif 6#endif
7 7
8VS_VERSION_INFO VERSIONINFO 8VS_VERSION_INFO VERSIONINFO
9 FILEVERSION 22,0,97,0 9 FILEVERSION 22,0,98,0
10 PRODUCTVERSION 22,0,97,0 10 PRODUCTVERSION 22,0,98,0
11 FILEFLAGSMASK 0x3FL 11 FILEFLAGSMASK 0x3FL
12#ifdef EMACSDEBUG 12#ifdef EMACSDEBUG
13 FILEFLAGS 0x1L 13 FILEFLAGS 0x1L
@@ -24,12 +24,12 @@ BEGIN
24 BEGIN 24 BEGIN
25 VALUE "CompanyName", "Free Software Foundation\0" 25 VALUE "CompanyName", "Free Software Foundation\0"
26 VALUE "FileDescription", "GNU Emacs for Windows NT/95/98/2000/ME/XP\0" 26 VALUE "FileDescription", "GNU Emacs for Windows NT/95/98/2000/ME/XP\0"
27 VALUE "FileVersion", "22, 0, 97, 0\0" 27 VALUE "FileVersion", "22, 0, 98, 0\0"
28 VALUE "InternalName", "Emacs\0" 28 VALUE "InternalName", "Emacs\0"
29 VALUE "LegalCopyright", "Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007\0" 29 VALUE "LegalCopyright", "Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007\0"
30 VALUE "OriginalFilename", "emacs.exe" 30 VALUE "OriginalFilename", "emacs.exe"
31 VALUE "ProductName", "Emacs: The extensible self-documenting text editor\0" 31 VALUE "ProductName", "Emacs: The extensible self-documenting text editor\0"
32 VALUE "ProductVersion", "22, 0, 97, 0\0" 32 VALUE "ProductVersion", "22, 0, 98, 0\0"
33 VALUE "OLESelfRegister", "\0" 33 VALUE "OLESelfRegister", "\0"
34 END 34 END
35 END 35 END
diff --git a/src/ChangeLog b/src/ChangeLog
index 61e6de2c97d..e3c660dbbab 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,86 @@
12007-04-24 Chong Yidong <cyd@stupidchicken.com>
2
3 * xdisp.c (redisplay_window): Use BEG_UNCHANGED and END_UNCHANGED
4 values of the actual window.
5
62007-04-23 Richard Stallman <rms@gnu.org>
7
8 * process.c (Fstart_process): Doc fix.
9
102007-04-23 Eli Zaretskii <eliz@gnu.org>
11
12 * process.c (Fstart_process): Doc fix.
13
142007-04-22 Richard Stallman <rms@gnu.org>
15
16 * abbrev.c (Fdefine_abbrev): Doc fix.
17
18 * keymap.c (Fdefine_key): Minor doc fix.
19
202007-04-21 Glenn Morris <rgm@gnu.org>
21
22 * keymap.c (Fdefine_key): Fix info ref in doc string.
23
242007-04-20 Glenn Morris <rgm@gnu.org>
25
26 * sysdep.c (init_system_name): Don't accept localhost.localdomain.
27
282007-04-19 Juanma Barranquero <lekktu@gmail.com>
29
30 * minibuf.c (Fminibuffer_contents, Fminibuffer_contents_no_properties)
31 (Fminibuffer_completion_contents, Fdelete_minibuffer_contents):
32 Doc fixes.
33
342007-04-16 Chong Yidong <cyd@stupidchicken.com>
35
36 * dispnew.c (adjust_frame_glyphs_for_frame_redisplay): Set
37 garbaged flag in presence of window margins.
38 (showing_window_margins_p): New function.
39
40 * xdisp.c (cursor_row_p): Only end row on newline if it's a
41 display string. Suggested by Lennart Borgman.
42
432007-04-16 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
44
45 * alloc.c (mem_insert): Set min_heap_address and max_heap_address
46 if they are not yet initialized.
47
482007-04-15 Chong Yidong <cyd@stupidchicken.com>
49
50 * xdisp.c (redisplay_window): When deciding whether or not to
51 recenter, don't use the reset values of BEG_UNCHANGED and
52 END_UNCHANGED.
53
542007-04-13 Kim F. Storm <storm@cua.dk>
55
56 * buffer.c (Fkill_buffer): gcpro BUF during kill_buffer_processes
57 and check that buffer is still alive upon return.
58
592007-04-13 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
60
61 * macterm.c [!TARGET_API_MAC_CARBON]: Include Displays.h.
62 (mac_screen_config_changed): New variable.
63 (mac_handle_dm_notification, init_dm_notification_handler)
64 (mac_get_screen_info): New functions.
65 [MAC_OS8] (main): Call init_dm_notification_handler.
66 (mac_initialize) [MAC_OSX]: Likewise.
67 (XTread_socket): Call mac_get_screen_info if screen config changed.
68 (mac_initialized): Make static.
69 (mac_initialize_display_info): Remove function.
70 (mac_term_init): Call mac_get_screen_info. Add partial contents of
71 mac_initialize_display_info.
72
732007-04-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
74
75 * mac.c (xrm_get_preference_database, Fmac_get_preference)
76 [TARGET_API_MAC_CARBON]: Use CFPreferencesAppSynchronize.
77
78 * macterm.c [TARGET_API_MAC_CARBON] (mac_post_mouse_moved_event):
79 Use GetGlobalMouse instead of GetMouse and LocalToGlobal.
80 (mac_initialize_display_info) [MAC_OSX]: Use CGRectZero.
81 (mac_initialize_display_info) [!MAC_OSX]: dpyinfo->height and
82 dpyinfo->width are those of whole screen.
83
12007-04-10 Chong Yidong <cyd@stupidchicken.com> 842007-04-10 Chong Yidong <cyd@stupidchicken.com>
2 85
3 * xdisp.c (note_mode_line_or_margin_highlight): Don't decrement 86 * xdisp.c (note_mode_line_or_margin_highlight): Don't decrement
diff --git a/src/abbrev.c b/src/abbrev.c
index 8e9bd143089..cb8e334591c 100644
--- a/src/abbrev.c
+++ b/src/abbrev.c
@@ -110,7 +110,7 @@ DEFUN ("clear-abbrev-table", Fclear_abbrev_table, Sclear_abbrev_table, 1, 1, 0,
110 110
111DEFUN ("define-abbrev", Fdefine_abbrev, Sdefine_abbrev, 3, 6, 0, 111DEFUN ("define-abbrev", Fdefine_abbrev, Sdefine_abbrev, 3, 6, 0,
112 doc: /* Define an abbrev in TABLE named NAME, to expand to EXPANSION and call HOOK. 112 doc: /* Define an abbrev in TABLE named NAME, to expand to EXPANSION and call HOOK.
113NAME must be a string. 113NAME must be a string, and should be lower-case.
114EXPANSION should usually be a string. 114EXPANSION should usually be a string.
115To undefine an abbrev, define it with EXPANSION = nil. 115To undefine an abbrev, define it with EXPANSION = nil.
116If HOOK is non-nil, it should be a function of no arguments; 116If HOOK is non-nil, it should be a function of no arguments;
diff --git a/src/alloc.c b/src/alloc.c
index f847b4052b7..6c757567354 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3572,9 +3572,9 @@ mem_insert (start, end, type)
3572{ 3572{
3573 struct mem_node *c, *parent, *x; 3573 struct mem_node *c, *parent, *x;
3574 3574
3575 if (start < min_heap_address) 3575 if (min_heap_address == NULL || start < min_heap_address)
3576 min_heap_address = start; 3576 min_heap_address = start;
3577 if (end > max_heap_address) 3577 if (max_heap_address == NULL || end > max_heap_address)
3578 max_heap_address = end; 3578 max_heap_address = end;
3579 3579
3580 /* See where in the tree a node for START belongs. In this 3580 /* See where in the tree a node for START belongs. In this
diff --git a/src/buffer.c b/src/buffer.c
index 09166b17cfb..895bb2b32e8 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1459,7 +1459,16 @@ with SIGHUP. */)
1459 unlock_buffer (b); 1459 unlock_buffer (b);
1460#endif /* CLASH_DETECTION */ 1460#endif /* CLASH_DETECTION */
1461 1461
1462 GCPRO1 (buf);
1462 kill_buffer_processes (buf); 1463 kill_buffer_processes (buf);
1464 UNGCPRO;
1465
1466 /* Killing buffer processes may run sentinels which may
1467 have called kill-buffer. */
1468
1469 if (NILP (b->name))
1470 return Qnil;
1471
1463 clear_charpos_cache (b); 1472 clear_charpos_cache (b);
1464 1473
1465 tem = Vinhibit_quit; 1474 tem = Vinhibit_quit;
diff --git a/src/dispnew.c b/src/dispnew.c
index 313221f43f5..c3434c915f3 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -120,6 +120,7 @@ struct dim
120 120
121static struct glyph_matrix *save_current_matrix P_ ((struct frame *)); 121static struct glyph_matrix *save_current_matrix P_ ((struct frame *));
122static void restore_current_matrix P_ ((struct frame *, struct glyph_matrix *)); 122static void restore_current_matrix P_ ((struct frame *, struct glyph_matrix *));
123static int showing_window_margins_p P_ ((struct window *));
123static void fake_current_matrices P_ ((Lisp_Object)); 124static void fake_current_matrices P_ ((Lisp_Object));
124static void redraw_overlapping_rows P_ ((struct window *, int)); 125static void redraw_overlapping_rows P_ ((struct window *, int));
125static void redraw_overlapped_rows P_ ((struct window *, int)); 126static void redraw_overlapped_rows P_ ((struct window *, int));
@@ -2164,6 +2165,33 @@ adjust_frame_glyphs (f)
2164 f->glyphs_initialized_p = 1; 2165 f->glyphs_initialized_p = 1;
2165} 2166}
2166 2167
2168/* Return 1 if any window in the tree has nonzero window margins. See
2169 the hack at the end of adjust_frame_glyphs_for_frame_redisplay. */
2170static int
2171showing_window_margins_p (w)
2172 struct window *w;
2173{
2174 while (w)
2175 {
2176 if (!NILP (w->hchild))
2177 {
2178 if (showing_window_margins_p (XWINDOW (w->hchild)))
2179 return 1;
2180 }
2181 else if (!NILP (w->vchild))
2182 {
2183 if (showing_window_margins_p (XWINDOW (w->vchild)))
2184 return 1;
2185 }
2186 else if (!NILP (w->left_margin_cols)
2187 || !NILP (w->right_margin_cols))
2188 return 1;
2189
2190 w = NILP (w->next) ? 0 : XWINDOW (w->next);
2191 }
2192 return 0;
2193}
2194
2167 2195
2168/* In the window tree with root W, build current matrices of leaf 2196/* In the window tree with root W, build current matrices of leaf
2169 windows from the frame's current matrix. */ 2197 windows from the frame's current matrix. */
@@ -2351,7 +2379,12 @@ adjust_frame_glyphs_for_frame_redisplay (f)
2351 if (display_completed 2379 if (display_completed
2352 && !FRAME_GARBAGED_P (f) 2380 && !FRAME_GARBAGED_P (f)
2353 && matrix_dim.width == f->current_matrix->matrix_w 2381 && matrix_dim.width == f->current_matrix->matrix_w
2354 && matrix_dim.height == f->current_matrix->matrix_h) 2382 && matrix_dim.height == f->current_matrix->matrix_h
2383 /* For some reason, the frame glyph matrix gets corrupted if
2384 any of the windows contain margins. I haven't been able
2385 to hunt down the reason, but for the moment this prevents
2386 the problem from manifesting. -- cyd */
2387 && !showing_window_margins_p (XWINDOW (FRAME_ROOT_WINDOW (f))))
2355 { 2388 {
2356 struct glyph_matrix *copy = save_current_matrix (f); 2389 struct glyph_matrix *copy = save_current_matrix (f);
2357 adjust_glyph_matrix (NULL, f->desired_matrix, 0, 0, matrix_dim); 2390 adjust_glyph_matrix (NULL, f->desired_matrix, 0, 0, matrix_dim);
diff --git a/src/keymap.c b/src/keymap.c
index d953df008d7..4a5c53ca626 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -1148,7 +1148,8 @@ DEF is anything that can be a key's definition:
1148 a cons (STRING . DEFN), meaning that DEFN is the definition 1148 a cons (STRING . DEFN), meaning that DEFN is the definition
1149 (DEFN should be a valid definition in its own right), 1149 (DEFN should be a valid definition in its own right),
1150 or a cons (MAP . CHAR), meaning use definition of CHAR in keymap MAP, 1150 or a cons (MAP . CHAR), meaning use definition of CHAR in keymap MAP,
1151 or an extended menu item definition. (See info node `Extended Menu Items'.) 1151 or an extended menu item definition.
1152 (See info node `(elisp)Extended Menu Items'.)
1152 1153
1153If KEYMAP is a sparse keymap with a binding for KEY, the existing 1154If KEYMAP is a sparse keymap with a binding for KEY, the existing
1154binding is altered. If there is no binding for KEY, the new pair 1155binding is altered. If there is no binding for KEY, the new pair
diff --git a/src/mac.c b/src/mac.c
index 5084a02b27d..8e3f49d2bfe 100644
--- a/src/mac.c
+++ b/src/mac.c
@@ -1835,6 +1835,8 @@ xrm_get_preference_database (application)
1835 if (app_id == NULL) 1835 if (app_id == NULL)
1836 goto out; 1836 goto out;
1837 } 1837 }
1838 if (!CFPreferencesAppSynchronize (app_id))
1839 goto out;
1838 1840
1839 key_set = CFSetCreateMutable (NULL, 0, &kCFCopyStringSetCallBacks); 1841 key_set = CFSetCreateMutable (NULL, 0, &kCFCopyStringSetCallBacks);
1840 if (key_set == NULL) 1842 if (key_set == NULL)
@@ -4650,6 +4652,9 @@ otherwise. */)
4650 if (app_id == NULL) 4652 if (app_id == NULL)
4651 goto out; 4653 goto out;
4652 } 4654 }
4655 if (!CFPreferencesAppSynchronize (app_id))
4656 goto out;
4657
4653 key_str = cfstring_create_with_string (XCAR (key)); 4658 key_str = cfstring_create_with_string (XCAR (key));
4654 if (key_str == NULL) 4659 if (key_str == NULL)
4655 goto out; 4660 goto out;
@@ -4986,7 +4991,7 @@ extern int noninteractive;
4986 3. [If SELECT_USE_CFSOCKET is set] 4991 3. [If SELECT_USE_CFSOCKET is set]
4987 Only the window event channel and socket read/write channels are 4992 Only the window event channel and socket read/write channels are
4988 involved, and timeout is not too short (greater than 4993 involved, and timeout is not too short (greater than
4989 SELECT_TIMEOUT_THRESHHOLD_RUNLOOP seconds). 4994 SELECT_TIMEOUT_THRESHOLD_RUNLOOP seconds).
4990 -> Create CFSocket for each socket and add it into the current 4995 -> Create CFSocket for each socket and add it into the current
4991 event RunLoop so that the current event loop gets quit when 4996 event RunLoop so that the current event loop gets quit when
4992 the socket becomes ready. Then ReceiveNextEvent can wait for 4997 the socket becomes ready. Then ReceiveNextEvent can wait for
diff --git a/src/macterm.c b/src/macterm.c
index 596d74cddd9..df0275fe22b 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -52,6 +52,7 @@ Boston, MA 02110-1301, USA. */
52#include <LowMem.h> 52#include <LowMem.h>
53#include <Controls.h> 53#include <Controls.h>
54#include <Windows.h> 54#include <Windows.h>
55#include <Displays.h>
55#if defined (__MRC__) || (__MSL__ >= 0x6000) 56#if defined (__MRC__) || (__MSL__ >= 0x6000)
56#include <ControlDefinitions.h> 57#include <ControlDefinitions.h>
57#endif 58#endif
@@ -8890,6 +8891,9 @@ int mac_pass_control_to_system;
8890 Carbon/Apple event handlers. */ 8891 Carbon/Apple event handlers. */
8891static struct input_event *read_socket_inev = NULL; 8892static struct input_event *read_socket_inev = NULL;
8892 8893
8894/* Whether or not the screen configuration has changed. */
8895static int mac_screen_config_changed = 0;
8896
8893Point saved_menu_event_location; 8897Point saved_menu_event_location;
8894 8898
8895/* Apple Events */ 8899/* Apple Events */
@@ -10420,6 +10424,87 @@ remove_window_handler (window)
10420} 10424}
10421 10425
10422 10426
10427static pascal void
10428mac_handle_dm_notification (event)
10429 AppleEvent *event;
10430{
10431 mac_screen_config_changed = 1;
10432}
10433
10434static OSErr
10435init_dm_notification_handler ()
10436{
10437 OSErr err;
10438 static DMNotificationUPP handle_dm_notificationUPP = NULL;
10439 ProcessSerialNumber psn;
10440
10441 if (handle_dm_notificationUPP == NULL)
10442 handle_dm_notificationUPP =
10443 NewDMNotificationUPP (mac_handle_dm_notification);
10444
10445 err = GetCurrentProcess (&psn);
10446 if (err == noErr)
10447 err = DMRegisterNotifyProc (handle_dm_notificationUPP, &psn);
10448
10449 return err;
10450}
10451
10452static void
10453mac_get_screen_info (dpyinfo)
10454 struct mac_display_info *dpyinfo;
10455{
10456#ifdef MAC_OSX
10457 /* HasDepth returns true if it is possible to have a 32 bit display,
10458 but this may not be what is actually used. Mac OSX can do better. */
10459 dpyinfo->color_p = CGDisplaySamplesPerPixel (kCGDirectMainDisplay) > 1;
10460 dpyinfo->n_planes = CGDisplayBitsPerPixel (kCGDirectMainDisplay);
10461 {
10462 CGDisplayErr err;
10463 CGDisplayCount ndisps;
10464 CGDirectDisplayID *displays;
10465
10466 err = CGGetActiveDisplayList (0, NULL, &ndisps);
10467 if (err == noErr)
10468 {
10469 displays = alloca (sizeof (CGDirectDisplayID) * ndisps);
10470 err = CGGetActiveDisplayList (ndisps, displays, &ndisps);
10471 }
10472 if (err == noErr)
10473 {
10474 CGRect bounds = CGRectZero;
10475
10476 while (ndisps-- > 0)
10477 bounds = CGRectUnion (bounds, CGDisplayBounds (displays[ndisps]));
10478 dpyinfo->height = CGRectGetHeight (bounds);
10479 dpyinfo->width = CGRectGetWidth (bounds);
10480 }
10481 else
10482 {
10483 dpyinfo->height = CGDisplayPixelsHigh (kCGDirectMainDisplay);
10484 dpyinfo->width = CGDisplayPixelsWide (kCGDirectMainDisplay);
10485 }
10486 }
10487#else /* !MAC_OSX */
10488 {
10489 GDHandle gdh = GetMainDevice ();
10490 Rect rect = (**gdh).gdRect;
10491
10492 dpyinfo->color_p = TestDeviceAttribute (gdh, gdDevType);
10493 for (dpyinfo->n_planes = 32; dpyinfo->n_planes > 0; dpyinfo->n_planes >>= 1)
10494 if (HasDepth (gdh, dpyinfo->n_planes, gdDevType, dpyinfo->color_p))
10495 break;
10496
10497 for (gdh = DMGetFirstScreenDevice (dmOnlyActiveDisplays); gdh;
10498 gdh = DMGetNextScreenDevice (gdh, dmOnlyActiveDisplays))
10499 UnionRect (&rect, &(**gdh).gdRect, &rect);
10500
10501 dpyinfo->height = rect.bottom - rect.top;
10502 dpyinfo->width = rect.right - rect.left;
10503 }
10504#endif /* !MAC_OSX */
10505}
10506
10507
10423#if __profile__ 10508#if __profile__
10424void 10509void
10425profiler_exit_proc () 10510profiler_exit_proc ()
@@ -10477,6 +10562,8 @@ main (void)
10477 10562
10478 init_apple_event_handler (); 10563 init_apple_event_handler ();
10479 10564
10565 init_dm_notification_handler ();
10566
10480 { 10567 {
10481 char **argv; 10568 char **argv;
10482 int argc = 0; 10569 int argc = 0;
@@ -10554,8 +10641,7 @@ mac_post_mouse_moved_event ()
10554 { 10641 {
10555 Point mouse_pos; 10642 Point mouse_pos;
10556 10643
10557 GetMouse (&mouse_pos); 10644 GetGlobalMouse (&mouse_pos);
10558 LocalToGlobal (&mouse_pos);
10559 err = SetEventParameter (event, kEventParamMouseLocation, typeQDPoint, 10645 err = SetEventParameter (event, kEventParamMouseLocation, typeQDPoint,
10560 sizeof (Point), &mouse_pos); 10646 sizeof (Point), &mouse_pos);
10561 } 10647 }
@@ -11375,6 +11461,12 @@ XTread_socket (sd, expected, hold_quit)
11375 pending_autoraise_frame = 0; 11461 pending_autoraise_frame = 0;
11376 } 11462 }
11377 11463
11464 if (mac_screen_config_changed)
11465 {
11466 mac_get_screen_info (dpyinfo);
11467 mac_screen_config_changed = 0;
11468 }
11469
11378#if !USE_CARBON_EVENTS 11470#if !USE_CARBON_EVENTS
11379 /* Check which frames are still visible. We do this here because 11471 /* Check which frames are still visible. We do this here because
11380 there doesn't seem to be any direct notification from the Window 11472 there doesn't seem to be any direct notification from the Window
@@ -11509,86 +11601,7 @@ make_mac_terminal_frame (struct frame *f)
11509 Initialization 11601 Initialization
11510 ***********************************************************************/ 11602 ***********************************************************************/
11511 11603
11512int mac_initialized = 0; 11604static int mac_initialized = 0;
11513
11514void
11515mac_initialize_display_info ()
11516{
11517 struct mac_display_info *dpyinfo = &one_mac_display_info;
11518
11519 bzero (dpyinfo, sizeof (*dpyinfo));
11520
11521#ifdef MAC_OSX
11522 dpyinfo->mac_id_name
11523 = (char *) xmalloc (SCHARS (Vinvocation_name)
11524 + SCHARS (Vsystem_name)
11525 + 2);
11526 sprintf (dpyinfo->mac_id_name, "%s@%s",
11527 SDATA (Vinvocation_name), SDATA (Vsystem_name));
11528#else
11529 dpyinfo->mac_id_name = (char *) xmalloc (strlen ("Mac Display") + 1);
11530 strcpy (dpyinfo->mac_id_name, "Mac Display");
11531#endif
11532
11533 dpyinfo->reference_count = 0;
11534 dpyinfo->resx = 72.0;
11535 dpyinfo->resy = 72.0;
11536#ifdef MAC_OSX
11537 /* HasDepth returns true if it is possible to have a 32 bit display,
11538 but this may not be what is actually used. Mac OSX can do better. */
11539 dpyinfo->color_p = CGDisplaySamplesPerPixel (kCGDirectMainDisplay) > 1;
11540 dpyinfo->n_planes = CGDisplayBitsPerPixel (kCGDirectMainDisplay);
11541 {
11542 CGDisplayErr err;
11543 CGDisplayCount ndisps;
11544 CGDirectDisplayID *displays;
11545
11546 err = CGGetActiveDisplayList (0, NULL, &ndisps);
11547 if (err == noErr)
11548 {
11549 displays = alloca (sizeof (CGDirectDisplayID) * ndisps);
11550 err = CGGetActiveDisplayList (ndisps, displays, &ndisps);
11551 }
11552 if (err == noErr)
11553 {
11554 CGRect bounds = CGRectMake (0, 0, 0, 0);
11555
11556 while (ndisps-- > 0)
11557 bounds = CGRectUnion (bounds, CGDisplayBounds (displays[ndisps]));
11558 dpyinfo->height = CGRectGetHeight (bounds);
11559 dpyinfo->width = CGRectGetWidth (bounds);
11560 }
11561 else
11562 {
11563 dpyinfo->height = CGDisplayPixelsHigh (kCGDirectMainDisplay);
11564 dpyinfo->width = CGDisplayPixelsWide (kCGDirectMainDisplay);
11565 }
11566 }
11567#else
11568 {
11569 GDHandle main_device_handle = LMGetMainDevice();
11570
11571 dpyinfo->color_p = TestDeviceAttribute (main_device_handle, gdDevType);
11572 for (dpyinfo->n_planes = 32; dpyinfo->n_planes > 0; dpyinfo->n_planes >>= 1)
11573 if (HasDepth (main_device_handle, dpyinfo->n_planes,
11574 gdDevType, dpyinfo->color_p))
11575 break;
11576 dpyinfo->height = (**main_device_handle).gdRect.bottom;
11577 dpyinfo->width = (**main_device_handle).gdRect.right;
11578 }
11579#endif
11580 dpyinfo->grabbed = 0;
11581 dpyinfo->root_window = NULL;
11582 dpyinfo->image_cache = make_image_cache ();
11583
11584 dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1;
11585 dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1;
11586 dpyinfo->mouse_face_face_id = DEFAULT_FACE_ID;
11587 dpyinfo->mouse_face_window = Qnil;
11588 dpyinfo->mouse_face_overlay = Qnil;
11589 dpyinfo->mouse_face_hidden = 0;
11590}
11591
11592 11605
11593static XrmDatabase 11606static XrmDatabase
11594mac_make_rdb (xrm_option) 11607mac_make_rdb (xrm_option)
@@ -11622,9 +11635,37 @@ mac_term_init (display_name, xrm_option, resource_name)
11622 if (x_display_list) 11635 if (x_display_list)
11623 error ("Sorry, this version can only handle one display"); 11636 error ("Sorry, this version can only handle one display");
11624 11637
11625 mac_initialize_display_info ();
11626
11627 dpyinfo = &one_mac_display_info; 11638 dpyinfo = &one_mac_display_info;
11639 bzero (dpyinfo, sizeof (*dpyinfo));
11640
11641#ifdef MAC_OSX
11642 dpyinfo->mac_id_name
11643 = (char *) xmalloc (SCHARS (Vinvocation_name)
11644 + SCHARS (Vsystem_name)
11645 + 2);
11646 sprintf (dpyinfo->mac_id_name, "%s@%s",
11647 SDATA (Vinvocation_name), SDATA (Vsystem_name));
11648#else
11649 dpyinfo->mac_id_name = (char *) xmalloc (strlen ("Mac Display") + 1);
11650 strcpy (dpyinfo->mac_id_name, "Mac Display");
11651#endif
11652
11653 dpyinfo->reference_count = 0;
11654 dpyinfo->resx = 72.0;
11655 dpyinfo->resy = 72.0;
11656
11657 mac_get_screen_info (dpyinfo);
11658
11659 dpyinfo->grabbed = 0;
11660 dpyinfo->root_window = NULL;
11661 dpyinfo->image_cache = make_image_cache ();
11662
11663 dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1;
11664 dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1;
11665 dpyinfo->mouse_face_face_id = DEFAULT_FACE_ID;
11666 dpyinfo->mouse_face_window = Qnil;
11667 dpyinfo->mouse_face_overlay = Qnil;
11668 dpyinfo->mouse_face_hidden = 0;
11628 11669
11629 dpyinfo->xrdb = mac_make_rdb (xrm_option); 11670 dpyinfo->xrdb = mac_make_rdb (xrm_option);
11630 11671
@@ -11642,6 +11683,7 @@ mac_term_init (display_name, xrm_option, resource_name)
11642 11683
11643 return dpyinfo; 11684 return dpyinfo;
11644} 11685}
11686
11645/* Get rid of display DPYINFO, assuming all frames are already gone. */ 11687/* Get rid of display DPYINFO, assuming all frames are already gone. */
11646 11688
11647void 11689void
@@ -11861,6 +11903,8 @@ mac_initialize ()
11861 11903
11862 init_apple_event_handler (); 11904 init_apple_event_handler ();
11863 11905
11906 init_dm_notification_handler ();
11907
11864 if (!inhibit_window_system) 11908 if (!inhibit_window_system)
11865 { 11909 {
11866 static const ProcessSerialNumber psn = {0, kCurrentProcess}; 11910 static const ProcessSerialNumber psn = {0, kCurrentProcess};
diff --git a/src/minibuf.c b/src/minibuf.c
index 50f48c2344f..6c6fa7451fc 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -386,7 +386,7 @@ Return (point-min) if current buffer is not a minibuffer. */)
386DEFUN ("minibuffer-contents", Fminibuffer_contents, 386DEFUN ("minibuffer-contents", Fminibuffer_contents,
387 Sminibuffer_contents, 0, 0, 0, 387 Sminibuffer_contents, 0, 0, 0,
388 doc: /* Return the user input in a minibuffer as a string. 388 doc: /* Return the user input in a minibuffer as a string.
389The current buffer must be a minibuffer. */) 389If the current buffer is not a minibuffer, return its entire contents. */)
390 () 390 ()
391{ 391{
392 int prompt_end = XINT (Fminibuffer_prompt_end ()); 392 int prompt_end = XINT (Fminibuffer_prompt_end ());
@@ -396,7 +396,7 @@ The current buffer must be a minibuffer. */)
396DEFUN ("minibuffer-contents-no-properties", Fminibuffer_contents_no_properties, 396DEFUN ("minibuffer-contents-no-properties", Fminibuffer_contents_no_properties,
397 Sminibuffer_contents_no_properties, 0, 0, 0, 397 Sminibuffer_contents_no_properties, 0, 0, 0,
398 doc: /* Return the user input in a minibuffer as a string, without text-properties. 398 doc: /* Return the user input in a minibuffer as a string, without text-properties.
399The current buffer must be a minibuffer. */) 399If the current buffer is not a minibuffer, return its entire contents. */)
400 () 400 ()
401{ 401{
402 int prompt_end = XINT (Fminibuffer_prompt_end ()); 402 int prompt_end = XINT (Fminibuffer_prompt_end ());
@@ -407,7 +407,7 @@ DEFUN ("minibuffer-completion-contents", Fminibuffer_completion_contents,
407 Sminibuffer_completion_contents, 0, 0, 0, 407 Sminibuffer_completion_contents, 0, 0, 0,
408 doc: /* Return the user input in a minibuffer before point as a string. 408 doc: /* Return the user input in a minibuffer before point as a string.
409That is what completion commands operate on. 409That is what completion commands operate on.
410The current buffer must be a minibuffer. */) 410If the current buffer is not a minibuffer, return its entire contents. */)
411 () 411 ()
412{ 412{
413 int prompt_end = XINT (Fminibuffer_prompt_end ()); 413 int prompt_end = XINT (Fminibuffer_prompt_end ());
@@ -419,7 +419,7 @@ The current buffer must be a minibuffer. */)
419DEFUN ("delete-minibuffer-contents", Fdelete_minibuffer_contents, 419DEFUN ("delete-minibuffer-contents", Fdelete_minibuffer_contents,
420 Sdelete_minibuffer_contents, 0, 0, 0, 420 Sdelete_minibuffer_contents, 0, 0, 0,
421 doc: /* Delete all user input in a minibuffer. 421 doc: /* Delete all user input in a minibuffer.
422The current buffer must be a minibuffer. */) 422If the current buffer is not a minibuffer, erase its entire contents. */)
423 () 423 ()
424{ 424{
425 int prompt_end = XINT (Fminibuffer_prompt_end ()); 425 int prompt_end = XINT (Fminibuffer_prompt_end ());
@@ -704,7 +704,7 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
704 if (!NILP (current_buffer->enable_multibyte_characters) 704 if (!NILP (current_buffer->enable_multibyte_characters)
705 && ! STRING_MULTIBYTE (minibuf_prompt)) 705 && ! STRING_MULTIBYTE (minibuf_prompt))
706 minibuf_prompt = Fstring_make_multibyte (minibuf_prompt); 706 minibuf_prompt = Fstring_make_multibyte (minibuf_prompt);
707 707
708 /* Insert the prompt, record where it ends. */ 708 /* Insert the prompt, record where it ends. */
709 Finsert (1, &minibuf_prompt); 709 Finsert (1, &minibuf_prompt);
710 if (PT > BEG) 710 if (PT > BEG)
diff --git a/src/process.c b/src/process.c
index 2e41267479c..567aae7c08f 100644
--- a/src/process.c
+++ b/src/process.c
@@ -1557,13 +1557,19 @@ DEFUN ("start-process", Fstart_process, Sstart_process, 3, MANY, 0,
1557 doc: /* Start a program in a subprocess. Return the process object for it. 1557 doc: /* Start a program in a subprocess. Return the process object for it.
1558NAME is name for process. It is modified if necessary to make it unique. 1558NAME is name for process. It is modified if necessary to make it unique.
1559BUFFER is the buffer (or buffer name) to associate with the process. 1559BUFFER is the buffer (or buffer name) to associate with the process.
1560 Process output goes at end of that buffer, unless you specify 1560
1561 an output stream or filter function to handle the output. 1561Process output (both standard output and standard error streams) goes
1562 BUFFER may be also nil, meaning that this process is not associated 1562at end of BUFFER, unless you specify an output stream or filter
1563 with any buffer. 1563function to handle the output. BUFFER may also be nil, meaning that
1564this process is not associated with any buffer.
1565
1564PROGRAM is the program file name. It is searched for in PATH. 1566PROGRAM is the program file name. It is searched for in PATH.
1565Remaining arguments are strings to give program as arguments. 1567Remaining arguments are strings to give program as arguments.
1566 1568
1569If you want to separate standard output from standard error, invoke
1570the command through a shell and redirect one of them using the shell
1571syntax.
1572
1567usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */) 1573usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
1568 (nargs, args) 1574 (nargs, args)
1569 int nargs; 1575 int nargs;
diff --git a/src/sysdep.c b/src/sysdep.c
index 20d60400dcb..27e90349cb6 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -2433,7 +2433,9 @@ init_system_name ()
2433 /* We still don't have a fully qualified domain name. 2433 /* We still don't have a fully qualified domain name.
2434 Try to find one in the list of alternate names */ 2434 Try to find one in the list of alternate names */
2435 char **alias = hp->h_aliases; 2435 char **alias = hp->h_aliases;
2436 while (*alias && !index (*alias, '.')) 2436 while (*alias
2437 && (!index (*alias, '.')
2438 || !strcmp (*alias, "localhost.localdomain")))
2437 alias++; 2439 alias++;
2438 if (*alias) 2440 if (*alias)
2439 fqdn = *alias; 2441 fqdn = *alias;
diff --git a/src/xdisp.c b/src/xdisp.c
index 5c273540c41..eb97ef110a9 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12926,6 +12926,7 @@ redisplay_window (window, just_this_one_p)
12926 int rc; 12926 int rc;
12927 int centering_position = -1; 12927 int centering_position = -1;
12928 int last_line_misfit = 0; 12928 int last_line_misfit = 0;
12929 int save_beg_unchanged, save_end_unchanged;
12929 12930
12930 SET_TEXT_POS (lpoint, PT, PT_BYTE); 12931 SET_TEXT_POS (lpoint, PT, PT_BYTE);
12931 opoint = lpoint; 12932 opoint = lpoint;
@@ -12990,6 +12991,9 @@ redisplay_window (window, just_this_one_p)
12990 set_buffer_internal_1 (XBUFFER (w->buffer)); 12991 set_buffer_internal_1 (XBUFFER (w->buffer));
12991 SET_TEXT_POS (opoint, PT, PT_BYTE); 12992 SET_TEXT_POS (opoint, PT, PT_BYTE);
12992 12993
12994 save_beg_unchanged = BEG_UNCHANGED;
12995 save_end_unchanged = END_UNCHANGED;
12996
12993 current_matrix_up_to_date_p 12997 current_matrix_up_to_date_p
12994 = (!NILP (w->window_end_valid) 12998 = (!NILP (w->window_end_valid)
12995 && !current_buffer->clip_changed 12999 && !current_buffer->clip_changed
@@ -13294,11 +13298,20 @@ redisplay_window (window, just_this_one_p)
13294 && NILP (do_mouse_tracking) 13298 && NILP (do_mouse_tracking)
13295 && CHARPOS (startp) > BEGV) 13299 && CHARPOS (startp) > BEGV)
13296 { 13300 {
13297 /* Make sure beg_unchanged and end_unchanged are up to date. 13301#if 0
13298 Do it only if buffer has really changed. This may or may 13302 /* The following code tried to make BEG_UNCHANGED and
13299 not have been done by try_window_id (see which) already. */ 13303 END_UNCHANGED up to date (similar to try_window_id).
13304 Is it important to do so?
13305
13306 The trouble is that it's a little too strict when it
13307 comes to overlays: modify_overlay can call
13308 BUF_COMPUTE_UNCHANGED, which alters BUF_BEG_UNCHANGED and
13309 BUF_END_UNCHANGED directly without moving the gap.
13310
13311 This can result in spurious recentering when overlays are
13312 altered in the buffer. So unless it's proven necessary,
13313 let's leave this commented out for now. -- cyd. */
13300 if (MODIFF > SAVE_MODIFF 13314 if (MODIFF > SAVE_MODIFF
13301 /* This seems to happen sometimes after saving a buffer. */
13302 || BEG_UNCHANGED + END_UNCHANGED > Z_BYTE) 13315 || BEG_UNCHANGED + END_UNCHANGED > Z_BYTE)
13303 { 13316 {
13304 if (GPT - BEG < BEG_UNCHANGED) 13317 if (GPT - BEG < BEG_UNCHANGED)
@@ -13306,9 +13319,10 @@ redisplay_window (window, just_this_one_p)
13306 if (Z - GPT < END_UNCHANGED) 13319 if (Z - GPT < END_UNCHANGED)
13307 END_UNCHANGED = Z - GPT; 13320 END_UNCHANGED = Z - GPT;
13308 } 13321 }
13322#endif
13309 13323
13310 if (CHARPOS (startp) > BEG + BEG_UNCHANGED 13324 if (CHARPOS (startp) > BEG + save_beg_unchanged
13311 && CHARPOS (startp) <= Z - END_UNCHANGED) 13325 && CHARPOS (startp) <= Z - save_end_unchanged)
13312 { 13326 {
13313 /* There doesn't seems to be a simple way to find a new 13327 /* There doesn't seems to be a simple way to find a new
13314 window start that is near the old window start, so 13328 window start that is near the old window start, so
@@ -16002,13 +16016,37 @@ cursor_row_p (w, row)
16002 16016
16003 if (PT == MATRIX_ROW_END_CHARPOS (row)) 16017 if (PT == MATRIX_ROW_END_CHARPOS (row))
16004 { 16018 {
16005 /* If the row ends with a newline from a string, we don't want 16019 /* Suppose the row ends on a string.
16006 the cursor there, but we still want it at the start of the 16020 Unless the row is continued, that means it ends on a newline
16007 string if the string starts in this row. 16021 in the string. If it's anything other than a display string
16008 If the row is continued it doesn't end in a newline. */ 16022 (e.g. a before-string from an overlay), we don't want the
16023 cursor there. (This heuristic seems to give the optimal
16024 behavior for the various types of multi-line strings.) */
16009 if (CHARPOS (row->end.string_pos) >= 0) 16025 if (CHARPOS (row->end.string_pos) >= 0)
16010 cursor_row_p = (row->continued_p 16026 {
16011 || PT >= MATRIX_ROW_START_CHARPOS (row)); 16027 if (row->continued_p)
16028 cursor_row_p = 1;
16029 else
16030 {
16031 /* Check for `display' property. */
16032 struct glyph *beg = row->glyphs[TEXT_AREA];
16033 struct glyph *end = beg + row->used[TEXT_AREA] - 1;
16034 struct glyph *glyph;
16035
16036 cursor_row_p = 0;
16037 for (glyph = end; glyph >= beg; --glyph)
16038 if (STRINGP (glyph->object))
16039 {
16040 Lisp_Object prop
16041 = Fget_char_property (make_number (PT),
16042 Qdisplay, Qnil);
16043 cursor_row_p =
16044 (!NILP (prop)
16045 && display_prop_string_p (prop, glyph->object));
16046 break;
16047 }
16048 }
16049 }
16012 else if (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P (row)) 16050 else if (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P (row))
16013 { 16051 {
16014 /* If the row ends in middle of a real character, 16052 /* If the row ends in middle of a real character,