aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiles Bader2007-06-11 01:00:07 +0000
committerMiles Bader2007-06-11 01:00:07 +0000
commit67f3ad67ee317226cb5d1bb139de0cfd883fdc5e (patch)
tree58a0e1bea7a1d8728fd32e6127a44434e7eac006
parentd17cf4eb2024cf54e4a216312184665094ee3df4 (diff)
parent2d715b39ea1c89066f469405d065dd1a6631d28e (diff)
downloademacs-67f3ad67ee317226cb5d1bb139de0cfd883fdc5e.tar.gz
emacs-67f3ad67ee317226cb5d1bb139de0cfd883fdc5e.zip
Merge from emacs--devo--0
Patches applied: * emacs--devo--0 (patch 781-792) - Update from CVS - Merge from gnus--rel--5.10 - Merge from emacs--rel--22 * emacs--rel--22 (patch 33-41) * gnus--rel--5.10 (patch 226-228) - Update from CVS Revision: emacs@sv.gnu.org/emacs--multi-tty--0--patch-21
-rw-r--r--AUTHORS34
-rw-r--r--ChangeLog16
-rw-r--r--Makefile.in17
-rw-r--r--admin/ChangeLog8
-rw-r--r--admin/FOR-RELEASE2
-rw-r--r--admin/admin.el47
-rw-r--r--admin/notes/copyright2
-rw-r--r--admin/nt/README-ftp-server90
-rwxr-xr-xadmin/nt/makedist.bat2
-rwxr-xr-xconfigure141
-rw-r--r--configure.in74
-rw-r--r--etc/ChangeLog33
-rw-r--r--etc/MORE.STUFF18
-rw-r--r--etc/NEWS8
-rw-r--r--etc/NEWS.2228
-rw-r--r--etc/TODO17
-rw-r--r--etc/orgcard.tex227
-rw-r--r--leim/ChangeLog4
-rw-r--r--lib-src/ChangeLog9
-rw-r--r--lib-src/etags.c5
-rw-r--r--lisp/ChangeLog293
-rw-r--r--lisp/ChangeLog.1282
-rw-r--r--lisp/calc/calc-help.el2
-rw-r--r--lisp/calendar/icalendar.el2
-rw-r--r--lisp/desktop.el2
-rw-r--r--lisp/dframe.el20
-rw-r--r--lisp/dired.el15
-rw-r--r--lisp/emacs-lisp/bytecomp.el18
-rw-r--r--lisp/emacs-lisp/checkdoc.el2
-rw-r--r--lisp/erc/ChangeLog5
-rw-r--r--lisp/erc/erc.el4
-rw-r--r--lisp/faces.el5
-rw-r--r--lisp/files.el32
-rw-r--r--lisp/gnus/ChangeLog57
-rw-r--r--lisp/gnus/gnus-art.el14
-rw-r--r--lisp/gnus/gnus-diary.el4
-rw-r--r--lisp/gnus/gnus-ems.el123
-rw-r--r--lisp/gnus/gnus-start.el3
-rw-r--r--lisp/gnus/gnus-sum.el4
-rw-r--r--lisp/gnus/mail-source.el2
-rw-r--r--lisp/gnus/mm-decode.el25
-rw-r--r--lisp/gnus/nndiary.el16
-rw-r--r--lisp/help-mode.el60
-rw-r--r--lisp/international/mule-cmds.el48
-rw-r--r--lisp/ldefs-boot.el1350
-rw-r--r--lisp/longlines.el8
-rw-r--r--lisp/mail/rmail.el2
-rw-r--r--lisp/mail/rmailsum.el10
-rw-r--r--lisp/mh-e/ChangeLog134
-rw-r--r--lisp/mh-e/mh-mime.el2
-rw-r--r--lisp/mh-e/mh-search.el2
-rw-r--r--lisp/net/socks.el650
-rw-r--r--lisp/pgg.el8
-rw-r--r--lisp/progmodes/compile.el43
-rw-r--r--lisp/progmodes/ebrowse.el4
-rw-r--r--lisp/progmodes/idlwave.el2
-rw-r--r--lisp/progmodes/mixal-mode.el2
-rw-r--r--lisp/ses.el6
-rw-r--r--lisp/startup.el2
-rw-r--r--lisp/tar-mode.el18
-rw-r--r--lisp/textmodes/css-mode.el469
-rw-r--r--lisp/textmodes/org-publish.el603
-rw-r--r--lisp/textmodes/org.el4490
-rw-r--r--lisp/tutorial.el26
-rw-r--r--lisp/version.el3
-rw-r--r--lispintro/ChangeLog4
-rw-r--r--lispref/ChangeLog22
-rw-r--r--lispref/commands.texi7
-rw-r--r--lispref/display.texi5
-rw-r--r--lispref/elisp.texi2
-rw-r--r--lispref/frames.texi1
-rw-r--r--lispref/text.texi32
-rw-r--r--lwlib/ChangeLog4
-rw-r--r--mac/ChangeLog4
-rw-r--r--man/ChangeLog95
-rw-r--r--man/cc-mode.texi254
-rw-r--r--man/display.texi21
-rw-r--r--man/gnus.texi28
-rw-r--r--man/maintaining.texi4
-rw-r--r--man/message.texi2
-rw-r--r--man/mh-e.texi200
-rw-r--r--man/org.texi1433
-rw-r--r--msdos/ChangeLog4
-rw-r--r--nt/ChangeLog4
-rw-r--r--oldXMenu/ChangeLog9
-rw-r--r--oldXMenu/ChgPane.c1
-rw-r--r--oldXMenu/ChgSel.c1
-rw-r--r--src/ChangeLog291
-rw-r--r--src/Makefile.in4
-rw-r--r--src/alloc.c7
-rw-r--r--src/buffer.c2
-rw-r--r--src/callint.c2
-rw-r--r--src/editfns.c17
-rw-r--r--src/emacs.c17
-rw-r--r--src/fileio.c2
-rw-r--r--src/fns.c2
-rw-r--r--src/frame.c11
-rw-r--r--src/image.c57
-rw-r--r--src/keyboard.c5
-rw-r--r--src/keymap.c2
-rw-r--r--src/lisp.h8
-rw-r--r--src/lread.c5
-rw-r--r--src/mac.c4
-rw-r--r--src/macfns.c17
-rw-r--r--src/macgui.h4
-rw-r--r--src/macmenu.c161
-rw-r--r--src/macselect.c11
-rw-r--r--src/macterm.c2124
-rw-r--r--src/macterm.h34
-rw-r--r--src/minibuf.c2
-rw-r--r--src/s/ms-w32.h1
-rw-r--r--src/search.c2
-rw-r--r--src/sunfns.c2
-rw-r--r--src/term.c47
-rw-r--r--src/w32fns.c4
-rw-r--r--src/window.c4
-rw-r--r--src/xdisp.c6
-rw-r--r--src/xfaces.c2
-rw-r--r--src/xfns.c22
-rw-r--r--src/xmenu.c4
-rw-r--r--src/xselect.c2
-rw-r--r--src/xterm.c6
122 files changed, 9967 insertions, 4515 deletions
diff --git a/AUTHORS b/AUTHORS
index 733b76b8a94..b88c0b69bda 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -333,10 +333,10 @@ Cheng 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 files.el custom.el 335Chong Yidong: changed cus-edit.el simple.el files.el custom.el
336 display.texi longlines.el xdisp.c files.texi info.el keyboard.c 336 display.texi xdisp.c longlines.el files.texi info.el keyboard.c
337 compile.el custom.texi text.texi xterm.c frames.texi image-mode.el 337 compile.el custom.texi text.texi xterm.c frames.texi image-mode.el
338 mouse.el misc.texi startup.el wid-edit.el cus-theme.el 338 mouse.el misc.texi startup.el wid-edit.el cus-theme.el
339 and 296 other files 339 and 297 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
@@ -652,8 +652,8 @@ Eli Tziperman: wrote rmail-spam-filter.el
652Eli Zaretskii: wrote codepage.el rxvt.el tty-colors.el 652Eli Zaretskii: wrote codepage.el rxvt.el tty-colors.el
653and changed msdos.c Makefile.in makefile.w32-in files.el info.el fileio.c 653and changed msdos.c Makefile.in makefile.w32-in files.el info.el fileio.c
654 startup.el mainmake.v2 config.bat rmail.el menu-bar.el pc-win.el 654 startup.el mainmake.v2 config.bat rmail.el menu-bar.el pc-win.el
655 simple.el msdos.h internal.el xfaces.c emacs.c frame.c dosfns.c 655 simple.el msdos.h internal.el xfaces.c emacs.c frame.c INSTALL dosfns.c
656 faces.el frame.el and 532 other files 656 faces.el and 532 other files
657 657
658Emanuele Giaquinta: changed rxvt.el configure.in etags.c frame.el 658Emanuele Giaquinta: changed rxvt.el configure.in etags.c frame.el
659 sh-script.el text.texi 659 sh-script.el text.texi
@@ -1699,8 +1699,8 @@ Martin Neitzel: changed sc.el
1699 1699
1700Martin Rudalics: changed cus-edit.el wid-edit.el cus-start.el files.el 1700Martin Rudalics: changed cus-edit.el wid-edit.el cus-start.el files.el
1701 flyspell.el font-lock.el complete.el insdel.c ispell.el macmenu.c 1701 flyspell.el font-lock.el complete.el insdel.c ispell.el macmenu.c
1702 syntax.c w32menu.c wdired.el whitespace.el window.el xdisp.c xmenu.c 1702 syntax.c table.el w32menu.c wdired.el whitespace.el window.el xdisp.c
1703 backups.texi buffer.c buffer.h casefiddle.c and 36 other files 1703 xmenu.c backups.texi buffer.c buffer.h and 36 other files
1704 1704
1705Martin Stjernholm: wrote cc-bytecomp.el 1705Martin Stjernholm: wrote cc-bytecomp.el
1706and changed cc-engine.el cc-cmds.el cc-langs.el cc-defs.el cc-mode.el 1706and changed cc-engine.el cc-cmds.el cc-langs.el cc-defs.el cc-mode.el
@@ -1877,7 +1877,7 @@ Miles Bader: wrote button.el image-file.el macroexp.el minibuf-eldef.el
1877and changed comint.el faces.el simple.el editfns.c xfaces.c info.el 1877and changed comint.el faces.el simple.el editfns.c xfaces.c info.el
1878 xdisp.c minibuf.c wid-edit.el xterm.c subr.el window.el cus-edit.el 1878 xdisp.c minibuf.c wid-edit.el xterm.c subr.el window.el cus-edit.el
1879 diff-mode.el dispextern.h quick-install-emacs xfns.c help.el lisp.h 1879 diff-mode.el dispextern.h quick-install-emacs xfns.c help.el lisp.h
1880 textprop.c bytecomp.el and 241 other files 1880 textprop.c bytecomp.el and 242 other files
1881 1881
1882Miyashita Hisashi: changed ccl.c coding.c coding.h mule-cmds.el 1882Miyashita Hisashi: changed ccl.c coding.c coding.h mule-cmds.el
1883 mule-conf.el mule.el pop3.el 1883 mule-conf.el mule.el pop3.el
@@ -1942,7 +1942,7 @@ Niimi Satoshi: changed pp.el search.c
1942 1942
1943Niklas Morberg: changed nnweb.el gnus-art.el nnimap.el spam.el 1943Niklas Morberg: changed nnweb.el gnus-art.el nnimap.el spam.el
1944 1944
1945Nikolaj Schumacher: changed compile.el 1945Nikolaj Schumacher: changed compile.el rx.el
1946 1946
1947Noah Friedman: wrote eldoc.el rlogin.el rsz-mini.el type-break.el 1947Noah Friedman: wrote eldoc.el rlogin.el rsz-mini.el type-break.el
1948and changed comint.el emacs-buffer.gdb files.el mailabbrev.el sendmail.el 1948and changed comint.el emacs-buffer.gdb files.el mailabbrev.el sendmail.el
@@ -2291,7 +2291,7 @@ Rune Kleveland: changed xfns.c
2291Russ Allbery: changed message.el 2291Russ Allbery: changed message.el
2292 2292
2293Ryan Yeske: wrote rcirc.el 2293Ryan Yeske: wrote rcirc.el
2294and changed ffap.el rmailsum.el simple.el testcover.el 2294and changed ffap.el ispell.el rmailsum.el simple.el testcover.el
2295 2295
2296Ryszard Kubiak: changed ogonek.el 2296Ryszard Kubiak: changed ogonek.el
2297 2297
@@ -2416,9 +2416,9 @@ Stefan Monnier: wrote bibtex.el cvs-status.el diff-mode.el log-edit.el
2416 log-view.el pcvs-defs.el pcvs-info.el pcvs-parse.el pcvs-util.el 2416 log-view.el pcvs-defs.el pcvs-info.el pcvs-parse.el pcvs-util.el
2417 reveal.el smerge-mode.el 2417 reveal.el smerge-mode.el
2418and changed vc.el font-lock.el pcvs.el newcomment.el subr.el lisp.h 2418and changed vc.el font-lock.el pcvs.el newcomment.el subr.el lisp.h
2419 keyboard.c keymap.c tex-mode.el fill.el alloc.c compile.el files.el 2419 keyboard.c fill.el keymap.c tex-mode.el alloc.c compile.el files.el
2420 regex.c simple.el easy-mmode.el vc-hooks.el info.el syntax.c xdisp.c 2420 regex.c simple.el easy-mmode.el syntax.c vc-hooks.el info.el xdisp.c
2421 sh-script.el and 518 other files 2421 sh-script.el and 519 other files
2422 2422
2423Steinar Bang: changed imap.el 2423Steinar Bang: changed imap.el
2424 2424
@@ -2533,7 +2533,7 @@ Terrence Brannon: wrote landmark.el
2533 2533
2534Terry Jones: wrote shadow.el 2534Terry Jones: wrote shadow.el
2535 2535
2536Tetsurou Okazaki: changed xterm.c 2536Tetsurou Okazaki: changed log-edit.el xterm.c
2537 2537
2538Theodore Jump: changed w32-win.el w32faces.c 2538Theodore Jump: changed w32-win.el w32faces.c
2539 2539
@@ -2614,6 +2614,8 @@ Toru Tomabechi: wrote tibet-util.el tibetan.el
2614 2614
2615Toshiaki Nomura: changed uxpds.h 2615Toshiaki Nomura: changed uxpds.h
2616 2616
2617Trent Buck: changed rcirc.el
2618
2617Trey Jackson: changed spam-stat.el 2619Trey Jackson: changed spam-stat.el
2618 2620
2619Triet Hoai Lai: changed vntelex.el viet-util.el vietnamese.el 2621Triet Hoai Lai: changed vntelex.el viet-util.el vietnamese.el
@@ -2636,8 +2638,8 @@ and changed calendar.texi newsticker.texi Makefile.in
2636 2638
2637Ulrich Leodolter: changed w32proc.c 2639Ulrich Leodolter: changed w32proc.c
2638 2640
2639Ulrich Mueller: changed gud.el Makefile.in case-table.el fortran.el 2641Ulrich Mueller: changed gud.el Makefile.in XMakeAssoc.c case-table.el
2640 iso-acc.el sysdep.c 2642 fortran.el iso-acc.el sysdep.c
2641 2643
2642Ulrik Vieth: wrote meta-mode.el 2644Ulrik Vieth: wrote meta-mode.el
2643and changed files.el 2645and changed files.el
@@ -2734,7 +2736,7 @@ Yagi Tatsuya: changed gnus-art.el gnus-start.el
2734 2736
2735Yamamoto Mitsuharu: changed macterm.c macfns.c mac-win.el mac.c macterm.h 2737Yamamoto Mitsuharu: changed macterm.c macfns.c mac-win.el mac.c macterm.h
2736 macmenu.c macgui.h image.c macselect.c keyboard.c xdisp.c makefile.MPW 2738 macmenu.c macgui.h image.c macselect.c keyboard.c xdisp.c makefile.MPW
2737 config.h emacs.c Makefile.in macos.texi INSTALL darwin.h xfaces.c 2739 config.h emacs.c INSTALL Makefile.in macos.texi darwin.h xfaces.c
2738 dispnew.c alloc.c and 77 other files 2740 dispnew.c alloc.c and 77 other files
2739 2741
2740Yann Dirson: changed imenu.el 2742Yann Dirson: changed imenu.el
diff --git a/ChangeLog b/ChangeLog
index 4cb809efc12..73ff53b8a78 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
12007-06-08 Glenn Morris <rgm@gnu.org>
2
3 * configure.in: Make gtk the default toolkit.
4
52007-06-07 Glenn Morris <rgm@gnu.org>
6
7 * configure.in (NON_GNU_CPP): On Solaris, set using a proper check
8 for a Sun C compiler.
9
10 * Makefile.in (install-arch-indep): Install only the DOC- file
11 specific to the build, if possible, rather than DOC-*.
12
132007-06-02 Chong Yidong <cyd@stupidchicken.com>
14
15 * Version 22.1 released.
16
12007-05-25 Chong Yidong <cyd@stupidchicken.com> 172007-05-25 Chong Yidong <cyd@stupidchicken.com>
2 18
3 * mkinstalldirs: Sync to version in automake CVS. 19 * mkinstalldirs: Sync to version in automake CVS.
diff --git a/Makefile.in b/Makefile.in
index 10fedcce82e..5e8a26c85ce 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -409,10 +409,8 @@ install-arch-dep: mkdir
409## Note that we copy DOC* and then delete DOC 409## Note that we copy DOC* and then delete DOC
410## as a workaround for a bug in tar on Ultrix 4.2. 410## as a workaround for a bug in tar on Ultrix 4.2.
411 411
412## FIXME 412## We install only the relevant DOC file if possible
413## Should only install the DOC- file appropriate to this build, not DOC-*. 413## (ie DOC-${version}.buildnumber), otherwise DOC-${version}*.
414## http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-01/msg00417.html
415## (fix available for consideration post-release).
416 414
417## If people complain about the h flag in tar command, take that out. 415## If people complain about the h flag in tar command, take that out.
418## That flag is also used in leim/Makefile.in 416## That flag is also used in leim/Makefile.in
@@ -474,8 +472,15 @@ install-arch-indep: mkdir info
474 -unset CDPATH; \ 472 -unset CDPATH; \
475 if [ `(cd ./etc; /bin/pwd)` != `(cd $(DESTDIR)${docdir}; /bin/pwd)` ]; \ 473 if [ `(cd ./etc; /bin/pwd)` != `(cd $(DESTDIR)${docdir}; /bin/pwd)` ]; \
476 then \ 474 then \
477 echo "Copying etc/DOC-* to $(DESTDIR)${docdir} ..." ; \ 475 fullversion=`./src/emacs --version | sed -n '1 s/GNU Emacs *//p'`; \
478 (cd ./etc; tar -chf - DOC*) \ 476 if [ -f "./etc/DOC-$${fullversion}" ]; \
477 then \
478 docfile="DOC-$${fullversion}"; \
479 else \
480 docfile="DOC-${version}*"; \
481 fi; \
482 echo "Copying etc/$${docfile} to $(DESTDIR)${docdir} ..." ; \
483 (cd ./etc; tar -chf - $${docfile}) \
479 |(cd $(DESTDIR)${docdir}; umask 022; tar -xvf - && cat > /dev/null) || exit 1; \ 484 |(cd $(DESTDIR)${docdir}; umask 022; tar -xvf - && cat > /dev/null) || exit 1; \
480 (cd $(DESTDIR)$(docdir); chown $${LOGNAME:-$$USERNAME} DOC*; chmod a+r DOC*; \ 485 (cd $(DESTDIR)$(docdir); chown $${LOGNAME:-$$USERNAME} DOC*; chmod a+r DOC*; \
481 if test "`echo DOC-*`" != "DOC-*"; then rm DOC; fi); \ 486 if test "`echo DOC-*`" != "DOC-*"; then rm DOC; fi); \
diff --git a/admin/ChangeLog b/admin/ChangeLog
index b036ea11c33..7349efb1720 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,7 +1,15 @@
12007-06-07 Glenn Morris <rgm@gnu.org>
2
3 * admin.el (set-copyright): New function.
4
12007-04-25 Nick Roberts <nickrob@snap.net.nz> 52007-04-25 Nick Roberts <nickrob@snap.net.nz>
2 6
3 * make-tarball.txt: Add note about cutting the branch. 7 * make-tarball.txt: Add note about cutting the branch.
4 8
92007-06-02 Chong Yidong <cyd@stupidchicken.com>
10
11 * Version 22.1 released.
12
52007-02-03 Eli Zaretskii <eliz@gnu.org> 132007-02-03 Eli Zaretskii <eliz@gnu.org>
6 14
7 * nt/makedist.bat: Change EOL format to DOS. Don't use 15 * nt/makedist.bat: Change EOL format to DOS. Don't use
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index e64da81cc01..d8e273c0343 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -55,7 +55,7 @@ that should be installed on the release branch after 22.1 is released.
55** Changes to six pbm icons in etc/images. 55** Changes to six pbm icons in etc/images.
56Sync change from trunk 2007-05-19. 56Sync change from trunk 2007-05-19.
57 57
58** viper and tramp should not load cl at run time. 58** viper should not load cl at run time.
59 59
60** yamaoka@jpl.org's patch for mail-extract-address-components problem. 60** yamaoka@jpl.org's patch for mail-extract-address-components problem.
61 61
diff --git a/admin/admin.el b/admin/admin.el
index 342b40f9bde..175eb6ded1b 100644
--- a/admin/admin.el
+++ b/admin/admin.el
@@ -24,6 +24,8 @@
24 24
25;; add-release-logs Add ``Version X released'' change log entries. 25;; add-release-logs Add ``Version X released'' change log entries.
26;; set-version Change Emacs version number in source tree. 26;; set-version Change Emacs version number in source tree.
27;; set-copyright Change emacs short copyright string (eg as
28;; printed by --version) in source tree.
27 29
28;;; Code: 30;;; Code:
29 31
@@ -158,5 +160,50 @@ Root must be the root of an Emacs source tree."
158 (rx (and (submatch (1+ (in "a-z"))) (0+ space) ?\, (0+ space) 160 (rx (and (submatch (1+ (in "a-z"))) (0+ space) ?\, (0+ space)
159 "/* development, alpha, beta, or final (release) */")))))) 161 "/* development, alpha, beta, or final (release) */"))))))
160 162
163;; Note this makes some assumptions about form of short copyright.
164(defun set-copyright (root copyright)
165 "Set Emacs short copyright to COPYRIGHT in relevant files under ROOT.
166Root must be the root of an Emacs source tree."
167 (interactive (list
168 (read-directory-name "Emacs root directory: " nil nil t)
169 (read-string
170 "Short copyright string: "
171 (format "Copyright (C) %s Free Software Foundation, Inc."
172 (format-time-string "%Y")))))
173 (unless (file-exists-p (expand-file-name "src/emacs.c" root))
174 (error "%s doesn't seem to be the root of an Emacs source tree" root))
175 (set-version-in-file root "lisp/version.el" copyright
176 (rx (and "emacs-copyright" (0+ space)
177 ?\" (submatch (1+ (not (in ?\")))) ?\")))
178 (set-version-in-file root "lib-src/etags.c" copyright
179 (rx (and "emacs_copyright" (0+ (not (in ?\")))
180 ?\" (submatch (1+ (not (in ?\")))) ?\")))
181 (set-version-in-file root "lib-src/rcs2log" copyright
182 (rx (and "Copyright" (0+ space) ?= (0+ space)
183 ?\' (submatch (1+ nonl)))))
184 (set-version-in-file
185 root "mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings"
186 copyright (rx (and "CFBundleGetInfoString" (0+ space) ?= (0+ space) ?\"
187 (1+ anything)
188 (submatch "Copyright" (1+ (not (in ?\")))))))
189 ;; This one is a nuisance, as it needs to be split over two lines.
190 (string-match "\\(.*[0-9]\\{4\\} *\\)\\(.*\\)" copyright)
191 (let ((csign "\\0xa9")
192 (cyear (match-string 1 copyright)) ; "Copyright (C) 2007 "
193 (owner (match-string 2 copyright))) ; "Free Software Foundation, Inc."
194 (set-version-in-file root "mac/src/Emacs.r"
195 (regexp-quote
196 (replace-regexp-in-string "(C)"
197 (regexp-quote csign) cyear))
198 (rx (and
199 (submatch "Copyright" (0+ space) (eval csign)
200 (0+ space) (= 4 num)
201 (0+ (not (in ?\")))) ?\")))
202 (set-version-in-file root "mac/src/Emacs.r" owner
203 (rx (and ?\"
204 (submatch (1+ (not (in ?\"))))
205 ?\" (0+ space)
206 "/* Long version number */")))))
207
161;;; arch-tag: 4ea83636-2293-408b-884e-ad64f22a3bf5 208;;; arch-tag: 4ea83636-2293-408b-884e-ad64f22a3bf5
162;; admin.el ends here. 209;; admin.el ends here.
diff --git a/admin/notes/copyright b/admin/notes/copyright
index 6c9a7382c33..91bf87f3b08 100644
--- a/admin/notes/copyright
+++ b/admin/notes/copyright
@@ -131,7 +131,7 @@ mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings
131mac/src/Emacs.r # resource 'vers' 131mac/src/Emacs.r # resource 'vers'
132src/emacs.c 132src/emacs.c
133 - remember to change the latest copyright year in the --version output. 133 - remember to change the latest copyright year in the --version output.
134 [Post-release, will automate this like set-version does for version.] 134 `set-copyright' in admin.el will do all the above.
135 135
136<top-level>/install-sh 136<top-level>/install-sh
137lispintro/install-sh 137lispintro/install-sh
diff --git a/admin/nt/README-ftp-server b/admin/nt/README-ftp-server
index 53a06c3d80a..6b437eb2f1e 100644
--- a/admin/nt/README-ftp-server
+++ b/admin/nt/README-ftp-server
@@ -35,6 +35,72 @@
35 old binaries. 35 old binaries.
36 36
37 37
38* Files in this directory
39
40 + emacs-22.1-bin-i386.zip
41 Windows binaries of Emacs-22.1, with all lisp code and documentation
42 included.
43
44 Download this file if you want a single installation package, and
45 are not interested in the C source code for Emacs. After
46 unpacking, you can optionally run the file bin/addpm.exe to have
47 Emacs add icons to the Start Menu.
48
49 If you need the C source code at a later date, it will be safe to
50 unpack the source distribution on top of this installation.
51
52 + emacs-22.1-barebin-i386.zip
53 Windows binaries of Emacs-22.1, without lisp code or documentation.
54
55 Download this file if you already have the source distribution, or
56 if you need to redump the emacs.exe executable.
57
58 Unpack this over the top of either the source distribution or the
59 bin distribution above. It contains the bin subdirectory and etc/DOC
60 file, plus temacs.exe and dump.bat, which are required if you want to
61 redump emacs without recompiling it.
62
63 + emacs-21.3-bin-i386.tar.gz
64 Windows binaries of Emacs 21.3, with compiled lisp code and some
65 documentation included.
66
67 This is provided for users who require the older version.
68
69 + emacs-21.3-leim.tar.gz
70 Compiled lisp input methods. This optional addition to Emacs-21.3
71 is required if you want to enter languages that are not directly
72 supported by your keyboard.
73
74* Image support
75
76 Emacs 22.1 contains support for images, however for most image formats
77 supporting libraries are required. This distribution has been tested
78 with the libraries that are distributed with GTK for Windows, and the
79 libraries found at http://gnuwin32.sourceforge.net/. The following image
80 formats are supported:
81
82 PBM/PGM/PPM: Supported natively by Emacs. This format is used for
83 the black and white versions of the toolbar icons.
84
85 XPM: requires a Windows port of the XPM library 3.4 or later,
86 which will be named xpm4.dll, libxpm-nox4.dll or
87 libxpm.dll. This format is used for the color versions of the
88 toolbar icons, and other images in Emacs.
89
90 PNG: requires the PNG reference library 1.2 or later, which will
91 be named libpng13d.dll, libpng13.dll, libpng12d.dll, libpng12.dll
92 or libpng.dll. LibPNG requires zlib, which should come from the same
93 source as you got libpng.
94
95 JPEG: requires the Independant JPEG Group's libjpeg 6b or later,
96 which will be called jpeg62.dll, libjpeg.dll, jpeg-62.dll or jpeg.dll.
97
98 TIFF: requires libTIFF 3.0 or later, which will be called libtiff3.dll
99 or libtiff.dll.
100
101 GIF: requires libungif or giflib 4.1 or later, which will be
102 called giflib4.dll, libungif4.dll or libungif.dll.
103
38* Distributions in .tar.gz and .zip format 104* Distributions in .tar.gz and .zip format
39 105
40 Emacs is distributed primarily as source code in a large gzipped tar file 106 Emacs is distributed primarily as source code in a large gzipped tar file
@@ -46,23 +112,6 @@
46 but since there are no longer legal problems with .zip files, and the 112 but since there are no longer legal problems with .zip files, and the
47 latest versions of Windows support these natively, the Windows binaries 113 latest versions of Windows support these natively, the Windows binaries
48 of Emacs are now distributed as .zip files. 114 of Emacs are now distributed as .zip files.
49 Here are the combinations (i386 in the name indicates a zipfile contains
50 executables compiled for Intel-compatible x86 systems):
51
52 + Primary precompiled distribution, including lisp source:
53
54 emacs-22.1-bin-i386.zip
55
56 NB. If you just want to run Emacs, get one of the distributions above.
57
58 + Bare executables, useful if you want to get the complete source
59 release, but can't compile Emacs yourself:
60
61 emacs-22.1-barebin-i386.zip (requires ../emacs-22.1.tar.gz)
62
63 + The complete official source for Emacs:
64
65 ../emacs-22.1.tar.gz
66 115
67* Distributions for non-x86 platforms 116* Distributions for non-x86 platforms
68 117
@@ -108,7 +157,7 @@
108 You may be prompted to rename or overwrite directories when using 157 You may be prompted to rename or overwrite directories when using
109 djtarnt: simply type return to continue (this is harmless). 158 djtarnt: simply type return to continue (this is harmless).
110 159
111 The precompiled binaries can be unpacked using unzip.exe from info-zip.org 160 Zip files can be unpacked using unzip.exe from info-zip.org
112 if you do not already have other tools to do this. 161 if you do not already have other tools to do this.
113 162
114 % unzip some.zip 163 % unzip some.zip
@@ -165,7 +214,10 @@
165 http://www.gnu.org/software/emacs/windows/ntemacs.html 214 http://www.gnu.org/software/emacs/windows/ntemacs.html
166 215
167 This document serves as an FAQ and a source for further information 216 This document serves as an FAQ and a source for further information
168 about the Windows port and related software packages. 217 about the Windows port and related software packages. Note that as
218 of writing, most of the information in that FAQ was for Emacs-21.3
219 and earlier versions, so some information may not be relevant to
220 Emacs-22.1.
169 221
170 In addition to the FAQ, there is a mailing list for discussing issues 222 In addition to the FAQ, there is a mailing list for discussing issues
171 related to the Windows port of Emacs. For information about the 223 related to the Windows port of Emacs. For information about the
diff --git a/admin/nt/makedist.bat b/admin/nt/makedist.bat
index 56fca7949fa..484ab88004c 100755
--- a/admin/nt/makedist.bat
+++ b/admin/nt/makedist.bat
@@ -36,7 +36,7 @@ rem Info-ZIP zip seems to be broken on Windows.
36rem It always writes to zip.zip and treats the zipfile argument as one 36rem It always writes to zip.zip and treats the zipfile argument as one
37rem of the files to go in it. 37rem of the files to go in it.
38rem zip -9 -r %2-bin-i386 emacs-%1/BUGS emacs-%1/README emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp emacs-%1/leim -x emacs.mdp *.pdb *.opt *~ CVS 38rem zip -9 -r %2-bin-i386 emacs-%1/BUGS emacs-%1/README emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp emacs-%1/leim -x emacs.mdp *.pdb *.opt *~ CVS
397z a -tZIP -mx=9 -xr!emacs.mdp -xr!*.pdb -xr!*.opt -xr!*~ -xr!CVS -xr!.arch-inventory %2-bin-i386.zip emacs-%1/BUGS emacs-%1/README emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp emacs-%1/leim 397z a -tZIP -mx=9 -xr!emacs.mdp -xr!*.pdb -xr!*.opt -xr!*~ -xr!CVS -xr!.arch-inventory %2-bin-i386.zip emacs-%1/BUGS emacs-%1/README emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp emacs-%1/leim emacs-%1/site-lisp
40del emacs-%1\README.W32 40del emacs-%1\README.W32
41if not (%4) == () goto end 41if not (%4) == () goto end
42 42
diff --git a/configure b/configure
index d48db6cdcb0..2e82932a306 100755
--- a/configure
+++ b/configure
@@ -412,10 +412,10 @@ else
412fi 412fi
413 413
414test \$exitcode = 0") || { 414test \$exitcode = 0") || {
415 echo No shell found that supports shell functions. 415 echo Please tell bug-autoconf@gnu.org about your system,
416 echo Please tell autoconf@gnu.org about your system, 416 echo including any error possibly output before this message.
417 echo including any error possibly output before this 417 echo This can help us improve future autoconf versions.
418 echo message 418 echo Configuration will now proceed without shell functions.
419} 419}
420 420
421 421
@@ -1891,7 +1891,7 @@ fi
1891# Check whether --with-x-toolkit was given. 1891# Check whether --with-x-toolkit was given.
1892if test "${with_x_toolkit+set}" = set; then 1892if test "${with_x_toolkit+set}" = set; then
1893 withval=$with_x_toolkit; case "${withval}" in 1893 withval=$with_x_toolkit; case "${withval}" in
1894 y | ye | yes ) val=athena ;; 1894 y | ye | yes ) val=gtk ;;
1895 n | no ) val=no ;; 1895 n | no ) val=no ;;
1896 l | lu | luc | luci | lucid ) val=lucid ;; 1896 l | lu | luc | luci | lucid ) val=lucid ;;
1897 a | at | ath | athe | athen | athena ) val=athena ;; 1897 a | at | ath | athe | athen | athena ) val=athena ;;
@@ -1900,10 +1900,10 @@ if test "${with_x_toolkit+set}" = set; then
1900 * ) 1900 * )
1901{ { echo "$as_me:$LINENO: error: \`--with-x-toolkit=$withval' is invalid\; 1901{ { echo "$as_me:$LINENO: error: \`--with-x-toolkit=$withval' is invalid\;
1902this option's value should be \`yes', \`no', \`lucid', \`athena', \`motif' or \`gtk'. 1902this option's value should be \`yes', \`no', \`lucid', \`athena', \`motif' or \`gtk'.
1903Currently, \`yes', \`athena' and \`lucid' are synonyms." >&5 1903Currently, \`yes' and \`gtk', and \`athena' and \`lucid' are synonyms." >&5
1904echo "$as_me: error: \`--with-x-toolkit=$withval' is invalid\; 1904echo "$as_me: error: \`--with-x-toolkit=$withval' is invalid\;
1905this option's value should be \`yes', \`no', \`lucid', \`athena', \`motif' or \`gtk'. 1905this option's value should be \`yes', \`no', \`lucid', \`athena', \`motif' or \`gtk'.
1906Currently, \`yes', \`athena' and \`lucid' are synonyms." >&2;} 1906Currently, \`yes' and \`gtk', and \`athena' and \`lucid' are synonyms." >&2;}
1907 { (exit 1); exit 1; }; } 1907 { (exit 1); exit 1; }; }
1908 ;; 1908 ;;
1909 esac 1909 esac
@@ -3002,14 +3002,8 @@ _ACEOF
3002 ;; 3002 ;;
3003 *-sunos5* | *-solaris* ) 3003 *-sunos5* | *-solaris* )
3004 opsys=sol2-6 3004 opsys=sol2-6
3005## FIXME: make this into a proper fix that checks the compiler type, 3005 emacs_check_sunpro_c=yes
3006## rather than relying on path. Or is /usr/ccs/lib/cpp a bad default now? 3006 NON_GNU_CPP=/usr/ccs/lib/cpp
3007 if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then
3008 ## -Xs prevents spurious whitespace.
3009 NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs"
3010 else
3011 NON_GNU_CPP=/usr/ccs/lib/cpp
3012 fi
3013 ;; 3007 ;;
3014 * ) opsys=bsd4-2 ;; 3008 * ) opsys=bsd4-2 ;;
3015 esac 3009 esac
@@ -4165,6 +4159,72 @@ if test -n "$CPP" && test -d "$CPP"; then
4165 CPP= 4159 CPP=
4166fi 4160fi
4167 4161
4162## If not using gcc, and on Solaris, and no CPP specified, see if
4163## using a Sun compiler, which needs -Xs to prevent whitespace.
4164if test x"$GCC" != xyes && test x"$emacs_check_sunpro_c" = xyes && \
4165 test x"$CPP" = x; then
4166 { echo "$as_me:$LINENO: checking whether we are using a Sun C compiler" >&5
4167echo $ECHO_N "checking whether we are using a Sun C compiler... $ECHO_C" >&6; }
4168
4169if test "${emacs_cv_sunpro_c+set}" = set; then
4170 echo $ECHO_N "(cached) $ECHO_C" >&6
4171else
4172 cat >conftest.$ac_ext <<_ACEOF
4173/* confdefs.h. */
4174_ACEOF
4175cat confdefs.h >>conftest.$ac_ext
4176cat >>conftest.$ac_ext <<_ACEOF
4177/* end confdefs.h. */
4178
4179int
4180main ()
4181{
4182#ifndef __SUNPRO_C
4183fail;
4184#endif
4185
4186 ;
4187 return 0;
4188}
4189_ACEOF
4190rm -f conftest.$ac_objext conftest$ac_exeext
4191if { (ac_try="$ac_link"
4192case "(($ac_try" in
4193 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4194 *) ac_try_echo=$ac_try;;
4195esac
4196eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4197 (eval "$ac_link") 2>conftest.er1
4198 ac_status=$?
4199 grep -v '^ *+' conftest.er1 >conftest.err
4200 rm -f conftest.er1
4201 cat conftest.err >&5
4202 echo "$as_me:$LINENO: \$? = $ac_status" >&5
4203 (exit $ac_status); } && {
4204 test -z "$ac_c_werror_flag" ||
4205 test ! -s conftest.err
4206 } && test -s conftest$ac_exeext &&
4207 $as_test_x conftest$ac_exeext; then
4208 emacs_cv_sunpro_c=yes
4209else
4210 echo "$as_me: failed program was:" >&5
4211sed 's/^/| /' conftest.$ac_ext >&5
4212
4213 emacs_cv_sunpro_c=no
4214fi
4215
4216rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
4217 conftest$ac_exeext conftest.$ac_ext
4218fi
4219
4220 { echo "$as_me:$LINENO: result: $emacs_cv_sunpro_c" >&5
4221echo "${ECHO_T}$emacs_cv_sunpro_c" >&6; }
4222
4223 if test x"$emacs_cv_sunpro_c" = xyes; then
4224 NON_GNU_CPP="$CC -E -Xs"
4225 fi
4226fi
4227
4168#### Some systems specify a CPP to use unless we are using GCC. 4228#### Some systems specify a CPP to use unless we are using GCC.
4169#### Now that we know whether we are using GCC, we can decide whether 4229#### Now that we know whether we are using GCC, we can decide whether
4170#### to use that one. 4230#### to use that one.
@@ -4192,7 +4252,6 @@ then
4192 CC="$CC $NON_GCC_TEST_OPTIONS" 4252 CC="$CC $NON_GCC_TEST_OPTIONS"
4193fi 4253fi
4194 4254
4195
4196ac_ext=c 4255ac_ext=c
4197ac_cpp='$CPP $CPPFLAGS' 4256ac_cpp='$CPP $CPPFLAGS'
4198ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' 4257ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -9509,7 +9568,13 @@ case "${window_system}" in
9509 gtk ) with_gtk=yes 9568 gtk ) with_gtk=yes
9510 USE_X_TOOLKIT=none ;; 9569 USE_X_TOOLKIT=none ;;
9511 no ) USE_X_TOOLKIT=none ;; 9570 no ) USE_X_TOOLKIT=none ;;
9512 * ) USE_X_TOOLKIT=maybe ;; 9571 * )
9572 if test x"$with_gtk" = xyes; then
9573 USE_X_TOOLKIT=none
9574 else
9575 USE_X_TOOLKIT=maybe
9576 fi
9577 ;;
9513 esac 9578 esac
9514 ;; 9579 ;;
9515 mac | none ) 9580 mac | none )
@@ -10944,7 +11009,8 @@ HAVE_GTK=no
10944if test "${with_gtk}" = "yes" && test "$USE_X_TOOLKIT" = "gtk"; then 11009if test "${with_gtk}" = "yes" && test "$USE_X_TOOLKIT" = "gtk"; then
10945 USE_X_TOOLKIT=none 11010 USE_X_TOOLKIT=none
10946fi 11011fi
10947if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then 11012if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk" || \
11013 test "$USE_X_TOOLKIT" = "maybe"; then
10948 if test "$USE_X_TOOLKIT" != "none" && test "$USE_X_TOOLKIT" != "maybe"; then 11014 if test "$USE_X_TOOLKIT" != "none" && test "$USE_X_TOOLKIT" != "maybe"; then
10949 { { echo "$as_me:$LINENO: error: Conflicting options, --with-gtk is incompatible with --with-x-toolkit=${with_x_toolkit}" >&5 11015 { { echo "$as_me:$LINENO: error: Conflicting options, --with-gtk is incompatible with --with-x-toolkit=${with_x_toolkit}" >&5
10950echo "$as_me: error: Conflicting options, --with-gtk is incompatible with --with-x-toolkit=${with_x_toolkit}" >&2;} 11016echo "$as_me: error: Conflicting options, --with-gtk is incompatible with --with-x-toolkit=${with_x_toolkit}" >&2;}
@@ -11005,11 +11071,7 @@ fi
11005 fi 11071 fi
11006 11072
11007 if test "$PKG_CONFIG" = "no" ; then 11073 if test "$PKG_CONFIG" = "no" ; then
11008 { { echo "$as_me:$LINENO: error: 11074 pkg_check_gtk=no
11009 *** The pkg-config script could not be found. Make sure it is in your path, or give the full path to pkg-config with the PKG_CONFIG environment variable or --with-pkg-config-prog. Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." >&5
11010echo "$as_me: error:
11011 *** The pkg-config script could not be found. Make sure it is in your path, or give the full path to pkg-config with the PKG_CONFIG environment variable or --with-pkg-config-prog. Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." >&2;}
11012 { (exit 1); exit 1; }; }
11013 else 11075 else
11014 PKG_CONFIG_MIN_VERSION=0.9.0 11076 PKG_CONFIG_MIN_VERSION=0.9.0
11015 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then 11077 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
@@ -11040,7 +11102,7 @@ echo "${ECHO_T}no" >&6; }
11040 ## If we have a custom action on failure, don't print errors, but 11102 ## If we have a custom action on failure, don't print errors, but
11041 ## do set a variable so people can do so. 11103 ## do set a variable so people can do so.
11042 GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$GTK_MODULES"` 11104 GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$GTK_MODULES"`
11043 echo $GTK_PKG_ERRORS 11105
11044 fi 11106 fi
11045 11107
11046 11108
@@ -11052,12 +11114,20 @@ echo "${ECHO_T}no" >&6; }
11052 fi 11114 fi
11053 11115
11054 if test $succeeded = yes; then 11116 if test $succeeded = yes; then
11055 : 11117 pkg_check_gtk=yes
11056 else 11118 else
11057 { { echo "$as_me:$LINENO: error: Library requirements ($GTK_MODULES) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5 11119 pkg_check_gtk=no
11058echo "$as_me: error: Library requirements ($GTK_MODULES) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;} 11120 fi
11121
11122 if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
11123 { { echo "$as_me:$LINENO: error: $GTK_PKG_ERRORS" >&5
11124echo "$as_me: error: $GTK_PKG_ERRORS" >&2;}
11059 { (exit 1); exit 1; }; } 11125 { (exit 1); exit 1; }; }
11060 fi 11126 fi
11127fi
11128
11129
11130if test x"$pkg_check_gtk" = xyes; then
11061 11131
11062 11132
11063 11133
@@ -11160,18 +11230,25 @@ fi
11160done 11230done
11161 11231
11162 if test "${GTK_COMPILES}" != "yes"; then 11232 if test "${GTK_COMPILES}" != "yes"; then
11163 { { echo "$as_me:$LINENO: error: Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?" >&5 11233 if test "$USE_X_TOOLKIT" != "maybe"; then
11234 { { echo "$as_me:$LINENO: error: Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?" >&5
11164echo "$as_me: error: Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?" >&2;} 11235echo "$as_me: error: Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?" >&2;}
11165 { (exit 1); exit 1; }; }; 11236 { (exit 1); exit 1; }; };
11166 fi 11237 fi
11167 11238 else
11168 HAVE_GTK=yes 11239 HAVE_GTK=yes
11169 11240
11170cat >>confdefs.h <<\_ACEOF 11241cat >>confdefs.h <<\_ACEOF
11171#define HAVE_GTK 1 11242#define HAVE_GTK 1
11172_ACEOF 11243_ACEOF
11173 11244
11174 USE_X_TOOLKIT=none 11245 USE_X_TOOLKIT=none
11246 fi
11247
11248fi
11249
11250
11251if test "${HAVE_GTK}" = "yes"; then
11175 11252
11176 if test "$with_toolkit_scroll_bars" != no; then 11253 if test "$with_toolkit_scroll_bars" != no; then
11177 with_toolkit_scroll_bars=yes 11254 with_toolkit_scroll_bars=yes
diff --git a/configure.in b/configure.in
index 6b352d4a6f1..ad7504d4490 100644
--- a/configure.in
+++ b/configure.in
@@ -84,7 +84,7 @@ AC_ARG_WITH(x-toolkit,
84[ --with-x-toolkit=KIT use an X toolkit 84[ --with-x-toolkit=KIT use an X toolkit
85 (KIT = yes/lucid/athena/motif/gtk/no)], 85 (KIT = yes/lucid/athena/motif/gtk/no)],
86[ case "${withval}" in 86[ case "${withval}" in
87 y | ye | yes ) val=athena ;; 87 y | ye | yes ) val=gtk ;;
88 n | no ) val=no ;; 88 n | no ) val=no ;;
89 l | lu | luc | luci | lucid ) val=lucid ;; 89 l | lu | luc | luci | lucid ) val=lucid ;;
90 a | at | ath | athe | athen | athena ) val=athena ;; 90 a | at | ath | athe | athen | athena ) val=athena ;;
@@ -98,7 +98,7 @@ dnl AC_MSG_ERROR([the `--with-x-toolkit' option is supposed to have a value
98dnl which is `yes', `no', `lucid', `athena', `motif' or `open-look'.]) 98dnl which is `yes', `no', `lucid', `athena', `motif' or `open-look'.])
99AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid\; 99AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid\;
100this option's value should be `yes', `no', `lucid', `athena', `motif' or `gtk'. 100this option's value should be `yes', `no', `lucid', `athena', `motif' or `gtk'.
101Currently, `yes', `athena' and `lucid' are synonyms.]) 101Currently, `yes' and `gtk', and `athena' and `lucid' are synonyms.])
102 ;; 102 ;;
103 esac 103 esac
104 with_x_toolkit=$val 104 with_x_toolkit=$val
@@ -1032,14 +1032,8 @@ dnl see the `changequote' comment above.
1032 ;; 1032 ;;
1033 *-sunos5* | *-solaris* ) 1033 *-sunos5* | *-solaris* )
1034 opsys=sol2-6 1034 opsys=sol2-6
1035## FIXME: make this into a proper fix that checks the compiler type, 1035 emacs_check_sunpro_c=yes
1036## rather than relying on path. Or is /usr/ccs/lib/cpp a bad default now? 1036 NON_GNU_CPP=/usr/ccs/lib/cpp
1037 if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then
1038 ## -Xs prevents spurious whitespace.
1039 NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs"
1040 else
1041 NON_GNU_CPP=/usr/ccs/lib/cpp
1042 fi
1043 ;; 1037 ;;
1044 * ) opsys=bsd4-2 ;; 1038 * ) opsys=bsd4-2 ;;
1045 esac 1039 esac
@@ -1275,6 +1269,24 @@ if test -n "$CPP" && test -d "$CPP"; then
1275 CPP= 1269 CPP=
1276fi 1270fi
1277 1271
1272## If not using gcc, and on Solaris, and no CPP specified, see if
1273## using a Sun compiler, which needs -Xs to prevent whitespace.
1274if test x"$GCC" != xyes && test x"$emacs_check_sunpro_c" = xyes && \
1275 test x"$CPP" = x; then
1276 AC_MSG_CHECKING([whether we are using a Sun C compiler])
1277 AC_CACHE_VAL(emacs_cv_sunpro_c,
1278 [AC_TRY_LINK([],
1279[#ifndef __SUNPRO_C
1280fail;
1281#endif
1282], emacs_cv_sunpro_c=yes, emacs_cv_sunpro_c=no)])
1283 AC_MSG_RESULT($emacs_cv_sunpro_c)
1284
1285 if test x"$emacs_cv_sunpro_c" = xyes; then
1286 NON_GNU_CPP="$CC -E -Xs"
1287 fi
1288fi
1289
1278#### Some systems specify a CPP to use unless we are using GCC. 1290#### Some systems specify a CPP to use unless we are using GCC.
1279#### Now that we know whether we are using GCC, we can decide whether 1291#### Now that we know whether we are using GCC, we can decide whether
1280#### to use that one. 1292#### to use that one.
@@ -1868,9 +1880,15 @@ dnl Dont set this for GTK. A lot of tests below assumes Xt when
1868dnl USE_X_TOOLKIT is set. 1880dnl USE_X_TOOLKIT is set.
1869 USE_X_TOOLKIT=none ;; 1881 USE_X_TOOLKIT=none ;;
1870 no ) USE_X_TOOLKIT=none ;; 1882 no ) USE_X_TOOLKIT=none ;;
1871dnl If user did not say whether to use a toolkit, 1883dnl If user did not say whether to use a toolkit, make this decision later:
1872dnl make this decision later: use the toolkit if we have X11R5 or newer. 1884dnl use the toolkit if we have gtk, or X11R5 or newer.
1873 * ) USE_X_TOOLKIT=maybe ;; 1885 * )
1886 if test x"$with_gtk" = xyes; then
1887 USE_X_TOOLKIT=none
1888 else
1889 USE_X_TOOLKIT=maybe
1890 fi
1891 ;;
1874 esac 1892 esac
1875 ;; 1893 ;;
1876 mac | none ) 1894 mac | none )
@@ -2098,7 +2116,8 @@ HAVE_GTK=no
2098if test "${with_gtk}" = "yes" && test "$USE_X_TOOLKIT" = "gtk"; then 2116if test "${with_gtk}" = "yes" && test "$USE_X_TOOLKIT" = "gtk"; then
2099 USE_X_TOOLKIT=none 2117 USE_X_TOOLKIT=none
2100fi 2118fi
2101if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then 2119if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk" || \
2120 test "$USE_X_TOOLKIT" = "maybe"; then
2102 if test "$USE_X_TOOLKIT" != "none" && test "$USE_X_TOOLKIT" != "maybe"; then 2121 if test "$USE_X_TOOLKIT" != "none" && test "$USE_X_TOOLKIT" != "maybe"; then
2103 AC_MSG_ERROR([Conflicting options, --with-gtk is incompatible with --with-x-toolkit=${with_x_toolkit}]); 2122 AC_MSG_ERROR([Conflicting options, --with-gtk is incompatible with --with-x-toolkit=${with_x_toolkit}]);
2104 fi 2123 fi
@@ -2111,7 +2130,15 @@ if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then
2111 PKG_CONFIG="${with_pkg_config_prog}" 2130 PKG_CONFIG="${with_pkg_config_prog}"
2112 fi 2131 fi
2113 dnl Checks for libraries. 2132 dnl Checks for libraries.
2114 PKG_CHECK_MODULES(GTK, $GTK_MODULES) 2133 PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
2134 if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
2135 AC_MSG_ERROR($GTK_PKG_ERRORS)
2136 fi
2137fi
2138
2139
2140if test x"$pkg_check_gtk" = xyes; then
2141
2115 AC_SUBST(GTK_CFLAGS) 2142 AC_SUBST(GTK_CFLAGS)
2116 AC_SUBST(GTK_LIBS) 2143 AC_SUBST(GTK_LIBS)
2117 C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS" 2144 C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
@@ -2121,12 +2148,19 @@ if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "gtk"; then
2121 GTK_COMPILES=no 2148 GTK_COMPILES=no
2122 AC_CHECK_FUNCS(gtk_main, GTK_COMPILES=yes) 2149 AC_CHECK_FUNCS(gtk_main, GTK_COMPILES=yes)
2123 if test "${GTK_COMPILES}" != "yes"; then 2150 if test "${GTK_COMPILES}" != "yes"; then
2124 AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?]); 2151 if test "$USE_X_TOOLKIT" != "maybe"; then
2152 AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?]);
2153 fi
2154 else
2155 HAVE_GTK=yes
2156 AC_DEFINE(HAVE_GTK, 1, [Define to 1 if using GTK.])
2157 USE_X_TOOLKIT=none
2125 fi 2158 fi
2126 2159
2127 HAVE_GTK=yes 2160fi
2128 AC_DEFINE(HAVE_GTK, 1, [Define to 1 if using GTK.]) 2161
2129 USE_X_TOOLKIT=none 2162
2163if test "${HAVE_GTK}" = "yes"; then
2130 2164
2131 dnl GTK scrollbars resemble toolkit scrollbars a lot, so to avoid 2165 dnl GTK scrollbars resemble toolkit scrollbars a lot, so to avoid
2132 dnl a lot if #ifdef:s, say we have toolkit scrollbars. 2166 dnl a lot if #ifdef:s, say we have toolkit scrollbars.
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 425b0dc353a..5c9dfb6a197 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,34 @@
12007-06-07 Mark H. Weaver <mhw@netris.org> (tiny change)
2
3 * NEWS (set-mark-command-repeat-pop): Fix duplicate entry.
4
52007-06-07 Michael Olson <mwolson@gnu.org>
6
7 * MORE.STUFF: Update eshell URL.
8
92007-06-06 Carsten Dominik <dominik@science.uva.nl>
10
11 * orgcard.tex: Version 4.77.
12
132007-06-05 Michael Albinus <michael.albinus@gmx.de>
14
15 * NEWS: Add socks.el as new package.
16
172007-06-02 Thien-Thi Nguyen <ttn@gnuvola.org>
18
19 * MORE.STUFF (Hideshow): Delete.
20 (EDB, Go in a buffer): Update urls.
21 Suggested by CHENG Gao <chenggao@gmail.com>.
22
232007-06-02 Chong Yidong <cyd@stupidchicken.com>
24
25 * Version 22.1 released.
26
272007-06-02 CHENG Gao <chenggao@gmail.com>
28
29 * MORE.STUFF: Remove dead URL for Fortune, and update URLs for
30 Hideshow, Org, EDB, and Remember.
31
12007-05-29 Robert J. Chassell <bob@rattlesnake.com> 322007-05-29 Robert J. Chassell <bob@rattlesnake.com>
2 33
3 * NEWS: Fix instances of `allow' without object. 34 * NEWS: Fix instances of `allow' without object.
@@ -254,7 +285,7 @@
254 285
2552007-02-19 Kenichi Handa <handa@m17n.org> 2862007-02-19 Kenichi Handa <handa@m17n.org>
256 287
257 * NEWS (New language environmets): Add "Esperanto". 288 * NEWS (New language environments): Add "Esperanto".
258 289
2592007-02-16 Dale Gulledge <dsplat@rochester.rr.com> 2902007-02-16 Dale Gulledge <dsplat@rochester.rr.com>
260 291
diff --git a/etc/MORE.STUFF b/etc/MORE.STUFF
index d91d22c6d52..c24a6735bf3 100644
--- a/etc/MORE.STUFF
+++ b/etc/MORE.STUFF
@@ -63,25 +63,25 @@ You might find bug-fixes or enhancements in these places.
63 * ERC: IRC client: 63 * ERC: IRC client:
64 <URL:http://www.emacswiki.org/cgi-bin/wiki?EmacsIRCClient> 64 <URL:http://www.emacswiki.org/cgi-bin/wiki?EmacsIRCClient>
65 65
66 * EShell: <URL:http://www.newartisans.com/johnw/emacs.html> 66 * EShell: <URL:http://johnwiegley.com/eshell.html>
67 67
68 * Etags: <URL:ftp://pot.potorti.it/pub/software/unix/etags.tar.gz> 68 * Etags: <URL:ftp://pot.potorti.it/pub/software/unix/etags.tar.gz>
69 69
70 * Expand: <URL:http://w3.teaser.fr/%7Eflepied/expand.el.gz> 70 * Expand: <URL:http://w3.teaser.fr/%7Eflepied/expand.el.gz>
71 71
72 * Fortune: <URL:http://www.coling.uni-freiburg.de/%7Eschauer/emacs.html>
73
74 * Gnus: <URL:http://www.gnus.org/> 72 * Gnus: <URL:http://www.gnus.org/>
75 73
76 * Ffap: <URL:http://www.mathcs.emory.edu/%7Emic/ftp/emacs/> 74 * Ffap: <URL:http://www.mathcs.emory.edu/%7Emic/ftp/emacs/>
77 (And some addons for it.) 75 (And some addons for it.)
78 76
79 * Hideshow: <URL:http://www.glug.org/people/ttn/software/hideshow/> 77 * Hideshow: <URL:http://staff.science.uva.nl/~dominik/Tools/org/>
80 78
81 * Ispell: <URL:http://www.eng.utah.edu/~kstevens/ispell-page.html> 79 * Ispell: <URL:http://www.eng.utah.edu/~kstevens/ispell-page.html>
82 80
83 * MH-E: <URL:http://mh-e.sourceforge.net/> 81 * MH-E: <URL:http://mh-e.sourceforge.net/>
84 82
83 * Org mode: <URL:http://staff.science.uva.nl/~dominik/Tools/org/>
84
85 * PS mode: <URL:http://odur.let.rug.nl/%7Ekleiweg/postscript/> 85 * PS mode: <URL:http://odur.let.rug.nl/%7Ekleiweg/postscript/>
86 86
87 * PS-print: <URL:http://www.emacswiki.org/cgi-bin/wiki/PsPrintPackage> 87 * PS-print: <URL:http://www.emacswiki.org/cgi-bin/wiki/PsPrintPackage>
@@ -148,7 +148,7 @@ Several are for Debian GNU/Linux in particular.
148 148
149 * ECB: Emacs Code Browser: <URL:http://ecb.sourceforge.net/> 149 * ECB: Emacs Code Browser: <URL:http://ecb.sourceforge.net/>
150 150
151 * EDB: database: <URL:http://www.glug.org/people/ttn/software/edb/> 151 * EDB: database: <URL:http://www.gnuvola.org/software/edb/>
152 152
153 * Ee: categorizing information manager: 153 * Ee: categorizing information manager:
154 <URL:http://www.jurta.org/emacs/ee/> 154 <URL:http://www.jurta.org/emacs/ee/>
@@ -185,7 +185,7 @@ Several are for Debian GNU/Linux in particular.
185 page: eiffel-mode.el. 185 page: eiffel-mode.el.
186 186
187 * Go in a buffer: Go Text Protocol client: 187 * Go in a buffer: Go Text Protocol client:
188 <URL:http://www.glug.org/people/ttn/software/personal-elisp/standalone/> 188 <URL:http://www.gnuvola.org/software/personal-elisp/standalone/>
189 A modified version is also bundled with GNU Go: 189 A modified version is also bundled with GNU Go:
190 <URL:http://www.gnu.org/software/gnugo/gnugo.html> 190 <URL:http://www.gnu.org/software/gnugo/gnugo.html>
191 191
@@ -235,10 +235,10 @@ Several are for Debian GNU/Linux in particular.
235 DTD-aware serious SGML/XML editing. 235 DTD-aware serious SGML/XML editing.
236 236
237 * Quack: <URL:http://www.neilvandyke.org/quack/> 237 * Quack: <URL:http://www.neilvandyke.org/quack/>
238 Quack enhances Emacs support for Scheme 238 Quack enhances Emacs support for Scheme.
239 239
240 * Remember: 240 * Remember: <URL:https://gna.org/p/remember-el>
241 <URL:http://sacha.free.net.ph/notebook/wiki/RememberEl.php> 241 A Personal Information Manager (PIM) for Emacs.
242 242
243 * Session: <URL:http://emacs-session.sourceforge.net/> 243 * Session: <URL:http://emacs-session.sourceforge.net/>
244 Session Management for Emacs. 244 Session Management for Emacs.
diff --git a/etc/NEWS b/etc/NEWS
index 780dea787f9..a7d750b694f 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -19,6 +19,8 @@ with a prefix argument or by typing C-u C-h C-n.
19 19
20* Installation Changes in Emacs 23.1 20* Installation Changes in Emacs 23.1
21 21
22** The default X toolkit has changed from Lucid to Gtk+.
23
22 24
23* Startup Changes in Emacs 23.1 25* Startup Changes in Emacs 23.1
24 26
@@ -28,9 +30,15 @@ with a prefix argument or by typing C-u C-h C-n.
28 30
29* Editing Changes in Emacs 23.1 31* Editing Changes in Emacs 23.1
30 32
33** New command kill-matching-buffers kills buffers whose name matches a regexp.
34
31 35
32* New Modes and Packages in Emacs 23.1 36* New Modes and Packages in Emacs 23.1
33 37
38** css-mode to edit Cascading Style Sheets.
39
40** socks.el (which had been part of W3) is now part of Emacs.
41
34 42
35* Changes in Specialized Modes and Packages in Emacs 23.1 43* Changes in Specialized Modes and Packages in Emacs 23.1
36 44
diff --git a/etc/NEWS.22 b/etc/NEWS.22
index 41c446ccae8..ed9babda50c 100644
--- a/etc/NEWS.22
+++ b/etc/NEWS.22
@@ -33,6 +33,24 @@ Some specific packages that are known to cause problems are:
33** Semantic (used by CEDET, ECB, JDEE): upgrade to latest version. 33** Semantic (used by CEDET, ECB, JDEE): upgrade to latest version.
34 34
35** cua.el, cua-mode.el: remove old versions. 35** cua.el, cua-mode.el: remove old versions.
36
37* Installation Changes in Emacs 22.2
38
39* Changes in Emacs 22.2
40
41** The values of `dired-recursive-deletes' and `dired-recursive-copies'
42have been changed to `top'. This means that the user is asked once,
43before deleting/copying the indicated directory recursively.
44
45** In Image mode, whenever the displayed image is wider and/or higher
46than the window, the usual keys for moving the cursor cause the image
47to be scrolled horizontally or vertically instead.
48
49* New Modes and Packages in Emacs 22.2
50
51** The new package css-mode.el provides a major mode for editing CSS files.
52
53** The new package socks.el implements the SOCKS v5 protocol.
36 54
37 55
38* Installation Changes in Emacs 22.1 56* Installation Changes in Emacs 22.1
@@ -280,11 +298,6 @@ too. If you want to use just plain `*' as a wildcard, type `*""'; the
280doublequotes make no difference in the shell, but they prevent 298doublequotes make no difference in the shell, but they prevent
281special treatment in `dired-do-shell-command'. 299special treatment in `dired-do-shell-command'.
282 300
283** A prefix argument is no longer required to repeat a jump to a
284previous mark if you set `set-mark-command-repeat-pop' to t. I.e. C-u
285C-SPC C-SPC C-SPC ... cycles through the mark ring. Use C-u C-u C-SPC
286to set the mark immediately after a jump.
287
288** The info-search bindings on C-h C-f, C-h C-k and C-h C-i 301** The info-search bindings on C-h C-f, C-h C-k and C-h C-i
289have been moved to C-h F, C-h K and C-h S. 302have been moved to C-h F, C-h K and C-h S.
290 303
@@ -451,8 +464,9 @@ to one second. This feature is turned off by default.
451** Mark command changes: 464** Mark command changes:
452 465
453*** A prefix argument is no longer required to repeat a jump to a 466*** A prefix argument is no longer required to repeat a jump to a
454previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the 467previous mark if you set `set-mark-command-repeat-pop' to t. I.e. C-u
455mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump. 468C-SPC C-SPC C-SPC ... cycles through the mark ring. Use C-u C-u C-SPC
469to set the mark immediately after a jump.
456 470
457*** Marking commands extend the region when invoked multiple times. 471*** Marking commands extend the region when invoked multiple times.
458 472
diff --git a/etc/TODO b/etc/TODO
index 85ce494c601..b7767470c75 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -19,6 +19,8 @@ In 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 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 20look for include files in X11/Xaw should look in X11/Xaw3d if we are
21using Xaw3d. 21using Xaw3d.
22http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-04/msg00396.html
23http://lists.gnu.org/archive/html/emacs-devel/2006-03/msg01150.html ?
22 24
23** Compute the list of active keymaps *after* reading the first event. 25** Compute the list of active keymaps *after* reading the first event.
24 26
@@ -32,8 +34,6 @@ a window doesn't select it.
32but if you type M-n you should get the visited file name of the 34but if you type M-n you should get the visited file name of the
33current buffer. 35current buffer.
34 36
35** describe-face should show an example of text in the face.
36
37** Distribute a bar cursor of width > 1 evenly between the two glyphs 37** Distribute a bar cursor of width > 1 evenly between the two glyphs
38 on each side of the bar (what to do at the edges?). 38 on each side of the bar (what to do at the edges?).
39 39
@@ -100,9 +100,6 @@ current buffer.
100 100
101** make back_comment use syntax-ppss or equivalent. 101** make back_comment use syntax-ppss or equivalent.
102 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. 103** Consider improving src/sysdep.c's search for a fqdn.
107http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00782.html 104http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00782.html
108 105
@@ -179,6 +176,7 @@ specified filters, specified timers, and specified hooks.
179 176
180** Remove the default toggling behavior of minor modes when called from elisp 177** Remove the default toggling behavior of minor modes when called from elisp
181rather than interactively. This a trivial one-liner in easy-mode.el. 178rather than interactively. This a trivial one-liner in easy-mode.el.
179
182** Create a category of errors called `user-error' for errors which are 180** Create a category of errors called `user-error' for errors which are
183typically due to pilot errors and should thus be in debug-ignored-errors. 181typically due to pilot errors and should thus be in debug-ignored-errors.
184 182
@@ -381,15 +379,6 @@ typically due to pilot errors and should thus be in debug-ignored-errors.
381** Allow unknown image types to be rendered via an external program 379** Allow unknown image types to be rendered via an external program
382 converting them to, say, PBM (in the same way as PostScript?). 380 converting them to, say, PBM (in the same way as PostScript?).
383 381
384** Display images with alpha channels, such as png, with the current
385background color of whatever frame it is displayed in. Currently, we
386use the default background color if specified in the png file, or, if
387that is unspecified, the background color of the frame in which the
388image was first created. Ideally, the image should display the
389background color of whichever frame it is being displayed in. The
390main complication is that this will require the loading of a new image
391object for each different background color.
392
393** Allow displaying an X window from an external program in a buffer, 382** Allow displaying an X window from an external program in a buffer,
394 e.g. to render graphics from Java applets. [gerd and/or wmperry 383 e.g. to render graphics from Java applets. [gerd and/or wmperry
395 thought this was feasible.] 384 thought this was feasible.]
diff --git a/etc/orgcard.tex b/etc/orgcard.tex
index 55a797000c6..ab891a0be13 100644
--- a/etc/orgcard.tex
+++ b/etc/orgcard.tex
@@ -1,27 +1,27 @@
1% Reference Card for Org Mode 1% Reference Card for Org Mode
2\def\orgversionnumber{4.67} 2\def\orgversionnumber{4.77}
3\def\versionyear{2007} % latest update 3\def\versionyear{2007} % latest update
4\def\year{2007} % latest copyright year 4\def\year{2007} % latest copyright year
5% 5
6%**start of header 6%**start of header
7\newcount\columnsperpage 7\newcount\columnsperpage
8\newcount\letterpaper
8 9
9% This file can be printed with 1, 2, or 3 columns per page (see below). 10% This file can be printed with 1, 2, or 3 columns per page (see below).
10% At the moment this card works quite nicely in 3 column format and 11% Specify how many you want here.
11% currently takes 2 full pages. It is thus suited to producing one
12% double-side page when printed.
13 12
14% There are a couple of tweaks in the format of this card which make it work 13\columnsperpage=3
15% slightly better on A4 paper. The changes due, I think, to Stephen Eglen,
16% are commented below. Revert the changes if you want letter sized paper.
17 14
18% Try running something like 15% Set letterpapaer to 0 for A4 paper, 1 for letter (US) paper. Useful
19% tex org-mode-ref.tex; dvips -t landscape org-mode-ref.dvi 16% only when columnsperpage is 2 or 3.
20% to print the card
21 17
22\columnsperpage=3 18\letterpaper=0
23 19
24% Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc 20% Nothing else needs to be changed below this line.
21% Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004,
22% 2005, 2006, 2007 Free Software Foundation, Inc.
23
24% This file is part of GNU Emacs.
25 25
26% GNU Emacs is free software; you can redistribute it and/or modify 26% GNU Emacs is free software; you can redistribute it and/or modify
27% it under the terms of the GNU General Public License as published by 27% it under the terms of the GNU General Public License as published by
@@ -35,8 +35,8 @@
35 35
36% You should have received a copy of the GNU General Public License 36% You should have received a copy of the GNU General Public License
37% along with GNU Emacs; see the file COPYING. If not, write to 37% along with GNU Emacs; see the file COPYING. If not, write to
38% the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 38% the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
39% Boston, MA 02111-1307, USA. 39% Boston, MA 02110-1301, USA.
40 40
41% This file is intended to be processed by plain TeX (TeX82). 41% This file is intended to be processed by plain TeX (TeX82).
42% 42%
@@ -54,6 +54,10 @@
54% For this you need a dvi device driver that can print sideways. 54% For this you need a dvi device driver that can print sideways.
55% Which mode to use is controlled by setting \columnsperpage above. 55% Which mode to use is controlled by setting \columnsperpage above.
56% 56%
57% To compile and print this document:
58% tex refcard.tex
59% dvips -t landscape refcard.dvi
60%
57% Author: 61% Author:
58% Stephen Gildea 62% Stephen Gildea
59% Internet: gildea@stop.mail-abuse.org 63% Internet: gildea@stop.mail-abuse.org
@@ -82,20 +86,20 @@ are preserved on all copies.
82% can be scanned without complaint. 86% can be scanned without complaint.
83\def\bye{\par\vfill\supereject\end} 87\def\bye{\par\vfill\supereject\end}
84 88
85\newdimen\intercolumnskip %horizontal space between columns 89\newdimen\intercolumnskip %horizontal space between columns
86\newbox\columna %boxes to hold columns already built 90\newbox\columna %boxes to hold columns already built
87\newbox\columnb 91\newbox\columnb
88 92
89\def\ncolumns{\the\columnsperpage} 93\def\ncolumns{\the\columnsperpage}
90 94
91\message{[\ncolumns\space 95\message{[\ncolumns\space
92 column\if 1\ncolumns\else s\fi\space per page]} 96 column\if 1\ncolumns\else s\fi\space per page]}
93 97
94\def\scaledmag#1{ scaled \magstep #1} 98\def\scaledmag#1{ scaled \magstep #1}
95 99
96% This multi-way format was designed by Stephen Gildea October 1986. 100% This multi-way format was designed by Stephen Gildea October 1986.
97% Note that the 1-column format is fontfamily-independent. 101% Note that the 1-column format is fontfamily-independent.
98\if 1\ncolumns %one-column format uses normal size 102\if 1\ncolumns %one-column format uses normal size
99 \hsize 4in 103 \hsize 4in
100 \vsize 10in 104 \vsize 10in
101 \voffset -.7in 105 \voffset -.7in
@@ -106,14 +110,14 @@ are preserved on all copies.
106 110
107 \footline{\hss\folio} 111 \footline{\hss\folio}
108 \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}} 112 \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
109\else %2 or 3 columns uses prereduced size 113\else %2 or 3 columns uses prereduced size
110 \hsize 3.2in 114 \hsize 3.2in
111 115 \if 1\the\letterpaper
112% FIXME - Try to make things more A4 friendly 116 \vsize 7.95in
113% \vsize 7.95in 117 \else
114 \vsize 7.65in 118 \vsize 7.65in
115% \hoffset -.75in 119 \fi
116 \hoffset -.25in 120 \hoffset -.75in
117 \voffset -.745in 121 \voffset -.745in
118 \font\titlefont=cmbx10 \scaledmag2 122 \font\titlefont=cmbx10 \scaledmag2
119 \font\headingfont=cmbx10 \scaledmag1 123 \font\headingfont=cmbx10 \scaledmag1
@@ -132,13 +136,14 @@ are preserved on all copies.
132 \def\bf{\eightbf} 136 \def\bf{\eightbf}
133 \def\it{\eightit} 137 \def\it{\eightit}
134 \def\tt{\eighttt} 138 \def\tt{\eighttt}
135 139 \if 1\the\letterpaper
136% FIXME - Try to make things more A4 friendly 140 \normalbaselineskip=.8\normalbaselineskip
137% \normalbaselineskip=.8\normalbaselineskip 141 \else
138 \normalbaselineskip=.7\normalbaselineskip 142 \normalbaselineskip=.7\normalbaselineskip
143 \fi
139 \normallineskip=.8\normallineskip 144 \normallineskip=.8\normallineskip
140 \normallineskiplimit=.8\normallineskiplimit 145 \normallineskiplimit=.8\normallineskiplimit
141 \normalbaselines\rm %make definitions take effect 146 \normalbaselines\rm %make definitions take effect
142 147
143 \if 2\ncolumns 148 \if 2\ncolumns
144 \let\maxcolumn=b 149 \let\maxcolumn=b
@@ -154,16 +159,16 @@ are preserved on all copies.
154 159
155 \intercolumnskip=.46in 160 \intercolumnskip=.46in
156 \def\abc{a} 161 \def\abc{a}
157 \output={% %see The TeXbook page 257 162 \output={% %see The TeXbook page 257
158 % This next line is useful when designing the layout. 163 % This next line is useful when designing the layout.
159 %\immediate\write16{Column \folio\abc\space starts with \firstmark} 164 %\immediate\write16{Column \folio\abc\space starts with \firstmark}
160 \if \maxcolumn\abc \multicolumnformat \global\def\abc{a} 165 \if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
161 \else\if a\abc 166 \else\if a\abc
162 \global\setbox\columna\columnbox \global\def\abc{b} 167 \global\setbox\columna\columnbox \global\def\abc{b}
163 %% in case we never use \columnb (two-column mode) 168 %% in case we never use \columnb (two-column mode)
164 \global\setbox\columnb\hbox to -\intercolumnskip{} 169 \global\setbox\columnb\hbox to -\intercolumnskip{}
165 \else 170 \else
166 \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi} 171 \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
167 \def\multicolumnformat{\shipout\vbox{\makeheadline 172 \def\multicolumnformat{\shipout\vbox{\makeheadline
168 \hbox{\box\columna\hskip\intercolumnskip 173 \hbox{\box\columna\hskip\intercolumnskip
169 \box\columnb\hskip\intercolumnskip\columnbox} 174 \box\columnb\hskip\intercolumnskip\columnbox}
@@ -173,7 +178,7 @@ are preserved on all copies.
173 \def\bye{\par\vfill\supereject 178 \def\bye{\par\vfill\supereject
174 \if a\abc \else\null\vfill\eject\fi 179 \if a\abc \else\null\vfill\eject\fi
175 \if a\abc \else\null\vfill\eject\fi 180 \if a\abc \else\null\vfill\eject\fi
176 \end} 181 \end}
177\fi 182\fi
178 183
179% we won't be using math mode much, so redefine some of the characters 184% we won't be using math mode much, so redefine some of the characters
@@ -225,7 +230,7 @@ are preserved on all copies.
225\def\<#1>{{\it #1\/}} 230\def\<#1>{{\it #1\/}}
226 231
227% kbd - argument is characters typed literally. Like the Texinfo command. 232% kbd - argument is characters typed literally. Like the Texinfo command.
228\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows 233\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
229 234
230% beginexample...endexample - surrounds literal text, such a code example. 235% beginexample...endexample - surrounds literal text, such a code example.
231% typeset in a typewriter font with line breaks preserved 236% typeset in a typewriter font with line breaks preserved
@@ -316,15 +321,15 @@ are preserved on all copies.
316\section{Archiving} 321\section{Archiving}
317 322
318\key{toggle ARCHIVE tag}{C-c C-x C-a} 323\key{toggle ARCHIVE tag}{C-c C-x C-a}
319\metax{mark fully done children}{C-u C-c C-x C-a} 324%\metax{mark fully done children}{C-u C-c C-x C-a}
320\key{force cycling of an ARCHIVEd tree}{C-TAB} 325\key{force cycling of an ARCHIVEd tree}{C-TAB}
321\key{move subtree to archive file}{C-c C-x C-s} 326\key{move subtree to archive file}{C-c C-x C-s}
322\metax{move all fully done children}{C-u C-c C-x C-s} 327%\metax{move all fully done children}{C-u C-c C-x C-s}
323To set archive location for current file, add a line like$^2$: 328%To set archive location for current file, add a line like$^2$:
324\vskip -1mm 329%\vskip -1mm
325\beginexample% 330%\beginexample%
326\#+ARCHIVE: archfile::* Archived Tasks 331%\#+ARCHIVE: archfile::* Archived Tasks
327\endexample 332%\endexample
328 333
329\section{Filtering and Sparse Trees} 334\section{Filtering and Sparse Trees}
330 335
@@ -359,13 +364,11 @@ Outside of tables, the same keys may have other functionality.
359 364
360{\bf Row and column editing} 365{\bf Row and column editing}
361 366
362\key{move the current column left}{M-LEFT} 367\key{move the current column left}{M-LEFT/RIGHT}
363\key{move the current column right}{M-RIGHT}
364\key{kill the current column}{M-S-LEFT} 368\key{kill the current column}{M-S-LEFT}
365\key{insert new column to left of cursor position}{M-S-RIGHT} 369\key{insert new column to left of cursor position}{M-S-RIGHT}
366 370
367\key{move the current row up}{M-UP} 371\key{move the current row up/down}{M-UP/DOWN}
368\key{move the current row down}{M-DOWN}
369\key{kill the current row or horizontal line}{M-S-UP} 372\key{kill the current row or horizontal line}{M-S-UP}
370\key{insert new row above the current row}{M-S-DOWN} 373\key{insert new row above the current row}{M-S-DOWN}
371\key{insert hline below (\kbd{C-u} : above) current row}{C-c -} 374\key{insert hline below (\kbd{C-u} : above) current row}{C-c -}
@@ -378,34 +381,6 @@ Outside of tables, the same keys may have other functionality.
378\key{paste rectangular region}{C-c C-x C-y} 381\key{paste rectangular region}{C-c C-x C-y}
379\key{fill paragraph across selected cells}{C-c C-q} 382\key{fill paragraph across selected cells}{C-c C-q}
380 383
381{\bf Calculations} (in combination with Emacs \kbd{calc} package)
382
383\key{set and eval column formula}{C-c =}
384\key{set and eval field formula}{C-u C-c =}
385\key{edit formulas in separate buffer}{C-c '}
386\key{re-apply all stored equations to current line}{C-c *}
387\key{re-apply all stored equations to entire table}{C-u C-c *}
388\key{iterate table to stability}{C-u C-u C-c *}
389
390%\kbd{TAB}, \kbd{RET} and \kbd{C-c C-c} trigger automatic recalculation
391%in lines starting with: {\tt | \# |}.
392
393\key{rotate calculation mark through \# * ! \^ \_ \$}{C-\#}
394
395\key{show line, column, formula reference}{C-c ?}
396\key{sum numbers in current column/rectangle}{C-c +}
397\key{copy down with increment}{S-RET$^3$}
398
399Formulas typed in field are executed by \kbd{TAB},
400\kbd{RET} and \kbd{C-c C-c}. \kbd{=} introduces a column
401formula, \kbd{:=} a named-field formula.
402
403\key{Example: Add Col1 and Col2}{=\$1+\$2}
404\key{... with printf format specification}{=\$1+\$2;\%.2f}
405\key{... with constants from constants.el}{=\$1/\$c/\$cm}
406\metax{sum from 2nd to 3rd hline}{:=vsum(@II..@III)}
407\key{apply current column formula}{=}
408
409{\bf Miscellaneous} 384{\bf Miscellaneous}
410 385
411\key{to limit column width to \kbd{N} characters, use}{...| <N> |...} 386\key{to limit column width to \kbd{N} characters, use}{...| <N> |...}
@@ -413,6 +388,7 @@ formula, \kbd{:=} a named-field formula.
413\key{make current field fully visible}{C-u TAB} 388\key{make current field fully visible}{C-u TAB}
414\metax{export as tab-separated file}{M-x org-table-export} 389\metax{export as tab-separated file}{M-x org-table-export}
415\metax{import tab-separated file}{M-x org-table-import} 390\metax{import tab-separated file}{M-x org-table-import}
391\key{sum numbers in current column/rectangle}{C-c +}
416 392
417{\bf Tables created with the \kbd{table.el} package} 393{\bf Tables created with the \kbd{table.el} package}
418 394
@@ -420,6 +396,42 @@ formula, \kbd{:=} a named-field formula.
420\key{recognize existing table.el table}{C-c C-c} 396\key{recognize existing table.el table}{C-c C-c}
421\key{convert table (Org-mode $\leftrightarrow$ table.el)}{C-c ~} 397\key{convert table (Org-mode $\leftrightarrow$ table.el)}{C-c ~}
422 398
399{\bf Spreadsheet}
400
401Formulas typed in field are executed by \kbd{TAB},
402\kbd{RET} and \kbd{C-c C-c}. \kbd{=} introduces a column
403formula, \kbd{:=} a field formula.
404
405\key{Example: Add Col1 and Col2}{|=\$1+\$2 |}
406\key{... with printf format specification}{|=\$1+\$2;\%.2f|}
407\key{... with constants from constants.el}{|=\$1/\$c/\$cm |}
408\metax{sum from 2nd to 3rd hline}{|:=vsum(@II..@III)|}
409\key{apply current column formula}{| = |}
410
411\key{set and eval column formula}{C-c =}
412\key{set and eval field formula}{C-u C-c =}
413\key{re-apply all stored equations to current line}{C-c *}
414\key{re-apply all stored equations to entire table}{C-u C-c *}
415\key{iterate table to stability}{C-u C-u C-c *}
416\key{rotate calculation mark through \# * ! \^ \_ \$}{C-\#}
417\key{show line, column, formula reference}{C-c ?}
418\key{toggle coordinate grid}{C-c \}}
419\key{toggle formula debugger}{C-c \{}
420
421{\it Formula Editor}
422
423\key{edit formulas in separate buffer}{C-c '}
424\key{exit and install new formulas}{C-c C-c}
425\key{exit, install, and apply new formulas}{C-u C-c C-c}
426\key{abort}{C-c C-q}
427\key{toggle reference style}{C-c C-r}
428\key{pretty-print Lisp formula}{TAB}
429\key{complete Lisp symbol}{M-TAB}
430\key{shift reference point}{S-cursor}
431\key{shift test line for column references}{M-up/down}
432\key{scroll the window showing the table}{M-S-up/down}
433\key{toggle table coordinate grid}{C-c \}}
434
423\section{Links} 435\section{Links}
424 436
425\key{globally store link to the current location}{C-c l$^1$} 437\key{globally store link to the current location}{C-c l$^1$}
@@ -466,24 +478,24 @@ formula, \kbd{:=} a named-field formula.
466%\key{\kbd{vm://myself@some.where.org/folder\#id}}{\rm VM remote} 478%\key{\kbd{vm://myself@some.where.org/folder\#id}}{\rm VM remote}
467 479
468 480
469\section{Remember-mode Integration} 481% \section{Remember-mode Integration}
470 482
471See the manual for how to make remember.el use Org-mode links and 483% See the manual for how to make remember.el use Org-mode links and
472files. The note-finishing command \kbd{C-c C-c} will first prompt for 484% files. The note-finishing command \kbd{C-c C-c} will first prompt for
473an org file. In the file, find a location with: 485% an org file. In the file, find a location with:
474 486
475\key{rotate subtree visibility}{TAB} 487% \key{rotate subtree visibility}{TAB}
476\key{next heading}{DOWN} 488% \key{next heading}{DOWN}
477\key{previous heading}{UP} 489% \key{previous heading}{UP}
478 490
479Insert the note with one of the following: 491% Insert the note with one of the following:
480 492
481\key{as sublevel of heading at cursor}{RET} 493% \key{as sublevel of heading at cursor}{RET}
482\key{right here (cursor not on heading)}{RET} 494% \key{right here (cursor not on heading)}{RET}
483\key{before current heading}{LEFT} 495% \key{before current heading}{LEFT}
484\key{after current heading}{RIGHT} 496% \key{after current heading}{RIGHT}
485\key{shortcut to end of buffer (cursor at buf-start)}{RET} 497% \key{shortcut to end of buffer (cursor at buf-start)}{RET}
486\key{Abort}{q} 498% \key{Abort}{q}
487 499
488\section{Completion} 500\section{Completion}
489 501
@@ -502,16 +514,18 @@ after ``{\tt :}'', and dictionary words elsewhere.
502\section{TODO Items and Checkboxes} 514\section{TODO Items and Checkboxes}
503 515
504\key{rotate the state of the current item}{C-c C-t} 516\key{rotate the state of the current item}{C-c C-t}
517\metax{select next/previous state}{S-LEFT/RIGHT}
518\metax{select next/previous set}{C-S-LEFT/RIGHT}
505\key{view TODO items in a sparse tree}{C-c C-v} 519\key{view TODO items in a sparse tree}{C-c C-v}
506\key{view 3rd TODO keyword's sparse tree}{C-3 C-c C-v} 520\key{view 3rd TODO keyword's sparse tree}{C-3 C-c C-v}
507 521
508\key{set the priority of the current item}{C-c , [ABC]} 522\key{set the priority of the current item}{C-c , [ABC]}
509\key{remove priority cookie from current item}{C-c , SPC} 523\key{remove priority cookie from current item}{C-c , SPC}
510\key{raise priority of current item}{S-UP$^3$} 524\key{raise/lower priority of current item}{S-UP/DOWN$^3$}
511\key{lower priority of current item}{S-DOWN$^3$} 525%\key{lower priority of current item}{S-DOWN$^3$}
512 526
513\key{\kbd{\#+SEQ_TODO: TODO TRY BLUFF DONE}}{\rm todo workflow} 527%\key{\kbd{\#+SEQ_TODO: TODO TRY BLUFF DONE}}{\rm todo workflow}
514\key{\kbd{\#+TYP_TODO: Phil home work DONE}}{\rm todo types} 528%\key{\kbd{\#+TYP_TODO: Phil home work DONE}}{\rm todo types}
515 529
516\key{insert new checkbox item in plain list}{M-S-RET} 530\key{insert new checkbox item in plain list}{M-S-RET}
517\key{toggle checkbox(es) in region/entry/at point}{C-c C-x C-b} 531\key{toggle checkbox(es) in region/entry/at point}{C-c C-x C-b}
@@ -548,13 +562,11 @@ after ``{\tt :}'', and dictionary words elsewhere.
548%\key{... forward/backward one month}{M-S-LEFT/RIGT} 562%\key{... forward/backward one month}{M-S-LEFT/RIGT}
549\key{Toggle custom format display for dates/times}{C-c C-x C-t} 563\key{Toggle custom format display for dates/times}{C-c C-x C-t}
550 564
551 565{\bf Clocking time}
552\section{Clocking Time}
553 566
554\key{start clock on current item}{C-c C-x C-i} 567\key{start clock on current item}{C-c C-x C-i}
555\key{stop clock on current item}{C-c C-x C-o} 568\key{stop clock on current item}{C-c C-x C-o}
556\key{cancel current clock}{C-c C-x C-x} 569\key{cancel current clock}{C-c C-x C-x}
557
558\key{display total subtree times}{C-c C-x C-d} 570\key{display total subtree times}{C-c C-x C-d}
559\key{remove displayed times}{C-c C-c} 571\key{remove displayed times}{C-c C-c}
560\key{insert/update table with clock report}{C-c C-x C-r} 572\key{insert/update table with clock report}{C-c C-x C-r}
@@ -720,21 +732,6 @@ Subtrees whose header starts with COMMENT are never exported.
720 732
721\key{toggle COMMENT keyword on entry}{C-c ;} 733\key{toggle COMMENT keyword on entry}{C-c ;}
722 734
723
724%\section{CUA and pc-select compatibility}%
725
726%Configure the variable {\tt org-CUA-compatibility} to make Org-mode
727%avoid the \kbd{S-<cursor>} bindings used by these modes. When set,
728%Org-mode will change the following keybindings (also in the agenda
729%buffer, but not during date selection). See note mark four$^3$
730%throughout the reference card.
731%%\vskip-mm
732%\beginexample
733%S-UP $\to$ M-p S-DOWN $\to$ M-n
734%S-LEFT $\to$ M-- S-RIGHT $\to$ M-+
735%S-RET $\to$ C-S-RET
736%\endexample
737
738\section{Dynamic Blocks} 735\section{Dynamic Blocks}
739 736
740\key{update dynamic block at point}{C-c C-x C-u} 737\key{update dynamic block at point}{C-c C-x C-u}
@@ -753,10 +750,8 @@ $^3$ Keybinding affected by {\tt org-CUA-compatibility}.
753 750
754\bye 751\bye
755 752
753% Local variables:
754% compile-command: "tex refcard"
755% End:
756 756
757% arch-tag: 139f6750-5cfc-49ca-92b5-237fe5795290 757% arch-tag: 139f6750-5cfc-49ca-92b5-237fe5795290
758
759%%% Local Variables:
760%%% mode: latex
761%%% TeX-master: t
762%%% End:
diff --git a/leim/ChangeLog b/leim/ChangeLog
index 9bf18f4e6da..f4bfce06bb3 100644
--- a/leim/ChangeLog
+++ b/leim/ChangeLog
@@ -1,3 +1,7 @@
12007-06-02 Chong Yidong <cyd@stupidchicken.com>
2
3 * Version 22.1 released.
4
12007-01-30 Kenichi Handa <handa@m17n.org> 52007-01-30 Kenichi Handa <handa@m17n.org>
2 6
3 * CXTERM-DIC/CCDOSPY.tit, CXTERM-DIC/PY-b5.tit, CXTERM-DIC/SW.tit, 7 * CXTERM-DIC/CCDOSPY.tit, CXTERM-DIC/PY-b5.tit, CXTERM-DIC/SW.tit,
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index e14679ad820..597d203ba41 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,8 @@
12007-06-07 Glenn Morris <rgm@gnu.org>
2
3 * etags.c (print_version): Add `emacs_copyright' string, for
4 easier automatic updating.
5
12007-05-18 Francesco Potort,Al(B <pot@gnu.org> 62007-05-18 Francesco Potort,Al(B <pot@gnu.org>
2 7
3 * etags.c: Extern definitions of some more pointer functions for 8 * etags.c: Extern definitions of some more pointer functions for
@@ -10,6 +15,10 @@
10 15
11 * makefile.w32-in (VERSION): Increase to 22.1.50. 16 * makefile.w32-in (VERSION): Increase to 22.1.50.
12 17
182007-06-02 Chong Yidong <cyd@stupidchicken.com>
19
20 * Version 22.1 released.
21
132007-02-26 Francesco Potort,Al(B <pot@gnu.org> 222007-02-26 Francesco Potort,Al(B <pot@gnu.org>
14 23
15 * Makefile.in (etags, ctags): Define EMACS_NAME as "GNU Emacs". 24 * Makefile.in (etags, ctags): Define EMACS_NAME as "GNU Emacs".
diff --git a/lib-src/etags.c b/lib-src/etags.c
index b85ec8d57a9..f3534e02d7c 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -887,8 +887,11 @@ etags --help --lang=ada.");
887static void 887static void
888print_version () 888print_version ()
889{ 889{
890 /* Makes it easier to update automatically. */
891 char emacs_copyright[] = "Copyright (C) 2007 Free Software Foundation, Inc.";
892
890 printf ("%s (%s %s)\n", (CTAGS) ? "ctags" : "etags", EMACS_NAME, VERSION); 893 printf ("%s (%s %s)\n", (CTAGS) ? "ctags" : "etags", EMACS_NAME, VERSION);
891 puts ("Copyright (C) 2007 Free Software Foundation, Inc."); 894 puts (emacs_copyright);
892 puts ("This program is distributed under the terms in ETAGS.README"); 895 puts ("This program is distributed under the terms in ETAGS.README");
893 896
894 exit (EXIT_SUCCESS); 897 exit (EXIT_SUCCESS);
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 9a79d4a0b55..c0b00b8fbb1 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,267 @@
12007-06-10 Martin Rudalics <rudalics@gmx.at>
2
3 * emacs-lisp/bytecomp.el (byte-compile-find-cl-functions): Match
4 against file-name-nondirectory.
5 Fix text on user customization variables.
6 Reported by Johan Bockg,Ae(Brd <bojohan@dd.chalmers.se>.
7
82007-06-09 Alfred M. Szmidt <ams@gnu.org> (tiny change)
9
10 * mail/rmail.el (rmail-movemail-variant-in-use): Fix doc typo.
11
122007-06-09 Davis Herring <herring@lanl.gov>
13
14 * desktop.el (desktop-minor-mode-table): Doc fix.
15
162007-06-08 Stefan Monnier <monnier@iro.umontreal.ca>
17
18 * textmodes/css-mode.el (css-navigation-syntax-table):
19 Use set-char-table-range so it also works in the unicode branch.
20
212007-06-08 Nick Roberts <nickrob@snap.net.nz>
22
23 * help-mode.el (help-xref-forward-stack)
24 (help-xref-stack-forward-item, help-forward-label): New variables.
25 (help-forward): New button type.
26 (help-setup-xref): Initialise help-xref-forward-stack.
27 (help-make-xrefs): Add forward button, if appropriate.
28 (help-xref-go-back): Push item on forward stack.
29 (help-xref-go-forward, help-go-forward): New functions.
30
312007-06-07 Chong Yidong <cyd@stupidchicken.com>
32
33 * dired.el (dired-mode-map): Remove spurious separator.
34
352007-06-07 Juanma Barranquero <lekktu@gmail.com>
36
37 * progmodes/ebrowse.el (ebrowse-draw-file-member-info): Doc fix.
38
39 * progmodes/mixal-mode.el (mixal-operation-codes-alist):
40 * progmodes/idlwave.el (idlwave-one-key-select): Fix typo in docstring.
41
422007-06-07 Carsten Dominik <dominik@science.uva.nl>
43
44 * textmodes/org.el: Version number fixed.
45
462007-06-07 Glenn Morris <rgm@gnu.org>
47
48 * version.el (emacs-copyright): New constant.
49 * startup.el (fancy-splash-tail): Use emacs-copyright.
50 * calc/calc-help.el (calc-full-help): Use emacs-copyright.
51
52 * emacs-lisp/bytecomp.el (byte-compile-warnings): Add new option
53 `make-local'.
54 (byte-compile-warnings-safe-p): Add `make-local'.
55 (byte-compile-make-variable-buffer-local):
56 Allow byte-compile-warnings to suppress this warning.
57
58 * tutorial.el (tutorial--describe-nonstandard-key): Adjust for new
59 format of "menu" description.
60 (tutorial--find-changed-keys): Describe the specific menu a
61 command is in.
62
63 * dframe.el (dframe-frame-parameter, dframe-mouse-event-p):
64 Rewrite compatibility functions to silence byte-compiler.
65
662007-06-07 Alfred M. Szmidt <ams@gnu.org> (tiny change)
67
68 * mail/rmailsum.el (rmail-summary-save-buffer): New command.
69 (rmail-summary-mode-map): Add rmail-summary-save-buffer.
70
712007-06-07 Eric M. Ludlam <eric@siege-engine.com>
72
73 * emacs-lisp/checkdoc.el (checkdoc-ispell-lisp-words): Remove "iff".
74
752007-06-07 Juanma Barranquero <lekktu@gmail.com>
76
77 * progmodes/ebrowse.el (ebrowse-member-table):
78 * textmodes/org.el (org-export-ascii-bullets, org-batch-agenda)
79 (org-batch-agenda-csv): Fix typos in docstrings.
80
812007-06-06 Juanma Barranquero <lekktu@gmail.com>
82
83 * international/mule-cmds.el (toggle-enable-multibyte-characters)
84 (sort-coding-systems, search-unencodable-char): Doc fixes.
85 (coding-system-change-eol-conversion, set-default-coding-systems)
86 (prefer-coding-system, find-multibyte-characters, princ-list)
87 (leim-list-entry-regexp, set-input-method, locale-language-names)
88 (input-method-exit-on-first-char, exit-language-environment-hook)
89 (locale-charset-language-names): Fix typos in docstrings.
90
912007-06-06 Juanma Barranquero <lekktu@gmail.com>
92
93 * pgg.el (pgg-sign-region, pgg-sign):
94 * ses.el (ses-call-printer):
95 * calendar/icalendar.el (icalendar--diarytime-to-isotime):
96 * textmodes/org.el (org-cycle): Fix typos in docstrings.
97
982007-06-06 Carsten Dominik <dominik@science.uva.nl>
99
100 * textmodes/org.el
101 (org-export-region-as-html, org-replace-region-by-html)
102 (org-number-to-letters, org-table-fedit-finish)
103 (org-normalize-color, org-table-fedit-ref-right)
104 (org-date-to-gregorian, org-table-fedit-move)
105 (org-table-convert-refs-to-rc, org-calendar-holiday)
106 (org-table-fedit-toggle-ref-type, org-write-agenda)
107 (org-colgroup-info-to-vline-list, org-agenda-todo-previousset)
108 (org-defkey, org-encode-for-stdout)
109 (org-indent-line-function, org-export-as-html-to-buffer)
110 (org-store-agenda-views, org-update-mode-line)
111 (org-find-if, org-delete-all)
112 (org-table-fedit-convert-buffer, org-emphasize)
113 (org-uniquify, org-table-fedit-lisp-indent)
114 (org-table-fedit-scroll, org-get-todo-sequence-head)
115 (org-table-fedit-scroll-down, org-table-fedit-line-down)
116 (org-table-fedit-ref-left, org-agenda-export-csv-mapper)
117 (org-table-fedit-toggle-coordinates, org-dvipng-color)
118 (org-table-fedit-line-up, org-table-fedit-ref-down)
119 (org-table-formula-from-user, org-mode-flyspell-verify)
120 (org-cycle-show-empty-lines, org-ctrl-c-ret)
121 (org-table-formula-to-user, org-diary-to-ical-string)
122 (orgtbl-export, org-table-fedit-post-command)
123 (org-closed-in-range, org-shiftcontrolright)
124 (org-table-convert-refs-to-an, org-table-hline-and-move)
125 (org-table-formula-less-p, org-format-table-ascii)
126 (org-agenda-get-sexps, org-shift-refpart)
127 (org-diary-sexp-entry, org-time-string-to-absolute)
128 (org-table-show-reference, org-letters-to-number)
129 (org-fix-agenda-info, org-table-fedit-ref-up)
130 (org-table-fedit-shift-reference, org-table-fedit-abort)
131 (org-closest-date, org-shiftcontrolleft)
132 (org-at-heading-or-item-p, org-rematch-and-replace)
133 (org-agenda-todo-nextset, org-export-grab-title-from-buffer):
134 New functions.
135 (org-table-edit-scroll-down, org-finish-edit-formulas)
136 (org-table-edit-next-field, org-abort-edit-formulas)
137 (org-font-lock-level, org-export-find-first-heading-line)
138 (org-table-edit-line-down, org-table-edit-backward-field)
139 (org-edit-formula-lisp-indent, org-table-edit-move)
140 (org-check-log-option, org-this-word)
141 (org-table-edit-line-up, org-table-edit-formulas-post-command)
142 (org-agenda-file-to-end, org-expand-file-name)
143 (org-fake-empty-table-line, org-table-edit-scroll)
144 (org-toggle-log-option, org-show-reference): Function removed.
145 (org-inhibit-invisibility, org-table-formula-make-cmp-string):
146 New defsubsts.
147 (org-unmodified, org-batch-store-agenda-views)
148 (org-batch-agenda-csv): New macro.
149 (org-agenda-export): New customization group.
150 (org-agenda-skip-deadline-if-done, org-agenda-remove-tags)
151 (org-highest-priority, org-agenda-exporter-settings)
152 (org-log-done-with-time, org-replace-disputed-keys)
153 (org-format-latex-header, org-export-table-header-tags)
154 (org-cycle-separator-lines, org-export-table-data-tags)
155 (org-icalendar-include-sexps)
156 (org-empty-line-terminates-plain-lists)
157 (org-log-repeat, org-special-ctrl-a)
158 (org-table-use-standard-references, org-disputed-keys)
159 (org-export-skip-text-before-1st-heading, org-agenda-with-colors)
160 (org-agenda-export-html-style): New option.
161 (org-allow-auto-repeat, org-agenda-remove-tags-when-in-prefix)
162 (org-CUA-compatible): Option removed.
163 (org-agenda-structure, org-sexp-date): New face.
164 (org-todo-keywords-for-agenda, org-not-done-keywords)
165 (org-planning-or-clock-line-re, org-agenda-name)
166 (org-table-colgroup-info, org-todo-sets)
167 (constants-unit-system, org-clock-mode-line-entry)
168 (org-mode-line-timer, org-table-current-begin-pos)
169 (org-todo-keywords-1, org-mode-line-string)
170 (org-table-clean-did-remove-column, org-table-fedit-map)
171 (org-clock-heading, org-table-buffer-is-an)
172 (org-agenda-info, org-done-keywords)
173 (org-done-keywords-for-agenda, org-todo-heads)
174 (org-todo-kwd-alist, org-clock-start-time): New variable.
175 (org-todo-kwd-priority-p, org-edit-formulas-map)
176 (org-repeat-re, org-todo-kwd-max-priority)
177 (org-version, org-done-string)
178 (org-table-clean-did-remove-column-1, org-disputed-keys):
179 Remove Variables.
180 (org-table-translate-regexp, org-repeat-re, org-version): New consts.
181 (org-ts-lengths): Constant removed.
182 (org-follow-gnus-link): Don't ask how many articles to read.
183 (org-export-find-first-export-line): Rename from
184 `org-export-find-first-heading'.
185 Use `org-export-skip-text-before-1st-heading'.
186 (org-table-fedit-post-command): Rename from
187 `org-table-edit-formulas-post-command'.
188 (org-table-fedit-finish): Rename from `org-finish-edit-formulas'.
189 (org-table-fedit-abort): Rename from `org-abort-edit-formulas'.
190 (org-table-fedit-lisp-indent): Rename from
191 `org-edit-formula-lisp-indent'.
192 (org-table-show-reference): Rename from `org-show-reference'.
193 (org-table-store-formulas): Use `org-table-formula-less-p'.
194 (org-table-edit-formulas): Position cursor to current field equation.
195 (org-update-checkbox-count, org-hide-archived-subtrees)
196 (org-timestamp-up-day, org-timestamp-down-day)
197 (org-shiftmetaleft, org-shiftmetaright, org-shiftmetaup)
198 (org-shiftmetadown, org-metaleft, org-metaright, org-metaup)
199 (org-metadown, org-shiftup, org-shiftdown, org-shiftright)
200 (org-shiftleft, org-ctrl-c-ctrl-c, org-context):
201 Let `org-on-heading-p' also check for invisible heading.
202 (org-read-date): Match am/pm times.
203 (org-eval-in-calendar): Fix default date in prompt.
204
2052007-06-05 Chong Yidong <cyd@stupidchicken.com>
206
207 * files.el (auto-mode-alist): Separate "ChangeLog.1" and
208 "ChangeLog.a" entries, giving the latter lower priority.
209
2102007-06-05 Juanma Barranquero <lekktu@gmail.com>
211
212 * faces.el (face-id): If the argument is a face alias,
213 return the ID of the target face.
214
2152007-06-05 Michael Albinus <michael.albinus@gmx.de>
216
217 * net/socks.el (top): Remove unnecessary copyright line.
218
2192007-06-04 Chong Yidong <cyd@stupidchicken.com>
220
221 * longlines.el (longlines-auto-wrap): Handle argument correctly.
222
2232007-06-04 Michael Albinus <michael.albinus@gmx.de>
224
225 * net/socks.el: New file, taken from w3 repository.
226 (top): Update Copyright. Don't load cl.el.
227 (all): Replace `case' by `cond', `string-to-int' by
228 `string-to-number', and `process-kill-without-query' by
229 `set-process-query-on-exit-flag'.
230 (socks-char-int): Remove defalias and all occurencies.
231
2322007-06-04 Juanma Barranquero <lekktu@gmail.com>
233
234 * progmodes/compile.el (compilation-find-file, compilation-handle-exit):
235 Fix typos in docstrings.
236 (compilation-search-path, compilation-buffer-name-function): Doc fixes.
237 (compilation-finish-function): Fix typo in obsolescence declaration.
238
2392007-06-03 Sam Steingold <sds@gnu.org>
240
241 * progmodes/compile.el: Add TIMESTAMP to the LOC data structure, to
242 handle unending automatic recompilation of changed files (`omake -P').
243 (compilation-loop): VISITED is now 5th CDR.
244 (compilation-next-error-function): Set TIMESTAMP.
245
2462007-06-03 Sam Steingold <sds@gnu.org>
247
248 * files.el (kill-buffer-ask): New function.
249 (kill-some-buffers): Use it.
250 (kill-matching-buffers): New user command.
251
2522007-06-01 David Kastrup <dak@gnu.org>
253
254 * dired.el (dired-recursive-deletes, dired-recursive-copies):
255 Change default to `top'.
256
2572007-05-31 Richard Stallman <rms@gnu.org>
258
259 * dired.el (dired-do-flagged-delete, dired-do-delete): Doc fix.
260
2612007-05-31 Stefan Monnier <monnier@iro.umontreal.ca>
262
263 * textmodes/css-mode.el: New file.
264
12007-05-30 Michael Olson <mwolson@gnu.org> 2652007-05-30 Michael Olson <mwolson@gnu.org>
2 266
3 * emacs-lisp/tq.el (tq-queue-pop): Stifle error when a process has 267 * emacs-lisp/tq.el (tq-queue-pop): Stifle error when a process has
@@ -9,8 +273,8 @@
92007-05-29 Martin Rudalics <rudalics@gmx.at> 2732007-05-29 Martin Rudalics <rudalics@gmx.at>
10 274
11 * textmodes/table.el (table--point-entered-cell-function) 275 * textmodes/table.el (table--point-entered-cell-function)
12 (table--point-left-cell-function): Bind 276 (table--point-left-cell-function):
13 `inhibit-point-motion-hooks' to t. 277 Bind `inhibit-point-motion-hooks' to t.
14 278
152007-05-29 Nikolaj Schumacher <n_schumacher@web.de> (tiny change) 2792007-05-29 Nikolaj Schumacher <n_schumacher@web.de> (tiny change)
16 280
@@ -35,18 +299,17 @@
35 299
36 * net/tramp.el (top): Make `set-buffer-multibyte' an alias if it 300 * net/tramp.el (top): Make `set-buffer-multibyte' an alias if it
37 doesn't exist. 301 doesn't exist.
38 (with-parsed-tramp-file-name): Protect debug spec during 302 (with-parsed-tramp-file-name): Protect debug spec during compilation.
39 compilation.
40 (tramp-handle-insert-directory): Check (featurep 'ls-lisp). 303 (tramp-handle-insert-directory): Check (featurep 'ls-lisp).
41 (tramp-file-name-p, tramp-file-name-multi-method) 304 (tramp-file-name-p, tramp-file-name-multi-method)
42 (tramp-file-name-method, tramp-file-name-user) 305 (tramp-file-name-method, tramp-file-name-user)
43 (tramp-file-name-host, tramp-file-name-localname): New defuns, 306 (tramp-file-name-host, tramp-file-name-localname): New defuns,
44 replacing defstruct `tramp-file-name'. 307 replacing defstruct `tramp-file-name'.
45 (tramp-handle-file-remote-p, tramp-completion-dissect-file-name1) 308 (tramp-handle-file-remote-p, tramp-completion-dissect-file-name1)
46 (tramp-dissect-file-name, tramp-dissect-multi-file-name): Apply 309 (tramp-dissect-file-name, tramp-dissect-multi-file-name):
47 `vector' instead of `make-tramp-file-name'. 310 Apply `vector' instead of `make-tramp-file-name'.
48 (tramp-handle-make-auto-save-file-name): Apply 311 (tramp-handle-make-auto-save-file-name):
49 `tramp-temporary-file-directory' for compatibility reasons. 312 Apply `tramp-temporary-file-directory' for compatibility reasons.
50 (tramp-completion-mode): Use `natnump' instead of `wholenump' 313 (tramp-completion-mode): Use `natnump' instead of `wholenump'
51 because of XEmacs. 314 because of XEmacs.
52 (tramp-completion-mode): `last-input-event' is nil when XEmacs is 315 (tramp-completion-mode): `last-input-event' is nil when XEmacs is
@@ -170,8 +433,8 @@
170 433
1712007-05-22 Katsumi Yamaoka <yamaoka@jpl.org> (tiny change) 4342007-05-22 Katsumi Yamaoka <yamaoka@jpl.org> (tiny change)
172 435
173 * mail/mail-extr.el (mail-extract-address-components): Recognize 436 * mail/mail-extr.el (mail-extract-address-components):
174 non-ASCII characters except for NBSP as words. 437 Recognize non-ASCII characters except for NBSP as words.
175 438
1762007-05-21 Trent Buck <trentbuck@gmail.com> (tiny change) 4392007-05-21 Trent Buck <trentbuck@gmail.com> (tiny change)
177 440
@@ -182,8 +445,8 @@
1822007-05-21 Chong Yidong <cyd@stupidchicken.com> 4452007-05-21 Chong Yidong <cyd@stupidchicken.com>
183 446
184 * image-mode.el (image-toggle-display): Don't clear image cache. 447 * image-mode.el (image-toggle-display): Don't clear image cache.
185 Only use filename in image spec if the file is readable. Call 448 Only use filename in image spec if the file is readable.
186 image-refresh. 449 Call image-refresh.
187 450
188 * image.el (image-type-from-file-name, image-type): Simplify. 451 * image.el (image-type-from-file-name, image-type): Simplify.
189 (image-type-auto-detected-p): Don't scan auto-mode-alist. 452 (image-type-auto-detected-p): Don't scan auto-mode-alist.
@@ -211,6 +474,10 @@
211 * files.el (auto-mode-alist): Change the regexp so that 474 * files.el (auto-mode-alist): Change the regexp so that
212 ChangeLog.unicode and ChangeLog.multi-tty use change-log-mode. 475 ChangeLog.unicode and ChangeLog.multi-tty use change-log-mode.
213 476
4772007-06-02 Chong Yidong <cyd@stupidchicken.com>
478
479 * Version 22.1 released.
480
2142007-05-19 Chong Yidong <cyd@stupidchicken.com> 4812007-05-19 Chong Yidong <cyd@stupidchicken.com>
215 482
216 * paren.el (show-paren-function): Undo 2007-04-19 and 2007-04-20 483 * paren.el (show-paren-function): Undo 2007-04-19 and 2007-04-20
@@ -230,7 +497,7 @@
230 497
2312007-05-18 Rob Riepel <riepel@Stanford.EDU> 4982007-05-18 Rob Riepel <riepel@Stanford.EDU>
232 499
233 * emulation/tpu-edt.el (CSI-map, SS3-map): Moved from global-map to 500 * emulation/tpu-edt.el (CSI-map, SS3-map): Move from global-map to
234 tpu-global-map. 501 tpu-global-map.
235 (tpu-original-global-map): Variable deleted. 502 (tpu-original-global-map): Variable deleted.
236 (tpu-control-keys-map): New keymap variable. 503 (tpu-control-keys-map): New keymap variable.
diff --git a/lisp/ChangeLog.12 b/lisp/ChangeLog.12
index 52cd55f87b5..2bfbe99e1f0 100644
--- a/lisp/ChangeLog.12
+++ b/lisp/ChangeLog.12
@@ -271,7 +271,7 @@
2712007-04-14 Nick Roberts <nickrob@snap.net.nz> 2712007-04-14 Nick Roberts <nickrob@snap.net.nz>
272 272
273 * tmm.el (tmm-get-keybind): Use copy-sequence to ensure that the 273 * tmm.el (tmm-get-keybind): Use copy-sequence to ensure that the
274 global map isn't modified 274 global map isn't modified.
275 275
2762007-04-14 Glenn Morris <rgm@gnu.org> 2762007-04-14 Glenn Morris <rgm@gnu.org>
277 277
@@ -1413,7 +1413,7 @@
1413 * progmodes/python.el (python-quote-syntax): Don't bother with 1413 * progmodes/python.el (python-quote-syntax): Don't bother with
1414 syntax-ppss-context. 1414 syntax-ppss-context.
1415 (python-fill-paragraph): Make sure that fenced-string delimiters that 1415 (python-fill-paragraph): Make sure that fenced-string delimiters that
1416 stand on their own line stay there 1416 stand on their own line stay there.
1417 1417
14182007-03-01 Lennart Borgman <lennart.borgman.073@student.lu.se> 14182007-03-01 Lennart Borgman <lennart.borgman.073@student.lu.se>
1419 1419
@@ -2549,7 +2549,7 @@
2549 * type-break.el (type-break-demo-hanoi, type-break-demo-life) 2549 * type-break.el (type-break-demo-hanoi, type-break-demo-life)
2550 (type-break-demo-boring): Call read-event instead of read-char. 2550 (type-break-demo-boring): Call read-event instead of read-char.
2551 2551
25522007-01-19 Daniel Pfeiffer <occitan@esperanto.org> (small change) 25522007-01-19 Daniel Pfeiffer <occitan@esperanto.org> (tiny change)
2553 2553
2554 * progmodes/compile.el: Add handling for makepplog. 2554 * progmodes/compile.el: Add handling for makepplog.
2555 2555
@@ -3414,7 +3414,7 @@
3414 (wdired-search-and-rename): Simplify code. 3414 (wdired-search-and-rename): Simplify code.
3415 (wdired-preprocess-files, wdired-preprocess-perms): Make 3415 (wdired-preprocess-files, wdired-preprocess-perms): Make
3416 read-only property of preceding character rear-nonsticky to 3416 read-only property of preceding character rear-nonsticky to
3417 avoid that it can be modified. Put old-name and old-link 3417 avoid that it can be modified. Put old-name and old-link
3418 properties on character preceding name and replace 3418 properties on character preceding name and replace
3419 put-text-property by add-text-properties. 3419 put-text-property by add-text-properties.
3420 (wdired-get-filename, wdired-get-previous-link): Get old-name 3420 (wdired-get-filename, wdired-get-previous-link): Get old-name
@@ -3605,7 +3605,7 @@
3605 allout-mode-map. Call it on file load, so the mode docstring 3605 allout-mode-map. Call it on file load, so the mode docstring
3606 substitutions work even if allout mode has not yet been invoked. 3606 substitutions work even if allout mode has not yet been invoked.
3607 (allout-mode): Use new allout-setup-mode-map to track any keybinding 3607 (allout-mode): Use new allout-setup-mode-map to track any keybinding
3608 customizations since the map was last processed. Also, refine the 3608 customizations since the map was last processed. Also, refine the
3609 docstring so it's ship-shape for release. 3609 docstring so it's ship-shape for release.
3610 (allout-default-layout, allout-beginning-of-line-cycles) 3610 (allout-default-layout, allout-beginning-of-line-cycles)
3611 (allout-distinctive-bullets-string, allout-use-mode-specific-leader) 3611 (allout-distinctive-bullets-string, allout-use-mode-specific-leader)
@@ -5281,7 +5281,7 @@
5281 New C-c key bindings: for `cperl-find-bad-style', 5281 New C-c key bindings: for `cperl-find-bad-style',
5282 `cperl-pod-spell', `cperl-here-doc-spell', `cperl-narrow-to-here-doc', 5282 `cperl-pod-spell', `cperl-here-doc-spell', `cperl-narrow-to-here-doc',
5283 `cperl-perdoc', and `cperl-perldoc-at-point'. 5283 `cperl-perdoc', and `cperl-perldoc-at-point'.
5284 CPerl Mode menu changes: "Fix style by spaces", "Imenu on Perl Info" 5284 CPerl Mode menu changes: "Fix style by spaces", "Imenu on Perl Info"
5285 moved, new submenu of Tools with Ispell entries and narrowing. 5285 moved, new submenu of Tools with Ispell entries and narrowing.
5286 (cperl-after-sub-regexp): New defsubst. 5286 (cperl-after-sub-regexp): New defsubst.
5287 (cperl-imenu--function-name-regexp-perl): Use `cperl-after-sub-regexp'. 5287 (cperl-imenu--function-name-regexp-perl): Use `cperl-after-sub-regexp'.
@@ -5304,7 +5304,7 @@
5304 (cperl-calculate-indent): Try to allow '_' be non-word char 5304 (cperl-calculate-indent): Try to allow '_' be non-word char
5305 Support subs with attributes. 5305 Support subs with attributes.
5306 (cperl-where-am-i): Quiet (?) a warning. 5306 (cperl-where-am-i): Quiet (?) a warning.
5307 (cperl-cached-syntax-table) New function. 5307 (cperl-cached-syntax-table): New function.
5308 (cperl-forward-re): Use `cperl-cached-syntax-table'. 5308 (cperl-forward-re): Use `cperl-cached-syntax-table'.
5309 (cperl-unwind-to-safe): Recognize `syntax-type' property 5309 (cperl-unwind-to-safe): Recognize `syntax-type' property
5310 changing in a middle of line. 5310 changing in a middle of line.
@@ -5478,7 +5478,7 @@
5478 (cperl-string-syntax-table): Make { and } not-grouping 5478 (cperl-string-syntax-table): Make { and } not-grouping
5479 (Sometimes they ARE grouping in RExen, but matching them would only 5479 (Sometimes they ARE grouping in RExen, but matching them would only
5480 confuse in many situations when they are not) 5480 confuse in many situations when they are not)
5481 (beginning-of-buffer): Replace two occurences with goto-char... 5481 (beginning-of-buffer): Replace two occurrences with goto-char...
5482 (cperl-calculate-indent): `char-after' could be nil... 5482 (cperl-calculate-indent): `char-after' could be nil...
5483 (cperl-find-pods-heres): REx can start after "[" too. 5483 (cperl-find-pods-heres): REx can start after "[" too.
5484 Hightlight (??{}) in RExen too. 5484 Hightlight (??{}) in RExen too.
@@ -5551,7 +5551,7 @@
5551 (cperl-next-interpolated-REx): New function. 5551 (cperl-next-interpolated-REx): New function.
5552 (cperl-next-interpolated-REx-0): Likewise. 5552 (cperl-next-interpolated-REx-0): Likewise.
5553 (cperl-next-interpolated-REx-1): Likewise. 5553 (cperl-next-interpolated-REx-1): Likewise.
5554 "\C-c\C-x", "\C-c\C-y", "\C-c\C-v": New keybinding for these functions. 5554 "\C-c\C-x", "\C-c\C-y", "\C-c\C-v": New keybinding for these functions.
5555 Perl/Regexp menu: 3 new entries for `cperl-next-interpolated-REx'. 5555 Perl/Regexp menu: 3 new entries for `cperl-next-interpolated-REx'.
5556 (cperl-praise): Mention finded interpolated RExen. 5556 (cperl-praise): Mention finded interpolated RExen.
5557 5557
@@ -5797,7 +5797,7 @@
5797 5797
5798 * wid-edit.el (widget-button-click-moves-point): New variable. 5798 * wid-edit.el (widget-button-click-moves-point): New variable.
5799 (widget-button-click): If widget-button-click-moves-point is 5799 (widget-button-click): If widget-button-click-moves-point is
5800 non-nil, set point after performing the button action 5800 non-nil, set point after performing the button action.
5801 5801
5802 * cus-edit.el (custom-mode): Set widget-button-click-moves-point. 5802 * cus-edit.el (custom-mode): Set widget-button-click-moves-point.
5803 5803
@@ -6069,8 +6069,8 @@
6069 buffer-read-only isn't set. 6069 buffer-read-only isn't set.
6070 (allout-annotate-hidden): Enable topic annotation during copies even 6070 (allout-annotate-hidden): Enable topic annotation during copies even
6071 when the buffer is read-only, eg for topic copies. Ensure that the loop 6071 when the buffer is read-only, eg for topic copies. Ensure that the loop
6072 advances, even when the span extends beyond the deletion region. 6072 advances, even when the span extends beyond the deletion region.
6073 (allout-toggle-subtree-encryption): Use allout-structure-added-hook 6073 (allout-toggle-subtree-encryption): Use allout-structure-added-hook
6074 rather than allout-exposure-changed-hook, as a stronger assertion. 6074 rather than allout-exposure-changed-hook, as a stronger assertion.
6075 (allout-keybindings-list): Add bindings for 6075 (allout-keybindings-list): Add bindings for
6076 allout-copy-line-as-kill and allout-copy-topic-as-kill. 6076 allout-copy-line-as-kill and allout-copy-topic-as-kill.
@@ -6121,7 +6121,7 @@
6121 6121
6122 * cus-start.el (all): Rename x-gtk-show-chooser-help-text to 6122 * cus-start.el (all): Rename x-gtk-show-chooser-help-text to
6123 x-gtk-file-dialog-help-text. Rename x-use-old-gtk-file-dialog 6123 x-gtk-file-dialog-help-text. Rename x-use-old-gtk-file-dialog
6124 to x-gtk-use-old-file-dialog 6124 to x-gtk-use-old-file-dialog.
6125 6125
61262006-09-18 Richard Stallman <rms@gnu.org> 61262006-09-18 Richard Stallman <rms@gnu.org>
6127 6127
@@ -8116,7 +8116,7 @@
8116 8116
8117 * tumme.el (tumme-create-thumb, tumme-thumbnail-display-external) 8117 * tumme.el (tumme-create-thumb, tumme-thumbnail-display-external)
8118 (tumme-display-image, tumme-rotate-thumbnail, tumme-rotate-original) 8118 (tumme-display-image, tumme-rotate-thumbnail, tumme-rotate-original)
8119 (tumme-set-exif-data, tumme-get-exif-data): Use shell-command-switch. 8119 (tumme-set-exif-data, tumme-get-exif-data): Use shell-command-switch.
8120 8120
8121 * thumbs.el (thumbs-call-convert): Use shell-command-switch. 8121 * thumbs.el (thumbs-call-convert): Use shell-command-switch.
8122 8122
@@ -8652,7 +8652,7 @@
8652 (viper-next-line-at-bol): If point is on a widget or a button, simulate 8652 (viper-next-line-at-bol): If point is on a widget or a button, simulate
8653 clicking on that widget/button. 8653 clicking on that widget/button.
8654 8654
8655 * viper.el (viper-mode): Allow a separate cursor color in Emacs state. 8655 * viper.el (viper-mode): Allow a separate cursor color in Emacs state.
8656 8656
8657 * ediff-diff (ediff-test-patch-utility): Catch errors. 8657 * ediff-diff (ediff-test-patch-utility): Catch errors.
8658 (ediff-actual-diff-options, ediff-actual-diff3-options): New variables. 8658 (ediff-actual-diff-options, ediff-actual-diff3-options): New variables.
@@ -9203,7 +9203,7 @@
9203 (ewoc--wrap): New func. 9203 (ewoc--wrap): New func.
9204 (ewoc-create): Take additional arg NOSEP. If nil, wrap node and 9204 (ewoc-create): Take additional arg NOSEP. If nil, wrap node and
9205 header/footer pretty-printers. Save header/footer pretty-printer. 9205 header/footer pretty-printers. Save header/footer pretty-printer.
9206 (ewoc-set-hf): Use ewoc's header/footer pretty-printer. * 9206 (ewoc-set-hf): Use ewoc's header/footer pretty-printer.
9207 9207
9208 * pcvs.el (cvs-make-cvs-buffer): Specify NOSEP to `ewoc-create'. 9208 * pcvs.el (cvs-make-cvs-buffer): Specify NOSEP to `ewoc-create'.
9209 9209
@@ -10152,7 +10152,7 @@
101522006-05-05 Eli Zaretskii <eliz@gnu.org> 101522006-05-05 Eli Zaretskii <eliz@gnu.org>
10153 10153
10154 * startup.el (command-line): On MS-Windows, probe "~", not 10154 * startup.el (command-line): On MS-Windows, probe "~", not
10155 "~USER", for warning about non-existent home directory 10155 "~USER", for warning about non-existent home directory.
10156 10156
10157 * arc-mode.el (archive-l-e): New optional argument `float' means 10157 * arc-mode.el (archive-l-e): New optional argument `float' means
10158 generate a float value. 10158 generate a float value.
@@ -12103,7 +12103,7 @@
12103 preserve window-start. 12103 preserve window-start.
12104 (speedbar-update-directory-contents): Try to preserve window-start 12104 (speedbar-update-directory-contents): Try to preserve window-start
12105 and window-point. 12105 and window-point.
12106 (speedbar-update-special-contents): Don't move back to start of window. 12106 (speedbar-update-special-contents): Don't move back to start of window.
12107 12107
12108 * progmodes/gdb-ui.el (gdb-speedbar-refresh): Rename from 12108 * progmodes/gdb-ui.el (gdb-speedbar-refresh): Rename from
12109 gdb-speedbar-timer-fn. Use speedbar-refresh instead of 12109 gdb-speedbar-timer-fn. Use speedbar-refresh instead of
@@ -12729,7 +12729,7 @@
12729 12729
12730 (allout-mode): Explicitly specify the mode map in the docstring. 12730 (allout-mode): Explicitly specify the mode map in the docstring.
12731 Clarify provision for various write-file hook var names. 12731 Clarify provision for various write-file hook var names.
12732 Adjusted for invisible-text overlays instead of selective-display. 12732 Adjusted for invisible-text overlays instead of selective-display.
12733 12733
12734 (allout-depth): Really return 0 if not within any topic. This 12734 (allout-depth): Really return 0 if not within any topic. This
12735 rectifies `allout-beginning-of-level' and sequence numbering 12735 rectifies `allout-beginning-of-level' and sequence numbering
@@ -15747,10 +15747,10 @@
157472005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org> 157472005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org>
15748 15748
15749 * progmodes/cc-fix.el: Add definitions of the macros push and pop 15749 * progmodes/cc-fix.el: Add definitions of the macros push and pop
15750 (for GNU Emacs 20.4) 15750 (for GNU Emacs 20.4).
15751 15751
15752 * progmodes/cc-defs.el: 15752 * progmodes/cc-defs.el:
15753 (i): Load cc-fix.elc for `push' and `pop' (for GNU Emacs 20.4) 15753 (i): Load cc-fix.elc for `push' and `pop' (for GNU Emacs 20.4).
15754 15754
15755 * progmodes/cc-cmds.el (c-show-syntactic-information): Change the 15755 * progmodes/cc-cmds.el (c-show-syntactic-information): Change the
15756 highlighting mechanism so it will work in XEmacs too. 15756 highlighting mechanism so it will work in XEmacs too.
@@ -16051,7 +16051,7 @@
16051 16051
16052 Introduce an "awk" style, mainly for auto-newline and clean-ups. 16052 Introduce an "awk" style, mainly for auto-newline and clean-ups.
16053 16053
16054 * progmodes/cc-align.el: New function c-snug-1line-defun-close 16054 * progmodes/cc-align.el: New function c-snug-1line-defun-close.
16055 16055
16056 * progmodes/cc-cmds.el: In c-electric-brace, add code for new 16056 * progmodes/cc-cmds.el: In c-electric-brace, add code for new
16057 clean-up one-liner-defun. 16057 clean-up one-liner-defun.
@@ -16185,7 +16185,7 @@
16185 16185
16186 * progmodes/cc-awk.el: Move regexps for analysing AWK code to near the 16186 * progmodes/cc-awk.el: Move regexps for analysing AWK code to near the
16187 start of the file. ^L now separate sections of the file. 16187 start of the file. ^L now separate sections of the file.
16188 (c-awk-non-eol-esc-pair-re, c-awk-blank-or-comment-line-re) 16188 (c-awk-non-eol-esc-pair-re, c-awk-blank-or-comment-line-re)
16189 (c-awk-one-line-possibly-open-string-re) 16189 (c-awk-one-line-possibly-open-string-re)
16190 (c-awk-regexp-one-line-possibly-open-char-class-re) 16190 (c-awk-regexp-one-line-possibly-open-char-class-re)
16191 (c-awk-one-line-possibly-open-regexp-re) 16191 (c-awk-one-line-possibly-open-regexp-re)
@@ -17298,7 +17298,7 @@
17298 17298
172992005-11-30 Kim F. Storm <storm@cua.dk> 172992005-11-30 Kim F. Storm <storm@cua.dk>
17300 17300
17301 * emulation/cua-rect.el (cua--rectangle-overlays): Make permanent-local. 17301 * emulation/cua-rect.el (cua--rectangle-overlays): Make permanent-local.
17302 (cua--rectangle-post-command): Cleanup overlays and deactivate mark 17302 (cua--rectangle-post-command): Cleanup overlays and deactivate mark
17303 after revert-buffer (or anything else which kills all local variables). 17303 after revert-buffer (or anything else which kills all local variables).
17304 17304
@@ -18540,7 +18540,7 @@
18540 (pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional PASSPHRASE 18540 (pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional PASSPHRASE
18541 argument to all these routines, so the passphrase can be managed 18541 argument to all these routines, so the passphrase can be managed
18542 externally and passed in to the system. 18542 externally and passed in to the system.
18543 (pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache 18543 (pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache
18544 function. 18544 function.
18545 18545
185462005-11-04 Dan Nicolaescu <dann@ics.uci.edu> 185462005-11-04 Dan Nicolaescu <dann@ics.uci.edu>
@@ -18762,7 +18762,7 @@
18762 (pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional PASSPHRASE 18762 (pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional PASSPHRASE
18763 argument to all these routines, so the passphrase can be managed 18763 argument to all these routines, so the passphrase can be managed
18764 externally and passed in to the system. 18764 externally and passed in to the system.
18765 (pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache 18765 (pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache
18766 function. 18766 function.
18767 18767
187682005-11-04 Edward O'Connor <hober0@gmail.com> (tiny change) 187682005-11-04 Edward O'Connor <hober0@gmail.com> (tiny change)
@@ -19664,14 +19664,14 @@
19664 New defvar. Replaces `dired-move-to-filename-regexp' from dired.el. 19664 New defvar. Replaces `dired-move-to-filename-regexp' from dired.el.
19665 19665
19666 * dired.el (dired-move-to-filename-regexp): Remove. 19666 * dired.el (dired-move-to-filename-regexp): Remove.
19667 All occurences replaced by `directory-listing-before-filename-regexp'. 19667 All occurrences replaced by `directory-listing-before-filename-regexp'.
19668 19668
19669 * dired-x.el, locate.el, vc.el: 19669 * dired-x.el, locate.el, vc.el:
19670 Replace `dired-move-to-filename-regexp' by 19670 Replace `dired-move-to-filename-regexp' by
19671 `directory-listing-before-filename-regexp'. In vc.el it is 19671 `directory-listing-before-filename-regexp'. In vc.el it is
19672 overwritten locally; maybe this can be handled in files.el too. 19672 overwritten locally; maybe this can be handled in files.el too.
19673 19673
19674 * net/ange-ftp.el (ange-ftp-date-regexp): Remove. All occurences 19674 * net/ange-ftp.el (ange-ftp-date-regexp): Remove. All occurrences
19675 replaced by `directory-listing-before-filename-regexp'. 19675 replaced by `directory-listing-before-filename-regexp'.
19676 19676
196772005-10-23 Andreas Schwab <schwab@suse.de> 196772005-10-23 Andreas Schwab <schwab@suse.de>
@@ -19923,7 +19923,7 @@
19923 (outlineify-sticky): Use the file vars mechanism. 19923 (outlineify-sticky): Use the file vars mechanism.
19924 (allout-inhibit-protection, allout-during-write-cue) 19924 (allout-inhibit-protection, allout-during-write-cue)
19925 (allout-override-protect, allout-before-change-protect): Remove. 19925 (allout-override-protect, allout-before-change-protect): Remove.
19926 (allout-flag-region, allout-open-topic): Adjust read-only text. 19926 (allout-flag-region, allout-open-topic): Adjust read-only text.
19927 (allout-open-line-not-read-only): Add to facilitate read-only 19927 (allout-open-line-not-read-only): Add to facilitate read-only
19928 text based protection. 19928 text based protection.
19929 (allout-kill-line): Revise to adjust read-only text, clue the 19929 (allout-kill-line): Revise to adjust read-only text, clue the
@@ -20402,7 +20402,7 @@
20402 20402
204032005-10-12 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 204032005-10-12 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
20404 20404
20405 * startup.el (command-line-x-option-alist): -nb => -nbi 20405 * startup.el (command-line-x-option-alist): -nb => -nbi.
20406 20406
204072005-10-12 Kim F. Storm <storm@cua.dk> 204072005-10-12 Kim F. Storm <storm@cua.dk>
20408 20408
@@ -20580,7 +20580,7 @@
20580 * term/x-win.el: Remove -i, --icon-type from comment. 20580 * term/x-win.el: Remove -i, --icon-type from comment.
20581 20581
20582 * startup.el (command-line-x-option-alist): Remove options -i, 20582 * startup.el (command-line-x-option-alist): Remove options -i,
20583 -itype, --icon-type, added -nb, --no-bitmap-icon 20583 -itype, --icon-type, added -nb, --no-bitmap-icon.
20584 20584
205852005-10-09 Nick Roberts <nickrob@snap.net.nz> 205852005-10-09 Nick Roberts <nickrob@snap.net.nz>
20586 20586
@@ -20866,7 +20866,7 @@
20866 * textmodes/ispell.el (ispell-word, ispell-region): 20866 * textmodes/ispell.el (ispell-word, ispell-region):
20867 Call ispell-maybe-find-aspell-dictionaries. 20867 Call ispell-maybe-find-aspell-dictionaries.
20868 (ispell-accept-buffer-local-defs): 20868 (ispell-accept-buffer-local-defs):
20869 Don't call ispell-maybe-find-aspell-dictionaries 20869 Don't call ispell-maybe-find-aspell-dictionaries.
20870 20870
208712005-10-04 Richard M. Stallman <rms@gnu.org> 208712005-10-04 Richard M. Stallman <rms@gnu.org>
20872 20872
@@ -22474,7 +22474,7 @@
22474 22474
22475 * calendar/diary-lib.el (diary-modify-entry-list-string-function): 22475 * calendar/diary-lib.el (diary-modify-entry-list-string-function):
22476 New hook. 22476 New hook.
22477 (add-to-diary-list): Call `diary-modify-entry-list-string-function' 22477 (add-to-diary-list): Call `diary-modify-entry-list-string-function'.
22478 22478
224792005-08-24 Stefan Monnier <monnier@iro.umontreal.ca> 224792005-08-24 Stefan Monnier <monnier@iro.umontreal.ca>
22480 22480
@@ -24379,7 +24379,7 @@
24379 * viper-init.el: Get rid of -face in face names. 24379 * viper-init.el: Get rid of -face in face names.
24380 24380
24381 * ediff-diff.el (ediff-extract-diffs, ediff-extract-diffs3): 24381 * ediff-diff.el (ediff-extract-diffs, ediff-extract-diffs3):
24382 Make it work with longlines mode 24382 Make it work with longlines mode.
24383 24383
24384 * ediff-mult.el (ediff-meta-mode-hook): New variable. 24384 * ediff-mult.el (ediff-meta-mode-hook): New variable.
24385 24385
@@ -27822,7 +27822,7 @@
27822 (reftex-unhighlight): Use `reftex-delete-overlay'. 27822 (reftex-unhighlight): Use `reftex-delete-overlay'.
27823 (reftex-uniq): Function removed. Use `reftex-uniquify' instead. 27823 (reftex-uniq): Function removed. Use `reftex-uniquify' instead.
27824 (reftex-access-search-path): Use `reftex-uniquify' instead of 27824 (reftex-access-search-path): Use `reftex-uniquify' instead of
27825 `reftex-uniq' 27825 `reftex-uniq'.
27826 27826
27827 * textmodes/reftex-sel.el (reftex-select-unmark): Overlay 27827 * textmodes/reftex-sel.el (reftex-select-unmark): Overlay
27828 `before-string' property modification enables for Emacs as well. 27828 `before-string' property modification enables for Emacs as well.
@@ -29301,7 +29301,7 @@
29301 29301
29302 * isearch.el (isearch-edit-string): Make the search-ring available for 29302 * isearch.el (isearch-edit-string): Make the search-ring available for
29303 minibuffer history commands. 29303 minibuffer history commands.
29304 (minibuffer-local-isearch-map): Remove bindings for M-p and M-n, 29304 (minibuffer-local-isearch-map): Remove bindings for M-p and M-n,
29305 the default history commands now work just as well. 29305 the default history commands now work just as well.
29306 (isearch-ring-retreat-edit, isearch-ring-advance-edit): Remove. 29306 (isearch-ring-retreat-edit, isearch-ring-advance-edit): Remove.
29307 29307
@@ -29461,7 +29461,7 @@
29461 `org-insert-mode-line-in-empty-file' has been set. 29461 `org-insert-mode-line-in-empty-file' has been set.
29462 (org-agenda-todo, org-agenda-priority): Modify to use 29462 (org-agenda-todo, org-agenda-priority): Modify to use
29463 `org-agenda-change-all-lines'. 29463 `org-agenda-change-all-lines'.
29464 (org-warning-face): Change color on dark background 29464 (org-warning-face): Change color on dark background.
29465 29465
294662005-04-14 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 294662005-04-14 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
29467 29467
@@ -29585,7 +29585,7 @@
29585 29585
295862005-04-11 Rajesh Vaidheeswarran <rv@gnu.org> 295862005-04-11 Rajesh Vaidheeswarran <rv@gnu.org>
29587 29587
29588 * whitespace.el (whitespace-version): Bump to 3.5 29588 * whitespace.el (whitespace-version): Bump to 3.5.
29589 29589
29590 (whitespace-buffer-leading, whitespace-buffer-trailing): 29590 (whitespace-buffer-leading, whitespace-buffer-trailing):
29591 Invert sense of the test to highlight the whitespace. 29591 Invert sense of the test to highlight the whitespace.
@@ -29613,7 +29613,7 @@
29613 29613
29614 * dired.el (dired-mode): Use dnd-* instead of x-dnd-* 29614 * dired.el (dired-mode): Use dnd-* instead of x-dnd-*
29615 (dired-dnd-handle-local-file): Call dnd-get-local-file-name. 29615 (dired-dnd-handle-local-file): Call dnd-get-local-file-name.
29616 (dired-dnd-handle-file): Call dnd-get-local-file-uri 29616 (dired-dnd-handle-file): Call dnd-get-local-file-uri.
29617 29617
29618 * cus-edit.el (dnd): New group. 29618 * cus-edit.el (dnd): New group.
29619 29619
@@ -32029,7 +32029,7 @@
32029 (calcFunc-sech, calcFunc-csch, calcFunc-coth, math-sec-raw) 32029 (calcFunc-sech, calcFunc-csch, calcFunc-coth, math-sec-raw)
32030 (math-csc-raw, math-cot-raw): New functions. 32030 (math-csc-raw, math-cot-raw): New functions.
32031 32031
32032 * calc/calc-rules.el (calc-DistribRules, calc-NegateRules): Add rules. 32032 * calc/calc-rules.el (calc-DistribRules, calc-NegateRules): Add rules.
32033 32033
32034 * calc/calc-undo.el (calc-handle-undo): Remove prefix from 32034 * calc/calc-undo.el (calc-handle-undo): Remove prefix from
32035 the variable name in a message. 32035 the variable name in a message.
@@ -32604,7 +32604,7 @@
326042005-01-21 Ren,Ai(B Kyllingstad <listmailxemacs@kyllingstad.com> 326042005-01-21 Ren,Ai(B Kyllingstad <listmailxemacs@kyllingstad.com>
32605 32605
32606 * pcomplete.el: Define pcomplete-read-event instead of read-event, 32606 * pcomplete.el: Define pcomplete-read-event instead of read-event,
32607 since it's not a complete read-event implementation 32607 since it's not a complete read-event implementation.
32608 32608
326092005-01-20 Jay Belanger <belanger@truman.edu> 326092005-01-20 Jay Belanger <belanger@truman.edu>
32610 32610
diff --git a/lisp/calc/calc-help.el b/lisp/calc/calc-help.el
index 9f324a67785..e310020e399 100644
--- a/lisp/calc/calc-help.el
+++ b/lisp/calc/calc-help.el
@@ -414,7 +414,7 @@ C-w Describe how there is no warranty for Calc."
414 (princ (format "GNU Emacs Calculator version %s.\n" 414 (princ (format "GNU Emacs Calculator version %s.\n"
415 calc-version)) 415 calc-version))
416 (princ " By Dave Gillespie.\n") 416 (princ " By Dave Gillespie.\n")
417 (princ " Copyright (C) 2007 Free Software Foundation, Inc.\n\n") 417 (princ (format " %s\n\n" emacs-copyright))
418 (princ "Type `h s' for a more detailed summary.\n") 418 (princ "Type `h s' for a more detailed summary.\n")
419 (princ "Or type `h i' to read the full Calc manual on-line.\n\n") 419 (princ "Or type `h i' to read the full Calc manual on-line.\n\n")
420 (princ "Basic keys:\n") 420 (princ "Basic keys:\n")
diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el
index 7bbd12a436e..6238a7f1ea9 100644
--- a/lisp/calendar/icalendar.el
+++ b/lisp/calendar/icalendar.el
@@ -678,7 +678,7 @@ takes care of european-style."
678 nil))) 678 nil)))
679 679
680(defun icalendar--diarytime-to-isotime (timestring ampmstring) 680(defun icalendar--diarytime-to-isotime (timestring ampmstring)
681 "Convert a a time like 9:30pm to an iso-conform string like T213000. 681 "Convert a time like 9:30pm to an iso-conform string like T213000.
682In this example the TIMESTRING would be \"9:30\" and the AMPMSTRING 682In this example the TIMESTRING would be \"9:30\" and the AMPMSTRING
683would be \"pm\"." 683would be \"pm\"."
684 (if timestring 684 (if timestring
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 92f6a448574..e44e943db3e 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -423,7 +423,7 @@ Furthermore the major mode function must be autoloaded.")
423Each entry has the form (NAME RESTORE-FUNCTION). 423Each entry has the form (NAME RESTORE-FUNCTION).
424NAME is the name of the buffer-local variable indicating that the minor 424NAME is the name of the buffer-local variable indicating that the minor
425mode is active. RESTORE-FUNCTION is the function to activate the minor mode. 425mode is active. RESTORE-FUNCTION is the function to activate the minor mode.
426called. RESTORE-FUNCTION nil means don't try to restore the minor mode. 426RESTORE-FUNCTION nil means don't try to restore the minor mode.
427Only minor modes for which the name of the buffer-local variable 427Only minor modes for which the name of the buffer-local variable
428and the name of the minor mode function are different have to be added to 428and the name of the minor mode function are different have to be added to
429this table. See also `desktop-minor-mode-handlers'." 429this table. See also `desktop-minor-mode-handlers'."
diff --git a/lisp/dframe.el b/lisp/dframe.el
index eda6d45bf21..7971db19dd8 100644
--- a/lisp/dframe.el
+++ b/lisp/dframe.el
@@ -152,13 +152,11 @@
152 152
153;;; Compatibility functions 153;;; Compatibility functions
154;; 154;;
155(if (fboundp 'frame-parameter) 155(defun dframe-frame-parameter (frame parameter)
156 156 "Return FRAME's PARAMETER value."
157 (defalias 'dframe-frame-parameter 'frame-parameter) 157 (if (fboundp 'frame-parameter)
158 158 (frame-parameter frame parameter)
159 (defun dframe-frame-parameter (frame parameter) 159 (cdr (assoc parameter (frame-parameters frame))))) ; XEmacs
160 "Return FRAME's PARAMETER value."
161 (cdr (assoc parameter (frame-parameters frame)))))
162 160
163 161
164;;; Variables 162;;; Variables
@@ -887,10 +885,10 @@ Must be bound to event E."
887 885
888;;; Interactive user functions for the mouse 886;;; Interactive user functions for the mouse
889;; 887;;
890(if dframe-xemacsp 888(defun dframe-mouse-event-p (event)
891 (defalias 'dframe-mouse-event-p 'button-press-event-p) 889 "Return t if the event is a mouse related event."
892 (defun dframe-mouse-event-p (event) 890 (if (fboundp 'button-press-event-p)
893 "Return t if the event is a mouse related event." 891 (button-press-event-p event) ; XEmacs
894 (if (and (listp event) 892 (if (and (listp event)
895 (member (event-basic-type event) 893 (member (event-basic-type event)
896 '(mouse-1 mouse-2 mouse-3))) 894 '(mouse-1 mouse-2 mouse-3)))
diff --git a/lisp/dired.el b/lisp/dired.el
index 4244954d467..4525cc2ea97 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -1452,9 +1452,6 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
1452 (define-key map [menu-bar operate] 1452 (define-key map [menu-bar operate]
1453 (cons "Operate" (make-sparse-keymap "Operate"))) 1453 (cons "Operate" (make-sparse-keymap "Operate")))
1454 1454
1455 (define-key map [menu-bar operate dashes-2]
1456 '("--"))
1457
1458 (define-key map 1455 (define-key map
1459 [menu-bar operate image-dired-delete-tag] 1456 [menu-bar operate image-dired-delete-tag]
1460 '(menu-item "Delete Image Tag..." image-dired-delete-tag 1457 '(menu-item "Delete Image Tag..." image-dired-delete-tag
@@ -2362,7 +2359,7 @@ Optional argument means return a file name relative to `default-directory'."
2362 2359
2363;; Deleting files 2360;; Deleting files
2364 2361
2365(defcustom dired-recursive-deletes nil ; Default only delete empty directories. 2362(defcustom dired-recursive-deletes 'top ; Default only delete empty directories.
2366 "*Decide whether recursive deletes are allowed. 2363 "*Decide whether recursive deletes are allowed.
2367A value of nil means no recursive deletes. 2364A value of nil means no recursive deletes.
2368`always' means delete recursively without asking. This is DANGEROUS! 2365`always' means delete recursively without asking. This is DANGEROUS!
@@ -2410,7 +2407,9 @@ Anything else, ask for each sub-directory."
2410(defun dired-do-flagged-delete (&optional nomessage) 2407(defun dired-do-flagged-delete (&optional nomessage)
2411 "In Dired, delete the files flagged for deletion. 2408 "In Dired, delete the files flagged for deletion.
2412If NOMESSAGE is non-nil, we don't display any message 2409If NOMESSAGE is non-nil, we don't display any message
2413if there are no flagged files." 2410if there are no flagged files.
2411`dired-recursive-deletes' controls whether
2412deletion of non-empty directories is allowed."
2414 (interactive) 2413 (interactive)
2415 (let* ((dired-marker-char dired-del-marker) 2414 (let* ((dired-marker-char dired-del-marker)
2416 (regexp (dired-marker-regexp)) 2415 (regexp (dired-marker-regexp))
@@ -2426,7 +2425,9 @@ if there are no flagged files."
2426 (message "(No deletions requested)"))))) 2425 (message "(No deletions requested)")))))
2427 2426
2428(defun dired-do-delete (&optional arg) 2427(defun dired-do-delete (&optional arg)
2429 "Delete all marked (or next ARG) files." 2428 "Delete all marked (or next ARG) files.
2429`dired-recursive-deletes' controls whether
2430deletion of non-empty directories is allowed."
2430 ;; This is more consistent with the file marking feature than 2431 ;; This is more consistent with the file marking feature than
2431 ;; dired-do-flagged-delete. 2432 ;; dired-do-flagged-delete.
2432 (interactive "P") 2433 (interactive "P")
@@ -3206,7 +3207,7 @@ To be called first in body of `dired-sort-other', etc."
3206 3207
3207;;;; Drag and drop support 3208;;;; Drag and drop support
3208 3209
3209(defcustom dired-recursive-copies nil 3210(defcustom dired-recursive-copies 'top
3210 "*Decide whether recursive copies are allowed. 3211 "*Decide whether recursive copies are allowed.
3211A value of nil means no recursive copies. 3212A value of nil means no recursive copies.
3212`always' means copy recursively without asking. 3213`always' means copy recursively without asking.
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index f1761c125ac..619b7533ca7 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -98,9 +98,11 @@
98;; `obsolete' (obsolete variables and functions) 98;; `obsolete' (obsolete variables and functions)
99;; `noruntime' (calls to functions only defined 99;; `noruntime' (calls to functions only defined
100;; within `eval-when-compile') 100;; within `eval-when-compile')
101;; `cl-warnings' (calls to CL functions) 101;; `cl-functions' (calls to CL functions)
102;; `interactive-only' (calls to commands that are 102;; `interactive-only' (calls to commands that are
103;; not good to call from Lisp) 103;; not good to call from Lisp)
104;; `make-local' (dubious calls to
105;; `make-variable-buffer-local')
104;; byte-compile-compatibility Whether the compiler should 106;; byte-compile-compatibility Whether the compiler should
105;; generate .elc files which can be loaded into 107;; generate .elc files which can be loaded into
106;; generic emacs 18. 108;; generic emacs 18.
@@ -356,14 +358,16 @@ Elements of the list may be:
356 cl-functions calls to runtime functions from the CL package (as 358 cl-functions calls to runtime functions from the CL package (as
357 distinguished from macros and aliases). 359 distinguished from macros and aliases).
358 interactive-only 360 interactive-only
359 commands that normally shouldn't be called from Lisp code." 361 commands that normally shouldn't be called from Lisp code.
362 make-local calls to make-variable-buffer-local that may be incorrect."
360 :group 'bytecomp 363 :group 'bytecomp
361 :type `(choice (const :tag "All" t) 364 :type `(choice (const :tag "All" t)
362 (set :menu-tag "Some" 365 (set :menu-tag "Some"
363 (const free-vars) (const unresolved) 366 (const free-vars) (const unresolved)
364 (const callargs) (const redefine) 367 (const callargs) (const redefine)
365 (const obsolete) (const noruntime) 368 (const obsolete) (const noruntime)
366 (const cl-functions) (const interactive-only)))) 369 (const cl-functions) (const interactive-only)
370 (const make-local))))
367(put 'byte-compile-warnings 'safe-local-variable 'byte-compile-warnings-safe-p) 371(put 'byte-compile-warnings 'safe-local-variable 'byte-compile-warnings-safe-p)
368;;;###autoload 372;;;###autoload
369(defun byte-compile-warnings-safe-p (x) 373(defun byte-compile-warnings-safe-p (x)
@@ -374,7 +378,7 @@ Elements of the list may be:
374 (when (memq e '(free-vars unresolved 378 (when (memq e '(free-vars unresolved
375 callargs redefine 379 callargs redefine
376 obsolete noruntime 380 obsolete noruntime
377 cl-functions interactive-only)) 381 cl-functions interactive-only make-local))
378 e)) 382 e))
379 x) 383 x)
380 x)))) 384 x))))
@@ -1344,7 +1348,8 @@ extra args."
1344 (unless byte-compile-cl-functions 1348 (unless byte-compile-cl-functions
1345 (dolist (elt load-history) 1349 (dolist (elt load-history)
1346 (when (and (stringp (car elt)) 1350 (when (and (stringp (car elt))
1347 (string-match "^cl\\>" (car elt))) 1351 (string-match
1352 "^cl\\>" (file-name-nondirectory (car elt))))
1348 (setq byte-compile-cl-functions 1353 (setq byte-compile-cl-functions
1349 (append byte-compile-cl-functions 1354 (append byte-compile-cl-functions
1350 (cdr elt))))) 1355 (cdr elt)))))
@@ -3888,7 +3893,8 @@ that suppresses all warnings during execution of BODY."
3888;; Warn about misuses of make-variable-buffer-local. 3893;; Warn about misuses of make-variable-buffer-local.
3889(byte-defop-compiler-1 make-variable-buffer-local byte-compile-make-variable-buffer-local) 3894(byte-defop-compiler-1 make-variable-buffer-local byte-compile-make-variable-buffer-local)
3890(defun byte-compile-make-variable-buffer-local (form) 3895(defun byte-compile-make-variable-buffer-local (form)
3891 (if (eq (car-safe (car-safe (cdr-safe form))) 'quote) 3896 (if (and (eq (car-safe (car-safe (cdr-safe form))) 'quote)
3897 (memq 'make-local byte-compile-warnings))
3892 (byte-compile-warn 3898 (byte-compile-warn
3893 "`make-variable-buffer-local' should be called at toplevel")) 3899 "`make-variable-buffer-local' should be called at toplevel"))
3894 (byte-compile-normal-call form)) 3900 (byte-compile-normal-call form))
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index 14b9ce55d9e..b4d925686ca 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -263,7 +263,7 @@ system. Possible values are:
263 (const t))) 263 (const t)))
264 264
265(defvar checkdoc-ispell-lisp-words 265(defvar checkdoc-ispell-lisp-words
266 '("alist" "emacs" "etags" "iff" "keymap" "paren" "regexp" "sexp" "xemacs") 266 '("alist" "emacs" "etags" "keymap" "paren" "regexp" "sexp" "xemacs")
267 "List of words that are correct when spell-checking Lisp documentation.") 267 "List of words that are correct when spell-checking Lisp documentation.")
268 268
269(defcustom checkdoc-max-keyref-before-warn 10 269(defcustom checkdoc-max-keyref-before-warn 10
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 70ffa4ede48..9ffbcbd5201 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,8 @@
12007-06-06 Juanma Barranquero <lekktu@gmail.com>
2
3 * erc.el (erc-show-channel-key-p, erc-startup-file-list):
4 Fix typo in docstring.
5
12007-04-01 Michael Olson <mwolson@gnu.org> 62007-04-01 Michael Olson <mwolson@gnu.org>
2 7
3 * erc.el (erc-version-string): Release ERC 5.2. 8 * erc.el (erc-version-string): Release ERC 5.2.
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 37c2c2e0883..d6875ffc4af 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -842,7 +842,7 @@ See `erc-server-flood-margin' for other flood-related parameters.")
842The first existent and readable one will get executed. 842The first existent and readable one will get executed.
843 843
844If the filename ends with `.el' it is presumed to be an Emacs Lisp 844If the filename ends with `.el' it is presumed to be an Emacs Lisp
845script and it gets (load)ed. Otherwise is is treated as a bunch of 845script and it gets (load)ed. Otherwise it is treated as a bunch of
846regular IRC commands." 846regular IRC commands."
847 :group 'erc-scripts 847 :group 'erc-scripts
848 :type '(repeat file)) 848 :type '(repeat file))
@@ -5756,7 +5756,7 @@ Otherwise, use the `erc-header-line' face."
5756 (function :tag "Call a function"))) 5756 (function :tag "Call a function")))
5757 5757
5758(defcustom erc-show-channel-key-p t 5758(defcustom erc-show-channel-key-p t
5759 "Show the the channel key in the header line." 5759 "Show the channel key in the header line."
5760 :group 'erc-paranoia 5760 :group 'erc-paranoia
5761 :type 'boolean) 5761 :type 'boolean)
5762 5762
diff --git a/lisp/faces.el b/lisp/faces.el
index 47fb2fa0295..32d0c0af068 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -222,11 +222,12 @@ Value is FACE."
222 222
223(defun face-id (face &optional frame) 223(defun face-id (face &optional frame)
224 "Return the internal ID of face with name FACE. 224 "Return the internal ID of face with name FACE.
225If FACE is a face-alias, return the ID of the target face.
225The optional argument FRAME is ignored, since the internal face ID 226The optional argument FRAME is ignored, since the internal face ID
226of a face name is the same for all frames." 227of a face name is the same for all frames."
227 (check-face face) 228 (check-face face)
228 (get face 'face)) 229 (or (get face 'face)
229 230 (face-id (get face 'face-alias))))
230 231
231(defun face-equal (face1 face2 &optional frame) 232(defun face-equal (face1 face2 &optional frame)
232 "Non-nil if faces FACE1 and FACE2 are equal. 233 "Non-nil if faces FACE1 and FACE2 are equal.
diff --git a/lisp/files.el b/lisp/files.el
index 4c68ac94b40..b54251b1605 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1924,7 +1924,7 @@ since only a single case-insensitive search through the alist is made."
1924 ("\\.[sS]\\'" . asm-mode) 1924 ("\\.[sS]\\'" . asm-mode)
1925 ("\\.asm\\'" . asm-mode) 1925 ("\\.asm\\'" . asm-mode)
1926 ("[cC]hange\\.?[lL]og?\\'" . change-log-mode) 1926 ("[cC]hange\\.?[lL]og?\\'" . change-log-mode)
1927 ("[cC]hange[lL]og[-.][-0-9a-z]+\\'" . change-log-mode) 1927 ("[cC]hange[lL]og[-.][0-9]+\\'" . change-log-mode)
1928 ("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode) 1928 ("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode)
1929 ("\\.scm\\.[0-9]*\\'" . scheme-mode) 1929 ("\\.scm\\.[0-9]*\\'" . scheme-mode)
1930 ("\\.[ck]?sh\\'\\|\\.shar\\'\\|/\\.z?profile\\'" . sh-mode) 1930 ("\\.[ck]?sh\\'\\|\\.shar\\'\\|/\\.z?profile\\'" . sh-mode)
@@ -2012,6 +2012,9 @@ since only a single case-insensitive search through the alist is made."
2012 ("[/.]c\\(?:on\\)?f\\(?:i?g\\)?\\(?:\\.[a-zA-Z0-9._-]+\\)?\\'" . conf-mode) 2012 ("[/.]c\\(?:on\\)?f\\(?:i?g\\)?\\(?:\\.[a-zA-Z0-9._-]+\\)?\\'" . conf-mode)
2013 ("\\`/etc/\\(?:DIR_COLORS\\|ethers\\|.?fstab\\|.*hosts\\|lesskey\\|login\\.?de\\(?:fs\\|vperm\\)\\|magic\\|mtab\\|pam\\.d/.*\\|permissions\\(?:\\.d/.+\\)?\\|protocols\\|rpc\\|services\\)\\'" . conf-space-mode) 2013 ("\\`/etc/\\(?:DIR_COLORS\\|ethers\\|.?fstab\\|.*hosts\\|lesskey\\|login\\.?de\\(?:fs\\|vperm\\)\\|magic\\|mtab\\|pam\\.d/.*\\|permissions\\(?:\\.d/.+\\)?\\|protocols\\|rpc\\|services\\)\\'" . conf-space-mode)
2014 ("\\`/etc/\\(?:acpid?/.+\\|aliases\\(?:\\.d/.+\\)?\\|default/.+\\|group-?\\|hosts\\..+\\|inittab\\|ksysguarddrc\\|opera6rc\\|passwd-?\\|shadow-?\\|sysconfig/.+\\)\\'" . conf-mode) 2014 ("\\`/etc/\\(?:acpid?/.+\\|aliases\\(?:\\.d/.+\\)?\\|default/.+\\|group-?\\|hosts\\..+\\|inittab\\|ksysguarddrc\\|opera6rc\\|passwd-?\\|shadow-?\\|sysconfig/.+\\)\\'" . conf-mode)
2015 ;; ChangeLog.old etc. Other change-log-mode entries are above;
2016 ;; this has lower priority to avoid matching changelog.sgml etc.
2017 ("[cC]hange[lL]og[-.][-0-9a-z]+\\'" . change-log-mode)
2015 ;; either user's dot-files or under /etc or some such 2018 ;; either user's dot-files or under /etc or some such
2016 ("/\\.?\\(?:gnokiirc\\|kde.*rc\\|mime\\.types\\|wgetrc\\)\\'" . conf-mode) 2019 ("/\\.?\\(?:gnokiirc\\|kde.*rc\\|mime\\.types\\|wgetrc\\)\\'" . conf-mode)
2017 ;; alas not all ~/.*rc files are like this 2020 ;; alas not all ~/.*rc files are like this
@@ -4390,6 +4393,14 @@ This command is used in the special Dired buffer created by
4390 (message "No files can be recovered from this session now"))) 4393 (message "No files can be recovered from this session now")))
4391 (kill-buffer buffer)))) 4394 (kill-buffer buffer))))
4392 4395
4396(defun kill-buffer-ask (buffer)
4397 "Kill buffer if confirmed."
4398 (when (yes-or-no-p
4399 (format "Buffer %s %s. Kill? " (buffer-name buffer)
4400 (if (buffer-modified-p buffer)
4401 "HAS BEEN EDITED" "is unmodified")))
4402 (kill-buffer buffer)))
4403
4393(defun kill-some-buffers (&optional list) 4404(defun kill-some-buffers (&optional list)
4394 "Kill some buffers. Asks the user whether to kill each one of them. 4405 "Kill some buffers. Asks the user whether to kill each one of them.
4395Non-interactively, if optional argument LIST is non-nil, it 4406Non-interactively, if optional argument LIST is non-nil, it
@@ -4404,13 +4415,20 @@ specifies the list of buffers to kill, asking for approval for each one."
4404 ; if we killed the base buffer. 4415 ; if we killed the base buffer.
4405 (not (string-equal name "")) 4416 (not (string-equal name ""))
4406 (/= (aref name 0) ?\s) 4417 (/= (aref name 0) ?\s)
4407 (yes-or-no-p 4418 (kill-buffer-ask buffer)))
4408 (format "Buffer %s %s. Kill? "
4409 name
4410 (if (buffer-modified-p buffer)
4411 "HAS BEEN EDITED" "is unmodified")))
4412 (kill-buffer buffer)))
4413 (setq list (cdr list)))) 4419 (setq list (cdr list))))
4420
4421(defun kill-matching-buffers (regexp &optional internal-too)
4422 "Kill buffers whose name matches the specified regexp.
4423The optional second argument indicates whether to kill internal buffers too."
4424 (interactive "sKill buffers matching this regular expression: \nP")
4425 (dolist (buffer (buffer-list))
4426 (let ((name (buffer-name buffer)))
4427 (when (and name (not (string-equal name ""))
4428 (or internal-too (/= (aref name 0) ?\s))
4429 (string-match regexp name))
4430 (kill-buffer-ask buffer)))))
4431
4414 4432
4415(defun auto-save-mode (arg) 4433(defun auto-save-mode (arg)
4416 "Toggle auto-saving of contents of current buffer. 4434 "Toggle auto-saving of contents of current buffer.
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 631869e4f34..17ef7f996b3 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,34 @@
12007-06-08 Katsumi Yamaoka <yamaoka@jpl.org>
2
3 * gnus-ems.el (gnus-x-splash): Make it work.
4
5 * gnus-start.el (gnus-1): Relax restrictions that prevent gnus-x-splash
6 from being used.
7
8 * gnus-art.el (gnus-article-summary-command-nosave): Correct the order
9 of the arguments passed to pop-to-buffer.
10 (gnus-article-read-summary-keys): Ditto.
11
122007-06-07 Juanma Barranquero <lekktu@gmail.com>
13
14 * gnus-art.el (gnus-split-methods): Fix typo in docstring.
15
162007-06-06 Juanma Barranquero <lekktu@gmail.com>
17
18 * gnus-diary.el (gnus-diary-time-format, gnus-summary-sort-by-schedule):
19 * gnus-sum.el (gnus-summary-highlight):
20 * mail-source.el (mail-source-delete-old-incoming-confirm):
21 * nndiary.el (nndiary-reminders): Fix typos in docstrings.
22
232007-06-04 Katsumi Yamaoka <yamaoka@jpl.org>
24
25 * gnus-art.el (gnus-mime-view-part-externally)
26 (gnus-mime-view-part-internally): Fix predicate function passed to
27 completing-read.
28
29 * mm-decode.el (mm-image-fit-p): Return t if argument is not an image;
30 return t if image size is just the same as window size.
31
12007-05-28 Katsumi Yamaoka <yamaoka@jpl.org> 322007-05-28 Katsumi Yamaoka <yamaoka@jpl.org>
2 33
3 * message.el (message-pop-to-buffer): Add switch-function argument. 34 * message.el (message-pop-to-buffer): Add switch-function argument.
@@ -355,7 +386,7 @@
355 (message-simplify-subject): New function to remove duplicate code. 386 (message-simplify-subject): New function to remove duplicate code.
356 (message-reply, message-followup): Use it. 387 (message-reply, message-followup): Use it.
357 (message-simplify-subject-functions): New variable. 388 (message-simplify-subject-functions): New variable.
358 (message-strip-subject-encoded-words): New function 389 (message-strip-subject-encoded-words): New function.
359 390
3602006-11-08 Wolfgang Jenkner <wjenkner@inode.at> (tiny change) 3912006-11-08 Wolfgang Jenkner <wjenkner@inode.at> (tiny change)
361 392
@@ -1195,8 +1226,7 @@
1195 * mm-view.el (mm-fill-flowed): New variable. 1226 * mm-view.el (mm-fill-flowed): New variable.
1196 (mm-inline-text): Use it. 1227 (mm-inline-text): Use it.
1197 1228
11982006-02-21 Wolfram Fenske <wolfram.fenske@student.uni-magdeburg.de> 12292006-02-21 Wolfram Fenske <wolfram.fenske@student.uni-magdeburg.de> (tiny change)
1199 (tiny change)
1200 1230
1201 * nnimap.el (nnimap-request-move-article): Change folder back to 1231 * nnimap.el (nnimap-request-move-article): Change folder back to
1202 source group before deleting. 1232 source group before deleting.
@@ -1758,7 +1788,7 @@
1758 (pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional 'passphrase' 1788 (pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional 'passphrase'
1759 argument to all these routines, so the passphrase can be managed 1789 argument to all these routines, so the passphrase can be managed
1760 externally and passed in to the system. 1790 externally and passed in to the system.
1761 (pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache 1791 (pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache
1762 function. 1792 function.
1763 1793
17642005-10-29 Ken Manheimer <ken.manheimer@gmail.com> 17942005-10-29 Ken Manheimer <ken.manheimer@gmail.com>
@@ -3633,7 +3663,7 @@
3633 * nnmail.el (nnmail-split-fancy-with-parent-ignore-groups) 3663 * nnmail.el (nnmail-split-fancy-with-parent-ignore-groups)
3634 (nnmail-cache-ignore-groups, nnmail-spool-hook) 3664 (nnmail-cache-ignore-groups, nnmail-spool-hook)
3635 (nnmail-split-fancy-match-partial-words) 3665 (nnmail-split-fancy-match-partial-words)
3636 (nnmail-split-lowercase-expanded): 3666 (nnmail-split-lowercase-expanded): Add :version.
3637 3667
3638 * nndiary.el (nndiary): Add :version. 3668 * nndiary.el (nndiary): Add :version.
3639 3669
@@ -3909,7 +3939,7 @@
3909 * gnus-int.el (gnus-request-delete-group): 3939 * gnus-int.el (gnus-request-delete-group):
3910 Use gnus-cache-delete-group and gnus-agent-delete-group to keep the 3940 Use gnus-cache-delete-group and gnus-agent-delete-group to keep the
3911 local disk in sync with the server. 3941 local disk in sync with the server.
3912 (gnus-request-rename-group): 3942 (gnus-request-rename-group):
3913 Use gnus-cache-rename-group and gnus-agent-rename-group to keep the 3943 Use gnus-cache-rename-group and gnus-agent-rename-group to keep the
3914 local disk in sync with the server. 3944 local disk in sync with the server.
3915 3945
@@ -4036,7 +4066,7 @@
4036 4066
4037 * gnus-sum.el (gnus-select-newgroup): Replace inline code with 4067 * gnus-sum.el (gnus-select-newgroup): Replace inline code with
4038 gnus-agent-possibly-alter-active. 4068 gnus-agent-possibly-alter-active.
4039 (gnus-adjust-marked-articles): Faster handling of simple lists 4069 (gnus-adjust-marked-articles): Faster handling of simple lists.
4040 4070
40412004-10-18 David Edmondson <dme@dme.org> 40712004-10-18 David Edmondson <dme@dme.org>
4042 4072
@@ -4179,7 +4209,7 @@
4179 4209
4180 * gnus-fun.el: Require gnus-ems and gnus-util. 4210 * gnus-fun.el: Require gnus-ems and gnus-util.
4181 4211
4182 * gnus-diary.el (gnus-diary-header-schedule): caddr -> car (cddr 4212 * gnus-diary.el (gnus-diary-header-schedule): caddr -> car (cddr).
4183 4213
4184 * gnus-art.el (gnus-article-edit-mode): Define before first reference. 4214 * gnus-art.el (gnus-article-edit-mode): Define before first reference.
4185 4215
@@ -4262,6 +4292,7 @@
4262 4292
4263 * nnmail.el (nnmail-fancy-expiry-targets) 4293 * nnmail.el (nnmail-fancy-expiry-targets)
4264 (nnmail-mail-splitting-charset, nnmail-mail-splitting-decodes): 4294 (nnmail-mail-splitting-charset, nnmail-mail-splitting-decodes):
4295 Add :version.
4265 4296
4266 * nnimap.el (nnimap-split-download-body, nnimap-dont-close) 4297 * nnimap.el (nnimap-split-download-body, nnimap-dont-close)
4267 (nnimap-retrieve-groups-asynchronous): Add :version. 4298 (nnimap-retrieve-groups-asynchronous): Add :version.
@@ -4270,7 +4301,7 @@
4270 * mml.el (mml-content-disposition-parameters) 4301 * mml.el (mml-content-disposition-parameters)
4271 (mml-insert-mime-headers-always): Add :version. 4302 (mml-insert-mime-headers-always): Add :version.
4272 4303
4273 * mm-util.el (mm-coding-system-priorities): 4304 * mm-util.el (mm-coding-system-priorities): Add :version.
4274 4305
4275 * mm-decode.el (mm-inline-text-html-with-images) 4306 * mm-decode.el (mm-inline-text-html-with-images)
4276 (mm-keep-viewer-alive-types, mm-external-terminal-program) 4307 (mm-keep-viewer-alive-types, mm-external-terminal-program)
@@ -4327,7 +4358,7 @@
4327 * gnus-srvr.el (gnus-server-browse-in-group-buffer) 4358 * gnus-srvr.el (gnus-server-browse-in-group-buffer)
4328 (gnus-server-offline-face): Add :version. 4359 (gnus-server-offline-face): Add :version.
4329 4360
4330 * gnus-score.el (gnus-adaptive-word-length-limit): 4361 * gnus-score.el (gnus-adaptive-word-length-limit): Add :version.
4331 4362
4332 * gnus-msg.el (gnus-gcc-externalize-attachments) 4363 * gnus-msg.el (gnus-gcc-externalize-attachments)
4333 (gnus-debug-files, gnus-debug-exclude-variables) 4364 (gnus-debug-files, gnus-debug-exclude-variables)
@@ -4349,7 +4380,7 @@
4349 * gnus-delay.el (gnus-delay-default-hour): Add :version. 4380 * gnus-delay.el (gnus-delay-default-hour): Add :version.
4350 4381
4351 * gnus-cite.el (gnus-cite-blank-line-after-header) 4382 * gnus-cite.el (gnus-cite-blank-line-after-header)
4352 (gnus-article-boring-faces): 4383 (gnus-article-boring-faces): Add :version.
4353 4384
4354 * gnus-art.el (gnus-buttonized-mime-types) 4385 * gnus-art.el (gnus-buttonized-mime-types)
4355 (gnus-inhibit-mime-unbuttonizing) 4386 (gnus-inhibit-mime-unbuttonizing)
@@ -4413,10 +4444,10 @@
44132004-09-10 Teodor Zlatanov <tzz@lifelogs.com> 44442004-09-10 Teodor Zlatanov <tzz@lifelogs.com>
4414 4445
4415 * nnimap.el (nnimap-open-connection): Allow 'imaps' as a synonym 4446 * nnimap.el (nnimap-open-connection): Allow 'imaps' as a synonym
4416 for the 'imap' port in netrc files 4447 for the 'imap' port in netrc files.
4417 4448
4418 * gnus-registry.el (gnus-registry-trim): Watch out for negatives 4449 * gnus-registry.el (gnus-registry-trim): Watch out for negatives
4419 in gnus-registry-trim 4450 in gnus-registry-trim.
4420 4451
44212004-09-10 Simon Josefsson <jas@extundo.com> 44522004-09-10 Simon Josefsson <jas@extundo.com>
4422 4453
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 013bf48110d..90af0740318 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -651,7 +651,7 @@ value is a list of possible files to save in if the match is non-nil.
651If the match is a string, it is used as a regexp match on the 651If the match is a string, it is used as a regexp match on the
652article. If the match is a symbol, that symbol will be funcalled 652article. If the match is a symbol, that symbol will be funcalled
653from the buffer of the article to be saved with the newsgroup as the 653from the buffer of the article to be saved with the newsgroup as the
654parameter. If it is a list, it will be evaled in the same buffer. 654parameter. If it is a list, it will be evalled in the same buffer.
655 655
656If this form or function returns a string, this string will be used as 656If this form or function returns a string, this string will be used as
657a possible file name; and if it returns a non-nil list, that list will 657a possible file name; and if it returns a non-nil list, that list will
@@ -4674,7 +4674,7 @@ specified charset."
4674 (mm-enable-external t)) 4674 (mm-enable-external t))
4675 (if (not (stringp method)) 4675 (if (not (stringp method))
4676 (gnus-mime-view-part-as-type 4676 (gnus-mime-view-part-as-type
4677 nil (lambda (type) (stringp (mailcap-mime-info type)))) 4677 nil (lambda (types) (stringp (mailcap-mime-info (car types)))))
4678 (when handle 4678 (when handle
4679 (if (mm-handle-undisplayer handle) 4679 (if (mm-handle-undisplayer handle)
4680 (mm-remove-part handle) 4680 (mm-remove-part handle)
@@ -4695,7 +4695,7 @@ If no internal viewer is available, use an external viewer."
4695 (inhibit-read-only t)) 4695 (inhibit-read-only t))
4696 (if (not (mm-inlinable-p handle)) 4696 (if (not (mm-inlinable-p handle))
4697 (gnus-mime-view-part-as-type 4697 (gnus-mime-view-part-as-type
4698 nil (lambda (type) (mm-inlinable-p handle type))) 4698 nil (lambda (types) (mm-inlinable-p handle (car types))))
4699 (when handle 4699 (when handle
4700 (if (mm-handle-undisplayer handle) 4700 (if (mm-handle-undisplayer handle)
4701 (mm-remove-part handle) 4701 (mm-remove-part handle)
@@ -5607,7 +5607,7 @@ not have a face in `gnus-article-boring-faces'."
5607 "Execute the last keystroke in the summary buffer." 5607 "Execute the last keystroke in the summary buffer."
5608 (interactive) 5608 (interactive)
5609 (let (func) 5609 (let (func)
5610 (pop-to-buffer gnus-article-current-summary 'norecord) 5610 (pop-to-buffer gnus-article-current-summary nil 'norecord)
5611 (setq func (lookup-key (current-local-map) (this-command-keys))) 5611 (setq func (lookup-key (current-local-map) (this-command-keys)))
5612 (call-interactively func))) 5612 (call-interactively func)))
5613 5613
@@ -5646,7 +5646,7 @@ not have a face in `gnus-article-boring-faces'."
5646 (member keys nosave-in-article)) 5646 (member keys nosave-in-article))
5647 (let (func) 5647 (let (func)
5648 (save-window-excursion 5648 (save-window-excursion
5649 (pop-to-buffer gnus-article-current-summary 'norecord) 5649 (pop-to-buffer gnus-article-current-summary nil 'norecord)
5650 ;; We disable the pick minor mode commands. 5650 ;; We disable the pick minor mode commands.
5651 (let (gnus-pick-mode) 5651 (let (gnus-pick-mode)
5652 (setq func (lookup-key (current-local-map) keys)))) 5652 (setq func (lookup-key (current-local-map) keys))))
@@ -5658,14 +5658,14 @@ not have a face in `gnus-article-boring-faces'."
5658 (call-interactively func) 5658 (call-interactively func)
5659 (setq new-sum-point (point))) 5659 (setq new-sum-point (point)))
5660 (when (member keys nosave-but-article) 5660 (when (member keys nosave-but-article)
5661 (pop-to-buffer gnus-article-buffer 'norecord))) 5661 (pop-to-buffer gnus-article-buffer nil 'norecord)))
5662 ;; These commands should restore window configuration. 5662 ;; These commands should restore window configuration.
5663 (let ((obuf (current-buffer)) 5663 (let ((obuf (current-buffer))
5664 (owin (current-window-configuration)) 5664 (owin (current-window-configuration))
5665 (opoint (point)) 5665 (opoint (point))
5666 win func in-buffer selected new-sum-start new-sum-hscroll) 5666 win func in-buffer selected new-sum-start new-sum-hscroll)
5667 (cond (not-restore-window 5667 (cond (not-restore-window
5668 (pop-to-buffer gnus-article-current-summary 'norecord)) 5668 (pop-to-buffer gnus-article-current-summary nil 'norecord))
5669 ((setq win (get-buffer-window gnus-article-current-summary)) 5669 ((setq win (get-buffer-window gnus-article-current-summary))
5670 (select-window win)) 5670 (select-window win))
5671 (t 5671 (t
diff --git a/lisp/gnus/gnus-diary.el b/lisp/gnus/gnus-diary.el
index a7f7ee65ec3..d5bc9c3a05d 100644
--- a/lisp/gnus/gnus-diary.el
+++ b/lisp/gnus/gnus-diary.el
@@ -59,7 +59,7 @@
59 :group 'gnus-summary-format) 59 :group 'gnus-summary-format)
60 60
61(defcustom gnus-diary-time-format "%a, %b %e %y, %H:%M" 61(defcustom gnus-diary-time-format "%a, %b %e %y, %H:%M"
62 "*Time format to display appointements in nndiary summary buffers. 62 "*Time format to display appointments in nndiary summary buffers.
63Please refer to `format-time-string' for information on possible values." 63Please refer to `format-time-string' for information on possible values."
64 :type 'string 64 :type 'string
65 :group 'gnus-diary) 65 :group 'gnus-diary)
@@ -224,7 +224,7 @@ There are currently two built-in format functions:
224 (gnus-thread-header h2))) 224 (gnus-thread-header h2)))
225 225
226(defun gnus-summary-sort-by-schedule (&optional reverse) 226(defun gnus-summary-sort-by-schedule (&optional reverse)
227 "Sort nndiary summary buffers by schedule of appointements. 227 "Sort nndiary summary buffers by schedule of appointments.
228Optional prefix (or REVERSE argument) means sort in reverse order." 228Optional prefix (or REVERSE argument) means sort in reverse order."
229 (interactive "P") 229 (interactive "P")
230 (gnus-summary-sort 'schedule reverse)) 230 (gnus-summary-sort 'schedule reverse))
diff --git a/lisp/gnus/gnus-ems.el b/lisp/gnus/gnus-ems.el
index 60e66adc98b..4400b81f041 100644
--- a/lisp/gnus/gnus-ems.el
+++ b/lisp/gnus/gnus-ems.el
@@ -172,40 +172,95 @@
172 172
173(defun gnus-x-splash () 173(defun gnus-x-splash ()
174 "Show a splash screen using a pixmap in the current buffer." 174 "Show a splash screen using a pixmap in the current buffer."
175 (let ((dir (nnheader-find-etc-directory "gnus")) 175 (interactive)
176 pixmap file height beg i) 176 (unless window-system
177 (save-excursion 177 (error "`gnus-x-splash' requires running on the window system"))
178 (switch-to-buffer (gnus-get-buffer-create gnus-group-buffer)) 178 (switch-to-buffer (gnus-get-buffer-create (if (or (gnus-alive-p)
179 (let ((buffer-read-only nil) 179 (interactive-p))
180 width height) 180 "*gnus-x-splash*"
181 (erase-buffer) 181 gnus-group-buffer)))
182 (when (and dir 182 (let ((inhibit-read-only nil)
183 (file-exists-p (setq file 183 (file (nnheader-find-etc-directory "images/gnus/x-splash" t))
184 (expand-file-name "x-splash" dir)))) 184 pixmap fcw fch width height fringes sbars left yoffset top ls)
185 (let ((coding-system-for-read 'raw-text) 185 (erase-buffer)
186 default-enable-multibyte-characters) 186 (when (and file
187 (with-temp-buffer 187 (ignore-errors
188 (insert-file-contents file) 188 (let ((coding-system-for-read 'raw-text)
189 (goto-char (point-min)) 189 default-enable-multibyte-characters)
190 (ignore-errors 190 (with-temp-buffer
191 (setq pixmap (read (current-buffer))))))) 191 (insert-file-contents file)
192 (when pixmap 192 (goto-char (point-min))
193 (make-face 'gnus-splash) 193 (setq pixmap (read (current-buffer)))))))
194 (setq height (/ (car pixmap) (frame-char-height)) 194 (setq fcw (float (frame-char-width))
195 width (/ (cadr pixmap) (frame-char-width))) 195 fch (float (frame-char-height))
196 (set-face-foreground 'gnus-splash "Brown") 196 width (/ (car pixmap) fcw)
197 (set-face-stipple 'gnus-splash pixmap) 197 height (/ (cadr pixmap) fch)
198 (insert-char ?\n (* (/ (window-height) 2 height) height)) 198 fringes (if (fboundp 'window-fringes)
199 (setq i height) 199 (eval '(window-fringes))
200 (while (> i 0) 200 '(10 11 nil))
201 (insert-char ?\ (* (/ (window-width) 2 width) width)) 201 sbars (frame-parameter nil 'vertical-scroll-bars))
202 (setq beg (point)) 202 (cond ((eq sbars 'right)
203 (insert-char ?\ width) 203 (setq sbars
204 (set-text-properties beg (point) '(face gnus-splash)) 204 (cons 0 (/ (or (frame-parameter nil 'scroll-bar-width) 14)
205 (insert ?\n) 205 fcw))))
206 (decf i)) 206 (sbars
207 (goto-char (point-min)) 207 (setq sbars
208 (sit-for 0)))))) 208 (cons (/ (or (frame-parameter nil 'scroll-bar-width) 14)
209 fcw)
210 0))))
211 (setq left (- (* (round (/ (1- (/ (+ (window-width)
212 (car sbars) (cdr sbars)
213 (/ (+ (or (car fringes) 0)
214 (or (cadr fringes) 0))
215 fcw))
216 width))
217 2))
218 width)
219 (car sbars)
220 (/ (or (car fringes) 0) fcw))
221 yoffset (cadr (window-edges))
222 top (max 0 (- (* (max (if (and tool-bar-mode
223 (not (featurep 'gtk))
224 (eq (frame-first-window)
225 (selected-window)))
226 1 0)
227 (round (/ (1- (/ (+ (1- (window-height))
228 (* 2 yoffset))
229 height))
230 2)))
231 height)
232 yoffset))
233 ls (/ (or line-spacing 0) fch)
234 height (max 0 (- height ls)))
235 (cond ((>= (- top ls) 1)
236 (insert
237 (propertize
238 " "
239 'display `(space :width 0 :ascent 100))
240 "\n"
241 (propertize
242 " "
243 'display `(space :width 0 :height ,(- top ls 1) :ascent 100))
244 "\n"))
245 ((> (- top ls) 0)
246 (insert
247 (propertize
248 " "
249 'display `(space :width 0 :height ,(- top ls) :ascent 100))
250 "\n")))
251 (if (and (> width 0) (> left 0))
252 (insert (propertize
253 " "
254 'display `(space :width ,left :height ,height :ascent 0)))
255 (setq width (+ width left)))
256 (when (> width 0)
257 (insert (propertize
258 " "
259 'display `(space :width ,width :height ,height :ascent 0)
260 'face `(gnus-splash :stipple ,pixmap))))
261 (goto-char (if (<= (- top ls) 0) (1- (point)) (point-min)))
262 (redraw-frame (selected-frame))
263 (sit-for 0))))
209 264
210;;; Image functions. 265;;; Image functions.
211 266
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index 9fbab8b340b..d906cec6c6a 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -758,8 +758,7 @@ prompt the user for the name of an NNTP server to use."
758 (cond 758 (cond
759 ((featurep 'xemacs) 759 ((featurep 'xemacs)
760 (gnus-xmas-splash)) 760 (gnus-xmas-splash))
761 ((and window-system 761 (window-system
762 (= (frame-height) (1+ (window-height))))
763 (gnus-x-splash)))) 762 (gnus-x-splash))))
764 763
765 (let ((level (and (numberp arg) (> arg 0) arg)) 764 (let ((level (and (numberp arg) (> arg 0) arg))
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 5653c8be746..b1b6c8b760b 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -973,14 +973,14 @@ automatically when it is selected."
973 . gnus-summary-normal-read)) 973 . gnus-summary-normal-read))
974 "*Controls the highlighting of summary buffer lines. 974 "*Controls the highlighting of summary buffer lines.
975 975
976A list of (FORM . FACE) pairs. When deciding how a a particular 976A list of (FORM . FACE) pairs. When deciding how a particular
977summary line should be displayed, each form is evaluated. The content 977summary line should be displayed, each form is evaluated. The content
978of the face field after the first true form is used. You can change 978of the face field after the first true form is used. You can change
979how those summary lines are displayed, by editing the face field. 979how those summary lines are displayed, by editing the face field.
980 980
981You can use the following variables in the FORM field. 981You can use the following variables in the FORM field.
982 982
983score: The article's score 983score: The article's score.
984default: The default article score. 984default: The default article score.
985default-high: The default score for high scored articles. 985default-high: The default score for high scored articles.
986default-low: The default score for low scored articles. 986default-low: The default score for low scored articles.
diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el
index b991415342d..99596d2584b 100644
--- a/lisp/gnus/mail-source.el
+++ b/lisp/gnus/mail-source.el
@@ -284,7 +284,7 @@ files older than number of days."
284 (integer :tag "days"))) 284 (integer :tag "days")))
285 285
286(defcustom mail-source-delete-old-incoming-confirm t 286(defcustom mail-source-delete-old-incoming-confirm t
287 "*If non-nil, ask for for confirmation before deleting old incoming files. 287 "*If non-nil, ask for confirmation before deleting old incoming files.
288This variable only applies when `mail-source-delete-incoming' is a positive 288This variable only applies when `mail-source-delete-incoming' is a positive
289number." 289number."
290 :version "22.1" 290 :version "22.1"
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index 6d52d8b2f16..028855ab341 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -1371,18 +1371,19 @@ be determined."
1371(defun mm-image-fit-p (handle) 1371(defun mm-image-fit-p (handle)
1372 "Say whether the image in HANDLE will fit the current window." 1372 "Say whether the image in HANDLE will fit the current window."
1373 (let ((image (mm-get-image handle))) 1373 (let ((image (mm-get-image handle)))
1374 (if (fboundp 'glyph-width) 1374 (or (not image)
1375 ;; XEmacs' glyphs can actually tell us about their width, so 1375 (if (fboundp 'glyph-width)
1376 ;; lets be nice and smart about them. 1376 ;; XEmacs' glyphs can actually tell us about their width, so
1377 (or mm-inline-large-images 1377 ;; lets be nice and smart about them.
1378 (and (< (glyph-width image) (window-pixel-width)) 1378 (or mm-inline-large-images
1379 (< (glyph-height image) (window-pixel-height)))) 1379 (and (<= (glyph-width image) (window-pixel-width))
1380 (let* ((size (image-size image)) 1380 (<= (glyph-height image) (window-pixel-height))))
1381 (w (car size)) 1381 (let* ((size (image-size image))
1382 (h (cdr size))) 1382 (w (car size))
1383 (or mm-inline-large-images 1383 (h (cdr size)))
1384 (and (< h (1- (window-height))) ; Don't include mode line. 1384 (or mm-inline-large-images
1385 (< w (window-width)))))))) 1385 (and (<= h (1- (window-height))) ; Don't include mode line.
1386 (<= w (window-width)))))))))
1386 1387
1387(defun mm-valid-image-format-p (format) 1388(defun mm-valid-image-format-p (format)
1388 "Say whether FORMAT can be displayed natively by Emacs." 1389 "Say whether FORMAT can be displayed natively by Emacs."
diff --git a/lisp/gnus/nndiary.el b/lisp/gnus/nndiary.el
index 483c2ee1070..f6e0ae44cb2 100644
--- a/lisp/gnus/nndiary.el
+++ b/lisp/gnus/nndiary.el
@@ -131,7 +131,7 @@ non-nil."
131 131
132 132
133(defcustom nndiary-reminders '((0 . day)) 133(defcustom nndiary-reminders '((0 . day))
134 "*Different times when you want to be reminded of your appointements. 134 "*Different times when you want to be reminded of your appointments.
135Diary articles will appear again, as if they'd been just received. 135Diary articles will appear again, as if they'd been just received.
136 136
137Entries look like (3 . day) which means something like \"Please 137Entries look like (3 . day) which means something like \"Please
@@ -145,7 +145,7 @@ not 'century, sorry).
145NOTE: the units of measure actually express dates, not durations: if you 145NOTE: the units of measure actually express dates, not durations: if you
146use 'week, messages will pop up on Sundays at 00:00 (or Mondays if 146use 'week, messages will pop up on Sundays at 00:00 (or Mondays if
147`nndiary-week-starts-on-monday' is non-nil) and *not* 7 days before the 147`nndiary-week-starts-on-monday' is non-nil) and *not* 7 days before the
148appointement, if you use 'month, messages will pop up on the first day of 148appointment, if you use 'month, messages will pop up on the first day of
149each months, at 00:00 and so on. 149each months, at 00:00 and so on.
150 150
151If you really want to specify a duration (like 24 hours exactly), you can 151If you really want to specify a duration (like 24 hours exactly), you can
@@ -155,15 +155,15 @@ scheme might appear somewhat weird at a first glance, it is very powerful.
155In order to make this clear, here are some examples: 155In order to make this clear, here are some examples:
156 156
157- '(0 . day): this is the default value of `nndiary-reminders'. It means 157- '(0 . day): this is the default value of `nndiary-reminders'. It means
158 pop up the appointements of the day each morning at 00:00. 158 pop up the appointments of the day each morning at 00:00.
159 159
160- '(1 . day): this means pop up the appointements the day before, at 00:00. 160- '(1 . day): this means pop up the appointments the day before, at 00:00.
161 161
162- '(6 . hour): for an appointement at 18:30, this would pop up the 162- '(6 . hour): for an appointment at 18:30, this would pop up the
163 appointement message at 12:00. 163 appointment message at 12:00.
164 164
165- '(360 . minute): for an appointement at 18:30 and 15 seconds, this would 165- '(360 . minute): for an appointment at 18:30 and 15 seconds, this would
166 pop up the appointement message at 12:30." 166 pop up the appointment message at 12:30."
167 :group 'nndiary 167 :group 'nndiary
168 :type '(repeat (cons :format "%v\n" 168 :type '(repeat (cons :format "%v\n"
169 (integer :format "%v") 169 (integer :format "%v")
diff --git a/lisp/help-mode.el b/lisp/help-mode.el
index afaf06bec3c..f7c33d85286 100644
--- a/lisp/help-mode.el
+++ b/lisp/help-mode.el
@@ -40,6 +40,7 @@
40 40
41(define-key help-mode-map [mouse-2] 'help-follow-mouse) 41(define-key help-mode-map [mouse-2] 'help-follow-mouse)
42(define-key help-mode-map "\C-c\C-b" 'help-go-back) 42(define-key help-mode-map "\C-c\C-b" 'help-go-back)
43(define-key help-mode-map "\C-c\C-f" 'help-go-forward)
43(define-key help-mode-map "\C-c\C-c" 'help-follow-symbol) 44(define-key help-mode-map "\C-c\C-c" 'help-follow-symbol)
44;; Documentation only, since we use minor-mode-overriding-map-alist. 45;; Documentation only, since we use minor-mode-overriding-map-alist.
45(define-key help-mode-map "\r" 'help-follow) 46(define-key help-mode-map "\r" 'help-follow)
@@ -52,13 +53,28 @@ To use the element, do (apply FUNCTION ARGS) then goto the point.")
52(put 'help-xref-stack 'permanent-local t) 53(put 'help-xref-stack 'permanent-local t)
53(make-variable-buffer-local 'help-xref-stack) 54(make-variable-buffer-local 'help-xref-stack)
54 55
56(defvar help-xref-forward-stack nil
57 "The stack of used to navigate help forwards after using the back button.
58Used by `help-follow' and `help-xref-go-forward'.
59An element looks like (POSITION FUNCTION ARGS...).
60To use the element, do (apply FUNCTION ARGS) then goto the point.")
61(put 'help-xref-forward-stack 'permanent-local t)
62(make-variable-buffer-local 'help-xref-forward-stack)
63
55(defvar help-xref-stack-item nil 64(defvar help-xref-stack-item nil
56 "An item for `help-follow' in this buffer to push onto `help-xref-stack'. 65 "An item for `help-follow' in this buffer to push onto `help-xref-stack'.
57The format is (FUNCTION ARGS...).") 66The format is (FUNCTION ARGS...).")
58(put 'help-xref-stack-item 'permanent-local t) 67(put 'help-xref-stack-item 'permanent-local t)
59(make-variable-buffer-local 'help-xref-stack-item) 68(make-variable-buffer-local 'help-xref-stack-item)
60 69
70(defvar help-xref-stack-forward-item nil
71 "An item for `help-go-back' to push onto `help-xref-forward-stack'.
72The format is (FUNCTION ARGS...).")
73(put 'help-xref-stack-forward-item 'permanent-local t)
74(make-variable-buffer-local 'help-xref-stack-forward-item)
75
61(setq-default help-xref-stack nil help-xref-stack-item nil) 76(setq-default help-xref-stack nil help-xref-stack-item nil)
77(setq-default help-xref-forward-stack nil help-xref-forward-stack-item nil)
62 78
63(defcustom help-mode-hook nil 79(defcustom help-mode-hook nil
64 "Hook run by `help-mode'." 80 "Hook run by `help-mode'."
@@ -123,6 +139,11 @@ The format is (FUNCTION ARGS...).")
123 'help-function #'help-xref-go-back 139 'help-function #'help-xref-go-back
124 'help-echo (purecopy "mouse-2, RET: go back to previous help buffer")) 140 'help-echo (purecopy "mouse-2, RET: go back to previous help buffer"))
125 141
142(define-button-type 'help-forward
143 :supertype 'help-xref
144 'help-function #'help-xref-go-forward
145 'help-echo (purecopy "mouse-2, RET: move forward to next help buffer"))
146
126(define-button-type 'help-info 147(define-button-type 'help-info
127 :supertype 'help-xref 148 :supertype 'help-xref
128 'help-function #'info 149 'help-function #'info
@@ -242,6 +263,9 @@ Commands:
242(defvar help-back-label (purecopy "[back]") 263(defvar help-back-label (purecopy "[back]")
243 "Label to use by `help-make-xrefs' for the go-back reference.") 264 "Label to use by `help-make-xrefs' for the go-back reference.")
244 265
266(defvar help-forward-label (purecopy "[forward]")
267 "Label to use by `help-make-xrefs' for the go-forward reference.")
268
245(defconst help-xref-symbol-regexp 269(defconst help-xref-symbol-regexp
246 (purecopy (concat "\\(\\<\\(\\(variable\\|option\\)\\|" ; Link to var 270 (purecopy (concat "\\(\\<\\(\\(variable\\|option\\)\\|" ; Link to var
247 "\\(function\\|command\\)\\|" ; Link to function 271 "\\(function\\|command\\)\\|" ; Link to function
@@ -286,7 +310,8 @@ because we want to record the \"previous\" position of point so we can
286restore it properly when going back." 310restore it properly when going back."
287 (with-current-buffer (help-buffer) 311 (with-current-buffer (help-buffer)
288 (when help-xref-stack-item 312 (when help-xref-stack-item
289 (push (cons (point) help-xref-stack-item) help-xref-stack)) 313 (push (cons (point) help-xref-stack-item) help-xref-stack)
314 (setq help-xref-forward-stack nil))
290 (when interactive-p 315 (when interactive-p
291 (let ((tail (nthcdr 10 help-xref-stack))) 316 (let ((tail (nthcdr 10 help-xref-stack)))
292 ;; Truncate the stack. 317 ;; Truncate the stack.
@@ -480,6 +505,11 @@ that."
480 (insert "\n") 505 (insert "\n")
481 (help-insert-xref-button help-back-label 'help-back 506 (help-insert-xref-button help-back-label 'help-back
482 (current-buffer)) 507 (current-buffer))
508 (insert "\t"))
509 ;; Make a forward-reference in this buffer if appropriate.
510 (when help-xref-forward-stack
511 (help-insert-xref-button help-forward-label 'help-forward
512 (current-buffer))
483 (insert "\n"))) 513 (insert "\n")))
484 ;; View mode steals RET from us. 514 ;; View mode steals RET from us.
485 (set (make-local-variable 'minor-mode-overriding-map-alist) 515 (set (make-local-variable 'minor-mode-overriding-map-alist)
@@ -598,6 +628,7 @@ help buffer."
598 "From BUFFER, go back to previous help buffer text using `help-xref-stack'." 628 "From BUFFER, go back to previous help buffer text using `help-xref-stack'."
599 (let (item position method args) 629 (let (item position method args)
600 (with-current-buffer buffer 630 (with-current-buffer buffer
631 (push (cons (point) help-xref-stack-item) help-xref-forward-stack)
601 (when help-xref-stack 632 (when help-xref-stack
602 (setq item (pop help-xref-stack) 633 (setq item (pop help-xref-stack)
603 ;; Clear the current item so that it won't get pushed 634 ;; Clear the current item so that it won't get pushed
@@ -613,12 +644,39 @@ help buffer."
613 (set-window-point (get-buffer-window buffer) position) 644 (set-window-point (get-buffer-window buffer) position)
614 (goto-char position))))) 645 (goto-char position)))))
615 646
647(defun help-xref-go-forward (buffer)
648 "From BUFFER, go forward to next help buffer."
649 (let (item position method args)
650 (with-current-buffer buffer
651 (push (cons (point) help-xref-stack-item) help-xref-stack)
652 (when help-xref-forward-stack
653 (setq item (pop help-xref-forward-stack)
654 ;; Clear the current item so that it won't get pushed
655 ;; by the function we're about to call. TODO: We could also
656 ;; push it onto a "forward" stack and add a `forw' button.
657 help-xref-stack-item nil
658 position (car item)
659 method (cadr item)
660 args (cddr item))))
661 (apply method args)
662 (with-current-buffer buffer
663 (if (get-buffer-window buffer)
664 (set-window-point (get-buffer-window buffer) position)
665 (goto-char position)))))
666
616(defun help-go-back () 667(defun help-go-back ()
617 "Go back to previous topic in this help buffer." 668 "Go back to previous topic in this help buffer."
618 (interactive) 669 (interactive)
619 (if help-xref-stack 670 (if help-xref-stack
620 (help-xref-go-back (current-buffer)) 671 (help-xref-go-back (current-buffer))
621 (error "No previous help buffer"))) 672 (error "No previous help buffer")))
673
674(defun help-go-forward ()
675 "Go back to next topic in this help buffer."
676 (interactive)
677 (if help-xref-forward-stack
678 (help-xref-go-forward (current-buffer))
679 (error "No next help buffer")))
622 680
623(defun help-do-xref (pos function args) 681(defun help-do-xref (pos function args)
624 "Call the help cross-reference function FUNCTION with args ARGS. 682 "Call the help cross-reference function FUNCTION with args ARGS.
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 980cb346600..21985259e98 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -1,4 +1,4 @@
1;;; mule-cmds.el --- commands for mulitilingual environment -*-coding: iso-2022-7bit -*- 1;;; mule-cmds.el --- commands for multilingual environment -*-coding: iso-2022-7bit -*-
2 2
3;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 3;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
4;; 2006, 2007 Free Software Foundation, Inc. 4;; 2006, 2007 Free Software Foundation, Inc.
@@ -203,7 +203,7 @@
203 "`\\(\\sw\\(\\sw\\|\\s_\\)+\\)'"))) 203 "`\\(\\sw\\(\\sw\\|\\s_\\)+\\)'")))
204 204
205(defun coding-system-change-eol-conversion (coding-system eol-type) 205(defun coding-system-change-eol-conversion (coding-system eol-type)
206 "Return a coding system which differs from CODING-SYSTEM in eol conversion. 206 "Return a coding system which differs from CODING-SYSTEM in EOL conversion.
207The returned coding system converts end-of-line by EOL-TYPE 207The returned coding system converts end-of-line by EOL-TYPE
208but text as the same way as CODING-SYSTEM. 208but text as the same way as CODING-SYSTEM.
209EOL-TYPE should be `unix', `dos', `mac', or nil. 209EOL-TYPE should be `unix', `dos', `mac', or nil.
@@ -253,8 +253,8 @@ the buffer; it only changes the way those bytes are interpreted.
253In general, therefore, this command *changes* the sequence of 253In general, therefore, this command *changes* the sequence of
254characters that the current buffer contains. 254characters that the current buffer contains.
255 255
256We suggest you avoid using use this command unless you know what you 256We suggest you avoid using this command unless you know what you are
257are doing. If you use it by mistake, and the buffer is now displayed 257doing. If you use it by mistake, and the buffer is now displayed
258wrong, use this command again to toggle back to the right mode." 258wrong, use this command again to toggle back to the right mode."
259 (interactive "P") 259 (interactive "P")
260 (let ((new-flag 260 (let ((new-flag
@@ -327,10 +327,10 @@ This sets the following coding systems:
327 o default coding system for subprocess I/O 327 o default coding system for subprocess I/O
328This also sets the following values: 328This also sets the following values:
329 o default value used as `file-name-coding-system' for converting file names 329 o default value used as `file-name-coding-system' for converting file names
330 if CODING-SYSTEM is ASCII-compatible. 330 if CODING-SYSTEM is ASCII-compatible
331 o default value for the command `set-terminal-coding-system' (not on MSDOS) 331 o default value for the command `set-terminal-coding-system' (not on MSDOS)
332 o default value for the command `set-keyboard-coding-system' 332 o default value for the command `set-keyboard-coding-system'
333 if CODING-SYSTEM is ASCII-compatible.." 333 if CODING-SYSTEM is ASCII-compatible"
334 (check-coding-system coding-system) 334 (check-coding-system coding-system)
335 (setq-default buffer-file-coding-system coding-system) 335 (setq-default buffer-file-coding-system coding-system)
336 (if (fboundp 'ucs-set-table-for-input) 336 (if (fboundp 'ucs-set-table-for-input)
@@ -372,7 +372,7 @@ This also sets the following coding systems:
372 o coding system of a newly created buffer 372 o coding system of a newly created buffer
373 o default coding system for subprocess I/O 373 o default coding system for subprocess I/O
374This also sets the following values: 374This also sets the following values:
375 o default value used as `file-name-coding-system' for converting file names. 375 o default value used as `file-name-coding-system' for converting file names
376 o default value for the command `set-terminal-coding-system' (not on MSDOS) 376 o default value for the command `set-terminal-coding-system' (not on MSDOS)
377 o default value for the command `set-keyboard-coding-system' 377 o default value for the command `set-keyboard-coding-system'
378 378
@@ -423,16 +423,16 @@ The function `sort-coding-systems' use it.")
423 423
424(defun sort-coding-systems (codings) 424(defun sort-coding-systems (codings)
425 "Sort coding system list CODINGS by a priority of each coding system. 425 "Sort coding system list CODINGS by a priority of each coding system.
426Returns the sorted list. CODINGS is modified by side effects. 426Return the sorted list. CODINGS is modified by side effects.
427 427
428If a coding system is most preferred, it has the highest priority. 428If a coding system is most preferred, it has the highest priority.
429Otherwise, a coding system corresponds to some MIME charset has higher 429Otherwise, coding systems that correspond to MIME charsets have
430priorities. Among them, a coding system included in `coding-system' 430higher priorities. Among them, a coding system included in the
431key of the current language environment has higher priorities. See 431`coding-system' key of the current language environment has higher
432also the documentation of `language-info-alist'. 432priority. See also the documentation of `language-info-alist'.
433 433
434If the variable `sort-coding-systems-predicate' (which see) is 434If the variable `sort-coding-systems-predicate' (which see) is
435non-nil, it is used to sort CODINGS in the different way than above." 435non-nil, it is used to sort CODINGS instead."
436 (if sort-coding-systems-predicate 436 (if sort-coding-systems-predicate
437 (sort codings sort-coding-systems-predicate) 437 (sort codings sort-coding-systems-predicate)
438 (let* ((from-categories (mapcar #'(lambda (x) (symbol-value x)) 438 (let* ((from-categories (mapcar #'(lambda (x) (symbol-value x))
@@ -566,7 +566,7 @@ where
566 COUNT is a number of characters, 566 COUNT is a number of characters,
567 CHARs are the characters found from the character set. 567 CHARs are the characters found from the character set.
568Optional 3rd arg MAXCOUNT limits how many CHARs are put in the above list. 568Optional 3rd arg MAXCOUNT limits how many CHARs are put in the above list.
569Optional 4th arg EXCLUDE is a list of character sets to be ignored. 569Optional 4th arg EXCLUDES is a list of character sets to be ignored.
570 570
571For invalid characters, CHARs are actually strings." 571For invalid characters, CHARs are actually strings."
572 (let ((chars nil) 572 (let ((chars nil)
@@ -616,8 +616,8 @@ It asks which coding system to check.
616If such a character is found, set point after that character. 616If such a character is found, set point after that character.
617Otherwise, don't move point. 617Otherwise, don't move point.
618 618
619When called from a program, the value is a position of the found character, 619When called from a program, the value is the position of the unencodable
620or nil if all characters are encodable." 620character found, or nil if all characters are encodable."
621 (interactive 621 (interactive
622 (list (let ((default (or buffer-file-coding-system 'us-ascii))) 622 (list (let ((default (or buffer-file-coding-system 'us-ascii)))
623 (read-coding-system 623 (read-coding-system
@@ -1295,7 +1295,7 @@ Emacs loads this file at startup time.")
1295 1295
1296(defvar leim-list-entry-regexp "^(register-input-method" 1296(defvar leim-list-entry-regexp "^(register-input-method"
1297 "Regexp matching head of each entry in LEIM list file. 1297 "Regexp matching head of each entry in LEIM list file.
1298See also the variable `leim-list-header'") 1298See also the variable `leim-list-header'.")
1299 1299
1300(defvar update-leim-list-functions 1300(defvar update-leim-list-functions
1301 '(quail-update-leim-list-file) 1301 '(quail-update-leim-list-file)
@@ -1479,7 +1479,7 @@ When called interactively, the optional arg INTERACTIVE is non-nil,
1479which marks the variable `default-input-method' as set for Custom buffers. 1479which marks the variable `default-input-method' as set for Custom buffers.
1480 1480
1481To deactivate the input method interactively, use \\[toggle-input-method]. 1481To deactivate the input method interactively, use \\[toggle-input-method].
1482To deactivate it programmatically, use \\[inactivate-input-method]." 1482To deactivate it programmatically, use `inactivate-input-method'."
1483 (interactive 1483 (interactive
1484 (let* ((default (or (car input-method-history) default-input-method))) 1484 (let* ((default (or (car input-method-history) default-input-method)))
1485 (list (read-input-method-name 1485 (list (read-input-method-name
@@ -1648,7 +1648,7 @@ just inactivated.")
1648 "This flag controls when an input method returns. 1648 "This flag controls when an input method returns.
1649Usually, the input method does not return while there's a possibility 1649Usually, the input method does not return while there's a possibility
1650that it may find a different translation if a user types another key. 1650that it may find a different translation if a user types another key.
1651But, it this flag is non-nil, the input method returns as soon as 1651But, if this flag is non-nil, the input method returns as soon as
1652the current key sequence gets long enough to have some valid translation.") 1652the current key sequence gets long enough to have some valid translation.")
1653 1653
1654(defvar input-method-use-echo-area nil 1654(defvar input-method-use-echo-area nil
@@ -1680,7 +1680,7 @@ When this hook is run, the variable `current-language-environment'
1680is still bound to the language environment being exited. 1680is still bound to the language environment being exited.
1681 1681
1682This hook is mainly used for canceling the effect of 1682This hook is mainly used for canceling the effect of
1683`set-language-environment-hook' (which-see).") 1683`set-language-environment-hook' (which see).")
1684 1684
1685(put 'setup-specified-language-environment 'apropos-inhibit t) 1685(put 'setup-specified-language-environment 'apropos-inhibit t)
1686 1686
@@ -2015,7 +2015,7 @@ specifies the character set for the major languages of Western Europe."
2015 (set-display-table-and-terminal-coding-system language-name)) 2015 (set-display-table-and-terminal-coding-system language-name))
2016 2016
2017(defsubst princ-list (&rest args) 2017(defsubst princ-list (&rest args)
2018 "Print all arguments with `princ', then print \"\n\"." 2018 "Print all arguments with `princ', then print \"\\n\"."
2019 (while args (princ (car args)) (setq args (cdr args))) 2019 (while args (princ (car args)) (setq args (cdr args)))
2020 (princ "\n")) 2020 (princ "\n"))
2021 2021
@@ -2345,10 +2345,10 @@ specifies the character set for the major languages of Western Europe."
2345 ("wen" . "Latin-2") ; MS Windows Upper Sorbian 2345 ("wen" . "Latin-2") ; MS Windows Upper Sorbian
2346 )) 2346 ))
2347 "Alist of locale regexps vs the corresponding languages and coding systems. 2347 "Alist of locale regexps vs the corresponding languages and coding systems.
2348Each element has these form: 2348Each element has this form:
2349 \(LOCALE-REGEXP LANG-ENV CODING-SYSTEM) 2349 \(LOCALE-REGEXP LANG-ENV CODING-SYSTEM)
2350The first element whose LOCALE-REGEXP matches the start of a 2350The first element whose LOCALE-REGEXP matches the start of a
2351downcased locale specifies the LANG-ENV \(language environtment) 2351downcased locale specifies the LANG-ENV \(language environment)
2352and CODING-SYSTEM corresponding to that locale. If there is no 2352and CODING-SYSTEM corresponding to that locale. If there is no
2353appropriate language environment, the element may have this form: 2353appropriate language environment, the element may have this form:
2354 \(LOCALE-REGEXP . LANG-ENV) 2354 \(LOCALE-REGEXP . LANG-ENV)
@@ -2372,7 +2372,7 @@ specific encoding such as \"Latin-1\" and \"UTF-8\".")
2372The first element whose locale regexp matches the start of a downcased locale 2372The first element whose locale regexp matches the start of a downcased locale
2373specifies the language name whose charset corresponds to that locale. 2373specifies the language name whose charset corresponds to that locale.
2374This language name is used if the locale is not listed in 2374This language name is used if the locale is not listed in
2375`locale-language-names'") 2375`locale-language-names'.")
2376 2376
2377(defconst locale-preferred-coding-systems 2377(defconst locale-preferred-coding-systems
2378 (purecopy 2378 (purecopy
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 25b0585058e..98a856a2987 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -906,7 +906,7 @@ This is a good function to put in `comint-output-filter-functions'.
906;;;*** 906;;;***
907 907
908;;;### (autoloads (antlr-set-tabs antlr-mode antlr-show-makefile-rules) 908;;;### (autoloads (antlr-set-tabs antlr-mode antlr-show-makefile-rules)
909;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (17994 6715)) 909;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (17833 42928))
910;;; Generated autoloads from progmodes/antlr-mode.el 910;;; Generated autoloads from progmodes/antlr-mode.el
911 911
912(autoload (quote antlr-show-makefile-rules) "antlr-mode" "\ 912(autoload (quote antlr-show-makefile-rules) "antlr-mode" "\
@@ -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" (17994 6715)) 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 "\
@@ -1033,7 +1033,7 @@ ARG is positive, otherwise off.
1033 1033
1034;;;### (autoloads (apropos-documentation apropos-value apropos apropos-documentation-property 1034;;;### (autoloads (apropos-documentation apropos-value apropos apropos-documentation-property
1035;;;;;; apropos-command apropos-variable apropos-read-pattern) "apropos" 1035;;;;;; apropos-command apropos-variable apropos-read-pattern) "apropos"
1036;;;;;; "apropos.el" (17994 6715)) 1036;;;;;; "apropos.el" (17842 58280))
1037;;; Generated autoloads from apropos.el 1037;;; Generated autoloads from apropos.el
1038 1038
1039(autoload (quote apropos-read-pattern) "apropos" "\ 1039(autoload (quote apropos-read-pattern) "apropos" "\
@@ -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" (17994 1132;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (17960
1133;;;;;; 6715)) 1133;;;;;; 49045))
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" "\
@@ -1150,7 +1150,7 @@ archive.
1150 1150
1151;;;*** 1151;;;***
1152 1152
1153;;;### (autoloads (array-mode) "array" "array.el" (17994 6715)) 1153;;;### (autoloads (array-mode) "array" "array.el" (17842 58280))
1154;;; Generated autoloads from array.el 1154;;; Generated autoloads from array.el
1155 1155
1156(autoload (quote array-mode) "array" "\ 1156(autoload (quote array-mode) "array" "\
@@ -1221,8 +1221,8 @@ Entering array mode calls the function `array-mode-hook'.
1221 1221
1222;;;*** 1222;;;***
1223 1223
1224;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (17994 1224;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (17842
1225;;;;;; 6715)) 1225;;;;;; 58277))
1226;;; Generated autoloads from textmodes/artist.el 1226;;; Generated autoloads from textmodes/artist.el
1227 1227
1228(autoload (quote artist-mode) "artist" "\ 1228(autoload (quote artist-mode) "artist" "\
@@ -1427,8 +1427,8 @@ Keymap summary
1427 1427
1428;;;*** 1428;;;***
1429 1429
1430;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (17994 1430;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (17842
1431;;;;;; 6715)) 1431;;;;;; 56333))
1432;;; Generated autoloads from progmodes/asm-mode.el 1432;;; Generated autoloads from progmodes/asm-mode.el
1433 1433
1434(autoload (quote asm-mode) "asm-mode" "\ 1434(autoload (quote asm-mode) "asm-mode" "\
@@ -1472,7 +1472,7 @@ This command is obsolete.
1472;;;*** 1472;;;***
1473 1473
1474;;;### (autoloads (autoarg-kp-mode autoarg-mode) "autoarg" "autoarg.el" 1474;;;### (autoloads (autoarg-kp-mode autoarg-mode) "autoarg" "autoarg.el"
1475;;;;;; (17994 6715)) 1475;;;;;; (17842 58280))
1476;;; Generated autoloads from autoarg.el 1476;;; Generated autoloads from autoarg.el
1477 1477
1478(defvar autoarg-mode nil "\ 1478(defvar autoarg-mode nil "\
@@ -1526,7 +1526,7 @@ etc. to supply digit arguments.
1526;;;*** 1526;;;***
1527 1527
1528;;;### (autoloads (autoconf-mode) "autoconf" "progmodes/autoconf.el" 1528;;;### (autoloads (autoconf-mode) "autoconf" "progmodes/autoconf.el"
1529;;;;;; (17994 6715)) 1529;;;;;; (17842 56333))
1530;;; Generated autoloads from progmodes/autoconf.el 1530;;; Generated autoloads from progmodes/autoconf.el
1531 1531
1532(autoload (quote autoconf-mode) "autoconf" "\ 1532(autoload (quote autoconf-mode) "autoconf" "\
@@ -1537,7 +1537,7 @@ Major mode for editing Autoconf configure.in files.
1537;;;*** 1537;;;***
1538 1538
1539;;;### (autoloads (auto-insert-mode define-auto-insert auto-insert) 1539;;;### (autoloads (auto-insert-mode define-auto-insert auto-insert)
1540;;;;;; "autoinsert" "autoinsert.el" (17994 6715)) 1540;;;;;; "autoinsert" "autoinsert.el" (17842 58280))
1541;;; Generated autoloads from autoinsert.el 1541;;; Generated autoloads from autoinsert.el
1542 1542
1543(autoload (quote auto-insert) "autoinsert" "\ 1543(autoload (quote auto-insert) "autoinsert" "\
@@ -1576,7 +1576,7 @@ insert a template for the file depending on the mode of the buffer.
1576 1576
1577;;;### (autoloads (batch-update-autoloads update-directory-autoloads 1577;;;### (autoloads (batch-update-autoloads update-directory-autoloads
1578;;;;;; update-file-autoloads) "autoload" "emacs-lisp/autoload.el" 1578;;;;;; update-file-autoloads) "autoload" "emacs-lisp/autoload.el"
1579;;;;;; (17994 6715)) 1579;;;;;; (17860 50557))
1580;;; Generated autoloads from emacs-lisp/autoload.el 1580;;; Generated autoloads from emacs-lisp/autoload.el
1581 1581
1582(autoload (quote update-file-autoloads) "autoload" "\ 1582(autoload (quote update-file-autoloads) "autoload" "\
@@ -1611,7 +1611,7 @@ Calls `update-directory-autoloads' on the command line arguments.
1611 1611
1612;;;### (autoloads (global-auto-revert-mode turn-on-auto-revert-tail-mode 1612;;;### (autoloads (global-auto-revert-mode turn-on-auto-revert-tail-mode
1613;;;;;; auto-revert-tail-mode turn-on-auto-revert-mode auto-revert-mode) 1613;;;;;; auto-revert-tail-mode turn-on-auto-revert-mode auto-revert-mode)
1614;;;;;; "autorevert" "autorevert.el" (17994 6715)) 1614;;;;;; "autorevert" "autorevert.el" (17925 15265))
1615;;; Generated autoloads from autorevert.el 1615;;; Generated autoloads from autorevert.el
1616 1616
1617(autoload (quote auto-revert-mode) "autorevert" "\ 1617(autoload (quote auto-revert-mode) "autorevert" "\
@@ -1680,7 +1680,7 @@ Use `auto-revert-mode' to revert a particular buffer.
1680;;;*** 1680;;;***
1681 1681
1682;;;### (autoloads (mouse-avoidance-mode mouse-avoidance-mode) "avoid" 1682;;;### (autoloads (mouse-avoidance-mode mouse-avoidance-mode) "avoid"
1683;;;;;; "avoid.el" (17994 6715)) 1683;;;;;; "avoid.el" (17842 58280))
1684;;; Generated autoloads from avoid.el 1684;;; Generated autoloads from avoid.el
1685 1685
1686(defvar mouse-avoidance-mode nil "\ 1686(defvar mouse-avoidance-mode nil "\
@@ -1721,7 +1721,7 @@ definition of \"random distance\".)
1721;;;*** 1721;;;***
1722 1722
1723;;;### (autoloads (backquote) "backquote" "emacs-lisp/backquote.el" 1723;;;### (autoloads (backquote) "backquote" "emacs-lisp/backquote.el"
1724;;;;;; (17994 6715)) 1724;;;;;; (17842 54152))
1725;;; Generated autoloads from emacs-lisp/backquote.el 1725;;; Generated autoloads from emacs-lisp/backquote.el
1726 1726
1727(autoload (quote backquote) "backquote" "\ 1727(autoload (quote backquote) "backquote" "\
@@ -1746,7 +1746,7 @@ Vectors work just like lists. Nested backquotes are permitted.
1746;;;*** 1746;;;***
1747 1747
1748;;;### (autoloads (display-battery-mode battery) "battery" "battery.el" 1748;;;### (autoloads (display-battery-mode battery) "battery" "battery.el"
1749;;;;;; (17994 6715)) 1749;;;;;; (17842 58280))
1750;;; Generated autoloads from battery.el 1750;;; Generated autoloads from battery.el
1751 (put 'battery-mode-line-string 'risky-local-variable t) 1751 (put 'battery-mode-line-string 'risky-local-variable t)
1752 1752
@@ -1778,7 +1778,7 @@ seconds.
1778;;;*** 1778;;;***
1779 1779
1780;;;### (autoloads (benchmark benchmark-run-compiled benchmark-run) 1780;;;### (autoloads (benchmark benchmark-run-compiled benchmark-run)
1781;;;;;; "benchmark" "emacs-lisp/benchmark.el" (17994 6715)) 1781;;;;;; "benchmark" "emacs-lisp/benchmark.el" (17842 54152))
1782;;; Generated autoloads from emacs-lisp/benchmark.el 1782;;; Generated autoloads from emacs-lisp/benchmark.el
1783 1783
1784(autoload (quote benchmark-run) "benchmark" "\ 1784(autoload (quote benchmark-run) "benchmark" "\
@@ -1810,8 +1810,8 @@ non-interactive use see also `benchmark-run' and
1810 1810
1811;;;*** 1811;;;***
1812 1812
1813;;;### (autoloads (bibtex-mode) "bibtex" "textmodes/bibtex.el" (17994 1813;;;### (autoloads (bibtex-mode) "bibtex" "textmodes/bibtex.el" (17956
1814;;;;;; 6715)) 1814;;;;;; 21270))
1815;;; Generated autoloads from textmodes/bibtex.el 1815;;; Generated autoloads from textmodes/bibtex.el
1816 1816
1817(autoload (quote bibtex-mode) "bibtex" "\ 1817(autoload (quote bibtex-mode) "bibtex" "\
@@ -1873,7 +1873,7 @@ if that value is non-nil.
1873 1873
1874;;;### (autoloads (binhex-decode-region binhex-decode-region-external 1874;;;### (autoloads (binhex-decode-region binhex-decode-region-external
1875;;;;;; binhex-decode-region-internal) "binhex" "gnus/binhex.el" 1875;;;;;; binhex-decode-region-internal) "binhex" "gnus/binhex.el"
1876;;;;;; (17994 6715)) 1876;;;;;; (17842 54741))
1877;;; Generated autoloads from gnus/binhex.el 1877;;; Generated autoloads from gnus/binhex.el
1878 1878
1879(defconst binhex-begin-line "^:...............................................................$") 1879(defconst binhex-begin-line "^:...............................................................$")
@@ -1896,8 +1896,8 @@ Binhex decode region between START and END.
1896 1896
1897;;;*** 1897;;;***
1898 1898
1899;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (17994 1899;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (17842
1900;;;;;; 6715)) 1900;;;;;; 55395))
1901;;; Generated autoloads from play/blackbox.el 1901;;; Generated autoloads from play/blackbox.el
1902 1902
1903(autoload (quote blackbox) "blackbox" "\ 1903(autoload (quote blackbox) "blackbox" "\
@@ -2019,7 +2019,7 @@ a reflection.
2019;;;### (autoloads (bookmark-bmenu-list bookmark-load bookmark-save 2019;;;### (autoloads (bookmark-bmenu-list bookmark-load bookmark-save
2020;;;;;; bookmark-write bookmark-delete bookmark-insert bookmark-rename 2020;;;;;; bookmark-write bookmark-delete bookmark-insert bookmark-rename
2021;;;;;; bookmark-insert-location bookmark-relocate bookmark-jump 2021;;;;;; bookmark-insert-location bookmark-relocate bookmark-jump
2022;;;;;; bookmark-set) "bookmark" "bookmark.el" (17994 6715)) 2022;;;;;; bookmark-set) "bookmark" "bookmark.el" (17842 58280))
2023;;; Generated autoloads from bookmark.el 2023;;; Generated autoloads from bookmark.el
2024 (define-key ctl-x-map "rb" 'bookmark-jump) 2024 (define-key ctl-x-map "rb" 'bookmark-jump)
2025 (define-key ctl-x-map "rm" 'bookmark-set) 2025 (define-key ctl-x-map "rm" 'bookmark-set)
@@ -2209,7 +2209,7 @@ deletion, or > if it is flagged for displaying.
2209;;;;;; browse-url browse-url-of-region browse-url-of-dired-file 2209;;;;;; browse-url browse-url-of-region browse-url-of-dired-file
2210;;;;;; browse-url-of-buffer browse-url-of-file browse-url-url-at-point 2210;;;;;; browse-url-of-buffer browse-url-of-file browse-url-url-at-point
2211;;;;;; browse-url-galeon-program browse-url-firefox-program browse-url-browser-function) 2211;;;;;; browse-url-galeon-program browse-url-firefox-program browse-url-browser-function)
2212;;;;;; "browse-url" "net/browse-url.el" (17994 6715)) 2212;;;;;; "browse-url" "net/browse-url.el" (17842 55218))
2213;;; Generated autoloads from net/browse-url.el 2213;;; Generated autoloads from net/browse-url.el
2214 2214
2215(defvar browse-url-browser-function (cond ((memq system-type (quote (windows-nt ms-dos cygwin))) (quote browse-url-default-windows-browser)) ((memq system-type (quote (darwin))) (quote browse-url-default-macosx-browser)) (t (quote browse-url-default-browser))) "\ 2215(defvar browse-url-browser-function (cond ((memq system-type (quote (windows-nt ms-dos cygwin))) (quote browse-url-default-windows-browser)) ((memq system-type (quote (darwin))) (quote browse-url-default-macosx-browser)) (t (quote browse-url-default-browser))) "\
@@ -2540,8 +2540,8 @@ Default to the URL around or before point.
2540 2540
2541;;;*** 2541;;;***
2542 2542
2543;;;### (autoloads (snarf-bruces bruce) "bruce" "play/bruce.el" (17994 2543;;;### (autoloads (snarf-bruces bruce) "bruce" "play/bruce.el" (17842
2544;;;;;; 6715)) 2544;;;;;; 55395))
2545;;; Generated autoloads from play/bruce.el 2545;;; Generated autoloads from play/bruce.el
2546 2546
2547(autoload (quote bruce) "bruce" "\ 2547(autoload (quote bruce) "bruce" "\
@@ -2557,7 +2557,7 @@ Return a vector containing the lines from `bruce-phrases-file'.
2557;;;*** 2557;;;***
2558 2558
2559;;;### (autoloads (bs-show bs-customize bs-cycle-previous bs-cycle-next) 2559;;;### (autoloads (bs-show bs-customize bs-cycle-previous bs-cycle-next)
2560;;;;;; "bs" "bs.el" (17994 6715)) 2560;;;;;; "bs" "bs.el" (17842 58280))
2561;;; Generated autoloads from bs.el 2561;;; Generated autoloads from bs.el
2562 2562
2563(autoload (quote bs-cycle-next) "bs" "\ 2563(autoload (quote bs-cycle-next) "bs" "\
@@ -2598,8 +2598,8 @@ name of buffer configuration.
2598;;;*** 2598;;;***
2599 2599
2600;;;### (autoloads (insert-text-button make-text-button insert-button 2600;;;### (autoloads (insert-text-button make-text-button insert-button
2601;;;;;; make-button define-button-type) "button" "button.el" (17994 2601;;;;;; make-button define-button-type) "button" "button.el" (17992
2602;;;;;; 6724)) 2602;;;;;; 30877))
2603;;; Generated autoloads from button.el 2603;;; Generated autoloads from button.el
2604 2604
2605(defvar button-map (let ((map (make-sparse-keymap))) (define-key map " " (quote push-button)) (define-key map [mouse-2] (quote push-button)) map) "\ 2605(defvar button-map (let ((map (make-sparse-keymap))) (define-key map " " (quote push-button)) (define-key map [mouse-2] (quote push-button)) map) "\
@@ -2687,7 +2687,7 @@ Also see `make-text-button'.
2687;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile 2687;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile
2688;;;;;; compile-defun byte-compile-file byte-recompile-directory 2688;;;;;; compile-defun byte-compile-file byte-recompile-directory
2689;;;;;; byte-force-recompile byte-compile-warnings-safe-p) "bytecomp" 2689;;;;;; byte-force-recompile byte-compile-warnings-safe-p) "bytecomp"
2690;;;;;; "emacs-lisp/bytecomp.el" (17994 6715)) 2690;;;;;; "emacs-lisp/bytecomp.el" (17949 41467))
2691;;; Generated autoloads from emacs-lisp/bytecomp.el 2691;;; Generated autoloads from emacs-lisp/bytecomp.el
2692(put 'byte-compile-dynamic 'safe-local-variable 'booleanp) 2692(put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
2693(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp) 2693(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
@@ -2793,7 +2793,7 @@ and corresponding effects.
2793 2793
2794;;;*** 2794;;;***
2795 2795
2796;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (17994 6715)) 2796;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (17956 13479))
2797;;; Generated autoloads from calendar/cal-dst.el 2797;;; Generated autoloads from calendar/cal-dst.el
2798 2798
2799(put (quote calendar-daylight-savings-starts) (quote risky-local-variable) t) 2799(put (quote calendar-daylight-savings-starts) (quote risky-local-variable) t)
@@ -2803,7 +2803,7 @@ and corresponding effects.
2803;;;*** 2803;;;***
2804 2804
2805;;;### (autoloads (list-yahrzeit-dates) "cal-hebrew" "calendar/cal-hebrew.el" 2805;;;### (autoloads (list-yahrzeit-dates) "cal-hebrew" "calendar/cal-hebrew.el"
2806;;;;;; (17994 6715)) 2806;;;;;; (17956 13479))
2807;;; Generated autoloads from calendar/cal-hebrew.el 2807;;; Generated autoloads from calendar/cal-hebrew.el
2808 2808
2809(autoload (quote list-yahrzeit-dates) "cal-hebrew" "\ 2809(autoload (quote list-yahrzeit-dates) "cal-hebrew" "\
@@ -2818,7 +2818,7 @@ from the cursor position.
2818;;;### (autoloads (defmath calc-embedded-activate calc-embedded calc-grab-rectangle 2818;;;### (autoloads (defmath calc-embedded-activate calc-embedded calc-grab-rectangle
2819;;;;;; calc-grab-region full-calc-keypad calc-keypad calc-eval quick-calc 2819;;;;;; calc-grab-region full-calc-keypad calc-keypad calc-eval quick-calc
2820;;;;;; full-calc calc calc-dispatch calc-settings-file) "calc" "calc/calc.el" 2820;;;;;; full-calc calc calc-dispatch calc-settings-file) "calc" "calc/calc.el"
2821;;;;;; (17994 6715)) 2821;;;;;; (17965 11665))
2822;;; Generated autoloads from calc/calc.el 2822;;; Generated autoloads from calc/calc.el
2823 2823
2824(defvar calc-settings-file (convert-standard-filename "~/.calc.el") "\ 2824(defvar calc-settings-file (convert-standard-filename "~/.calc.el") "\
@@ -2896,8 +2896,8 @@ Not documented
2896 2896
2897;;;*** 2897;;;***
2898 2898
2899;;;### (autoloads (calculator) "calculator" "calculator.el" (17994 2899;;;### (autoloads (calculator) "calculator" "calculator.el" (17870
2900;;;;;; 6715)) 2900;;;;;; 28179))
2901;;; Generated autoloads from calculator.el 2901;;; Generated autoloads from calculator.el
2902 2902
2903(autoload (quote calculator) "calculator" "\ 2903(autoload (quote calculator) "calculator" "\
@@ -2925,7 +2925,7 @@ See the documentation for `calculator-mode' for more information.
2925;;;;;; mark-holidays-in-calendar view-calendar-holidays-initially 2925;;;;;; mark-holidays-in-calendar view-calendar-holidays-initially
2926;;;;;; calendar-remove-frame-by-deleting mark-diary-entries-in-calendar 2926;;;;;; calendar-remove-frame-by-deleting mark-diary-entries-in-calendar
2927;;;;;; view-diary-entries-initially calendar-offset) "calendar" 2927;;;;;; view-diary-entries-initially calendar-offset) "calendar"
2928;;;;;; "calendar/calendar.el" (17994 6715)) 2928;;;;;; "calendar/calendar.el" (17956 13479))
2929;;; Generated autoloads from calendar/calendar.el 2929;;; Generated autoloads from calendar/calendar.el
2930 2930
2931(defvar calendar-offset 0 "\ 2931(defvar calendar-offset 0 "\
@@ -3498,7 +3498,7 @@ movement commands will not work correctly.")
3498;;;*** 3498;;;***
3499 3499
3500;;;### (autoloads (canlock-verify canlock-insert-header) "canlock" 3500;;;### (autoloads (canlock-verify canlock-insert-header) "canlock"
3501;;;;;; "gnus/canlock.el" (17994 6715)) 3501;;;;;; "gnus/canlock.el" (17842 54741))
3502;;; Generated autoloads from gnus/canlock.el 3502;;; Generated autoloads from gnus/canlock.el
3503 3503
3504(autoload (quote canlock-insert-header) "canlock" "\ 3504(autoload (quote canlock-insert-header) "canlock" "\
@@ -3515,15 +3515,15 @@ it fails.
3515 3515
3516;;;*** 3516;;;***
3517 3517
3518;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (17994 3518;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (17842
3519;;;;;; 6715)) 3519;;;;;; 56333))
3520;;; Generated autoloads from progmodes/cc-compat.el 3520;;; Generated autoloads from progmodes/cc-compat.el
3521(put 'c-indent-level 'safe-local-variable 'integerp) 3521(put 'c-indent-level 'safe-local-variable 'integerp)
3522 3522
3523;;;*** 3523;;;***
3524 3524
3525;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el" 3525;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el"
3526;;;;;; (17994 6715)) 3526;;;;;; (17942 63381))
3527;;; Generated autoloads from progmodes/cc-engine.el 3527;;; Generated autoloads from progmodes/cc-engine.el
3528 3528
3529(autoload (quote c-guess-basic-syntax) "cc-engine" "\ 3529(autoload (quote c-guess-basic-syntax) "cc-engine" "\
@@ -3535,7 +3535,7 @@ Return the syntactic context of the current line.
3535 3535
3536;;;### (autoloads (pike-mode idl-mode java-mode objc-mode c++-mode 3536;;;### (autoloads (pike-mode idl-mode java-mode objc-mode c++-mode
3537;;;;;; c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el" 3537;;;;;; c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el"
3538;;;;;; (17994 6728)) 3538;;;;;; (17992 30878))
3539;;; Generated autoloads from progmodes/cc-mode.el 3539;;; Generated autoloads from progmodes/cc-mode.el
3540 3540
3541(autoload (quote c-initialize-cc-mode) "cc-mode" "\ 3541(autoload (quote c-initialize-cc-mode) "cc-mode" "\
@@ -3693,7 +3693,7 @@ Key bindings:
3693;;;*** 3693;;;***
3694 3694
3695;;;### (autoloads (c-set-offset c-add-style c-set-style) "cc-styles" 3695;;;### (autoloads (c-set-offset c-add-style c-set-style) "cc-styles"
3696;;;;;; "progmodes/cc-styles.el" (17994 6715)) 3696;;;;;; "progmodes/cc-styles.el" (17842 56333))
3697;;; Generated autoloads from progmodes/cc-styles.el 3697;;; Generated autoloads from progmodes/cc-styles.el
3698 3698
3699(autoload (quote c-set-style) "cc-styles" "\ 3699(autoload (quote c-set-style) "cc-styles" "\
@@ -3744,14 +3744,14 @@ and exists only for compatibility reasons.
3744 3744
3745;;;*** 3745;;;***
3746 3746
3747;;;### (autoloads nil "cc-subword" "progmodes/cc-subword.el" (17994 3747;;;### (autoloads nil "cc-subword" "progmodes/cc-subword.el" (17949
3748;;;;;; 6715)) 3748;;;;;; 41467))
3749;;; Generated autoloads from progmodes/cc-subword.el 3749;;; Generated autoloads from progmodes/cc-subword.el
3750 (autoload 'c-subword-mode "cc-subword" "Mode enabling subword movement and editing keys." t) 3750 (autoload 'c-subword-mode "cc-subword" "Mode enabling subword movement and editing keys." t)
3751 3751
3752;;;*** 3752;;;***
3753 3753
3754;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (17994 6715)) 3754;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (17941 38806))
3755;;; Generated autoloads from progmodes/cc-vars.el 3755;;; Generated autoloads from progmodes/cc-vars.el
3756(put 'c-basic-offset 'safe-local-variable 'integerp) 3756(put 'c-basic-offset 'safe-local-variable 'integerp)
3757(put 'c-backslash-column 'safe-local-variable 'integerp) 3757(put 'c-backslash-column 'safe-local-variable 'integerp)
@@ -3761,7 +3761,7 @@ and exists only for compatibility reasons.
3761 3761
3762;;;### (autoloads (ccl-execute-with-args check-ccl-program define-ccl-program 3762;;;### (autoloads (ccl-execute-with-args check-ccl-program define-ccl-program
3763;;;;;; declare-ccl-program ccl-dump ccl-compile) "ccl" "international/ccl.el" 3763;;;;;; declare-ccl-program ccl-dump ccl-compile) "ccl" "international/ccl.el"
3764;;;;;; (17994 6715)) 3764;;;;;; (17842 54888))
3765;;; Generated autoloads from international/ccl.el 3765;;; Generated autoloads from international/ccl.el
3766 3766
3767(autoload (quote ccl-compile) "ccl" "\ 3767(autoload (quote ccl-compile) "ccl" "\
@@ -4020,7 +4020,7 @@ See the documentation of `define-ccl-program' for the detail of CCL program.
4020;;;*** 4020;;;***
4021 4021
4022;;;### (autoloads (cfengine-mode) "cfengine" "progmodes/cfengine.el" 4022;;;### (autoloads (cfengine-mode) "cfengine" "progmodes/cfengine.el"
4023;;;;;; (17994 6715)) 4023;;;;;; (17842 56333))
4024;;; Generated autoloads from progmodes/cfengine.el 4024;;; Generated autoloads from progmodes/cfengine.el
4025 4025
4026(autoload (quote cfengine-mode) "cfengine" "\ 4026(autoload (quote cfengine-mode) "cfengine" "\
@@ -4042,7 +4042,7 @@ to the action header.
4042;;;;;; checkdoc-comments checkdoc-continue checkdoc-start checkdoc-current-buffer 4042;;;;;; checkdoc-comments checkdoc-continue checkdoc-start checkdoc-current-buffer
4043;;;;;; checkdoc-eval-current-buffer checkdoc-message-interactive 4043;;;;;; checkdoc-eval-current-buffer checkdoc-message-interactive
4044;;;;;; checkdoc-interactive checkdoc) "checkdoc" "emacs-lisp/checkdoc.el" 4044;;;;;; checkdoc-interactive checkdoc) "checkdoc" "emacs-lisp/checkdoc.el"
4045;;;;;; (17994 6715)) 4045;;;;;; (17842 54152))
4046;;; Generated autoloads from emacs-lisp/checkdoc.el 4046;;; Generated autoloads from emacs-lisp/checkdoc.el
4047 4047
4048(autoload (quote checkdoc) "checkdoc" "\ 4048(autoload (quote checkdoc) "checkdoc" "\
@@ -4225,8 +4225,8 @@ checking of documentation strings.
4225;;;*** 4225;;;***
4226 4226
4227;;;### (autoloads (encode-hz-buffer encode-hz-region decode-hz-buffer 4227;;;### (autoloads (encode-hz-buffer encode-hz-region decode-hz-buffer
4228;;;;;; decode-hz-region) "china-util" "language/china-util.el" (17994 4228;;;;;; decode-hz-region) "china-util" "language/china-util.el" (17842
4229;;;;;; 6715)) 4229;;;;;; 58278))
4230;;; Generated autoloads from language/china-util.el 4230;;; Generated autoloads from language/china-util.el
4231 4231
4232(autoload (quote decode-hz-region) "china-util" "\ 4232(autoload (quote decode-hz-region) "china-util" "\
@@ -4254,7 +4254,7 @@ Encode the text in the current buffer to HZ.
4254;;;*** 4254;;;***
4255 4255
4256;;;### (autoloads (command-history list-command-history repeat-matching-complex-command) 4256;;;### (autoloads (command-history list-command-history repeat-matching-complex-command)
4257;;;;;; "chistory" "chistory.el" (17994 6715)) 4257;;;;;; "chistory" "chistory.el" (17842 58280))
4258;;; Generated autoloads from chistory.el 4258;;; Generated autoloads from chistory.el
4259 4259
4260(autoload (quote repeat-matching-complex-command) "chistory" "\ 4260(autoload (quote repeat-matching-complex-command) "chistory" "\
@@ -4293,7 +4293,7 @@ and runs the normal hook `command-history-hook'.
4293 4293
4294;;;*** 4294;;;***
4295 4295
4296;;;### (autoloads nil "cl" "emacs-lisp/cl.el" (17994 6715)) 4296;;;### (autoloads nil "cl" "emacs-lisp/cl.el" (17842 54152))
4297;;; Generated autoloads from emacs-lisp/cl.el 4297;;; Generated autoloads from emacs-lisp/cl.el
4298 4298
4299(defvar custom-print-functions nil "\ 4299(defvar custom-print-functions nil "\
@@ -4309,7 +4309,7 @@ a future Emacs interpreter will be able to use it.")
4309;;;*** 4309;;;***
4310 4310
4311;;;### (autoloads (common-lisp-indent-function) "cl-indent" "emacs-lisp/cl-indent.el" 4311;;;### (autoloads (common-lisp-indent-function) "cl-indent" "emacs-lisp/cl-indent.el"
4312;;;;;; (17994 6715)) 4312;;;;;; (17842 54152))
4313;;; Generated autoloads from emacs-lisp/cl-indent.el 4313;;; Generated autoloads from emacs-lisp/cl-indent.el
4314 4314
4315(autoload (quote common-lisp-indent-function) "cl-indent" "\ 4315(autoload (quote common-lisp-indent-function) "cl-indent" "\
@@ -4320,7 +4320,7 @@ Not documented
4320;;;*** 4320;;;***
4321 4321
4322;;;### (autoloads (c-macro-expand) "cmacexp" "progmodes/cmacexp.el" 4322;;;### (autoloads (c-macro-expand) "cmacexp" "progmodes/cmacexp.el"
4323;;;;;; (17994 6715)) 4323;;;;;; (17842 56333))
4324;;; Generated autoloads from progmodes/cmacexp.el 4324;;; Generated autoloads from progmodes/cmacexp.el
4325 4325
4326(autoload (quote c-macro-expand) "cmacexp" "\ 4326(autoload (quote c-macro-expand) "cmacexp" "\
@@ -4340,8 +4340,8 @@ For use inside Lisp programs, see also `c-macro-expansion'.
4340 4340
4341;;;*** 4341;;;***
4342 4342
4343;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (17994 4343;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (17842
4344;;;;;; 6715)) 4344;;;;;; 58280))
4345;;; Generated autoloads from cmuscheme.el 4345;;; Generated autoloads from cmuscheme.el
4346 4346
4347(autoload (quote run-scheme) "cmuscheme" "\ 4347(autoload (quote run-scheme) "cmuscheme" "\
@@ -4363,7 +4363,7 @@ is run).
4363;;;*** 4363;;;***
4364 4364
4365;;;### (autoloads (cp-make-coding-system) "code-pages" "international/code-pages.el" 4365;;;### (autoloads (cp-make-coding-system) "code-pages" "international/code-pages.el"
4366;;;;;; (17994 6715)) 4366;;;;;; (17842 54888))
4367;;; Generated autoloads from international/code-pages.el 4367;;; Generated autoloads from international/code-pages.el
4368 4368
4369(autoload (quote cp-make-coding-system) "code-pages" "\ 4369(autoload (quote cp-make-coding-system) "code-pages" "\
@@ -4424,7 +4424,7 @@ Return an updated `non-iso-charset-alist'.
4424 4424
4425;;;### (autoloads (codepage-setup cp-supported-codepages cp-offset-for-codepage 4425;;;### (autoloads (codepage-setup cp-supported-codepages cp-offset-for-codepage
4426;;;;;; cp-language-for-codepage cp-charset-for-codepage cp-make-coding-systems-for-codepage) 4426;;;;;; cp-language-for-codepage cp-charset-for-codepage cp-make-coding-systems-for-codepage)
4427;;;;;; "codepage" "international/codepage.el" (17994 6715)) 4427;;;;;; "codepage" "international/codepage.el" (17842 54888))
4428;;; Generated autoloads from international/codepage.el 4428;;; Generated autoloads from international/codepage.el
4429 4429
4430(autoload (quote cp-make-coding-systems-for-codepage) "codepage" "\ 4430(autoload (quote cp-make-coding-systems-for-codepage) "codepage" "\
@@ -4483,7 +4483,7 @@ read/written by MS-DOS software, or for display on the MS-DOS terminal.
4483;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list 4483;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list
4484;;;;;; comint-redirect-send-command-to-process comint-redirect-send-command 4484;;;;;; comint-redirect-send-command-to-process comint-redirect-send-command
4485;;;;;; comint-run make-comint make-comint-in-buffer) "comint" "comint.el" 4485;;;;;; comint-run make-comint make-comint-in-buffer) "comint" "comint.el"
4486;;;;;; (17994 6715)) 4486;;;;;; (17937 3189))
4487;;; Generated autoloads from comint.el 4487;;; Generated autoloads from comint.el
4488 4488
4489(defvar comint-output-filter-functions (quote (comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt)) "\ 4489(defvar comint-output-filter-functions (quote (comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt)) "\
@@ -4573,8 +4573,8 @@ REGEXP-GROUP is the regular expression group in REGEXP to use.
4573 4573
4574;;;*** 4574;;;***
4575 4575
4576;;;### (autoloads (compare-windows) "compare-w" "compare-w.el" (17994 4576;;;### (autoloads (compare-windows) "compare-w" "compare-w.el" (17926
4577;;;;;; 6715)) 4577;;;;;; 45410))
4578;;; Generated autoloads from compare-w.el 4578;;; Generated autoloads from compare-w.el
4579 4579
4580(autoload (quote compare-windows) "compare-w" "\ 4580(autoload (quote compare-windows) "compare-w" "\
@@ -4611,7 +4611,7 @@ on third call it again advances points to the next difference and so on.
4611;;;;;; compilation-shell-minor-mode compilation-mode compilation-start 4611;;;;;; compilation-shell-minor-mode compilation-mode compilation-start
4612;;;;;; compile compilation-disable-input compile-command compilation-search-path 4612;;;;;; compile compilation-disable-input compile-command compilation-search-path
4613;;;;;; compilation-ask-about-save compilation-window-height compilation-mode-hook) 4613;;;;;; compilation-ask-about-save compilation-window-height compilation-mode-hook)
4614;;;;;; "compile" "progmodes/compile.el" (18000 24333)) 4614;;;;;; "compile" "progmodes/compile.el" (18006 55797))
4615;;; Generated autoloads from progmodes/compile.el 4615;;; Generated autoloads from progmodes/compile.el
4616 4616
4617(defvar compilation-mode-hook nil "\ 4617(defvar compilation-mode-hook nil "\
@@ -4774,7 +4774,7 @@ This is the value of `next-error-function' in Compilation buffers.
4774;;;*** 4774;;;***
4775 4775
4776;;;### (autoloads (partial-completion-mode) "complete" "complete.el" 4776;;;### (autoloads (partial-completion-mode) "complete" "complete.el"
4777;;;;;; (17994 6715)) 4777;;;;;; (17954 15344))
4778;;; Generated autoloads from complete.el 4778;;; Generated autoloads from complete.el
4779 4779
4780(defvar partial-completion-mode nil "\ 4780(defvar partial-completion-mode nil "\
@@ -4816,7 +4816,7 @@ second TAB brings up the `*Completions*' buffer.
4816;;;*** 4816;;;***
4817 4817
4818;;;### (autoloads (dynamic-completion-mode) "completion" "completion.el" 4818;;;### (autoloads (dynamic-completion-mode) "completion" "completion.el"
4819;;;;;; (17994 6715)) 4819;;;;;; (17842 58280))
4820;;; Generated autoloads from completion.el 4820;;; Generated autoloads from completion.el
4821 4821
4822(defvar dynamic-completion-mode nil "\ 4822(defvar dynamic-completion-mode nil "\
@@ -4838,7 +4838,7 @@ Enable dynamic word-completion.
4838;;;### (autoloads (decompose-composite-char compose-last-chars compose-chars-after 4838;;;### (autoloads (decompose-composite-char compose-last-chars compose-chars-after
4839;;;;;; find-composition compose-chars decompose-string compose-string 4839;;;;;; find-composition compose-chars decompose-string compose-string
4840;;;;;; decompose-region compose-region encode-composition-rule) 4840;;;;;; decompose-region compose-region encode-composition-rule)
4841;;;;;; "composite" "composite.el" (17994 6715)) 4841;;;;;; "composite" "composite.el" (17842 58280))
4842;;; Generated autoloads from composite.el 4842;;; Generated autoloads from composite.el
4843 4843
4844(defconst reference-point-alist (quote ((tl . 0) (tc . 1) (tr . 2) (Bl . 3) (Bc . 4) (Br . 5) (bl . 6) (bc . 7) (br . 8) (cl . 9) (cc . 10) (cr . 11) (top-left . 0) (top-center . 1) (top-right . 2) (base-left . 3) (base-center . 4) (base-right . 5) (bottom-left . 6) (bottom-center . 7) (bottom-right . 8) (center-left . 9) (center-center . 10) (center-right . 11) (ml . 3) (mc . 10) (mr . 5) (mid-left . 3) (mid-center . 10) (mid-right . 5))) "\ 4844(defconst reference-point-alist (quote ((tl . 0) (tc . 1) (tr . 2) (Bl . 3) (Bc . 4) (Br . 5) (bl . 6) (bc . 7) (br . 8) (cl . 9) (cc . 10) (cr . 11) (top-left . 0) (top-center . 1) (top-right . 2) (base-left . 3) (base-center . 4) (base-right . 5) (bottom-left . 6) (bottom-center . 7) (bottom-right . 8) (center-left . 9) (center-center . 10) (center-right . 11) (ml . 3) (mc . 10) (mr . 5) (mid-left . 3) (mid-center . 10) (mid-right . 5))) "\
@@ -5060,7 +5060,7 @@ Optional 3rd arg WITH-COMPOSITION-RULE is ignored.
5060;;;### (autoloads (conf-xdefaults-mode conf-ppd-mode conf-colon-mode 5060;;;### (autoloads (conf-xdefaults-mode conf-ppd-mode conf-colon-mode
5061;;;;;; conf-space-keywords conf-space-mode conf-javaprop-mode conf-windows-mode 5061;;;;;; conf-space-keywords conf-space-mode conf-javaprop-mode conf-windows-mode
5062;;;;;; conf-unix-mode conf-mode) "conf-mode" "textmodes/conf-mode.el" 5062;;;;;; conf-unix-mode conf-mode) "conf-mode" "textmodes/conf-mode.el"
5063;;;;;; (17994 6715)) 5063;;;;;; (17842 58277))
5064;;; Generated autoloads from textmodes/conf-mode.el 5064;;; Generated autoloads from textmodes/conf-mode.el
5065 5065
5066(autoload (quote conf-mode) "conf-mode" "\ 5066(autoload (quote conf-mode) "conf-mode" "\
@@ -5216,7 +5216,7 @@ For details see `conf-mode'. Example:
5216;;;*** 5216;;;***
5217 5217
5218;;;### (autoloads (shuffle-vector cookie-snarf cookie-insert cookie) 5218;;;### (autoloads (shuffle-vector cookie-snarf cookie-insert cookie)
5219;;;;;; "cookie1" "play/cookie1.el" (17994 6715)) 5219;;;;;; "cookie1" "play/cookie1.el" (17842 55395))
5220;;; Generated autoloads from play/cookie1.el 5220;;; Generated autoloads from play/cookie1.el
5221 5221
5222(autoload (quote cookie) "cookie1" "\ 5222(autoload (quote cookie) "cookie1" "\
@@ -5248,7 +5248,7 @@ Randomly permute the elements of VECTOR (all permutations equally likely).
5248;;;*** 5248;;;***
5249 5249
5250;;;### (autoloads (copyright copyright-fix-years copyright-update) 5250;;;### (autoloads (copyright copyright-fix-years copyright-update)
5251;;;;;; "copyright" "emacs-lisp/copyright.el" (17994 6715)) 5251;;;;;; "copyright" "emacs-lisp/copyright.el" (17842 54152))
5252;;; Generated autoloads from emacs-lisp/copyright.el 5252;;; Generated autoloads from emacs-lisp/copyright.el
5253 5253
5254(autoload (quote copyright-update) "copyright" "\ 5254(autoload (quote copyright-update) "copyright" "\
@@ -5276,7 +5276,7 @@ Insert a copyright by $ORGANIZATION notice at cursor.
5276;;;*** 5276;;;***
5277 5277
5278;;;### (autoloads (cperl-perldoc-at-point cperl-perldoc cperl-mode) 5278;;;### (autoloads (cperl-perldoc-at-point cperl-perldoc cperl-mode)
5279;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (17994 6715)) 5279;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (17955 36604))
5280;;; Generated autoloads from progmodes/cperl-mode.el 5280;;; Generated autoloads from progmodes/cperl-mode.el
5281 5281
5282(autoload (quote cperl-mode) "cperl-mode" "\ 5282(autoload (quote cperl-mode) "cperl-mode" "\
@@ -5467,7 +5467,7 @@ Run a `perldoc' on the word around point.
5467;;;*** 5467;;;***
5468 5468
5469;;;### (autoloads (cpp-parse-edit cpp-highlight-buffer) "cpp" "progmodes/cpp.el" 5469;;;### (autoloads (cpp-parse-edit cpp-highlight-buffer) "cpp" "progmodes/cpp.el"
5470;;;;;; (17994 6715)) 5470;;;;;; (17842 56333))
5471;;; Generated autoloads from progmodes/cpp.el 5471;;; Generated autoloads from progmodes/cpp.el
5472 5472
5473(autoload (quote cpp-highlight-buffer) "cpp" "\ 5473(autoload (quote cpp-highlight-buffer) "cpp" "\
@@ -5486,7 +5486,7 @@ Edit display information for cpp conditionals.
5486;;;*** 5486;;;***
5487 5487
5488;;;### (autoloads (crisp-mode crisp-mode) "crisp" "emulation/crisp.el" 5488;;;### (autoloads (crisp-mode crisp-mode) "crisp" "emulation/crisp.el"
5489;;;;;; (17994 6715)) 5489;;;;;; (17842 54264))
5490;;; Generated autoloads from emulation/crisp.el 5490;;; Generated autoloads from emulation/crisp.el
5491 5491
5492(defvar crisp-mode nil "\ 5492(defvar crisp-mode nil "\
@@ -5510,7 +5510,7 @@ With ARG, turn CRiSP mode on if ARG is positive, off otherwise.
5510;;;*** 5510;;;***
5511 5511
5512;;;### (autoloads (completing-read-multiple) "crm" "emacs-lisp/crm.el" 5512;;;### (autoloads (completing-read-multiple) "crm" "emacs-lisp/crm.el"
5513;;;;;; (17994 6715)) 5513;;;;;; (17842 54152))
5514;;; Generated autoloads from emacs-lisp/crm.el 5514;;; Generated autoloads from emacs-lisp/crm.el
5515 5515
5516(autoload (quote completing-read-multiple) "crm" "\ 5516(autoload (quote completing-read-multiple) "crm" "\
@@ -5546,7 +5546,7 @@ INHERIT-INPUT-METHOD.
5546;;;*** 5546;;;***
5547 5547
5548;;;### (autoloads (cua-selection-mode cua-mode) "cua-base" "emulation/cua-base.el" 5548;;;### (autoloads (cua-selection-mode cua-mode) "cua-base" "emulation/cua-base.el"
5549;;;;;; (17994 6751)) 5549;;;;;; (17888 45995))
5550;;; Generated autoloads from emulation/cua-base.el 5550;;; Generated autoloads from emulation/cua-base.el
5551 5551
5552(defvar cua-mode nil "\ 5552(defvar cua-mode nil "\
@@ -5614,7 +5614,7 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v bindings.
5614;;;;;; customize-mode customize customize-save-variable customize-set-variable 5614;;;;;; customize-mode customize customize-save-variable customize-set-variable
5615;;;;;; customize-set-value custom-menu-sort-alphabetically custom-buffer-sort-alphabetically 5615;;;;;; customize-set-value custom-menu-sort-alphabetically custom-buffer-sort-alphabetically
5616;;;;;; custom-browse-sort-alphabetically) "cus-edit" "cus-edit.el" 5616;;;;;; custom-browse-sort-alphabetically) "cus-edit" "cus-edit.el"
5617;;;;;; (17994 6715)) 5617;;;;;; (17952 11093))
5618;;; Generated autoloads from cus-edit.el 5618;;; Generated autoloads from cus-edit.el
5619 5619
5620(defvar custom-browse-sort-alphabetically nil "\ 5620(defvar custom-browse-sort-alphabetically nil "\
@@ -5912,7 +5912,7 @@ The format is suitable for use with `easy-menu-define'.
5912;;;*** 5912;;;***
5913 5913
5914;;;### (autoloads (custom-reset-faces custom-theme-reset-faces custom-set-faces 5914;;;### (autoloads (custom-reset-faces custom-theme-reset-faces custom-set-faces
5915;;;;;; custom-declare-face) "cus-face" "cus-face.el" (17994 6750)) 5915;;;;;; custom-declare-face) "cus-face" "cus-face.el" (17842 58280))
5916;;; Generated autoloads from cus-face.el 5916;;; Generated autoloads from cus-face.el
5917 5917
5918(autoload (quote custom-declare-face) "cus-face" "\ 5918(autoload (quote custom-declare-face) "cus-face" "\
@@ -5982,7 +5982,7 @@ This means reset FACE to its value in FROM-THEME.
5982;;;*** 5982;;;***
5983 5983
5984;;;### (autoloads (customize-create-theme) "cus-theme" "cus-theme.el" 5984;;;### (autoloads (customize-create-theme) "cus-theme" "cus-theme.el"
5985;;;;;; (17994 6715)) 5985;;;;;; (17842 58280))
5986;;; Generated autoloads from cus-theme.el 5986;;; Generated autoloads from cus-theme.el
5987 5987
5988(autoload (quote customize-create-theme) "cus-theme" "\ 5988(autoload (quote customize-create-theme) "cus-theme" "\
@@ -5993,7 +5993,7 @@ Create a custom theme.
5993;;;*** 5993;;;***
5994 5994
5995;;;### (autoloads (cvs-status-mode) "cvs-status" "cvs-status.el" 5995;;;### (autoloads (cvs-status-mode) "cvs-status" "cvs-status.el"
5996;;;;;; (17994 6715)) 5996;;;;;; (17842 58280))
5997;;; Generated autoloads from cvs-status.el 5997;;; Generated autoloads from cvs-status.el
5998 5998
5999(autoload (quote cvs-status-mode) "cvs-status" "\ 5999(autoload (quote cvs-status-mode) "cvs-status" "\
@@ -6004,7 +6004,7 @@ Mode used for cvs status output.
6004;;;*** 6004;;;***
6005 6005
6006;;;### (autoloads (global-cwarn-mode turn-on-cwarn-mode cwarn-mode) 6006;;;### (autoloads (global-cwarn-mode turn-on-cwarn-mode cwarn-mode)
6007;;;;;; "cwarn" "progmodes/cwarn.el" (17994 6715)) 6007;;;;;; "cwarn" "progmodes/cwarn.el" (17860 50532))
6008;;; Generated autoloads from progmodes/cwarn.el 6008;;; Generated autoloads from progmodes/cwarn.el
6009 6009
6010(autoload (quote cwarn-mode) "cwarn" "\ 6010(autoload (quote cwarn-mode) "cwarn" "\
@@ -6047,7 +6047,7 @@ See `cwarn-mode' for more information on Cwarn mode.
6047 6047
6048;;;### (autoloads (standard-display-cyrillic-translit cyrillic-encode-alternativnyj-char 6048;;;### (autoloads (standard-display-cyrillic-translit cyrillic-encode-alternativnyj-char
6049;;;;;; cyrillic-encode-koi8-r-char) "cyril-util" "language/cyril-util.el" 6049;;;;;; cyrillic-encode-koi8-r-char) "cyril-util" "language/cyril-util.el"
6050;;;;;; (17994 6715)) 6050;;;;;; (17842 58278))
6051;;; Generated autoloads from language/cyril-util.el 6051;;; Generated autoloads from language/cyril-util.el
6052 6052
6053(autoload (quote cyrillic-encode-koi8-r-char) "cyril-util" "\ 6053(autoload (quote cyrillic-encode-koi8-r-char) "cyril-util" "\
@@ -6076,7 +6076,7 @@ If the argument is nil, we return the display table to its standard state.
6076;;;*** 6076;;;***
6077 6077
6078;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "dabbrev.el" 6078;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "dabbrev.el"
6079;;;;;; (18000 24333)) 6079;;;;;; (18006 55794))
6080;;; Generated autoloads from dabbrev.el 6080;;; Generated autoloads from dabbrev.el
6081 (define-key esc-map "/" 'dabbrev-expand) 6081 (define-key esc-map "/" 'dabbrev-expand)
6082 (define-key esc-map [?\C-/] 'dabbrev-completion) 6082 (define-key esc-map [?\C-/] 'dabbrev-completion)
@@ -6120,8 +6120,8 @@ See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion].
6120 6120
6121;;;*** 6121;;;***
6122 6122
6123;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (17994 6123;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (17949
6124;;;;;; 6715)) 6124;;;;;; 41468))
6125;;; Generated autoloads from progmodes/dcl-mode.el 6125;;; Generated autoloads from progmodes/dcl-mode.el
6126 6126
6127(autoload (quote dcl-mode) "dcl-mode" "\ 6127(autoload (quote dcl-mode) "dcl-mode" "\
@@ -6248,7 +6248,7 @@ There is some minimal font-lock support (see vars
6248;;;*** 6248;;;***
6249 6249
6250;;;### (autoloads (cancel-debug-on-entry debug-on-entry debug) "debug" 6250;;;### (autoloads (cancel-debug-on-entry debug-on-entry debug) "debug"
6251;;;;;; "emacs-lisp/debug.el" (17994 6715)) 6251;;;;;; "emacs-lisp/debug.el" (17842 54152))
6252;;; Generated autoloads from emacs-lisp/debug.el 6252;;; Generated autoloads from emacs-lisp/debug.el
6253 6253
6254(setq debugger (quote debug)) 6254(setq debugger (quote debug))
@@ -6292,7 +6292,7 @@ To specify a nil argument interactively, exit with an empty minibuffer.
6292;;;*** 6292;;;***
6293 6293
6294;;;### (autoloads (decipher-mode decipher) "decipher" "play/decipher.el" 6294;;;### (autoloads (decipher-mode decipher) "decipher" "play/decipher.el"
6295;;;;;; (17994 6715)) 6295;;;;;; (17842 55395))
6296;;; Generated autoloads from play/decipher.el 6296;;; Generated autoloads from play/decipher.el
6297 6297
6298(autoload (quote decipher) "decipher" "\ 6298(autoload (quote decipher) "decipher" "\
@@ -6321,8 +6321,8 @@ The most useful commands are:
6321;;;*** 6321;;;***
6322 6322
6323;;;### (autoloads (delimit-columns-rectangle delimit-columns-region 6323;;;### (autoloads (delimit-columns-rectangle delimit-columns-region
6324;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (17994 6324;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (17842
6325;;;;;; 6715)) 6325;;;;;; 58280))
6326;;; Generated autoloads from delim-col.el 6326;;; Generated autoloads from delim-col.el
6327 6327
6328(autoload (quote delimit-columns-customize) "delim-col" "\ 6328(autoload (quote delimit-columns-customize) "delim-col" "\
@@ -6346,8 +6346,8 @@ START and END delimits the corners of text rectangle.
6346 6346
6347;;;*** 6347;;;***
6348 6348
6349;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (17994 6349;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (17842
6350;;;;;; 6715)) 6350;;;;;; 56333))
6351;;; Generated autoloads from progmodes/delphi.el 6351;;; Generated autoloads from progmodes/delphi.el
6352 6352
6353(autoload (quote delphi-mode) "delphi" "\ 6353(autoload (quote delphi-mode) "delphi" "\
@@ -6397,8 +6397,8 @@ no args, if that value is non-nil.
6397 6397
6398;;;*** 6398;;;***
6399 6399
6400;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (17994 6400;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (17842
6401;;;;;; 6715)) 6401;;;;;; 58280))
6402;;; Generated autoloads from delsel.el 6402;;; Generated autoloads from delsel.el
6403 6403
6404(defalias (quote pending-delete-mode) (quote delete-selection-mode)) 6404(defalias (quote pending-delete-mode) (quote delete-selection-mode))
@@ -6427,7 +6427,7 @@ any selection.
6427;;;*** 6427;;;***
6428 6428
6429;;;### (autoloads (derived-mode-init-mode-variables define-derived-mode) 6429;;;### (autoloads (derived-mode-init-mode-variables define-derived-mode)
6430;;;;;; "derived" "emacs-lisp/derived.el" (17994 6715)) 6430;;;;;; "derived" "emacs-lisp/derived.el" (17842 54152))
6431;;; Generated autoloads from emacs-lisp/derived.el 6431;;; Generated autoloads from emacs-lisp/derived.el
6432 6432
6433(autoload (quote define-derived-mode) "derived" "\ 6433(autoload (quote define-derived-mode) "derived" "\
@@ -6492,7 +6492,7 @@ the first time the mode is used.
6492;;;*** 6492;;;***
6493 6493
6494;;;### (autoloads (describe-char describe-text-properties) "descr-text" 6494;;;### (autoloads (describe-char describe-text-properties) "descr-text"
6495;;;;;; "descr-text.el" (17994 6715)) 6495;;;;;; "descr-text.el" (17874 62047))
6496;;; Generated autoloads from descr-text.el 6496;;; Generated autoloads from descr-text.el
6497 6497
6498(autoload (quote describe-text-properties) "descr-text" "\ 6498(autoload (quote describe-text-properties) "descr-text" "\
@@ -6518,7 +6518,7 @@ as well as widgets, buttons, overlays, and text properties.
6518;;;### (autoloads (desktop-revert desktop-save-in-desktop-dir desktop-change-dir 6518;;;### (autoloads (desktop-revert desktop-save-in-desktop-dir desktop-change-dir
6519;;;;;; desktop-load-default desktop-read desktop-remove desktop-save 6519;;;;;; desktop-load-default desktop-read desktop-remove desktop-save
6520;;;;;; desktop-clear desktop-locals-to-save desktop-save-mode) "desktop" 6520;;;;;; desktop-clear desktop-locals-to-save desktop-save-mode) "desktop"
6521;;;;;; "desktop.el" (17994 6715)) 6521;;;;;; "desktop.el" (17949 41467))
6522;;; Generated autoloads from desktop.el 6522;;; Generated autoloads from desktop.el
6523 6523
6524(defvar desktop-save-mode nil "\ 6524(defvar desktop-save-mode nil "\
@@ -6701,7 +6701,7 @@ Revert to the last loaded desktop.
6701 6701
6702;;;### (autoloads (gnus-article-outlook-deuglify-article gnus-outlook-deuglify-article 6702;;;### (autoloads (gnus-article-outlook-deuglify-article gnus-outlook-deuglify-article
6703;;;;;; gnus-article-outlook-repair-attribution gnus-article-outlook-unwrap-lines) 6703;;;;;; gnus-article-outlook-repair-attribution gnus-article-outlook-unwrap-lines)
6704;;;;;; "deuglify" "gnus/deuglify.el" (17994 6715)) 6704;;;;;; "deuglify" "gnus/deuglify.el" (17842 54741))
6705;;; Generated autoloads from gnus/deuglify.el 6705;;; Generated autoloads from gnus/deuglify.el
6706 6706
6707(autoload (quote gnus-article-outlook-unwrap-lines) "deuglify" "\ 6707(autoload (quote gnus-article-outlook-unwrap-lines) "deuglify" "\
@@ -6734,7 +6734,7 @@ Deuglify broken Outlook (Express) articles and redisplay.
6734;;;*** 6734;;;***
6735 6735
6736;;;### (autoloads (devanagari-post-read-conversion devanagari-compose-region) 6736;;;### (autoloads (devanagari-post-read-conversion devanagari-compose-region)
6737;;;;;; "devan-util" "language/devan-util.el" (17994 6715)) 6737;;;;;; "devan-util" "language/devan-util.el" (17842 58278))
6738;;; Generated autoloads from language/devan-util.el 6738;;; Generated autoloads from language/devan-util.el
6739 6739
6740(defconst devanagari-consonant "[\x51ad5-\x51af9\x51b38-\x51b3f]") 6740(defconst devanagari-consonant "[\x51ad5-\x51af9\x51b38-\x51b3f]")
@@ -6752,7 +6752,7 @@ Not documented
6752;;;*** 6752;;;***
6753 6753
6754;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib" 6754;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib"
6755;;;;;; "calendar/diary-lib.el" (17994 6715)) 6755;;;;;; "calendar/diary-lib.el" (17958 11887))
6756;;; Generated autoloads from calendar/diary-lib.el 6756;;; Generated autoloads from calendar/diary-lib.el
6757 6757
6758(autoload (quote diary) "diary-lib" "\ 6758(autoload (quote diary) "diary-lib" "\
@@ -6798,7 +6798,7 @@ Major mode for editing the diary file.
6798;;;*** 6798;;;***
6799 6799
6800;;;### (autoloads (diff-backup diff diff-command diff-switches) "diff" 6800;;;### (autoloads (diff-backup diff diff-command diff-switches) "diff"
6801;;;;;; "diff.el" (17994 6736)) 6801;;;;;; "diff.el" (17992 30877))
6802;;; Generated autoloads from diff.el 6802;;; Generated autoloads from diff.el
6803 6803
6804(defvar diff-switches "-c" "\ 6804(defvar diff-switches "-c" "\
@@ -6832,7 +6832,7 @@ With prefix arg, prompt for diff switches.
6832;;;*** 6832;;;***
6833 6833
6834;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "diff-mode.el" 6834;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "diff-mode.el"
6835;;;;;; (17994 6740)) 6835;;;;;; (17992 30877))
6836;;; Generated autoloads from diff-mode.el 6836;;; Generated autoloads from diff-mode.el
6837 6837
6838(autoload (quote diff-mode) "diff-mode" "\ 6838(autoload (quote diff-mode) "diff-mode" "\
@@ -6864,7 +6864,7 @@ Minor mode for viewing/editing context diffs.
6864;;;;;; dired dired-copy-preserve-time dired-dwim-target dired-keep-marker-symlink 6864;;;;;; dired dired-copy-preserve-time dired-dwim-target dired-keep-marker-symlink
6865;;;;;; dired-keep-marker-hardlink dired-keep-marker-copy dired-keep-marker-rename 6865;;;;;; dired-keep-marker-hardlink dired-keep-marker-copy dired-keep-marker-rename
6866;;;;;; dired-trivial-filenames dired-ls-F-marks-symlinks dired-listing-switches) 6866;;;;;; dired-trivial-filenames dired-ls-F-marks-symlinks dired-listing-switches)
6867;;;;;; "dired" "dired.el" (18000 24335)) 6867;;;;;; "dired" "dired.el" (18015 32019))
6868;;; Generated autoloads from dired.el 6868;;; Generated autoloads from dired.el
6869 6869
6870(defvar dired-listing-switches "-al" "\ 6870(defvar dired-listing-switches "-al" "\
@@ -7069,7 +7069,7 @@ Keybindings:
7069;;;;;; dired-run-shell-command dired-do-shell-command dired-clean-directory 7069;;;;;; dired-run-shell-command dired-do-shell-command dired-clean-directory
7070;;;;;; dired-do-print dired-do-touch dired-do-chown dired-do-chgrp 7070;;;;;; dired-do-print dired-do-touch dired-do-chown dired-do-chgrp
7071;;;;;; dired-do-chmod dired-compare-directories dired-backup-diff 7071;;;;;; dired-do-chmod dired-compare-directories dired-backup-diff
7072;;;;;; dired-diff) "dired-aux" "dired-aux.el" (17994 6715)) 7072;;;;;; dired-diff) "dired-aux" "dired-aux.el" (17859 20444))
7073;;; Generated autoloads from dired-aux.el 7073;;; Generated autoloads from dired-aux.el
7074 7074
7075(autoload (quote dired-diff) "dired-aux" "\ 7075(autoload (quote dired-diff) "dired-aux" "\
@@ -7484,7 +7484,7 @@ true then the type of the file linked to by FILE is printed instead.
7484;;;*** 7484;;;***
7485 7485
7486;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el" 7486;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el"
7487;;;;;; (17994 6731)) 7487;;;;;; (17992 30877))
7488;;; Generated autoloads from dired-x.el 7488;;; Generated autoloads from dired-x.el
7489 7489
7490(autoload (quote dired-jump) "dired-x" "\ 7490(autoload (quote dired-jump) "dired-x" "\
@@ -7513,7 +7513,7 @@ For absolute symlinks, use \\[dired-do-symlink].
7513 7513
7514;;;*** 7514;;;***
7515 7515
7516;;;### (autoloads (dirtrack) "dirtrack" "dirtrack.el" (17994 6715)) 7516;;;### (autoloads (dirtrack) "dirtrack" "dirtrack.el" (17842 58280))
7517;;; Generated autoloads from dirtrack.el 7517;;; Generated autoloads from dirtrack.el
7518 7518
7519(autoload (quote dirtrack) "dirtrack" "\ 7519(autoload (quote dirtrack) "dirtrack" "\
@@ -7532,8 +7532,8 @@ You can enable directory tracking by adding this function to
7532 7532
7533;;;*** 7533;;;***
7534 7534
7535;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (17994 7535;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (17842
7536;;;;;; 6715)) 7536;;;;;; 54152))
7537;;; Generated autoloads from emacs-lisp/disass.el 7537;;; Generated autoloads from emacs-lisp/disass.el
7538 7538
7539(autoload (quote disassemble) "disass" "\ 7539(autoload (quote disassemble) "disass" "\
@@ -7552,7 +7552,7 @@ redefine OBJECT if it is a symbol.
7552;;;;;; standard-display-g1 standard-display-ascii standard-display-default 7552;;;;;; standard-display-g1 standard-display-ascii standard-display-default
7553;;;;;; standard-display-8bit describe-current-display-table describe-display-table 7553;;;;;; standard-display-8bit describe-current-display-table describe-display-table
7554;;;;;; set-display-table-slot display-table-slot make-display-table) 7554;;;;;; set-display-table-slot display-table-slot make-display-table)
7555;;;;;; "disp-table" "disp-table.el" (17994 6715)) 7555;;;;;; "disp-table" "disp-table.el" (17874 62056))
7556;;; Generated autoloads from disp-table.el 7556;;; Generated autoloads from disp-table.el
7557 7557
7558(autoload (quote make-display-table) "disp-table" "\ 7558(autoload (quote make-display-table) "disp-table" "\
@@ -7668,7 +7668,7 @@ for users who call this function in `.emacs'.
7668;;;*** 7668;;;***
7669 7669
7670;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el" 7670;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el"
7671;;;;;; (17994 6715)) 7671;;;;;; (17941 38806))
7672;;; Generated autoloads from play/dissociate.el 7672;;; Generated autoloads from play/dissociate.el
7673 7673
7674(autoload (quote dissociated-press) "dissociate" "\ 7674(autoload (quote dissociated-press) "dissociate" "\
@@ -7684,7 +7684,7 @@ Default is 2.
7684 7684
7685;;;*** 7685;;;***
7686 7686
7687;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (17994 6715)) 7687;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (17949 41467))
7688;;; Generated autoloads from dnd.el 7688;;; Generated autoloads from dnd.el
7689 7689
7690(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))) "\ 7690(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))) "\
@@ -7705,7 +7705,7 @@ if some action was made, or nil if the URL is ignored.")
7705;;;*** 7705;;;***
7706 7706
7707;;;### (autoloads (dns-mode-soa-increment-serial dns-mode) "dns-mode" 7707;;;### (autoloads (dns-mode-soa-increment-serial dns-mode) "dns-mode"
7708;;;;;; "textmodes/dns-mode.el" (17994 6715)) 7708;;;;;; "textmodes/dns-mode.el" (17842 58277))
7709;;; Generated autoloads from textmodes/dns-mode.el 7709;;; Generated autoloads from textmodes/dns-mode.el
7710 7710
7711(autoload (quote dns-mode) "dns-mode" "\ 7711(autoload (quote dns-mode) "dns-mode" "\
@@ -7729,7 +7729,7 @@ Locate SOA record and increment the serial field.
7729 7729
7730;;;*** 7730;;;***
7731 7731
7732;;;### (autoloads (doctor) "doctor" "play/doctor.el" (17994 6715)) 7732;;;### (autoloads (doctor) "doctor" "play/doctor.el" (17941 38806))
7733;;; Generated autoloads from play/doctor.el 7733;;; Generated autoloads from play/doctor.el
7734 7734
7735(autoload (quote doctor) "doctor" "\ 7735(autoload (quote doctor) "doctor" "\
@@ -7740,7 +7740,7 @@ Switch to *doctor* buffer and start giving psychotherapy.
7740;;;*** 7740;;;***
7741 7741
7742;;;### (autoloads (double-mode double-mode) "double" "double.el" 7742;;;### (autoloads (double-mode double-mode) "double" "double.el"
7743;;;;;; (17994 6750)) 7743;;;;;; (17842 58280))
7744;;; Generated autoloads from double.el 7744;;; Generated autoloads from double.el
7745 7745
7746(defvar double-mode nil "\ 7746(defvar double-mode nil "\
@@ -7761,7 +7761,7 @@ when pressed twice. See variable `double-map' for details.
7761 7761
7762;;;*** 7762;;;***
7763 7763
7764;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (17994 6715)) 7764;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (17842 55395))
7765;;; Generated autoloads from play/dunnet.el 7765;;; Generated autoloads from play/dunnet.el
7766 7766
7767(autoload (quote dunnet) "dunnet" "\ 7767(autoload (quote dunnet) "dunnet" "\
@@ -7772,7 +7772,7 @@ Switch to *dungeon* buffer and start game.
7772;;;*** 7772;;;***
7773 7773
7774;;;### (autoloads (gnus-earcon-display) "earcon" "gnus/earcon.el" 7774;;;### (autoloads (gnus-earcon-display) "earcon" "gnus/earcon.el"
7775;;;;;; (17994 6715)) 7775;;;;;; (17842 54741))
7776;;; Generated autoloads from gnus/earcon.el 7776;;; Generated autoloads from gnus/earcon.el
7777 7777
7778(autoload (quote gnus-earcon-display) "earcon" "\ 7778(autoload (quote gnus-earcon-display) "earcon" "\
@@ -7784,7 +7784,7 @@ Play sounds in message buffers.
7784 7784
7785;;;### (autoloads (easy-mmode-defsyntax easy-mmode-defmap easy-mmode-define-keymap 7785;;;### (autoloads (easy-mmode-defsyntax easy-mmode-defmap easy-mmode-define-keymap
7786;;;;;; define-globalized-minor-mode define-minor-mode) "easy-mmode" 7786;;;;;; define-globalized-minor-mode define-minor-mode) "easy-mmode"
7787;;;;;; "emacs-lisp/easy-mmode.el" (17994 6743)) 7787;;;;;; "emacs-lisp/easy-mmode.el" (17992 30878))
7788;;; Generated autoloads from emacs-lisp/easy-mmode.el 7788;;; Generated autoloads from emacs-lisp/easy-mmode.el
7789 7789
7790(defalias (quote easy-mmode-define-minor-mode) (quote define-minor-mode)) 7790(defalias (quote easy-mmode-define-minor-mode) (quote define-minor-mode))
@@ -7878,8 +7878,8 @@ CSS contains a list of syntax specifications of the form (CHAR . SYNTAX).
7878;;;*** 7878;;;***
7879 7879
7880;;;### (autoloads (easy-menu-change easy-menu-create-menu easy-menu-do-define 7880;;;### (autoloads (easy-menu-change easy-menu-create-menu easy-menu-do-define
7881;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (17994 7881;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (17842
7882;;;;;; 6715)) 7882;;;;;; 54152))
7883;;; Generated autoloads from emacs-lisp/easymenu.el 7883;;; Generated autoloads from emacs-lisp/easymenu.el
7884 7884
7885(put (quote easy-menu-define) (quote lisp-indent-function) (quote defun)) 7885(put (quote easy-menu-define) (quote lisp-indent-function) (quote defun))
@@ -8028,7 +8028,7 @@ To implement dynamic menus, either call this from
8028;;;;;; ebnf-eps-directory ebnf-spool-region ebnf-spool-buffer ebnf-spool-file 8028;;;;;; ebnf-eps-directory ebnf-spool-region ebnf-spool-buffer ebnf-spool-file
8029;;;;;; ebnf-spool-directory ebnf-print-region ebnf-print-buffer 8029;;;;;; ebnf-spool-directory ebnf-print-region ebnf-print-buffer
8030;;;;;; ebnf-print-file ebnf-print-directory ebnf-customize) "ebnf2ps" 8030;;;;;; ebnf-print-file ebnf-print-directory ebnf-customize) "ebnf2ps"
8031;;;;;; "progmodes/ebnf2ps.el" (17994 6715)) 8031;;;;;; "progmodes/ebnf2ps.el" (17952 11093))
8032;;; Generated autoloads from progmodes/ebnf2ps.el 8032;;; Generated autoloads from progmodes/ebnf2ps.el
8033 8033
8034(autoload (quote ebnf-customize) "ebnf2ps" "\ 8034(autoload (quote ebnf-customize) "ebnf2ps" "\
@@ -8295,8 +8295,8 @@ See `ebnf-style-database' documentation.
8295;;;;;; ebrowse-tags-find-declaration-other-window ebrowse-tags-find-definition 8295;;;;;; ebrowse-tags-find-declaration-other-window ebrowse-tags-find-definition
8296;;;;;; ebrowse-tags-view-definition ebrowse-tags-find-declaration 8296;;;;;; ebrowse-tags-view-definition ebrowse-tags-find-declaration
8297;;;;;; ebrowse-tags-view-declaration ebrowse-member-mode ebrowse-electric-choose-tree 8297;;;;;; ebrowse-tags-view-declaration ebrowse-member-mode ebrowse-electric-choose-tree
8298;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (17994 8298;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (17821
8299;;;;;; 6751)) 8299;;;;;; 5918))
8300;;; Generated autoloads from progmodes/ebrowse.el 8300;;; Generated autoloads from progmodes/ebrowse.el
8301 8301
8302(autoload (quote ebrowse-tree-mode) "ebrowse" "\ 8302(autoload (quote ebrowse-tree-mode) "ebrowse" "\
@@ -8447,7 +8447,7 @@ Display statistics for a class tree.
8447;;;*** 8447;;;***
8448 8448
8449;;;### (autoloads (electric-buffer-list) "ebuff-menu" "ebuff-menu.el" 8449;;;### (autoloads (electric-buffer-list) "ebuff-menu" "ebuff-menu.el"
8450;;;;;; (17994 6750)) 8450;;;;;; (17842 58280))
8451;;; Generated autoloads from ebuff-menu.el 8451;;; Generated autoloads from ebuff-menu.el
8452 8452
8453(autoload (quote electric-buffer-list) "ebuff-menu" "\ 8453(autoload (quote electric-buffer-list) "ebuff-menu" "\
@@ -8472,7 +8472,7 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
8472;;;*** 8472;;;***
8473 8473
8474;;;### (autoloads (Electric-command-history-redo-expression) "echistory" 8474;;;### (autoloads (Electric-command-history-redo-expression) "echistory"
8475;;;;;; "echistory.el" (17994 6750)) 8475;;;;;; "echistory.el" (17842 58280))
8476;;; Generated autoloads from echistory.el 8476;;; Generated autoloads from echistory.el
8477 8477
8478(autoload (quote Electric-command-history-redo-expression) "echistory" "\ 8478(autoload (quote Electric-command-history-redo-expression) "echistory" "\
@@ -8485,7 +8485,7 @@ With prefix arg NOCONFIRM, execute current line as-is without editing.
8485 8485
8486;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form 8486;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form
8487;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug" 8487;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug"
8488;;;;;; "emacs-lisp/edebug.el" (17994 6715)) 8488;;;;;; "emacs-lisp/edebug.el" (17952 11093))
8489;;; Generated autoloads from emacs-lisp/edebug.el 8489;;; Generated autoloads from emacs-lisp/edebug.el
8490 8490
8491(defvar edebug-all-defs nil "\ 8491(defvar edebug-all-defs nil "\
@@ -8558,7 +8558,7 @@ Toggle edebugging of all forms.
8558;;;;;; ediff-merge-directory-revisions ediff-merge-directories-with-ancestor 8558;;;;;; ediff-merge-directory-revisions ediff-merge-directories-with-ancestor
8559;;;;;; ediff-merge-directories ediff-directories3 ediff-directory-revisions 8559;;;;;; ediff-merge-directories ediff-directories3 ediff-directory-revisions
8560;;;;;; ediff-directories ediff-buffers3 ediff-buffers ediff-backup 8560;;;;;; ediff-directories ediff-buffers3 ediff-buffers ediff-backup
8561;;;;;; ediff-files3 ediff-files) "ediff" "ediff.el" (17994 6715)) 8561;;;;;; ediff-files3 ediff-files) "ediff" "ediff.el" (17846 30361))
8562;;; Generated autoloads from ediff.el 8562;;; Generated autoloads from ediff.el
8563 8563
8564(autoload (quote ediff-files) "ediff" "\ 8564(autoload (quote ediff-files) "ediff" "\
@@ -8790,7 +8790,7 @@ With optional NODE, goes to that node.
8790;;;*** 8790;;;***
8791 8791
8792;;;### (autoloads (ediff-customize) "ediff-help" "ediff-help.el" 8792;;;### (autoloads (ediff-customize) "ediff-help" "ediff-help.el"
8793;;;;;; (17994 6715)) 8793;;;;;; (17842 58280))
8794;;; Generated autoloads from ediff-help.el 8794;;; Generated autoloads from ediff-help.el
8795 8795
8796(autoload (quote ediff-customize) "ediff-help" "\ 8796(autoload (quote ediff-customize) "ediff-help" "\
@@ -8800,7 +8800,7 @@ Not documented
8800 8800
8801;;;*** 8801;;;***
8802 8802
8803;;;### (autoloads nil "ediff-hook" "ediff-hook.el" (17994 6715)) 8803;;;### (autoloads nil "ediff-hook" "ediff-hook.el" (17842 58280))
8804;;; Generated autoloads from ediff-hook.el 8804;;; Generated autoloads from ediff-hook.el
8805 8805
8806(defvar ediff-window-setup-function) 8806(defvar ediff-window-setup-function)
@@ -8813,7 +8813,7 @@ Not documented
8813;;;*** 8813;;;***
8814 8814
8815;;;### (autoloads (ediff-show-registry) "ediff-mult" "ediff-mult.el" 8815;;;### (autoloads (ediff-show-registry) "ediff-mult" "ediff-mult.el"
8816;;;;;; (17994 6715)) 8816;;;;;; (17842 58279))
8817;;; Generated autoloads from ediff-mult.el 8817;;; Generated autoloads from ediff-mult.el
8818 8818
8819(autoload (quote ediff-show-registry) "ediff-mult" "\ 8819(autoload (quote ediff-show-registry) "ediff-mult" "\
@@ -8826,7 +8826,7 @@ Display Ediff's registry.
8826;;;*** 8826;;;***
8827 8827
8828;;;### (autoloads (ediff-toggle-use-toolbar ediff-toggle-multiframe) 8828;;;### (autoloads (ediff-toggle-use-toolbar ediff-toggle-multiframe)
8829;;;;;; "ediff-util" "ediff-util.el" (17994 6715)) 8829;;;;;; "ediff-util" "ediff-util.el" (17846 30361))
8830;;; Generated autoloads from ediff-util.el 8830;;; Generated autoloads from ediff-util.el
8831 8831
8832(autoload (quote ediff-toggle-multiframe) "ediff-util" "\ 8832(autoload (quote ediff-toggle-multiframe) "ediff-util" "\
@@ -8847,7 +8847,7 @@ To change the default, set the variable `ediff-use-toolbar-p', which see.
8847 8847
8848;;;### (autoloads (format-kbd-macro read-kbd-macro edit-named-kbd-macro 8848;;;### (autoloads (format-kbd-macro read-kbd-macro edit-named-kbd-macro
8849;;;;;; edit-last-kbd-macro edit-kbd-macro) "edmacro" "edmacro.el" 8849;;;;;; edit-last-kbd-macro edit-kbd-macro) "edmacro" "edmacro.el"
8850;;;;;; (17994 6750)) 8850;;;;;; (17842 58279))
8851;;; Generated autoloads from edmacro.el 8851;;; Generated autoloads from edmacro.el
8852 8852
8853(defvar edmacro-eight-bits nil "\ 8853(defvar edmacro-eight-bits nil "\
@@ -8900,7 +8900,7 @@ or nil, use a compact 80-column format.
8900;;;*** 8900;;;***
8901 8901
8902;;;### (autoloads (edt-emulation-on edt-set-scroll-margins) "edt" 8902;;;### (autoloads (edt-emulation-on edt-set-scroll-margins) "edt"
8903;;;;;; "emulation/edt.el" (17994 6715)) 8903;;;;;; "emulation/edt.el" (17842 54264))
8904;;; Generated autoloads from emulation/edt.el 8904;;; Generated autoloads from emulation/edt.el
8905 8905
8906(autoload (quote edt-set-scroll-margins) "edt" "\ 8906(autoload (quote edt-set-scroll-margins) "edt" "\
@@ -8918,7 +8918,7 @@ Turn on EDT Emulation.
8918;;;*** 8918;;;***
8919 8919
8920;;;### (autoloads (electric-helpify with-electric-help) "ehelp" "ehelp.el" 8920;;;### (autoloads (electric-helpify with-electric-help) "ehelp" "ehelp.el"
8921;;;;;; (17994 6715)) 8921;;;;;; (17873 45892))
8922;;; Generated autoloads from ehelp.el 8922;;; Generated autoloads from ehelp.el
8923 8923
8924(autoload (quote with-electric-help) "ehelp" "\ 8924(autoload (quote with-electric-help) "ehelp" "\
@@ -8955,7 +8955,7 @@ Not documented
8955;;;*** 8955;;;***
8956 8956
8957;;;### (autoloads (turn-on-eldoc-mode eldoc-mode eldoc-minor-mode-string) 8957;;;### (autoloads (turn-on-eldoc-mode eldoc-mode eldoc-minor-mode-string)
8958;;;;;; "eldoc" "emacs-lisp/eldoc.el" (17994 6737)) 8958;;;;;; "eldoc" "emacs-lisp/eldoc.el" (17992 30878))
8959;;; Generated autoloads from emacs-lisp/eldoc.el 8959;;; Generated autoloads from emacs-lisp/eldoc.el
8960 8960
8961(defvar eldoc-minor-mode-string " ElDoc" "\ 8961(defvar eldoc-minor-mode-string " ElDoc" "\
@@ -8993,8 +8993,8 @@ Emacs Lisp mode) that support Eldoc.")
8993 8993
8994;;;*** 8994;;;***
8995 8995
8996;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (17994 8996;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (17842
8997;;;;;; 6715)) 8997;;;;;; 58279))
8998;;; Generated autoloads from elide-head.el 8998;;; Generated autoloads from elide-head.el
8999 8999
9000(autoload (quote elide-head) "elide-head" "\ 9000(autoload (quote elide-head) "elide-head" "\
@@ -9010,7 +9010,7 @@ This is suitable as an entry on `find-file-hook' or appropriate mode hooks.
9010;;;*** 9010;;;***
9011 9011
9012;;;### (autoloads (elint-initialize) "elint" "emacs-lisp/elint.el" 9012;;;### (autoloads (elint-initialize) "elint" "emacs-lisp/elint.el"
9013;;;;;; (17994 6715)) 9013;;;;;; (17842 54152))
9014;;; Generated autoloads from emacs-lisp/elint.el 9014;;; Generated autoloads from emacs-lisp/elint.el
9015 9015
9016(autoload (quote elint-initialize) "elint" "\ 9016(autoload (quote elint-initialize) "elint" "\
@@ -9021,8 +9021,8 @@ Initialize elint.
9021;;;*** 9021;;;***
9022 9022
9023;;;### (autoloads (elp-results elp-instrument-package elp-instrument-list 9023;;;### (autoloads (elp-results elp-instrument-package elp-instrument-list
9024;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (17994 9024;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (17842
9025;;;;;; 6715)) 9025;;;;;; 54152))
9026;;; Generated autoloads from emacs-lisp/elp.el 9026;;; Generated autoloads from emacs-lisp/elp.el
9027 9027
9028(autoload (quote elp-instrument-function) "elp" "\ 9028(autoload (quote elp-instrument-function) "elp" "\
@@ -9056,7 +9056,7 @@ displayed.
9056;;;*** 9056;;;***
9057 9057
9058;;;### (autoloads (report-emacs-bug) "emacsbug" "mail/emacsbug.el" 9058;;;### (autoloads (report-emacs-bug) "emacsbug" "mail/emacsbug.el"
9059;;;;;; (17994 6751)) 9059;;;;;; (17907 23437))
9060;;; Generated autoloads from mail/emacsbug.el 9060;;; Generated autoloads from mail/emacsbug.el
9061 9061
9062(autoload (quote report-emacs-bug) "emacsbug" "\ 9062(autoload (quote report-emacs-bug) "emacsbug" "\
@@ -9148,12 +9148,26 @@ Not documented
9148 9148
9149;;;*** 9149;;;***
9150 9150
9151;;;### (autoloads (encoded-kbd-setup-display) "encoded-kb" "international/encoded-kb.el" 9151;;;### (autoloads (encoded-kbd-mode) "encoded-kb" "international/encoded-kb.el"
9152;;;;;; (17994 6751)) 9152;;;;;; (17842 54888))
9153;;; Generated autoloads from international/encoded-kb.el 9153;;; Generated autoloads from international/encoded-kb.el
9154 9154
9155(autoload (quote encoded-kbd-setup-display) "encoded-kb" "\ 9155(defvar encoded-kbd-mode nil "\
9156Set up a `key-translation-map' for `keyboard-coding-system' on DISPLAY. 9156Non-nil if Encoded-Kbd mode is enabled.
9157See the command `encoded-kbd-mode' for a description of this minor mode.
9158Setting this variable directly does not take effect;
9159either customize it (see the info node `Easy Customization')
9160or call the function `encoded-kbd-mode'.")
9161
9162(custom-autoload (quote encoded-kbd-mode) "encoded-kb" nil)
9163
9164(autoload (quote encoded-kbd-mode) "encoded-kb" "\
9165Toggle Encoded-kbd minor mode.
9166With arg, turn Encoded-kbd mode on if and only if arg is positive.
9167
9168You should not turn this mode on manually, instead use the command
9169\\[set-keyboard-coding-system] which turns on or off this mode
9170automatically.
9157 9171
9158DISPLAY may be a display id, a frame, or nil for the selected frame's display. 9172DISPLAY may be a display id, a frame, or nil for the selected frame's display.
9159 9173
@@ -9162,7 +9176,7 @@ DISPLAY may be a display id, a frame, or nil for the selected frame's display.
9162;;;*** 9176;;;***
9163 9177
9164;;;### (autoloads (enriched-decode enriched-encode enriched-mode) 9178;;;### (autoloads (enriched-decode enriched-encode enriched-mode)
9165;;;;;; "enriched" "textmodes/enriched.el" (17994 6715)) 9179;;;;;; "enriched" "textmodes/enriched.el" (17842 58277))
9166;;; Generated autoloads from textmodes/enriched.el 9180;;; Generated autoloads from textmodes/enriched.el
9167 9181
9168(autoload (quote enriched-mode) "enriched" "\ 9182(autoload (quote enriched-mode) "enriched" "\
@@ -9193,7 +9207,7 @@ Not documented
9193;;;*** 9207;;;***
9194 9208
9195;;;### (autoloads (erc-handle-irc-url erc erc-select-read-args) "erc" 9209;;;### (autoloads (erc-handle-irc-url erc erc-select-read-args) "erc"
9196;;;;;; "erc/erc.el" (17994 6715)) 9210;;;;;; "erc/erc.el" (17935 53318))
9197;;; Generated autoloads from erc/erc.el 9211;;; Generated autoloads from erc/erc.el
9198 9212
9199(autoload (quote erc-select-read-args) "erc" "\ 9213(autoload (quote erc-select-read-args) "erc" "\
@@ -9235,33 +9249,33 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL.
9235 9249
9236;;;*** 9250;;;***
9237 9251
9238;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (17994 9252;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (17935
9239;;;;;; 6715)) 9253;;;;;; 53318))
9240;;; Generated autoloads from erc/erc-autoaway.el 9254;;; Generated autoloads from erc/erc-autoaway.el
9241 (autoload 'erc-autoaway-mode "erc-autoaway") 9255 (autoload 'erc-autoaway-mode "erc-autoaway")
9242 9256
9243;;;*** 9257;;;***
9244 9258
9245;;;### (autoloads nil "erc-button" "erc/erc-button.el" (17994 6715)) 9259;;;### (autoloads nil "erc-button" "erc/erc-button.el" (17935 53318))
9246;;; Generated autoloads from erc/erc-button.el 9260;;; Generated autoloads from erc/erc-button.el
9247 (autoload 'erc-button-mode "erc-button" nil t) 9261 (autoload 'erc-button-mode "erc-button" nil t)
9248 9262
9249;;;*** 9263;;;***
9250 9264
9251;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (17994 6715)) 9265;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (17935 53318))
9252;;; Generated autoloads from erc/erc-capab.el 9266;;; Generated autoloads from erc/erc-capab.el
9253 (autoload 'erc-capab-identify-mode "erc-capab" nil t) 9267 (autoload 'erc-capab-identify-mode "erc-capab" nil t)
9254 9268
9255;;;*** 9269;;;***
9256 9270
9257;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (17994 6715)) 9271;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (17935 53318))
9258;;; Generated autoloads from erc/erc-compat.el 9272;;; Generated autoloads from erc/erc-compat.el
9259 (autoload 'erc-define-minor-mode "erc-compat") 9273 (autoload 'erc-define-minor-mode "erc-compat")
9260 9274
9261;;;*** 9275;;;***
9262 9276
9263;;;### (autoloads (erc-ctcp-query-DCC pcomplete/erc-mode/DCC erc-cmd-DCC) 9277;;;### (autoloads (erc-ctcp-query-DCC pcomplete/erc-mode/DCC erc-cmd-DCC)
9264;;;;;; "erc-dcc" "erc/erc-dcc.el" (17994 6715)) 9278;;;;;; "erc-dcc" "erc/erc-dcc.el" (17842 54344))
9265;;; Generated autoloads from erc/erc-dcc.el 9279;;; Generated autoloads from erc/erc-dcc.el
9266 9280
9267(autoload (quote erc-cmd-DCC) "erc-dcc" "\ 9281(autoload (quote erc-cmd-DCC) "erc-dcc" "\
@@ -9293,7 +9307,7 @@ that subcommand.
9293;;;;;; erc-ezb-add-session erc-ezb-end-of-session-list erc-ezb-init-session-list 9307;;;;;; erc-ezb-add-session erc-ezb-end-of-session-list erc-ezb-init-session-list
9294;;;;;; erc-ezb-identify erc-ezb-notice-autodetect erc-ezb-lookup-action 9308;;;;;; erc-ezb-identify erc-ezb-notice-autodetect erc-ezb-lookup-action
9295;;;;;; erc-ezb-get-login erc-cmd-ezb) "erc-ezbounce" "erc/erc-ezbounce.el" 9309;;;;;; erc-ezb-get-login erc-cmd-ezb) "erc-ezbounce" "erc/erc-ezbounce.el"
9296;;;;;; (17994 6715)) 9310;;;;;; (17842 54344))
9297;;; Generated autoloads from erc/erc-ezbounce.el 9311;;; Generated autoloads from erc/erc-ezbounce.el
9298 9312
9299(autoload (quote erc-cmd-ezb) "erc-ezbounce" "\ 9313(autoload (quote erc-cmd-ezb) "erc-ezbounce" "\
@@ -9355,8 +9369,8 @@ Add EZBouncer convenience functions to ERC.
9355 9369
9356;;;*** 9370;;;***
9357 9371
9358;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (17994 9372;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (17935
9359;;;;;; 6715)) 9373;;;;;; 53318))
9360;;; Generated autoloads from erc/erc-fill.el 9374;;; Generated autoloads from erc/erc-fill.el
9361 (autoload 'erc-fill-mode "erc-fill" nil t) 9375 (autoload 'erc-fill-mode "erc-fill" nil t)
9362 9376
@@ -9368,15 +9382,15 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'.
9368 9382
9369;;;*** 9383;;;***
9370 9384
9371;;;### (autoloads nil "erc-hecomplete" "erc/erc-hecomplete.el" (17994 9385;;;### (autoloads nil "erc-hecomplete" "erc/erc-hecomplete.el" (17842
9372;;;;;; 6715)) 9386;;;;;; 54344))
9373;;; Generated autoloads from erc/erc-hecomplete.el 9387;;; Generated autoloads from erc/erc-hecomplete.el
9374 (autoload 'erc-hecomplete-mode "erc-hecomplete" nil t) 9388 (autoload 'erc-hecomplete-mode "erc-hecomplete" nil t)
9375 9389
9376;;;*** 9390;;;***
9377 9391
9378;;;### (autoloads (erc-identd-stop erc-identd-start) "erc-identd" 9392;;;### (autoloads (erc-identd-stop erc-identd-start) "erc-identd"
9379;;;;;; "erc/erc-identd.el" (17994 6715)) 9393;;;;;; "erc/erc-identd.el" (17935 53318))
9380;;; Generated autoloads from erc/erc-identd.el 9394;;; Generated autoloads from erc/erc-identd.el
9381 (autoload 'erc-identd-mode "erc-identd") 9395 (autoload 'erc-identd-mode "erc-identd")
9382 9396
@@ -9398,7 +9412,7 @@ Not documented
9398;;;*** 9412;;;***
9399 9413
9400;;;### (autoloads (erc-create-imenu-index) "erc-imenu" "erc/erc-imenu.el" 9414;;;### (autoloads (erc-create-imenu-index) "erc-imenu" "erc/erc-imenu.el"
9401;;;;;; (17994 6715)) 9415;;;;;; (17842 54344))
9402;;; Generated autoloads from erc/erc-imenu.el 9416;;; Generated autoloads from erc/erc-imenu.el
9403 9417
9404(autoload (quote erc-create-imenu-index) "erc-imenu" "\ 9418(autoload (quote erc-create-imenu-index) "erc-imenu" "\
@@ -9408,14 +9422,14 @@ Not documented
9408 9422
9409;;;*** 9423;;;***
9410 9424
9411;;;### (autoloads nil "erc-join" "erc/erc-join.el" (17994 6715)) 9425;;;### (autoloads nil "erc-join" "erc/erc-join.el" (17842 54344))
9412;;; Generated autoloads from erc/erc-join.el 9426;;; Generated autoloads from erc/erc-join.el
9413 (autoload 'erc-autojoin-mode "erc-join" nil t) 9427 (autoload 'erc-autojoin-mode "erc-join" nil t)
9414 9428
9415;;;*** 9429;;;***
9416 9430
9417;;;### (autoloads (erc-save-buffer-in-logs erc-logging-enabled) "erc-log" 9431;;;### (autoloads (erc-save-buffer-in-logs erc-logging-enabled) "erc-log"
9418;;;;;; "erc/erc-log.el" (17994 6715)) 9432;;;;;; "erc/erc-log.el" (17935 53318))
9419;;; Generated autoloads from erc/erc-log.el 9433;;; Generated autoloads from erc/erc-log.el
9420 (autoload 'erc-log-mode "erc-log" nil t) 9434 (autoload 'erc-log-mode "erc-log" nil t)
9421 9435
@@ -9447,7 +9461,7 @@ You can save every individual message by putting this function on
9447;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host 9461;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host
9448;;;;;; erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool 9462;;;;;; erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool
9449;;;;;; erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el" 9463;;;;;; erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el"
9450;;;;;; (17994 6715)) 9464;;;;;; (17935 53318))
9451;;; Generated autoloads from erc/erc-match.el 9465;;; Generated autoloads from erc/erc-match.el
9452 (autoload 'erc-match-mode "erc-match") 9466 (autoload 'erc-match-mode "erc-match")
9453 9467
@@ -9493,14 +9507,14 @@ Delete dangerous-host interactively to `erc-dangerous-hosts'.
9493 9507
9494;;;*** 9508;;;***
9495 9509
9496;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (17994 6715)) 9510;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (17935 53318))
9497;;; Generated autoloads from erc/erc-menu.el 9511;;; Generated autoloads from erc/erc-menu.el
9498 (autoload 'erc-menu-mode "erc-menu" nil t) 9512 (autoload 'erc-menu-mode "erc-menu" nil t)
9499 9513
9500;;;*** 9514;;;***
9501 9515
9502;;;### (autoloads (erc-cmd-WHOLEFT) "erc-netsplit" "erc/erc-netsplit.el" 9516;;;### (autoloads (erc-cmd-WHOLEFT) "erc-netsplit" "erc/erc-netsplit.el"
9503;;;;;; (17994 6715)) 9517;;;;;; (17935 53318))
9504;;; Generated autoloads from erc/erc-netsplit.el 9518;;; Generated autoloads from erc/erc-netsplit.el
9505 (autoload 'erc-netsplit-mode "erc-netsplit") 9519 (autoload 'erc-netsplit-mode "erc-netsplit")
9506 9520
@@ -9512,7 +9526,7 @@ Show who's gone.
9512;;;*** 9526;;;***
9513 9527
9514;;;### (autoloads (erc-server-select erc-determine-network) "erc-networks" 9528;;;### (autoloads (erc-server-select erc-determine-network) "erc-networks"
9515;;;;;; "erc/erc-networks.el" (17994 6715)) 9529;;;;;; "erc/erc-networks.el" (17935 53318))
9516;;; Generated autoloads from erc/erc-networks.el 9530;;; Generated autoloads from erc/erc-networks.el
9517 9531
9518(autoload (quote erc-determine-network) "erc-networks" "\ 9532(autoload (quote erc-determine-network) "erc-networks" "\
@@ -9530,7 +9544,7 @@ Interactively select a server to connect to using `erc-server-alist'.
9530;;;*** 9544;;;***
9531 9545
9532;;;### (autoloads (pcomplete/erc-mode/NOTIFY erc-cmd-NOTIFY) "erc-notify" 9546;;;### (autoloads (pcomplete/erc-mode/NOTIFY erc-cmd-NOTIFY) "erc-notify"
9533;;;;;; "erc/erc-notify.el" (17994 6715)) 9547;;;;;; "erc/erc-notify.el" (17935 53318))
9534;;; Generated autoloads from erc/erc-notify.el 9548;;; Generated autoloads from erc/erc-notify.el
9535 (autoload 'erc-notify-mode "erc-notify" nil t) 9549 (autoload 'erc-notify-mode "erc-notify" nil t)
9536 9550
@@ -9548,33 +9562,33 @@ Not documented
9548 9562
9549;;;*** 9563;;;***
9550 9564
9551;;;### (autoloads nil "erc-page" "erc/erc-page.el" (17994 6715)) 9565;;;### (autoloads nil "erc-page" "erc/erc-page.el" (17842 54344))
9552;;; Generated autoloads from erc/erc-page.el 9566;;; Generated autoloads from erc/erc-page.el
9553 (autoload 'erc-page-mode "erc-page") 9567 (autoload 'erc-page-mode "erc-page")
9554 9568
9555;;;*** 9569;;;***
9556 9570
9557;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (17994 9571;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (17935
9558;;;;;; 6715)) 9572;;;;;; 53318))
9559;;; Generated autoloads from erc/erc-pcomplete.el 9573;;; Generated autoloads from erc/erc-pcomplete.el
9560 (autoload 'erc-completion-mode "erc-pcomplete" nil t) 9574 (autoload 'erc-completion-mode "erc-pcomplete" nil t)
9561 9575
9562;;;*** 9576;;;***
9563 9577
9564;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (17994 6715)) 9578;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (17842 54344))
9565;;; Generated autoloads from erc/erc-replace.el 9579;;; Generated autoloads from erc/erc-replace.el
9566 (autoload 'erc-replace-mode "erc-replace") 9580 (autoload 'erc-replace-mode "erc-replace")
9567 9581
9568;;;*** 9582;;;***
9569 9583
9570;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (17994 6715)) 9584;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (17935 53318))
9571;;; Generated autoloads from erc/erc-ring.el 9585;;; Generated autoloads from erc/erc-ring.el
9572 (autoload 'erc-ring-mode "erc-ring" nil t) 9586 (autoload 'erc-ring-mode "erc-ring" nil t)
9573 9587
9574;;;*** 9588;;;***
9575 9589
9576;;;### (autoloads (erc-nickserv-identify erc-nickserv-identify-mode) 9590;;;### (autoloads (erc-nickserv-identify erc-nickserv-identify-mode)
9577;;;;;; "erc-services" "erc/erc-services.el" (17994 6715)) 9591;;;;;; "erc-services" "erc/erc-services.el" (17935 53318))
9578;;; Generated autoloads from erc/erc-services.el 9592;;; Generated autoloads from erc/erc-services.el
9579 (autoload 'erc-services-mode "erc-services" nil t) 9593 (autoload 'erc-services-mode "erc-services" nil t)
9580 9594
@@ -9591,14 +9605,14 @@ When called interactively, read the password using `read-passwd'.
9591 9605
9592;;;*** 9606;;;***
9593 9607
9594;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (17994 6715)) 9608;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (17842 54344))
9595;;; Generated autoloads from erc/erc-sound.el 9609;;; Generated autoloads from erc/erc-sound.el
9596 (autoload 'erc-sound-mode "erc-sound") 9610 (autoload 'erc-sound-mode "erc-sound")
9597 9611
9598;;;*** 9612;;;***
9599 9613
9600;;;### (autoloads (erc-speedbar-browser) "erc-speedbar" "erc/erc-speedbar.el" 9614;;;### (autoloads (erc-speedbar-browser) "erc-speedbar" "erc/erc-speedbar.el"
9601;;;;;; (17994 6715)) 9615;;;;;; (17935 53318))
9602;;; Generated autoloads from erc/erc-speedbar.el 9616;;; Generated autoloads from erc/erc-speedbar.el
9603 9617
9604(autoload (quote erc-speedbar-browser) "erc-speedbar" "\ 9618(autoload (quote erc-speedbar-browser) "erc-speedbar" "\
@@ -9609,21 +9623,21 @@ This will add a speedbar major display mode.
9609 9623
9610;;;*** 9624;;;***
9611 9625
9612;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (17994 9626;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (17935
9613;;;;;; 6715)) 9627;;;;;; 53318))
9614;;; Generated autoloads from erc/erc-spelling.el 9628;;; Generated autoloads from erc/erc-spelling.el
9615 (autoload 'erc-spelling-mode "erc-spelling" nil t) 9629 (autoload 'erc-spelling-mode "erc-spelling" nil t)
9616 9630
9617;;;*** 9631;;;***
9618 9632
9619;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (17994 6715)) 9633;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (17935 53318))
9620;;; Generated autoloads from erc/erc-stamp.el 9634;;; Generated autoloads from erc/erc-stamp.el
9621 (autoload 'erc-timestamp-mode "erc-stamp" nil t) 9635 (autoload 'erc-timestamp-mode "erc-stamp" nil t)
9622 9636
9623;;;*** 9637;;;***
9624 9638
9625;;;### (autoloads (erc-track-minor-mode) "erc-track" "erc/erc-track.el" 9639;;;### (autoloads (erc-track-minor-mode) "erc-track" "erc/erc-track.el"
9626;;;;;; (17994 6715)) 9640;;;;;; (17935 53318))
9627;;; Generated autoloads from erc/erc-track.el 9641;;; Generated autoloads from erc/erc-track.el
9628 9642
9629(defvar erc-track-minor-mode nil "\ 9643(defvar erc-track-minor-mode nil "\
@@ -9646,7 +9660,7 @@ module, otherwise the keybindings will not do anything useful.
9646;;;*** 9660;;;***
9647 9661
9648;;;### (autoloads (erc-truncate-buffer erc-truncate-buffer-to-size) 9662;;;### (autoloads (erc-truncate-buffer erc-truncate-buffer-to-size)
9649;;;;;; "erc-truncate" "erc/erc-truncate.el" (17994 6715)) 9663;;;;;; "erc-truncate" "erc/erc-truncate.el" (17842 54344))
9650;;; Generated autoloads from erc/erc-truncate.el 9664;;; Generated autoloads from erc/erc-truncate.el
9651 (autoload 'erc-truncate-mode "erc-truncate" nil t) 9665 (autoload 'erc-truncate-mode "erc-truncate" nil t)
9652 9666
@@ -9666,7 +9680,7 @@ Meant to be used in hooks, like `erc-insert-post-hook'.
9666;;;*** 9680;;;***
9667 9681
9668;;;### (autoloads (erc-xdcc-add-file) "erc-xdcc" "erc/erc-xdcc.el" 9682;;;### (autoloads (erc-xdcc-add-file) "erc-xdcc" "erc/erc-xdcc.el"
9669;;;;;; (17994 6715)) 9683;;;;;; (17842 54344))
9670;;; Generated autoloads from erc/erc-xdcc.el 9684;;; Generated autoloads from erc/erc-xdcc.el
9671 9685
9672(autoload (quote erc-xdcc-add-file) "erc-xdcc" "\ 9686(autoload (quote erc-xdcc-add-file) "erc-xdcc" "\
@@ -9676,8 +9690,8 @@ Add a file to `erc-xdcc-files'.
9676 9690
9677;;;*** 9691;;;***
9678 9692
9679;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (17994 9693;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (17914
9680;;;;;; 6715)) 9694;;;;;; 52082))
9681;;; Generated autoloads from eshell/esh-mode.el 9695;;; Generated autoloads from eshell/esh-mode.el
9682 9696
9683(autoload (quote eshell-mode) "esh-mode" "\ 9697(autoload (quote eshell-mode) "esh-mode" "\
@@ -9689,8 +9703,8 @@ Emacs shell interactive mode.
9689 9703
9690;;;*** 9704;;;***
9691 9705
9692;;;### (autoloads (eshell-test) "esh-test" "eshell/esh-test.el" (17994 9706;;;### (autoloads (eshell-test) "esh-test" "eshell/esh-test.el" (17842
9693;;;;;; 6715)) 9707;;;;;; 54411))
9694;;; Generated autoloads from eshell/esh-test.el 9708;;; Generated autoloads from eshell/esh-test.el
9695 9709
9696(autoload (quote eshell-test) "esh-test" "\ 9710(autoload (quote eshell-test) "esh-test" "\
@@ -9701,7 +9715,7 @@ Test Eshell to verify that it works as expected.
9701;;;*** 9715;;;***
9702 9716
9703;;;### (autoloads (eshell-report-bug eshell-command-result eshell-command 9717;;;### (autoloads (eshell-report-bug eshell-command-result eshell-command
9704;;;;;; eshell) "eshell" "eshell/eshell.el" (17994 6715)) 9718;;;;;; eshell) "eshell" "eshell/eshell.el" (17842 54411))
9705;;; Generated autoloads from eshell/eshell.el 9719;;; Generated autoloads from eshell/eshell.el
9706 9720
9707(autoload (quote eshell) "eshell" "\ 9721(autoload (quote eshell) "eshell" "\
@@ -9747,7 +9761,7 @@ Please include any configuration details that might be involved.
9747;;;;;; visit-tags-table tags-table-mode find-tag-default-function 9761;;;;;; visit-tags-table tags-table-mode find-tag-default-function
9748;;;;;; find-tag-hook tags-add-tables tags-compression-info-list 9762;;;;;; find-tag-hook tags-add-tables tags-compression-info-list
9749;;;;;; tags-table-list tags-case-fold-search) "etags" "progmodes/etags.el" 9763;;;;;; tags-table-list tags-case-fold-search) "etags" "progmodes/etags.el"
9750;;;;;; (17994 6715)) 9764;;;;;; (17842 56333))
9751;;; Generated autoloads from progmodes/etags.el 9765;;; Generated autoloads from progmodes/etags.el
9752 9766
9753(defvar tags-file-name nil "\ 9767(defvar tags-file-name nil "\
@@ -10049,7 +10063,7 @@ for \\[find-tag] (which see).
10049;;;;;; ethio-fidel-to-sera-buffer ethio-fidel-to-sera-region ethio-sera-to-fidel-marker 10063;;;;;; ethio-fidel-to-sera-buffer ethio-fidel-to-sera-region ethio-sera-to-fidel-marker
10050;;;;;; ethio-sera-to-fidel-mail ethio-sera-to-fidel-mail-or-marker 10064;;;;;; ethio-sera-to-fidel-mail ethio-sera-to-fidel-mail-or-marker
10051;;;;;; ethio-sera-to-fidel-buffer ethio-sera-to-fidel-region setup-ethiopic-environment-internal) 10065;;;;;; ethio-sera-to-fidel-buffer ethio-sera-to-fidel-region setup-ethiopic-environment-internal)
10052;;;;;; "ethio-util" "language/ethio-util.el" (17994 6715)) 10066;;;;;; "ethio-util" "language/ethio-util.el" (17842 58278))
10053;;; Generated autoloads from language/ethio-util.el 10067;;; Generated autoloads from language/ethio-util.el
10054 10068
10055(autoload (quote setup-ethiopic-environment-internal) "ethio-util" "\ 10069(autoload (quote setup-ethiopic-environment-internal) "ethio-util" "\
@@ -10244,7 +10258,7 @@ Transcribe Ethiopic characters in ASCII depending on the file extension.
10244 10258
10245;;;### (autoloads (eudc-load-eudc eudc-query-form eudc-expand-inline 10259;;;### (autoloads (eudc-load-eudc eudc-query-form eudc-expand-inline
10246;;;;;; eudc-get-phone eudc-get-email eudc-set-server) "eudc" "net/eudc.el" 10260;;;;;; eudc-get-phone eudc-get-email eudc-set-server) "eudc" "net/eudc.el"
10247;;;;;; (17994 6715)) 10261;;;;;; (17842 55218))
10248;;; Generated autoloads from net/eudc.el 10262;;; Generated autoloads from net/eudc.el
10249 10263
10250(autoload (quote eudc-set-server) "eudc" "\ 10264(autoload (quote eudc-set-server) "eudc" "\
@@ -10300,7 +10314,7 @@ This does nothing except loading eudc by autoload side-effect.
10300 10314
10301;;;### (autoloads (eudc-display-jpeg-as-button eudc-display-jpeg-inline 10315;;;### (autoloads (eudc-display-jpeg-as-button eudc-display-jpeg-inline
10302;;;;;; eudc-display-sound eudc-display-mail eudc-display-url eudc-display-generic-binary) 10316;;;;;; eudc-display-sound eudc-display-mail eudc-display-url eudc-display-generic-binary)
10303;;;;;; "eudc-bob" "net/eudc-bob.el" (17994 6715)) 10317;;;;;; "eudc-bob" "net/eudc-bob.el" (17842 55218))
10304;;; Generated autoloads from net/eudc-bob.el 10318;;; Generated autoloads from net/eudc-bob.el
10305 10319
10306(autoload (quote eudc-display-generic-binary) "eudc-bob" "\ 10320(autoload (quote eudc-display-generic-binary) "eudc-bob" "\
@@ -10336,7 +10350,7 @@ Display a button for the JPEG DATA.
10336;;;*** 10350;;;***
10337 10351
10338;;;### (autoloads (eudc-try-bbdb-insert eudc-insert-record-at-point-into-bbdb) 10352;;;### (autoloads (eudc-try-bbdb-insert eudc-insert-record-at-point-into-bbdb)
10339;;;;;; "eudc-export" "net/eudc-export.el" (17994 6715)) 10353;;;;;; "eudc-export" "net/eudc-export.el" (17842 55218))
10340;;; Generated autoloads from net/eudc-export.el 10354;;; Generated autoloads from net/eudc-export.el
10341 10355
10342(autoload (quote eudc-insert-record-at-point-into-bbdb) "eudc-export" "\ 10356(autoload (quote eudc-insert-record-at-point-into-bbdb) "eudc-export" "\
@@ -10353,7 +10367,7 @@ Call `eudc-insert-record-at-point-into-bbdb' if on a record.
10353;;;*** 10367;;;***
10354 10368
10355;;;### (autoloads (eudc-edit-hotlist) "eudc-hotlist" "net/eudc-hotlist.el" 10369;;;### (autoloads (eudc-edit-hotlist) "eudc-hotlist" "net/eudc-hotlist.el"
10356;;;;;; (17994 6715)) 10370;;;;;; (17842 55218))
10357;;; Generated autoloads from net/eudc-hotlist.el 10371;;; Generated autoloads from net/eudc-hotlist.el
10358 10372
10359(autoload (quote eudc-edit-hotlist) "eudc-hotlist" "\ 10373(autoload (quote eudc-edit-hotlist) "eudc-hotlist" "\
@@ -10363,8 +10377,8 @@ Edit the hotlist of directory servers in a specialized buffer.
10363 10377
10364;;;*** 10378;;;***
10365 10379
10366;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (17994 10380;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (17933
10367;;;;;; 6715)) 10381;;;;;; 14283))
10368;;; Generated autoloads from emacs-lisp/ewoc.el 10382;;; Generated autoloads from emacs-lisp/ewoc.el
10369 10383
10370(autoload (quote ewoc-create) "ewoc" "\ 10384(autoload (quote ewoc-create) "ewoc" "\
@@ -10393,7 +10407,7 @@ fourth arg NOSEP non-nil inhibits this.
10393;;;### (autoloads (executable-make-buffer-file-executable-if-script-p 10407;;;### (autoloads (executable-make-buffer-file-executable-if-script-p
10394;;;;;; executable-self-display executable-set-magic executable-interpret 10408;;;;;; executable-self-display executable-set-magic executable-interpret
10395;;;;;; executable-command-find-posix-p) "executable" "progmodes/executable.el" 10409;;;;;; executable-command-find-posix-p) "executable" "progmodes/executable.el"
10396;;;;;; (17994 6715)) 10410;;;;;; (17842 56333))
10397;;; Generated autoloads from progmodes/executable.el 10411;;; Generated autoloads from progmodes/executable.el
10398 10412
10399(autoload (quote executable-command-find-posix-p) "executable" "\ 10413(autoload (quote executable-command-find-posix-p) "executable" "\
@@ -10436,7 +10450,7 @@ file modes.
10436 10450
10437;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot 10451;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot
10438;;;;;; expand-abbrev-hook expand-add-abbrevs) "expand" "expand.el" 10452;;;;;; expand-abbrev-hook expand-add-abbrevs) "expand" "expand.el"
10439;;;;;; (17994 6715)) 10453;;;;;; (17925 52793))
10440;;; Generated autoloads from expand.el 10454;;; Generated autoloads from expand.el
10441 10455
10442(autoload (quote expand-add-abbrevs) "expand" "\ 10456(autoload (quote expand-add-abbrevs) "expand" "\
@@ -10485,7 +10499,7 @@ This is used only in conjunction with `expand-add-abbrevs'.
10485 10499
10486;;;*** 10500;;;***
10487 10501
10488;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (17994 6715)) 10502;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (17842 56333))
10489;;; Generated autoloads from progmodes/f90.el 10503;;; Generated autoloads from progmodes/f90.el
10490 10504
10491(autoload (quote f90-mode) "f90" "\ 10505(autoload (quote f90-mode) "f90" "\
@@ -10552,7 +10566,7 @@ with no args, if that value is non-nil.
10552;;;;;; facemenu-remove-all facemenu-remove-face-props facemenu-set-read-only 10566;;;;;; facemenu-remove-all facemenu-remove-face-props facemenu-set-read-only
10553;;;;;; facemenu-set-intangible facemenu-set-invisible facemenu-set-face-from-menu 10567;;;;;; facemenu-set-intangible facemenu-set-invisible facemenu-set-face-from-menu
10554;;;;;; facemenu-set-background facemenu-set-foreground facemenu-set-face) 10568;;;;;; facemenu-set-background facemenu-set-foreground facemenu-set-face)
10555;;;;;; "facemenu" "facemenu.el" (17994 6715)) 10569;;;;;; "facemenu" "facemenu.el" (17842 58279))
10556;;; Generated autoloads from facemenu.el 10570;;; Generated autoloads from facemenu.el
10557 (define-key global-map "\M-o" 'facemenu-keymap) 10571 (define-key global-map "\M-o" 'facemenu-keymap)
10558 (autoload 'facemenu-keymap "facemenu" "Keymap for face-changing commands." t 'keymap) 10572 (autoload 'facemenu-keymap "facemenu" "Keymap for face-changing commands." t 'keymap)
@@ -10761,7 +10775,7 @@ Unconditionally turn on Fast Lock mode.
10761 10775
10762;;;### (autoloads (feedmail-queue-reminder feedmail-run-the-queue 10776;;;### (autoloads (feedmail-queue-reminder feedmail-run-the-queue
10763;;;;;; feedmail-run-the-queue-global-prompt feedmail-run-the-queue-no-prompts 10777;;;;;; feedmail-run-the-queue-global-prompt feedmail-run-the-queue-no-prompts
10764;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (17994 6715)) 10778;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (17888 29839))
10765;;; Generated autoloads from mail/feedmail.el 10779;;; Generated autoloads from mail/feedmail.el
10766 10780
10767(autoload (quote feedmail-send-it) "feedmail" "\ 10781(autoload (quote feedmail-send-it) "feedmail" "\
@@ -10815,7 +10829,7 @@ you can set `feedmail-queue-reminder-alist' to nil.
10815;;;*** 10829;;;***
10816 10830
10817;;;### (autoloads (ffap-bindings dired-at-point ffap-at-mouse ffap-menu 10831;;;### (autoloads (ffap-bindings dired-at-point ffap-at-mouse ffap-menu
10818;;;;;; find-file-at-point ffap-next) "ffap" "ffap.el" (17994 6715)) 10832;;;;;; find-file-at-point ffap-next) "ffap" "ffap.el" (17943 4602))
10819;;; Generated autoloads from ffap.el 10833;;; Generated autoloads from ffap.el
10820 10834
10821(autoload (quote ffap-next) "ffap" "\ 10835(autoload (quote ffap-next) "ffap" "\
@@ -10874,7 +10888,7 @@ Evaluate the forms in variable `ffap-bindings'.
10874;;;### (autoloads (file-cache-minibuffer-complete file-cache-add-directory-recursively 10888;;;### (autoloads (file-cache-minibuffer-complete file-cache-add-directory-recursively
10875;;;;;; file-cache-add-directory-using-locate file-cache-add-directory-using-find 10889;;;;;; file-cache-add-directory-using-locate file-cache-add-directory-using-find
10876;;;;;; file-cache-add-file file-cache-add-directory-list file-cache-add-directory) 10890;;;;;; file-cache-add-file file-cache-add-directory-list file-cache-add-directory)
10877;;;;;; "filecache" "filecache.el" (17994 6715)) 10891;;;;;; "filecache" "filecache.el" (17842 58279))
10878;;; Generated autoloads from filecache.el 10892;;; Generated autoloads from filecache.el
10879 10893
10880(autoload (quote file-cache-add-directory) "filecache" "\ 10894(autoload (quote file-cache-add-directory) "filecache" "\
@@ -10933,8 +10947,8 @@ the name is considered already unique; only the second substitution
10933 10947
10934;;;*** 10948;;;***
10935 10949
10936;;;### (autoloads (filesets-init) "filesets" "filesets.el" (17994 10950;;;### (autoloads (filesets-init) "filesets" "filesets.el" (17842
10937;;;;;; 6715)) 10951;;;;;; 58279))
10938;;; Generated autoloads from filesets.el 10952;;; Generated autoloads from filesets.el
10939 10953
10940(autoload (quote filesets-init) "filesets" "\ 10954(autoload (quote filesets-init) "filesets" "\
@@ -10945,7 +10959,7 @@ Set up hooks, load the cache file -- if existing -- and build the menu.
10945 10959
10946;;;*** 10960;;;***
10947 10961
10948;;;### (autoloads nil "fill" "textmodes/fill.el" (17994 6726)) 10962;;;### (autoloads nil "fill" "textmodes/fill.el" (18007 39658))
10949;;; Generated autoloads from textmodes/fill.el 10963;;; Generated autoloads from textmodes/fill.el
10950(put 'colon-double-space 'safe-local-variable 'booleanp) 10964(put 'colon-double-space 'safe-local-variable 'booleanp)
10951 10965
@@ -10953,7 +10967,7 @@ Set up hooks, load the cache file -- if existing -- and build the menu.
10953 10967
10954;;;### (autoloads (find-grep-dired find-name-dired find-dired find-grep-options 10968;;;### (autoloads (find-grep-dired find-name-dired find-dired find-grep-options
10955;;;;;; find-ls-subdir-switches find-ls-option) "find-dired" "find-dired.el" 10969;;;;;; find-ls-subdir-switches find-ls-option) "find-dired" "find-dired.el"
10956;;;;;; (17994 6729)) 10970;;;;;; (17992 30877))
10957;;; Generated autoloads from find-dired.el 10971;;; Generated autoloads from find-dired.el
10958 10972
10959(defvar find-ls-option (if (eq system-type (quote berkeley-unix)) (quote ("-ls" . "-gilsb")) (quote ("-exec ls -ld {} \\;" . "-ld"))) "\ 10973(defvar find-ls-option (if (eq system-type (quote berkeley-unix)) (quote ("-ls" . "-gilsb")) (quote ("-exec ls -ld {} \\;" . "-ld"))) "\
@@ -11014,7 +11028,7 @@ Thus ARG can also contain additional grep options.
11014 11028
11015;;;### (autoloads (ff-mouse-find-other-file-other-window ff-mouse-find-other-file 11029;;;### (autoloads (ff-mouse-find-other-file-other-window ff-mouse-find-other-file
11016;;;;;; ff-find-other-file ff-get-other-file) "find-file" "find-file.el" 11030;;;;;; ff-find-other-file ff-get-other-file) "find-file" "find-file.el"
11017;;;;;; (17994 6715)) 11031;;;;;; (17842 58279))
11018;;; Generated autoloads from find-file.el 11032;;; Generated autoloads from find-file.el
11019 11033
11020(defvar ff-special-constructs (quote (("^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]" lambda nil (buffer-substring (match-beginning 2) (match-end 2))))) "\ 11034(defvar ff-special-constructs (quote (("^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]" lambda nil (buffer-substring (match-beginning 2) (match-end 2))))) "\
@@ -11108,7 +11122,7 @@ Visit the file you click on in another window.
11108;;;;;; find-variable find-variable-noselect find-function-other-frame 11122;;;;;; find-variable find-variable-noselect find-function-other-frame
11109;;;;;; find-function-other-window find-function find-function-noselect 11123;;;;;; find-function-other-window find-function find-function-noselect
11110;;;;;; find-function-search-for-symbol find-library) "find-func" 11124;;;;;; find-function-search-for-symbol find-library) "find-func"
11111;;;;;; "emacs-lisp/find-func.el" (17994 6715)) 11125;;;;;; "emacs-lisp/find-func.el" (17842 54152))
11112;;; Generated autoloads from emacs-lisp/find-func.el 11126;;; Generated autoloads from emacs-lisp/find-func.el
11113 11127
11114(autoload (quote find-library) "find-func" "\ 11128(autoload (quote find-library) "find-func" "\
@@ -11262,7 +11276,7 @@ Define some key bindings for the find-function family of functions.
11262;;;*** 11276;;;***
11263 11277
11264;;;### (autoloads (find-lisp-find-dired-filter find-lisp-find-dired-subdirectories 11278;;;### (autoloads (find-lisp-find-dired-filter find-lisp-find-dired-subdirectories
11265;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (17994 6715)) 11279;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (17893 23802))
11266;;; Generated autoloads from find-lisp.el 11280;;; Generated autoloads from find-lisp.el
11267 11281
11268(autoload (quote find-lisp-find-dired) "find-lisp" "\ 11282(autoload (quote find-lisp-find-dired) "find-lisp" "\
@@ -11283,7 +11297,7 @@ Change the filter on a find-lisp-find-dired buffer to REGEXP.
11283;;;*** 11297;;;***
11284 11298
11285;;;### (autoloads (finder-by-keyword finder-commentary finder-list-keywords) 11299;;;### (autoloads (finder-by-keyword finder-commentary finder-list-keywords)
11286;;;;;; "finder" "finder.el" (17994 6715)) 11300;;;;;; "finder" "finder.el" (17842 58279))
11287;;; Generated autoloads from finder.el 11301;;; Generated autoloads from finder.el
11288 11302
11289(autoload (quote finder-list-keywords) "finder" "\ 11303(autoload (quote finder-list-keywords) "finder" "\
@@ -11305,7 +11319,7 @@ Find packages matching a given keyword.
11305;;;*** 11319;;;***
11306 11320
11307;;;### (autoloads (enable-flow-control-on enable-flow-control) "flow-ctrl" 11321;;;### (autoloads (enable-flow-control-on enable-flow-control) "flow-ctrl"
11308;;;;;; "flow-ctrl.el" (17994 6715)) 11322;;;;;; "flow-ctrl.el" (17842 58279))
11309;;; Generated autoloads from flow-ctrl.el 11323;;; Generated autoloads from flow-ctrl.el
11310 11324
11311(autoload (quote enable-flow-control) "flow-ctrl" "\ 11325(autoload (quote enable-flow-control) "flow-ctrl" "\
@@ -11327,7 +11341,7 @@ to get the effect of a C-q.
11327;;;*** 11341;;;***
11328 11342
11329;;;### (autoloads (fill-flowed fill-flowed-encode) "flow-fill" "gnus/flow-fill.el" 11343;;;### (autoloads (fill-flowed fill-flowed-encode) "flow-fill" "gnus/flow-fill.el"
11330;;;;;; (17994 6715)) 11344;;;;;; (17842 54741))
11331;;; Generated autoloads from gnus/flow-fill.el 11345;;; Generated autoloads from gnus/flow-fill.el
11332 11346
11333(autoload (quote fill-flowed-encode) "flow-fill" "\ 11347(autoload (quote fill-flowed-encode) "flow-fill" "\
@@ -11343,7 +11357,7 @@ Not documented
11343;;;*** 11357;;;***
11344 11358
11345;;;### (autoloads (flymake-mode-off flymake-mode-on flymake-mode) 11359;;;### (autoloads (flymake-mode-off flymake-mode-on flymake-mode)
11346;;;;;; "flymake" "progmodes/flymake.el" (17994 6715)) 11360;;;;;; "flymake" "progmodes/flymake.el" (17934 27588))
11347;;; Generated autoloads from progmodes/flymake.el 11361;;; Generated autoloads from progmodes/flymake.el
11348 11362
11349(autoload (quote flymake-mode) "flymake" "\ 11363(autoload (quote flymake-mode) "flymake" "\
@@ -11367,7 +11381,7 @@ Turn flymake mode off.
11367 11381
11368;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off 11382;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off
11369;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode) 11383;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode)
11370;;;;;; "flyspell" "textmodes/flyspell.el" (17994 6726)) 11384;;;;;; "flyspell" "textmodes/flyspell.el" (18006 55797))
11371;;; Generated autoloads from textmodes/flyspell.el 11385;;; Generated autoloads from textmodes/flyspell.el
11372 11386
11373(autoload (quote flyspell-prog-mode) "flyspell" "\ 11387(autoload (quote flyspell-prog-mode) "flyspell" "\
@@ -11436,7 +11450,7 @@ Flyspell whole buffer.
11436 11450
11437;;;### (autoloads (follow-delete-other-windows-and-split follow-mode 11451;;;### (autoloads (follow-delete-other-windows-and-split follow-mode
11438;;;;;; turn-off-follow-mode turn-on-follow-mode) "follow" "follow.el" 11452;;;;;; turn-off-follow-mode turn-on-follow-mode) "follow" "follow.el"
11439;;;;;; (17994 6715)) 11453;;;;;; (17842 58279))
11440;;; Generated autoloads from follow.el 11454;;; Generated autoloads from follow.el
11441 11455
11442(autoload (quote turn-on-follow-mode) "follow" "\ 11456(autoload (quote turn-on-follow-mode) "follow" "\
@@ -11510,8 +11524,8 @@ in your `~/.emacs' file, replacing [f7] by your favourite key:
11510 11524
11511;;;*** 11525;;;***
11512 11526
11513;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (17994 11527;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (17954
11514;;;;;; 6715)) 11528;;;;;; 24686))
11515;;; Generated autoloads from mail/footnote.el 11529;;; Generated autoloads from mail/footnote.el
11516 11530
11517(autoload (quote footnote-mode) "footnote" "\ 11531(autoload (quote footnote-mode) "footnote" "\
@@ -11532,7 +11546,7 @@ key binding
11532;;;*** 11546;;;***
11533 11547
11534;;;### (autoloads (forms-find-file-other-window forms-find-file forms-mode) 11548;;;### (autoloads (forms-find-file-other-window forms-find-file forms-mode)
11535;;;;;; "forms" "forms.el" (17994 6715)) 11549;;;;;; "forms" "forms.el" (17842 58279))
11536;;; Generated autoloads from forms.el 11550;;; Generated autoloads from forms.el
11537 11551
11538(autoload (quote forms-mode) "forms" "\ 11552(autoload (quote forms-mode) "forms" "\
@@ -11569,7 +11583,7 @@ Visit a file in Forms mode in other window.
11569;;;*** 11583;;;***
11570 11584
11571;;;### (autoloads (fortran-mode fortran-tab-mode-default) "fortran" 11585;;;### (autoloads (fortran-mode fortran-tab-mode-default) "fortran"
11572;;;;;; "progmodes/fortran.el" (17994 6715)) 11586;;;;;; "progmodes/fortran.el" (17842 56333))
11573;;; Generated autoloads from progmodes/fortran.el 11587;;; Generated autoloads from progmodes/fortran.el
11574 11588
11575(defvar fortran-tab-mode-default nil "\ 11589(defvar fortran-tab-mode-default nil "\
@@ -11655,7 +11669,7 @@ with no args, if that value is non-nil.
11655;;;*** 11669;;;***
11656 11670
11657;;;### (autoloads (fortune fortune-to-signature fortune-compile fortune-from-region 11671;;;### (autoloads (fortune fortune-to-signature fortune-compile fortune-from-region
11658;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (17994 6715)) 11672;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (17842 55395))
11659;;; Generated autoloads from play/fortune.el 11673;;; Generated autoloads from play/fortune.el
11660 11674
11661(autoload (quote fortune-add-fortune) "fortune" "\ 11675(autoload (quote fortune-add-fortune) "fortune" "\
@@ -11705,7 +11719,7 @@ and choose the directory as the fortune-file.
11705;;;*** 11719;;;***
11706 11720
11707;;;### (autoloads (gdb-enable-debug gdba) "gdb-ui" "progmodes/gdb-ui.el" 11721;;;### (autoloads (gdb-enable-debug gdba) "gdb-ui" "progmodes/gdb-ui.el"
11708;;;;;; (17994 6715)) 11722;;;;;; (17941 38806))
11709;;; Generated autoloads from progmodes/gdb-ui.el 11723;;; Generated autoloads from progmodes/gdb-ui.el
11710 11724
11711(autoload (quote gdba) "gdb-ui" "\ 11725(autoload (quote gdba) "gdb-ui" "\
@@ -11768,8 +11782,8 @@ Non-nil means record the process input and output in `gdb-debug-log'.")
11768;;;*** 11782;;;***
11769 11783
11770;;;### (autoloads (generic-make-keywords-list generic-mode generic-mode-internal 11784;;;### (autoloads (generic-make-keywords-list generic-mode generic-mode-internal
11771;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (17994 11785;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (17842
11772;;;;;; 6715)) 11786;;;;;; 54152))
11773;;; Generated autoloads from emacs-lisp/generic.el 11787;;; Generated autoloads from emacs-lisp/generic.el
11774 11788
11775(defvar generic-mode-list nil "\ 11789(defvar generic-mode-list nil "\
@@ -11844,7 +11858,7 @@ regular expression that can be used as an element of
11844;;;*** 11858;;;***
11845 11859
11846;;;### (autoloads (glasses-mode) "glasses" "progmodes/glasses.el" 11860;;;### (autoloads (glasses-mode) "glasses" "progmodes/glasses.el"
11847;;;;;; (17994 6715)) 11861;;;;;; (17842 56333))
11848;;; Generated autoloads from progmodes/glasses.el 11862;;; Generated autoloads from progmodes/glasses.el
11849 11863
11850(autoload (quote glasses-mode) "glasses" "\ 11864(autoload (quote glasses-mode) "glasses" "\
@@ -11857,7 +11871,7 @@ at places they belong to.
11857;;;*** 11871;;;***
11858 11872
11859;;;### (autoloads (gmm-tool-bar-from-list gmm-widget-p gmm-error 11873;;;### (autoloads (gmm-tool-bar-from-list gmm-widget-p gmm-error
11860;;;;;; gmm-message) "gmm-utils" "gnus/gmm-utils.el" (17994 6715)) 11874;;;;;; gmm-message) "gmm-utils" "gnus/gmm-utils.el" (17934 27588))
11861;;; Generated autoloads from gnus/gmm-utils.el 11875;;; Generated autoloads from gnus/gmm-utils.el
11862 11876
11863(autoload (quote gmm-message) "gmm-utils" "\ 11877(autoload (quote gmm-message) "gmm-utils" "\
@@ -11904,7 +11918,7 @@ DEFAULT-MAP specifies the default key map for ICON-LIST.
11904;;;*** 11918;;;***
11905 11919
11906;;;### (autoloads (gnus gnus-other-frame gnus-slave gnus-no-server 11920;;;### (autoloads (gnus gnus-other-frame gnus-slave gnus-no-server
11907;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (17994 6715)) 11921;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (17842 54741))
11908;;; Generated autoloads from gnus/gnus.el 11922;;; Generated autoloads from gnus/gnus.el
11909(when (fboundp 'custom-autoload) 11923(when (fboundp 'custom-autoload)
11910 (custom-autoload 'gnus-select-method "gnus")) 11924 (custom-autoload 'gnus-select-method "gnus"))
@@ -11957,7 +11971,7 @@ prompt the user for the name of an NNTP server to use.
11957;;;;;; gnus-agent-get-undownloaded-list gnus-agent-delete-group 11971;;;;;; gnus-agent-get-undownloaded-list gnus-agent-delete-group
11958;;;;;; gnus-agent-rename-group gnus-agent-possibly-save-gcc gnus-agentize 11972;;;;;; gnus-agent-rename-group gnus-agent-possibly-save-gcc gnus-agentize
11959;;;;;; gnus-slave-unplugged gnus-plugged gnus-unplugged) "gnus-agent" 11973;;;;;; gnus-slave-unplugged gnus-plugged gnus-unplugged) "gnus-agent"
11960;;;;;; "gnus/gnus-agent.el" (17994 6715)) 11974;;;;;; "gnus/gnus-agent.el" (17842 54741))
11961;;; Generated autoloads from gnus/gnus-agent.el 11975;;; Generated autoloads from gnus/gnus-agent.el
11962 11976
11963(autoload (quote gnus-unplugged) "gnus-agent" "\ 11977(autoload (quote gnus-unplugged) "gnus-agent" "\
@@ -12048,7 +12062,7 @@ If CLEAN, obsolete (ignore).
12048;;;*** 12062;;;***
12049 12063
12050;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el" 12064;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el"
12051;;;;;; (18000 24325)) 12065;;;;;; (17960 49045))
12052;;; Generated autoloads from gnus/gnus-art.el 12066;;; Generated autoloads from gnus/gnus-art.el
12053 12067
12054(autoload (quote gnus-article-prepare-display) "gnus-art" "\ 12068(autoload (quote gnus-article-prepare-display) "gnus-art" "\
@@ -12059,7 +12073,7 @@ Make the current buffer look like a nice article.
12059;;;*** 12073;;;***
12060 12074
12061;;;### (autoloads (gnus-audio-play) "gnus-audio" "gnus/gnus-audio.el" 12075;;;### (autoloads (gnus-audio-play) "gnus-audio" "gnus/gnus-audio.el"
12062;;;;;; (17994 6715)) 12076;;;;;; (17842 54741))
12063;;; Generated autoloads from gnus/gnus-audio.el 12077;;; Generated autoloads from gnus/gnus-audio.el
12064 12078
12065(autoload (quote gnus-audio-play) "gnus-audio" "\ 12079(autoload (quote gnus-audio-play) "gnus-audio" "\
@@ -12071,8 +12085,8 @@ Play a sound FILE through the speaker.
12071 12085
12072;;;### (autoloads (gnus-cache-delete-group gnus-cache-rename-group 12086;;;### (autoloads (gnus-cache-delete-group gnus-cache-rename-group
12073;;;;;; gnus-cache-generate-nov-databases gnus-cache-generate-active 12087;;;;;; gnus-cache-generate-nov-databases gnus-cache-generate-active
12074;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (17994 12088;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (17842
12075;;;;;; 6715)) 12089;;;;;; 54741))
12076;;; Generated autoloads from gnus/gnus-cache.el 12090;;; Generated autoloads from gnus/gnus-cache.el
12077 12091
12078(autoload (quote gnus-jog-cache) "gnus-cache" "\ 12092(autoload (quote gnus-jog-cache) "gnus-cache" "\
@@ -12114,7 +12128,7 @@ supported.
12114;;;*** 12128;;;***
12115 12129
12116;;;### (autoloads (gnus-delay-initialize gnus-delay-send-queue gnus-delay-article) 12130;;;### (autoloads (gnus-delay-initialize gnus-delay-send-queue gnus-delay-article)
12117;;;;;; "gnus-delay" "gnus/gnus-delay.el" (17994 6715)) 12131;;;;;; "gnus-delay" "gnus/gnus-delay.el" (17842 54741))
12118;;; Generated autoloads from gnus/gnus-delay.el 12132;;; Generated autoloads from gnus/gnus-delay.el
12119 12133
12120(autoload (quote gnus-delay-article) "gnus-delay" "\ 12134(autoload (quote gnus-delay-article) "gnus-delay" "\
@@ -12150,7 +12164,7 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil.
12150;;;*** 12164;;;***
12151 12165
12152;;;### (autoloads (gnus-user-format-function-D gnus-user-format-function-d) 12166;;;### (autoloads (gnus-user-format-function-D gnus-user-format-function-d)
12153;;;;;; "gnus-diary" "gnus/gnus-diary.el" (17994 6741)) 12167;;;;;; "gnus-diary" "gnus/gnus-diary.el" (17992 30878))
12154;;; Generated autoloads from gnus/gnus-diary.el 12168;;; Generated autoloads from gnus/gnus-diary.el
12155 12169
12156(autoload (quote gnus-user-format-function-d) "gnus-diary" "\ 12170(autoload (quote gnus-user-format-function-d) "gnus-diary" "\
@@ -12166,7 +12180,7 @@ Not documented
12166;;;*** 12180;;;***
12167 12181
12168;;;### (autoloads (turn-on-gnus-dired-mode) "gnus-dired" "gnus/gnus-dired.el" 12182;;;### (autoloads (turn-on-gnus-dired-mode) "gnus-dired" "gnus/gnus-dired.el"
12169;;;;;; (17994 6715)) 12183;;;;;; (17842 54741))
12170;;; Generated autoloads from gnus/gnus-dired.el 12184;;; Generated autoloads from gnus/gnus-dired.el
12171 12185
12172(autoload (quote turn-on-gnus-dired-mode) "gnus-dired" "\ 12186(autoload (quote turn-on-gnus-dired-mode) "gnus-dired" "\
@@ -12177,7 +12191,7 @@ Convenience method to turn on gnus-dired-mode.
12177;;;*** 12191;;;***
12178 12192
12179;;;### (autoloads (gnus-draft-reminder) "gnus-draft" "gnus/gnus-draft.el" 12193;;;### (autoloads (gnus-draft-reminder) "gnus-draft" "gnus/gnus-draft.el"
12180;;;;;; (17994 6715)) 12194;;;;;; (17842 54741))
12181;;; Generated autoloads from gnus/gnus-draft.el 12195;;; Generated autoloads from gnus/gnus-draft.el
12182 12196
12183(autoload (quote gnus-draft-reminder) "gnus-draft" "\ 12197(autoload (quote gnus-draft-reminder) "gnus-draft" "\
@@ -12189,8 +12203,8 @@ Reminder user if there are unsent drafts.
12189 12203
12190;;;### (autoloads (gnus-convert-png-to-face gnus-convert-face-to-png 12204;;;### (autoloads (gnus-convert-png-to-face gnus-convert-face-to-png
12191;;;;;; gnus-face-from-file gnus-x-face-from-file gnus-insert-random-x-face-header 12205;;;;;; gnus-face-from-file gnus-x-face-from-file gnus-insert-random-x-face-header
12192;;;;;; gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (17994 12206;;;;;; gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (17842
12193;;;;;; 6715)) 12207;;;;;; 54741))
12194;;; Generated autoloads from gnus/gnus-fun.el 12208;;; Generated autoloads from gnus/gnus-fun.el
12195 12209
12196(autoload (quote gnus-random-x-face) "gnus-fun" "\ 12210(autoload (quote gnus-random-x-face) "gnus-fun" "\
@@ -12229,7 +12243,7 @@ FILE should be a PNG file that's 48x48 and smaller than or equal to
12229;;;*** 12243;;;***
12230 12244
12231;;;### (autoloads (gnus-fetch-group-other-frame gnus-fetch-group) 12245;;;### (autoloads (gnus-fetch-group-other-frame gnus-fetch-group)
12232;;;;;; "gnus-group" "gnus/gnus-group.el" (17994 6715)) 12246;;;;;; "gnus-group" "gnus/gnus-group.el" (17842 54741))
12233;;; Generated autoloads from gnus/gnus-group.el 12247;;; Generated autoloads from gnus/gnus-group.el
12234 12248
12235(autoload (quote gnus-fetch-group) "gnus-group" "\ 12249(autoload (quote gnus-fetch-group) "gnus-group" "\
@@ -12246,7 +12260,7 @@ Pop up a frame and enter GROUP.
12246;;;*** 12260;;;***
12247 12261
12248;;;### (autoloads (gnus-batch-score) "gnus-kill" "gnus/gnus-kill.el" 12262;;;### (autoloads (gnus-batch-score) "gnus-kill" "gnus/gnus-kill.el"
12249;;;;;; (17994 6715)) 12263;;;;;; (17842 54741))
12250;;; Generated autoloads from gnus/gnus-kill.el 12264;;; Generated autoloads from gnus/gnus-kill.el
12251 12265
12252(defalias (quote gnus-batch-kill) (quote gnus-batch-score)) 12266(defalias (quote gnus-batch-kill) (quote gnus-batch-score))
@@ -12261,7 +12275,7 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score
12261 12275
12262;;;### (autoloads (gnus-mailing-list-mode gnus-mailing-list-insinuate 12276;;;### (autoloads (gnus-mailing-list-mode gnus-mailing-list-insinuate
12263;;;;;; turn-on-gnus-mailing-list-mode) "gnus-ml" "gnus/gnus-ml.el" 12277;;;;;; turn-on-gnus-mailing-list-mode) "gnus-ml" "gnus/gnus-ml.el"
12264;;;;;; (17994 6715)) 12278;;;;;; (17842 54741))
12265;;; Generated autoloads from gnus/gnus-ml.el 12279;;; Generated autoloads from gnus/gnus-ml.el
12266 12280
12267(autoload (quote turn-on-gnus-mailing-list-mode) "gnus-ml" "\ 12281(autoload (quote turn-on-gnus-mailing-list-mode) "gnus-ml" "\
@@ -12286,7 +12300,7 @@ Minor mode for providing mailing-list commands.
12286 12300
12287;;;### (autoloads (gnus-group-split-fancy gnus-group-split gnus-group-split-update 12301;;;### (autoloads (gnus-group-split-fancy gnus-group-split gnus-group-split-update
12288;;;;;; gnus-group-split-setup) "gnus-mlspl" "gnus/gnus-mlspl.el" 12302;;;;;; gnus-group-split-setup) "gnus-mlspl" "gnus/gnus-mlspl.el"
12289;;;;;; (17994 6715)) 12303;;;;;; (17842 54741))
12290;;; Generated autoloads from gnus/gnus-mlspl.el 12304;;; Generated autoloads from gnus/gnus-mlspl.el
12291 12305
12292(autoload (quote gnus-group-split-setup) "gnus-mlspl" "\ 12306(autoload (quote gnus-group-split-setup) "gnus-mlspl" "\
@@ -12387,7 +12401,7 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns:
12387;;;*** 12401;;;***
12388 12402
12389;;;### (autoloads (gnus-change-server) "gnus-move" "gnus/gnus-move.el" 12403;;;### (autoloads (gnus-change-server) "gnus-move" "gnus/gnus-move.el"
12390;;;;;; (17994 6715)) 12404;;;;;; (17842 54741))
12391;;; Generated autoloads from gnus/gnus-move.el 12405;;; Generated autoloads from gnus/gnus-move.el
12392 12406
12393(autoload (quote gnus-change-server) "gnus-move" "\ 12407(autoload (quote gnus-change-server) "gnus-move" "\
@@ -12399,7 +12413,7 @@ Update the .newsrc.eld file to reflect the change of nntp server.
12399;;;*** 12413;;;***
12400 12414
12401;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail) 12415;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail)
12402;;;;;; "gnus-msg" "gnus/gnus-msg.el" (17994 6715)) 12416;;;;;; "gnus-msg" "gnus/gnus-msg.el" (17949 41467))
12403;;; Generated autoloads from gnus/gnus-msg.el 12417;;; Generated autoloads from gnus/gnus-msg.el
12404 12418
12405(autoload (quote gnus-msg-mail) "gnus-msg" "\ 12419(autoload (quote gnus-msg-mail) "gnus-msg" "\
@@ -12424,7 +12438,7 @@ Like `message-reply'.
12424;;;*** 12438;;;***
12425 12439
12426;;;### (autoloads (gnus-nocem-load-cache gnus-nocem-scan-groups) 12440;;;### (autoloads (gnus-nocem-load-cache gnus-nocem-scan-groups)
12427;;;;;; "gnus-nocem" "gnus/gnus-nocem.el" (17994 6715)) 12441;;;;;; "gnus-nocem" "gnus/gnus-nocem.el" (17842 54741))
12428;;; Generated autoloads from gnus/gnus-nocem.el 12442;;; Generated autoloads from gnus/gnus-nocem.el
12429 12443
12430(autoload (quote gnus-nocem-scan-groups) "gnus-nocem" "\ 12444(autoload (quote gnus-nocem-scan-groups) "gnus-nocem" "\
@@ -12441,7 +12455,7 @@ Load the NoCeM cache.
12441 12455
12442;;;### (autoloads (gnus-treat-newsgroups-picon gnus-treat-mail-picon 12456;;;### (autoloads (gnus-treat-newsgroups-picon gnus-treat-mail-picon
12443;;;;;; gnus-treat-from-picon) "gnus-picon" "gnus/gnus-picon.el" 12457;;;;;; gnus-treat-from-picon) "gnus-picon" "gnus/gnus-picon.el"
12444;;;;;; (17994 6715)) 12458;;;;;; (17842 54741))
12445;;; Generated autoloads from gnus/gnus-picon.el 12459;;; Generated autoloads from gnus/gnus-picon.el
12446 12460
12447(autoload (quote gnus-treat-from-picon) "gnus-picon" "\ 12461(autoload (quote gnus-treat-from-picon) "gnus-picon" "\
@@ -12468,7 +12482,7 @@ If picons are already displayed, remove them.
12468;;;;;; gnus-sorted-nintersection gnus-sorted-range-intersection 12482;;;;;; gnus-sorted-nintersection gnus-sorted-range-intersection
12469;;;;;; gnus-sorted-intersection gnus-intersection gnus-sorted-complement 12483;;;;;; gnus-sorted-intersection gnus-intersection gnus-sorted-complement
12470;;;;;; gnus-sorted-ndifference gnus-sorted-difference) "gnus-range" 12484;;;;;; gnus-sorted-ndifference gnus-sorted-difference) "gnus-range"
12471;;;;;; "gnus/gnus-range.el" (17994 6715)) 12485;;;;;; "gnus/gnus-range.el" (17842 54741))
12472;;; Generated autoloads from gnus/gnus-range.el 12486;;; Generated autoloads from gnus/gnus-range.el
12473 12487
12474(autoload (quote gnus-sorted-difference) "gnus-range" "\ 12488(autoload (quote gnus-sorted-difference) "gnus-range" "\
@@ -12536,7 +12550,7 @@ Add NUM into sorted LIST by side effect.
12536;;;*** 12550;;;***
12537 12551
12538;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize) 12552;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize)
12539;;;;;; "gnus-registry" "gnus/gnus-registry.el" (17994 6715)) 12553;;;;;; "gnus-registry" "gnus/gnus-registry.el" (17934 27588))
12540;;; Generated autoloads from gnus/gnus-registry.el 12554;;; Generated autoloads from gnus/gnus-registry.el
12541 12555
12542(autoload (quote gnus-registry-initialize) "gnus-registry" "\ 12556(autoload (quote gnus-registry-initialize) "gnus-registry" "\
@@ -12552,8 +12566,8 @@ Install the registry hooks.
12552;;;*** 12566;;;***
12553 12567
12554;;;### (autoloads (gnus-sieve-article-add-rule gnus-sieve-generate 12568;;;### (autoloads (gnus-sieve-article-add-rule gnus-sieve-generate
12555;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (17994 12569;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (17842
12556;;;;;; 6715)) 12570;;;;;; 54741))
12557;;; Generated autoloads from gnus/gnus-sieve.el 12571;;; Generated autoloads from gnus/gnus-sieve.el
12558 12572
12559(autoload (quote gnus-sieve-update) "gnus-sieve" "\ 12573(autoload (quote gnus-sieve-update) "gnus-sieve" "\
@@ -12581,7 +12595,7 @@ Not documented
12581;;;*** 12595;;;***
12582 12596
12583;;;### (autoloads (gnus-batch-brew-soup) "gnus-soup" "gnus/gnus-soup.el" 12597;;;### (autoloads (gnus-batch-brew-soup) "gnus-soup" "gnus/gnus-soup.el"
12584;;;;;; (17994 6715)) 12598;;;;;; (17842 54741))
12585;;; Generated autoloads from gnus/gnus-soup.el 12599;;; Generated autoloads from gnus/gnus-soup.el
12586 12600
12587(autoload (quote gnus-batch-brew-soup) "gnus-soup" "\ 12601(autoload (quote gnus-batch-brew-soup) "gnus-soup" "\
@@ -12601,7 +12615,7 @@ Note -- this function hasn't been implemented yet.
12601;;;*** 12615;;;***
12602 12616
12603;;;### (autoloads (gnus-update-format) "gnus-spec" "gnus/gnus-spec.el" 12617;;;### (autoloads (gnus-update-format) "gnus-spec" "gnus/gnus-spec.el"
12604;;;;;; (17994 6715)) 12618;;;;;; (17842 54741))
12605;;; Generated autoloads from gnus/gnus-spec.el 12619;;; Generated autoloads from gnus/gnus-spec.el
12606 12620
12607(autoload (quote gnus-update-format) "gnus-spec" "\ 12621(autoload (quote gnus-update-format) "gnus-spec" "\
@@ -12612,8 +12626,8 @@ Update the format specification near point.
12612;;;*** 12626;;;***
12613 12627
12614;;;### (autoloads (gnus-fixup-nnimap-unread-after-getting-new-news 12628;;;### (autoloads (gnus-fixup-nnimap-unread-after-getting-new-news
12615;;;;;; gnus-declare-backend) "gnus-start" "gnus/gnus-start.el" (17994 12629;;;;;; gnus-declare-backend) "gnus-start" "gnus/gnus-start.el" (17842
12616;;;;;; 6715)) 12630;;;;;; 54741))
12617;;; Generated autoloads from gnus/gnus-start.el 12631;;; Generated autoloads from gnus/gnus-start.el
12618 12632
12619(autoload (quote gnus-declare-backend) "gnus-start" "\ 12633(autoload (quote gnus-declare-backend) "gnus-start" "\
@@ -12629,7 +12643,7 @@ Not documented
12629;;;*** 12643;;;***
12630 12644
12631;;;### (autoloads (gnus-add-configuration) "gnus-win" "gnus/gnus-win.el" 12645;;;### (autoloads (gnus-add-configuration) "gnus-win" "gnus/gnus-win.el"
12632;;;;;; (17994 6715)) 12646;;;;;; (17842 54741))
12633;;; Generated autoloads from gnus/gnus-win.el 12647;;; Generated autoloads from gnus/gnus-win.el
12634 12648
12635(autoload (quote gnus-add-configuration) "gnus-win" "\ 12649(autoload (quote gnus-add-configuration) "gnus-win" "\
@@ -12639,7 +12653,7 @@ Add the window configuration CONF to `gnus-buffer-configuration'.
12639 12653
12640;;;*** 12654;;;***
12641 12655
12642;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (17994 6715)) 12656;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (17941 38806))
12643;;; Generated autoloads from play/gomoku.el 12657;;; Generated autoloads from play/gomoku.el
12644 12658
12645(autoload (quote gomoku) "gomoku" "\ 12659(autoload (quote gomoku) "gomoku" "\
@@ -12666,7 +12680,7 @@ Use \\[describe-mode] for more info.
12666;;;*** 12680;;;***
12667 12681
12668;;;### (autoloads (goto-address goto-address-at-point) "goto-addr" 12682;;;### (autoloads (goto-address goto-address-at-point) "goto-addr"
12669;;;;;; "net/goto-addr.el" (17994 6715)) 12683;;;;;; "net/goto-addr.el" (17842 55218))
12670;;; Generated autoloads from net/goto-addr.el 12684;;; Generated autoloads from net/goto-addr.el
12671 12685
12672(define-obsolete-function-alias (quote goto-address-at-mouse) (quote goto-address-at-point) "22.1") 12686(define-obsolete-function-alias (quote goto-address-at-mouse) (quote goto-address-at-point) "22.1")
@@ -12696,7 +12710,7 @@ Also fontifies the buffer appropriately (see `goto-address-fontify-p' and
12696 12710
12697;;;### (autoloads (rgrep lgrep grep-find grep grep-mode grep-compute-defaults 12711;;;### (autoloads (rgrep lgrep grep-find grep grep-mode grep-compute-defaults
12698;;;;;; grep-process-setup grep-setup-hook grep-find-command grep-command 12712;;;;;; grep-process-setup grep-setup-hook grep-find-command grep-command
12699;;;;;; grep-window-height) "grep" "progmodes/grep.el" (17994 6715)) 12713;;;;;; grep-window-height) "grep" "progmodes/grep.el" (17944 20144))
12700;;; Generated autoloads from progmodes/grep.el 12714;;; Generated autoloads from progmodes/grep.el
12701 12715
12702(defvar grep-window-height nil "\ 12716(defvar grep-window-height nil "\
@@ -12836,7 +12850,7 @@ This command shares argument histories with \\[lgrep] and \\[grep-find].
12836 12850
12837;;;*** 12851;;;***
12838 12852
12839;;;### (autoloads (gs-load-image) "gs" "gs.el" (17994 6715)) 12853;;;### (autoloads (gs-load-image) "gs" "gs.el" (17842 58279))
12840;;; Generated autoloads from gs.el 12854;;; Generated autoloads from gs.el
12841 12855
12842(autoload (quote gs-load-image) "gs" "\ 12856(autoload (quote gs-load-image) "gs" "\
@@ -12850,7 +12864,7 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful.
12850;;;*** 12864;;;***
12851 12865
12852;;;### (autoloads (gdb-script-mode jdb pdb perldb xdb dbx sdb gdb) 12866;;;### (autoloads (gdb-script-mode jdb pdb perldb xdb dbx sdb gdb)
12853;;;;;; "gud" "progmodes/gud.el" (17994 6727)) 12867;;;;;; "gud" "progmodes/gud.el" (17992 30878))
12854;;; Generated autoloads from progmodes/gud.el 12868;;; Generated autoloads from progmodes/gud.el
12855 12869
12856(autoload (quote gdb) "gud" "\ 12870(autoload (quote gdb) "gud" "\
@@ -12933,8 +12947,8 @@ Major mode for editing GDB scripts
12933 12947
12934;;;*** 12948;;;***
12935 12949
12936;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (17994 12950;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (17842
12937;;;;;; 6715)) 12951;;;;;; 55395))
12938;;; Generated autoloads from play/handwrite.el 12952;;; Generated autoloads from play/handwrite.el
12939 12953
12940(autoload (quote handwrite) "handwrite" "\ 12954(autoload (quote handwrite) "handwrite" "\
@@ -12952,7 +12966,7 @@ Variables: handwrite-linespace (default 12)
12952;;;*** 12966;;;***
12953 12967
12954;;;### (autoloads (hanoi-unix-64 hanoi-unix hanoi) "hanoi" "play/hanoi.el" 12968;;;### (autoloads (hanoi-unix-64 hanoi-unix hanoi) "hanoi" "play/hanoi.el"
12955;;;;;; (17994 6715)) 12969;;;;;; (17742 40275))
12956;;; Generated autoloads from play/hanoi.el 12970;;; Generated autoloads from play/hanoi.el
12957 12971
12958(autoload (quote hanoi) "hanoi" "\ 12972(autoload (quote hanoi) "hanoi" "\
@@ -12982,7 +12996,7 @@ to be updated.
12982;;;### (autoloads (scan-buf-previous-region scan-buf-next-region 12996;;;### (autoloads (scan-buf-previous-region scan-buf-next-region
12983;;;;;; scan-buf-move-to-region help-at-pt-display-when-idle help-at-pt-set-timer 12997;;;;;; scan-buf-move-to-region help-at-pt-display-when-idle help-at-pt-set-timer
12984;;;;;; help-at-pt-cancel-timer display-local-help help-at-pt-kbd-string 12998;;;;;; help-at-pt-cancel-timer display-local-help help-at-pt-kbd-string
12985;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (17994 6715)) 12999;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (17842 58279))
12986;;; Generated autoloads from help-at-pt.el 13000;;; Generated autoloads from help-at-pt.el
12987 13001
12988(autoload (quote help-at-pt-string) "help-at-pt" "\ 13002(autoload (quote help-at-pt-string) "help-at-pt" "\
@@ -13112,7 +13126,7 @@ different regions. With numeric argument ARG, behaves like
13112;;;### (autoloads (describe-categories describe-syntax describe-variable 13126;;;### (autoloads (describe-categories describe-syntax describe-variable
13113;;;;;; variable-at-point describe-function-1 describe-simplify-lib-file-name 13127;;;;;; variable-at-point describe-function-1 describe-simplify-lib-file-name
13114;;;;;; help-C-file-name describe-function) "help-fns" "help-fns.el" 13128;;;;;; help-C-file-name describe-function) "help-fns" "help-fns.el"
13115;;;;;; (17994 6751)) 13129;;;;;; (17845 46651))
13116;;; Generated autoloads from help-fns.el 13130;;; Generated autoloads from help-fns.el
13117 13131
13118(autoload (quote describe-function) "help-fns" "\ 13132(autoload (quote describe-function) "help-fns" "\
@@ -13170,7 +13184,7 @@ BUFFER should be a buffer or a buffer name.
13170;;;*** 13184;;;***
13171 13185
13172;;;### (autoloads (three-step-help) "help-macro" "help-macro.el" 13186;;;### (autoloads (three-step-help) "help-macro" "help-macro.el"
13173;;;;;; (17994 6715)) 13187;;;;;; (17842 58279))
13174;;; Generated autoloads from help-macro.el 13188;;; Generated autoloads from help-macro.el
13175 13189
13176(defvar three-step-help nil "\ 13190(defvar three-step-help nil "\
@@ -13186,7 +13200,7 @@ A value of nil means skip the middle step, so that
13186 13200
13187;;;### (autoloads (help-xref-on-pp help-insert-xref-button help-xref-button 13201;;;### (autoloads (help-xref-on-pp help-insert-xref-button help-xref-button
13188;;;;;; help-make-xrefs help-setup-xref help-mode-finish help-mode-setup 13202;;;;;; help-make-xrefs help-setup-xref help-mode-finish help-mode-setup
13189;;;;;; help-mode) "help-mode" "help-mode.el" (17994 6715)) 13203;;;;;; help-mode) "help-mode" "help-mode.el" (17842 58279))
13190;;; Generated autoloads from help-mode.el 13204;;; Generated autoloads from help-mode.el
13191 13205
13192(autoload (quote help-mode) "help-mode" "\ 13206(autoload (quote help-mode) "help-mode" "\
@@ -13269,7 +13283,7 @@ Add xrefs for symbols in `pp's output between FROM and TO.
13269;;;*** 13283;;;***
13270 13284
13271;;;### (autoloads (Helper-help Helper-describe-bindings) "helper" 13285;;;### (autoloads (Helper-help Helper-describe-bindings) "helper"
13272;;;;;; "emacs-lisp/helper.el" (17994 6715)) 13286;;;;;; "emacs-lisp/helper.el" (17842 54152))
13273;;; Generated autoloads from emacs-lisp/helper.el 13287;;; Generated autoloads from emacs-lisp/helper.el
13274 13288
13275(autoload (quote Helper-describe-bindings) "helper" "\ 13289(autoload (quote Helper-describe-bindings) "helper" "\
@@ -13285,7 +13299,7 @@ Provide help for current mode.
13285;;;*** 13299;;;***
13286 13300
13287;;;### (autoloads (hexlify-buffer hexl-find-file hexl-mode) "hexl" 13301;;;### (autoloads (hexlify-buffer hexl-find-file hexl-mode) "hexl"
13288;;;;;; "hexl.el" (17994 6715)) 13302;;;;;; "hexl.el" (17844 53657))
13289;;; Generated autoloads from hexl.el 13303;;; Generated autoloads from hexl.el
13290 13304
13291(autoload (quote hexl-mode) "hexl" "\ 13305(autoload (quote hexl-mode) "hexl" "\
@@ -13382,7 +13396,7 @@ This discards the buffer's undo information.
13382;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer 13396;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer
13383;;;;;; hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer 13397;;;;;; hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer
13384;;;;;; global-hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el" 13398;;;;;; global-hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el"
13385;;;;;; (17994 6726)) 13399;;;;;; (17992 30877))
13386;;; Generated autoloads from hi-lock.el 13400;;; Generated autoloads from hi-lock.el
13387 13401
13388(autoload (quote hi-lock-mode) "hi-lock" "\ 13402(autoload (quote hi-lock-mode) "hi-lock" "\
@@ -13512,7 +13526,7 @@ be found in variable `hi-lock-interactive-patterns'.
13512;;;*** 13526;;;***
13513 13527
13514;;;### (autoloads (hide-ifdef-lines hide-ifdef-read-only hide-ifdef-initially 13528;;;### (autoloads (hide-ifdef-lines hide-ifdef-read-only hide-ifdef-initially
13515;;;;;; hide-ifdef-mode) "hideif" "progmodes/hideif.el" (17994 6715)) 13529;;;;;; hide-ifdef-mode) "hideif" "progmodes/hideif.el" (17842 56333))
13516;;; Generated autoloads from progmodes/hideif.el 13530;;; Generated autoloads from progmodes/hideif.el
13517 13531
13518(autoload (quote hide-ifdef-mode) "hideif" "\ 13532(autoload (quote hide-ifdef-mode) "hideif" "\
@@ -13567,7 +13581,7 @@ how the hiding is done:
13567;;;*** 13581;;;***
13568 13582
13569;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el" 13583;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el"
13570;;;;;; (17994 6715)) 13584;;;;;; (17934 43341))
13571;;; Generated autoloads from progmodes/hideshow.el 13585;;; Generated autoloads from progmodes/hideshow.el
13572 13586
13573(defvar hs-special-modes-alist (quote ((c-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (c++-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (bibtex-mode ("^@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning))) "\ 13587(defvar hs-special-modes-alist (quote ((c-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (c++-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (bibtex-mode ("^@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning))) "\
@@ -13630,7 +13644,7 @@ Unconditionally turn off `hs-minor-mode'.
13630;;;;;; highlight-compare-buffers highlight-changes-rotate-faces 13644;;;;;; highlight-compare-buffers highlight-changes-rotate-faces
13631;;;;;; highlight-changes-previous-change highlight-changes-next-change 13645;;;;;; highlight-changes-previous-change highlight-changes-next-change
13632;;;;;; highlight-changes-mode highlight-changes-remove-highlight) 13646;;;;;; highlight-changes-mode highlight-changes-remove-highlight)
13633;;;;;; "hilit-chg" "hilit-chg.el" (18000 24338)) 13647;;;;;; "hilit-chg" "hilit-chg.el" (17842 58279))
13634;;; Generated autoloads from hilit-chg.el 13648;;; Generated autoloads from hilit-chg.el
13635 13649
13636(autoload (quote highlight-changes-remove-highlight) "hilit-chg" "\ 13650(autoload (quote highlight-changes-remove-highlight) "hilit-chg" "\
@@ -13760,7 +13774,7 @@ variable `highlight-changes-global-changes-existing-buffers' is non-nil).
13760;;;;;; hippie-expand-ignore-buffers hippie-expand-max-buffers hippie-expand-no-restriction 13774;;;;;; hippie-expand-ignore-buffers hippie-expand-max-buffers hippie-expand-no-restriction
13761;;;;;; hippie-expand-dabbrev-as-symbol hippie-expand-dabbrev-skip-space 13775;;;;;; hippie-expand-dabbrev-as-symbol hippie-expand-dabbrev-skip-space
13762;;;;;; hippie-expand-verbose hippie-expand-try-functions-list) "hippie-exp" 13776;;;;;; hippie-expand-verbose hippie-expand-try-functions-list) "hippie-exp"
13763;;;;;; "hippie-exp.el" (17994 6715)) 13777;;;;;; "hippie-exp.el" (17842 58279))
13764;;; Generated autoloads from hippie-exp.el 13778;;; Generated autoloads from hippie-exp.el
13765 13779
13766(defvar hippie-expand-try-functions-list (quote (try-complete-file-name-partially try-complete-file-name try-expand-all-abbrevs try-expand-list try-expand-line try-expand-dabbrev try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-complete-lisp-symbol-partially try-complete-lisp-symbol)) "\ 13780(defvar hippie-expand-try-functions-list (quote (try-complete-file-name-partially try-complete-file-name try-expand-all-abbrevs try-expand-list try-expand-line try-expand-dabbrev try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-complete-lisp-symbol-partially try-complete-lisp-symbol)) "\
@@ -13833,7 +13847,7 @@ argument VERBOSE non-nil makes the function verbose.
13833;;;*** 13847;;;***
13834 13848
13835;;;### (autoloads (global-hl-line-mode hl-line-mode) "hl-line" "hl-line.el" 13849;;;### (autoloads (global-hl-line-mode hl-line-mode) "hl-line" "hl-line.el"
13836;;;;;; (17994 6715)) 13850;;;;;; (17842 58279))
13837;;; Generated autoloads from hl-line.el 13851;;; Generated autoloads from hl-line.el
13838 13852
13839(autoload (quote hl-line-mode) "hl-line" "\ 13853(autoload (quote hl-line-mode) "hl-line" "\
@@ -13874,7 +13888,7 @@ Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and
13874;;;*** 13888;;;***
13875 13889
13876;;;### (autoloads (list-holidays holidays) "holidays" "calendar/holidays.el" 13890;;;### (autoloads (list-holidays holidays) "holidays" "calendar/holidays.el"
13877;;;;;; (17994 6715)) 13891;;;;;; (17956 13479))
13878;;; Generated autoloads from calendar/holidays.el 13892;;; Generated autoloads from calendar/holidays.el
13879 13893
13880(autoload (quote holidays) "holidays" "\ 13894(autoload (quote holidays) "holidays" "\
@@ -13910,35 +13924,8 @@ The optional LABEL is used to label the buffer created.
13910 13924
13911;;;*** 13925;;;***
13912 13926
13913;;;### (autoloads (hscroll-global-mode hscroll-mode turn-on-hscroll) 13927;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (17842
13914;;;;;; "hscroll" "obsolete/hscroll.el" (17994 6715)) 13928;;;;;; 54741))
13915;;; Generated autoloads from obsolete/hscroll.el
13916
13917(autoload (quote turn-on-hscroll) "hscroll" "\
13918This function is obsolete.
13919Emacs now does hscrolling automatically, if `truncate-lines' is non-nil.
13920Also see `automatic-hscrolling'.
13921
13922\(fn)" nil nil)
13923
13924(autoload (quote hscroll-mode) "hscroll" "\
13925This function is obsolete.
13926Emacs now does hscrolling automatically, if `truncate-lines' is non-nil.
13927Also see `automatic-hscrolling'.
13928
13929\(fn &optional ARG)" t nil)
13930
13931(autoload (quote hscroll-global-mode) "hscroll" "\
13932This function is obsolete.
13933Emacs now does hscrolling automatically, if `truncate-lines' is non-nil.
13934Also see `automatic-hscrolling'.
13935
13936\(fn &optional ARG)" t nil)
13937
13938;;;***
13939
13940;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (17994
13941;;;;;; 6715))
13942;;; Generated autoloads from gnus/html2text.el 13929;;; Generated autoloads from gnus/html2text.el
13943 13930
13944(autoload (quote html2text) "html2text" "\ 13931(autoload (quote html2text) "html2text" "\
@@ -13970,7 +13957,7 @@ Convert HTML to plain text in the current buffer.
13970;;;;;; ibuffer-backward-filter-group ibuffer-forward-filter-group 13957;;;;;; ibuffer-backward-filter-group ibuffer-forward-filter-group
13971;;;;;; ibuffer-toggle-filter-group ibuffer-mouse-toggle-filter-group 13958;;;;;; ibuffer-toggle-filter-group ibuffer-mouse-toggle-filter-group
13972;;;;;; ibuffer-interactive-filter-by-mode ibuffer-mouse-filter-by-mode 13959;;;;;; ibuffer-interactive-filter-by-mode ibuffer-mouse-filter-by-mode
13973;;;;;; ibuffer-auto-mode) "ibuf-ext" "ibuf-ext.el" (17994 6715)) 13960;;;;;; ibuffer-auto-mode) "ibuf-ext" "ibuf-ext.el" (17842 58279))
13974;;; Generated autoloads from ibuf-ext.el 13961;;; Generated autoloads from ibuf-ext.el
13975 13962
13976(autoload (quote ibuffer-auto-mode) "ibuf-ext" "\ 13963(autoload (quote ibuffer-auto-mode) "ibuf-ext" "\
@@ -14336,8 +14323,8 @@ defaults to one.
14336;;;*** 14323;;;***
14337 14324
14338;;;### (autoloads (define-ibuffer-filter define-ibuffer-op define-ibuffer-sorter 14325;;;### (autoloads (define-ibuffer-filter define-ibuffer-op define-ibuffer-sorter
14339;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (17994 14326;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (17842
14340;;;;;; 6715)) 14327;;;;;; 58279))
14341;;; Generated autoloads from ibuf-macs.el 14328;;; Generated autoloads from ibuf-macs.el
14342 14329
14343(autoload (quote define-ibuffer-column) "ibuf-macs" "\ 14330(autoload (quote define-ibuffer-column) "ibuf-macs" "\
@@ -14426,7 +14413,7 @@ bound to the current value of the filter.
14426;;;*** 14413;;;***
14427 14414
14428;;;### (autoloads (ibuffer ibuffer-other-window ibuffer-list-buffers) 14415;;;### (autoloads (ibuffer ibuffer-other-window ibuffer-list-buffers)
14429;;;;;; "ibuffer" "ibuffer.el" (17994 6715)) 14416;;;;;; "ibuffer" "ibuffer.el" (17842 58279))
14430;;; Generated autoloads from ibuffer.el 14417;;; Generated autoloads from ibuffer.el
14431 14418
14432(autoload (quote ibuffer-list-buffers) "ibuffer" "\ 14419(autoload (quote ibuffer-list-buffers) "ibuffer" "\
@@ -14467,7 +14454,7 @@ FORMATS is the value to use for `ibuffer-formats'.
14467 14454
14468;;;### (autoloads (icalendar-import-buffer icalendar-import-file 14455;;;### (autoloads (icalendar-import-buffer icalendar-import-file
14469;;;;;; icalendar-export-region icalendar-export-file) "icalendar" 14456;;;;;; icalendar-export-region icalendar-export-file) "icalendar"
14470;;;;;; "calendar/icalendar.el" (17994 6715)) 14457;;;;;; "calendar/icalendar.el" (17921 16827))
14471;;; Generated autoloads from calendar/icalendar.el 14458;;; Generated autoloads from calendar/icalendar.el
14472 14459
14473(autoload (quote icalendar-export-file) "icalendar" "\ 14460(autoload (quote icalendar-export-file) "icalendar" "\
@@ -14519,8 +14506,8 @@ buffer `*icalendar-errors*'.
14519 14506
14520;;;*** 14507;;;***
14521 14508
14522;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (17994 14509;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (17907
14523;;;;;; 6715)) 14510;;;;;; 1407))
14524;;; Generated autoloads from icomplete.el 14511;;; Generated autoloads from icomplete.el
14525 14512
14526(defvar icomplete-mode nil "\ 14513(defvar icomplete-mode nil "\
@@ -14540,7 +14527,7 @@ With a numeric argument, turn Icomplete mode on iff ARG is positive.
14540 14527
14541;;;*** 14528;;;***
14542 14529
14543;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (17994 6715)) 14530;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (17842 56333))
14544;;; Generated autoloads from progmodes/icon.el 14531;;; Generated autoloads from progmodes/icon.el
14545 14532
14546(autoload (quote icon-mode) "icon" "\ 14533(autoload (quote icon-mode) "icon" "\
@@ -14581,7 +14568,7 @@ with no args, if that value is non-nil.
14581;;;*** 14568;;;***
14582 14569
14583;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el" 14570;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el"
14584;;;;;; (17994 6715)) 14571;;;;;; (17965 23638))
14585;;; Generated autoloads from progmodes/idlw-shell.el 14572;;; Generated autoloads from progmodes/idlw-shell.el
14586 14573
14587(autoload (quote idlwave-shell) "idlw-shell" "\ 14574(autoload (quote idlwave-shell) "idlw-shell" "\
@@ -14607,7 +14594,7 @@ See also the variable `idlwave-shell-prompt-pattern'.
14607;;;*** 14594;;;***
14608 14595
14609;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el" 14596;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el"
14610;;;;;; (17994 6723)) 14597;;;;;; (17992 30878))
14611;;; Generated autoloads from progmodes/idlwave.el 14598;;; Generated autoloads from progmodes/idlwave.el
14612 14599
14613(autoload (quote idlwave-mode) "idlwave" "\ 14600(autoload (quote idlwave-mode) "idlwave" "\
@@ -14742,8 +14729,8 @@ The main features of this mode are
14742;;;;;; ido-find-alternate-file ido-find-file-other-window ido-find-file 14729;;;;;; ido-find-alternate-file ido-find-file-other-window ido-find-file
14743;;;;;; ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer 14730;;;;;; ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer
14744;;;;;; ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window 14731;;;;;; ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window
14745;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (17994 14732;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (17963
14746;;;;;; 6715)) 14733;;;;;; 25911))
14747;;; Generated autoloads from ido.el 14734;;; Generated autoloads from ido.el
14748 14735
14749(defvar ido-mode nil "\ 14736(defvar ido-mode nil "\
@@ -15004,7 +14991,7 @@ DEF, if non-nil, is the default value.
15004 14991
15005;;;*** 14992;;;***
15006 14993
15007;;;### (autoloads (ielm) "ielm" "ielm.el" (17994 6715)) 14994;;;### (autoloads (ielm) "ielm" "ielm.el" (17842 58279))
15008;;; Generated autoloads from ielm.el 14995;;; Generated autoloads from ielm.el
15009 (add-hook 'same-window-buffer-names "*ielm*") 14996 (add-hook 'same-window-buffer-names "*ielm*")
15010 14997
@@ -15017,7 +15004,7 @@ Switches to the buffer `*ielm*', or creates it if it does not exist.
15017;;;*** 15004;;;***
15018 15005
15019;;;### (autoloads (iimage-mode turn-on-iimage-mode) "iimage" "iimage.el" 15006;;;### (autoloads (iimage-mode turn-on-iimage-mode) "iimage" "iimage.el"
15020;;;;;; (17994 6715)) 15007;;;;;; (17842 58279))
15021;;; Generated autoloads from iimage.el 15008;;; Generated autoloads from iimage.el
15022 15009
15023(autoload (quote turn-on-iimage-mode) "iimage" "\ 15010(autoload (quote turn-on-iimage-mode) "iimage" "\
@@ -15036,7 +15023,7 @@ Toggle inline image minor mode.
15036;;;;;; insert-image put-image create-image image-type-auto-detected-p 15023;;;;;; insert-image put-image create-image image-type-auto-detected-p
15037;;;;;; image-type-available-p image-type image-type-from-file-name 15024;;;;;; image-type-available-p image-type image-type-from-file-name
15038;;;;;; image-type-from-file-header image-type-from-buffer image-type-from-data) 15025;;;;;; image-type-from-file-header image-type-from-buffer image-type-from-data)
15039;;;;;; "image" "image.el" (17994 6715)) 15026;;;;;; "image" "image.el" (17868 42568))
15040;;; Generated autoloads from image.el 15027;;; Generated autoloads from image.el
15041 15028
15042(autoload (quote image-type-from-data) "image" "\ 15029(autoload (quote image-type-from-data) "image" "\
@@ -15217,7 +15204,7 @@ Example:
15217;;;;;; image-dired-jump-thumbnail-buffer image-dired-delete-tag 15204;;;;;; image-dired-jump-thumbnail-buffer image-dired-delete-tag
15218;;;;;; image-dired-tag-files image-dired-show-all-from-dir image-dired-display-thumbs 15205;;;;;; image-dired-tag-files image-dired-show-all-from-dir image-dired-display-thumbs
15219;;;;;; image-dired-dired-with-window-configuration image-dired-dired-insert-marked-thumbs) 15206;;;;;; image-dired-dired-with-window-configuration image-dired-dired-insert-marked-thumbs)
15220;;;;;; "image-dired" "image-dired.el" (17994 6727)) 15207;;;;;; "image-dired" "image-dired.el" (17992 30877))
15221;;; Generated autoloads from image-dired.el 15208;;; Generated autoloads from image-dired.el
15222 15209
15223(autoload (quote image-dired-dired-insert-marked-thumbs) "image-dired" "\ 15210(autoload (quote image-dired-dired-insert-marked-thumbs) "image-dired" "\
@@ -15351,7 +15338,7 @@ easy-to-use form.
15351 15338
15352;;;### (autoloads (auto-image-file-mode insert-image-file image-file-name-regexp 15339;;;### (autoloads (auto-image-file-mode insert-image-file image-file-name-regexp
15353;;;;;; image-file-name-regexps image-file-name-extensions) "image-file" 15340;;;;;; image-file-name-regexps image-file-name-extensions) "image-file"
15354;;;;;; "image-file.el" (17994 6715)) 15341;;;;;; "image-file.el" (17842 58279))
15355;;; Generated autoloads from image-file.el 15342;;; Generated autoloads from image-file.el
15356 15343
15357(defvar image-file-name-extensions (quote ("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm")) "\ 15344(defvar image-file-name-extensions (quote ("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm")) "\
@@ -15413,7 +15400,7 @@ Image files are those whose name has an extension in
15413;;;*** 15400;;;***
15414 15401
15415;;;### (autoloads (image-mode-maybe image-minor-mode image-mode) 15402;;;### (autoloads (image-mode-maybe image-minor-mode image-mode)
15416;;;;;; "image-mode" "image-mode.el" (17994 6715)) 15403;;;;;; "image-mode" "image-mode.el" (17868 42581))
15417;;; Generated autoloads from image-mode.el 15404;;; Generated autoloads from image-mode.el
15418 (push '("\\.jpe?g\\'" . image-mode) auto-mode-alist) 15405 (push '("\\.jpe?g\\'" . image-mode) auto-mode-alist)
15419 (push '("\\.png\\'" . image-mode) auto-mode-alist) 15406 (push '("\\.png\\'" . image-mode) auto-mode-alist)
@@ -15451,7 +15438,7 @@ information on these modes.
15451;;;*** 15438;;;***
15452 15439
15453;;;### (autoloads (imenu imenu-add-menubar-index imenu-add-to-menubar 15440;;;### (autoloads (imenu imenu-add-menubar-index imenu-add-to-menubar
15454;;;;;; imenu-sort-function) "imenu" "imenu.el" (17994 6715)) 15441;;;;;; imenu-sort-function) "imenu" "imenu.el" (17842 58279))
15455;;; Generated autoloads from imenu.el 15442;;; Generated autoloads from imenu.el
15456 15443
15457(defvar imenu-sort-function nil "\ 15444(defvar imenu-sort-function nil "\
@@ -15566,7 +15553,7 @@ for more information.
15566 15553
15567;;;### (autoloads (indian-char-glyph indian-glyph-char in-is13194-pre-write-conversion 15554;;;### (autoloads (indian-char-glyph indian-glyph-char in-is13194-pre-write-conversion
15568;;;;;; in-is13194-post-read-conversion indian-compose-string indian-compose-region) 15555;;;;;; in-is13194-post-read-conversion indian-compose-string indian-compose-region)
15569;;;;;; "ind-util" "language/ind-util.el" (17994 6715)) 15556;;;;;; "ind-util" "language/ind-util.el" (17842 58278))
15570;;; Generated autoloads from language/ind-util.el 15557;;; Generated autoloads from language/ind-util.el
15571 15558
15572(autoload (quote indian-compose-region) "ind-util" "\ 15559(autoload (quote indian-compose-region) "ind-util" "\
@@ -15609,7 +15596,7 @@ See also the function `indian-glyph-char'.
15609 15596
15610;;;### (autoloads (inferior-lisp inferior-lisp-prompt inferior-lisp-load-command 15597;;;### (autoloads (inferior-lisp inferior-lisp-prompt inferior-lisp-load-command
15611;;;;;; inferior-lisp-program inferior-lisp-filter-regexp) "inf-lisp" 15598;;;;;; inferior-lisp-program inferior-lisp-filter-regexp) "inf-lisp"
15612;;;;;; "progmodes/inf-lisp.el" (17994 6715)) 15599;;;;;; "progmodes/inf-lisp.el" (17842 56332))
15613;;; Generated autoloads from progmodes/inf-lisp.el 15600;;; Generated autoloads from progmodes/inf-lisp.el
15614 15601
15615(defvar inferior-lisp-filter-regexp "\\`\\s *\\(:\\(\\w\\|\\s_\\)\\)?\\s *\\'" "\ 15602(defvar inferior-lisp-filter-regexp "\\`\\s *\\(:\\(\\w\\|\\s_\\)\\)?\\s *\\'" "\
@@ -15676,7 +15663,7 @@ of `inferior-lisp-program'). Runs the hooks from
15676;;;### (autoloads (Info-speedbar-browser Info-goto-emacs-key-command-node 15663;;;### (autoloads (Info-speedbar-browser Info-goto-emacs-key-command-node
15677;;;;;; Info-goto-emacs-command-node Info-mode info-apropos Info-index 15664;;;;;; Info-goto-emacs-command-node Info-mode info-apropos Info-index
15678;;;;;; Info-directory Info-on-current-buffer info-standalone info-emacs-manual 15665;;;;;; Info-directory Info-on-current-buffer info-standalone info-emacs-manual
15679;;;;;; info info-other-window) "info" "info.el" (18000 24374)) 15666;;;;;; info info-other-window) "info" "info.el" (18006 55795))
15680;;; Generated autoloads from info.el 15667;;; Generated autoloads from info.el
15681 15668
15682(autoload (quote info-other-window) "info" "\ 15669(autoload (quote info-other-window) "info" "\
@@ -15842,7 +15829,7 @@ This will add a speedbar major display mode.
15842 15829
15843;;;### (autoloads (info-complete-file info-complete-symbol info-lookup-file 15830;;;### (autoloads (info-complete-file info-complete-symbol info-lookup-file
15844;;;;;; info-lookup-symbol info-lookup-reset) "info-look" "info-look.el" 15831;;;;;; info-lookup-symbol info-lookup-reset) "info-look" "info-look.el"
15845;;;;;; (17994 6715)) 15832;;;;;; (17878 61008))
15846;;; Generated autoloads from info-look.el 15833;;; Generated autoloads from info-look.el
15847 15834
15848(autoload (quote info-lookup-reset) "info-look" "\ 15835(autoload (quote info-lookup-reset) "info-look" "\
@@ -15890,7 +15877,7 @@ Perform completion on file preceding point.
15890;;;*** 15877;;;***
15891 15878
15892;;;### (autoloads (info-xref-check-all-custom info-xref-check-all 15879;;;### (autoloads (info-xref-check-all-custom info-xref-check-all
15893;;;;;; info-xref-check) "info-xref" "info-xref.el" (17994 6715)) 15880;;;;;; info-xref-check) "info-xref" "info-xref.el" (17842 58279))
15894;;; Generated autoloads from info-xref.el 15881;;; Generated autoloads from info-xref.el
15895 15882
15896(autoload (quote info-xref-check) "info-xref" "\ 15883(autoload (quote info-xref-check) "info-xref" "\
@@ -15917,7 +15904,7 @@ quite a while.
15917;;;*** 15904;;;***
15918 15905
15919;;;### (autoloads (batch-info-validate Info-validate Info-split Info-tagify) 15906;;;### (autoloads (batch-info-validate Info-validate Info-split Info-tagify)
15920;;;;;; "informat" "informat.el" (17994 6715)) 15907;;;;;; "informat" "informat.el" (17842 58279))
15921;;; Generated autoloads from informat.el 15908;;; Generated autoloads from informat.el
15922 15909
15923(autoload (quote Info-tagify) "informat" "\ 15910(autoload (quote Info-tagify) "informat" "\
@@ -15958,7 +15945,7 @@ For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\"
15958 15945
15959;;;### (autoloads (isearch-process-search-multibyte-characters isearch-toggle-input-method 15946;;;### (autoloads (isearch-process-search-multibyte-characters isearch-toggle-input-method
15960;;;;;; isearch-toggle-specified-input-method) "isearch-x" "international/isearch-x.el" 15947;;;;;; isearch-toggle-specified-input-method) "isearch-x" "international/isearch-x.el"
15961;;;;;; (17994 6715)) 15948;;;;;; (17903 2305))
15962;;; Generated autoloads from international/isearch-x.el 15949;;; Generated autoloads from international/isearch-x.el
15963 15950
15964(autoload (quote isearch-toggle-specified-input-method) "isearch-x" "\ 15951(autoload (quote isearch-toggle-specified-input-method) "isearch-x" "\
@@ -15978,8 +15965,8 @@ Not documented
15978 15965
15979;;;*** 15966;;;***
15980 15967
15981;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (17994 15968;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (17918
15982;;;;;; 6715)) 15969;;;;;; 44913))
15983;;; Generated autoloads from isearchb.el 15970;;; Generated autoloads from isearchb.el
15984 15971
15985(autoload (quote isearchb-activate) "isearchb" "\ 15972(autoload (quote isearchb-activate) "isearchb" "\
@@ -16026,7 +16013,7 @@ and a negative argument disables it.
16026;;;### (autoloads (iso-cvt-define-menu iso-cvt-write-only iso-cvt-read-only 16013;;;### (autoloads (iso-cvt-define-menu iso-cvt-write-only iso-cvt-read-only
16027;;;;;; iso-sgml2iso iso-iso2sgml iso-iso2duden iso-iso2gtex iso-gtex2iso 16014;;;;;; iso-sgml2iso iso-iso2sgml iso-iso2duden iso-iso2gtex iso-gtex2iso
16028;;;;;; iso-tex2iso iso-iso2tex iso-german iso-spanish) "iso-cvt" 16015;;;;;; iso-tex2iso iso-iso2tex iso-german iso-spanish) "iso-cvt"
16029;;;;;; "international/iso-cvt.el" (17994 6743)) 16016;;;;;; "international/iso-cvt.el" (17992 30878))
16030;;; Generated autoloads from international/iso-cvt.el 16017;;; Generated autoloads from international/iso-cvt.el
16031 16018
16032(autoload (quote iso-spanish) "iso-cvt" "\ 16019(autoload (quote iso-spanish) "iso-cvt" "\
@@ -16110,7 +16097,7 @@ Add submenus to the File menu, to convert to and from various formats.
16110;;;*** 16097;;;***
16111 16098
16112;;;### (autoloads nil "iso-transl" "international/iso-transl.el" 16099;;;### (autoloads nil "iso-transl" "international/iso-transl.el"
16113;;;;;; (17994 6715)) 16100;;;;;; (17842 54888))
16114;;; Generated autoloads from international/iso-transl.el 16101;;; Generated autoloads from international/iso-transl.el
16115 (or key-translation-map (setq key-translation-map (make-sparse-keymap))) 16102 (or key-translation-map (setq key-translation-map (make-sparse-keymap)))
16116 (define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map) 16103 (define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map)
@@ -16123,7 +16110,7 @@ Add submenus to the File menu, to convert to and from various formats.
16123;;;;;; ispell-region ispell-change-dictionary ispell-kill-ispell 16110;;;;;; ispell-region ispell-change-dictionary ispell-kill-ispell
16124;;;;;; ispell-help ispell-pdict-save ispell-word ispell-local-dictionary-alist 16111;;;;;; ispell-help ispell-pdict-save ispell-word ispell-local-dictionary-alist
16125;;;;;; ispell-personal-dictionary) "ispell" "textmodes/ispell.el" 16112;;;;;; ispell-personal-dictionary) "ispell" "textmodes/ispell.el"
16126;;;;;; (18000 24377)) 16113;;;;;; (18006 55797))
16127;;; Generated autoloads from textmodes/ispell.el 16114;;; Generated autoloads from textmodes/ispell.el
16128(put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive)))) 16115(put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive))))
16129 16116
@@ -16410,8 +16397,8 @@ You can bind this to the key C-c i in GNUS or mail by adding to
16410 16397
16411;;;*** 16398;;;***
16412 16399
16413;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (17994 16400;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (17819
16414;;;;;; 6715)) 16401;;;;;; 9451))
16415;;; Generated autoloads from iswitchb.el 16402;;; Generated autoloads from iswitchb.el
16416 16403
16417(defvar iswitchb-mode nil "\ 16404(defvar iswitchb-mode nil "\
@@ -16436,7 +16423,7 @@ This mode enables switching between buffers using substrings. See
16436;;;### (autoloads (read-hiragana-string japanese-zenkaku-region japanese-hankaku-region 16423;;;### (autoloads (read-hiragana-string japanese-zenkaku-region japanese-hankaku-region
16437;;;;;; japanese-hiragana-region japanese-katakana-region japanese-zenkaku 16424;;;;;; japanese-hiragana-region japanese-katakana-region japanese-zenkaku
16438;;;;;; japanese-hankaku japanese-hiragana japanese-katakana setup-japanese-environment-internal) 16425;;;;;; japanese-hankaku japanese-hiragana japanese-katakana setup-japanese-environment-internal)
16439;;;;;; "japan-util" "language/japan-util.el" (17994 6715)) 16426;;;;;; "japan-util" "language/japan-util.el" (17842 58278))
16440;;; Generated autoloads from language/japan-util.el 16427;;; Generated autoloads from language/japan-util.el
16441 16428
16442(autoload (quote setup-japanese-environment-internal) "japan-util" "\ 16429(autoload (quote setup-japanese-environment-internal) "japan-util" "\
@@ -16514,7 +16501,7 @@ If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
16514;;;*** 16501;;;***
16515 16502
16516;;;### (autoloads (jka-compr-uninstall jka-compr-handler) "jka-compr" 16503;;;### (autoloads (jka-compr-uninstall jka-compr-handler) "jka-compr"
16517;;;;;; "jka-compr.el" (17994 6715)) 16504;;;;;; "jka-compr.el" (17853 24893))
16518;;; Generated autoloads from jka-compr.el 16505;;; Generated autoloads from jka-compr.el
16519 16506
16520(defvar jka-compr-inhibit nil "\ 16507(defvar jka-compr-inhibit nil "\
@@ -16539,7 +16526,7 @@ by `jka-compr-installed'.
16539 16526
16540;;;### (autoloads (keypad-setup keypad-numlock-shifted-setup keypad-shifted-setup 16527;;;### (autoloads (keypad-setup keypad-numlock-shifted-setup keypad-shifted-setup
16541;;;;;; keypad-numlock-setup keypad-setup) "keypad" "emulation/keypad.el" 16528;;;;;; keypad-numlock-setup keypad-setup) "keypad" "emulation/keypad.el"
16542;;;;;; (17994 6715)) 16529;;;;;; (17833 41203))
16543;;; Generated autoloads from emulation/keypad.el 16530;;; Generated autoloads from emulation/keypad.el
16544 16531
16545(defvar keypad-setup nil "\ 16532(defvar keypad-setup nil "\
@@ -16595,7 +16582,7 @@ the decimal key on the keypad is mapped to DECIMAL instead of `.'
16595;;;*** 16582;;;***
16596 16583
16597;;;### (autoloads (kinsoku) "kinsoku" "international/kinsoku.el" 16584;;;### (autoloads (kinsoku) "kinsoku" "international/kinsoku.el"
16598;;;;;; (17994 6715)) 16585;;;;;; (17842 54888))
16599;;; Generated autoloads from international/kinsoku.el 16586;;; Generated autoloads from international/kinsoku.el
16600 16587
16601(autoload (quote kinsoku) "kinsoku" "\ 16588(autoload (quote kinsoku) "kinsoku" "\
@@ -16616,8 +16603,8 @@ the context of text formatting.
16616 16603
16617;;;*** 16604;;;***
16618 16605
16619;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (17994 16606;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (17842
16620;;;;;; 6715)) 16607;;;;;; 54888))
16621;;; Generated autoloads from international/kkc.el 16608;;; Generated autoloads from international/kkc.el
16622 16609
16623(defvar kkc-after-update-conversion-functions nil "\ 16610(defvar kkc-after-update-conversion-functions nil "\
@@ -16642,7 +16629,7 @@ and the return value is the length of the conversion.
16642;;;### (autoloads (kmacro-end-call-mouse kmacro-end-and-call-macro 16629;;;### (autoloads (kmacro-end-call-mouse kmacro-end-and-call-macro
16643;;;;;; kmacro-end-or-call-macro kmacro-start-macro-or-insert-counter 16630;;;;;; kmacro-end-or-call-macro kmacro-start-macro-or-insert-counter
16644;;;;;; kmacro-call-macro kmacro-end-macro kmacro-start-macro) "kmacro" 16631;;;;;; kmacro-call-macro kmacro-end-macro kmacro-start-macro) "kmacro"
16645;;;;;; "kmacro.el" (17994 6715)) 16632;;;;;; "kmacro.el" (17833 41350))
16646;;; Generated autoloads from kmacro.el 16633;;; Generated autoloads from kmacro.el
16647 (global-set-key "\C-x(" 'kmacro-start-macro) 16634 (global-set-key "\C-x(" 'kmacro-start-macro)
16648 (global-set-key "\C-x)" 'kmacro-end-macro) 16635 (global-set-key "\C-x)" 'kmacro-end-macro)
@@ -16749,7 +16736,7 @@ If kbd macro currently being defined end it before activating it.
16749 16736
16750;;;### (autoloads (kannada-post-read-conversion kannada-compose-string 16737;;;### (autoloads (kannada-post-read-conversion kannada-compose-string
16751;;;;;; kannada-compose-region) "knd-util" "language/knd-util.el" 16738;;;;;; kannada-compose-region) "knd-util" "language/knd-util.el"
16752;;;;;; (17994 6715)) 16739;;;;;; (17842 58278))
16753;;; Generated autoloads from language/knd-util.el 16740;;; Generated autoloads from language/knd-util.el
16754 16741
16755(defconst kannada-consonant "[\x51f75-\x51fb9]") 16742(defconst kannada-consonant "[\x51f75-\x51fb9]")
@@ -16772,7 +16759,7 @@ Not documented
16772;;;*** 16759;;;***
16773 16760
16774;;;### (autoloads (setup-korean-environment-internal) "korea-util" 16761;;;### (autoloads (setup-korean-environment-internal) "korea-util"
16775;;;;;; "language/korea-util.el" (17994 6715)) 16762;;;;;; "language/korea-util.el" (17842 58278))
16776;;; Generated autoloads from language/korea-util.el 16763;;; Generated autoloads from language/korea-util.el
16777 16764
16778(defvar default-korean-keyboard (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") "")) "3" "") "\ 16765(defvar default-korean-keyboard (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") "")) "3" "") "\
@@ -16787,7 +16774,7 @@ Not documented
16787;;;*** 16774;;;***
16788 16775
16789;;;### (autoloads (lm lm-test-run) "landmark" "play/landmark.el" 16776;;;### (autoloads (lm lm-test-run) "landmark" "play/landmark.el"
16790;;;;;; (17994 6715)) 16777;;;;;; (17941 38806))
16791;;; Generated autoloads from play/landmark.el 16778;;; Generated autoloads from play/landmark.el
16792 16779
16793(defalias (quote landmark-repeat) (quote lm-test-run)) 16780(defalias (quote landmark-repeat) (quote lm-test-run))
@@ -16821,8 +16808,8 @@ Use \\[describe-mode] for more info.
16821 16808
16822;;;### (autoloads (lao-compose-region lao-composition-function lao-post-read-conversion 16809;;;### (autoloads (lao-compose-region lao-composition-function lao-post-read-conversion
16823;;;;;; lao-transcribe-roman-to-lao-string lao-transcribe-single-roman-syllable-to-lao 16810;;;;;; lao-transcribe-roman-to-lao-string lao-transcribe-single-roman-syllable-to-lao
16824;;;;;; lao-compose-string) "lao-util" "language/lao-util.el" (17994 16811;;;;;; lao-compose-string) "lao-util" "language/lao-util.el" (17842
16825;;;;;; 6715)) 16812;;;;;; 58278))
16826;;; Generated autoloads from language/lao-util.el 16813;;; Generated autoloads from language/lao-util.el
16827 16814
16828(autoload (quote lao-compose-string) "lao-util" "\ 16815(autoload (quote lao-compose-string) "lao-util" "\
@@ -16871,7 +16858,7 @@ Not documented
16871 16858
16872;;;### (autoloads (latexenc-find-file-coding-system latexenc-coding-system-to-inputenc 16859;;;### (autoloads (latexenc-find-file-coding-system latexenc-coding-system-to-inputenc
16873;;;;;; latexenc-inputenc-to-coding-system latex-inputenc-coding-alist) 16860;;;;;; latexenc-inputenc-to-coding-system latex-inputenc-coding-alist)
16874;;;;;; "latexenc" "international/latexenc.el" (17994 6715)) 16861;;;;;; "latexenc" "international/latexenc.el" (17842 54888))
16875;;; Generated autoloads from international/latexenc.el 16862;;; Generated autoloads from international/latexenc.el
16876 16863
16877(defvar latex-inputenc-coding-alist (quote (("ansinew" . windows-1252) ("applemac" . mac-roman) ("ascii" . us-ascii) ("cp1250" . windows-1250) ("cp1252" . windows-1252) ("cp1257" . cp1257) ("cp437de" . cp437) ("cp437" . cp437) ("cp850" . cp850) ("cp852" . cp852) ("cp858" . cp858) ("cp865" . cp865) ("latin1" . iso-8859-1) ("latin2" . iso-8859-2) ("latin3" . iso-8859-3) ("latin4" . iso-8859-4) ("latin5" . iso-8859-5) ("latin9" . iso-8859-15) ("next" . next) ("utf8" . utf-8) ("utf8x" . utf-8))) "\ 16864(defvar latex-inputenc-coding-alist (quote (("ansinew" . windows-1252) ("applemac" . mac-roman) ("ascii" . us-ascii) ("cp1250" . windows-1250) ("cp1252" . windows-1252) ("cp1257" . cp1257) ("cp437de" . cp437) ("cp437" . cp437) ("cp850" . cp850) ("cp852" . cp852) ("cp858" . cp858) ("cp865" . cp865) ("latin1" . iso-8859-1) ("latin2" . iso-8859-2) ("latin3" . iso-8859-3) ("latin4" . iso-8859-4) ("latin5" . iso-8859-5) ("latin9" . iso-8859-15) ("next" . next) ("utf8" . utf-8) ("utf8x" . utf-8))) "\
@@ -16903,7 +16890,7 @@ coding system names is determined from `latex-inputenc-coding-alist'.
16903;;;*** 16890;;;***
16904 16891
16905;;;### (autoloads (latin1-display-ucs-per-lynx latin1-display latin1-display) 16892;;;### (autoloads (latin1-display-ucs-per-lynx latin1-display latin1-display)
16906;;;;;; "latin1-disp" "international/latin1-disp.el" (17994 6715)) 16893;;;;;; "latin1-disp" "international/latin1-disp.el" (17874 62081))
16907;;; Generated autoloads from international/latin1-disp.el 16894;;; Generated autoloads from international/latin1-disp.el
16908 16895
16909(defvar latin1-display nil "\ 16896(defvar latin1-display nil "\
@@ -17015,7 +17002,7 @@ Unconditionally turn on Lazy Lock mode.
17015;;;*** 17002;;;***
17016 17003
17017;;;### (autoloads (ld-script-mode) "ld-script" "progmodes/ld-script.el" 17004;;;### (autoloads (ld-script-mode) "ld-script" "progmodes/ld-script.el"
17018;;;;;; (17994 6715)) 17005;;;;;; (17842 56332))
17019;;; Generated autoloads from progmodes/ld-script.el 17006;;; Generated autoloads from progmodes/ld-script.el
17020 17007
17021(add-to-list (quote auto-mode-alist) (quote ("\\.ld[si]?\\>" . ld-script-mode))) 17008(add-to-list (quote auto-mode-alist) (quote ("\\.ld[si]?\\>" . ld-script-mode)))
@@ -17030,7 +17017,7 @@ A major mode to edit GNU ld script files
17030;;;*** 17017;;;***
17031 17018
17032;;;### (autoloads (ledit-from-lisp-mode ledit-mode) "ledit" "ledit.el" 17019;;;### (autoloads (ledit-from-lisp-mode ledit-mode) "ledit" "ledit.el"
17033;;;;;; (17994 6715)) 17020;;;;;; (17842 58279))
17034;;; Generated autoloads from ledit.el 17021;;; Generated autoloads from ledit.el
17035 17022
17036(defconst ledit-save-files t "\ 17023(defconst ledit-save-files t "\
@@ -17065,7 +17052,7 @@ Not documented
17065 17052
17066;;;*** 17053;;;***
17067 17054
17068;;;### (autoloads (life) "life" "play/life.el" (17994 6715)) 17055;;;### (autoloads (life) "life" "play/life.el" (17842 55395))
17069;;; Generated autoloads from play/life.el 17056;;; Generated autoloads from play/life.el
17070 17057
17071(autoload (quote life) "life" "\ 17058(autoload (quote life) "life" "\
@@ -17078,8 +17065,8 @@ generations (this defaults to 1).
17078 17065
17079;;;*** 17066;;;***
17080 17067
17081;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (17994 17068;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (17942
17082;;;;;; 6715)) 17069;;;;;; 63381))
17083;;; Generated autoloads from loadhist.el 17070;;; Generated autoloads from loadhist.el
17084 17071
17085(autoload (quote unload-feature) "loadhist" "\ 17072(autoload (quote unload-feature) "loadhist" "\
@@ -17102,7 +17089,7 @@ such as redefining an Emacs function.
17102;;;*** 17089;;;***
17103 17090
17104;;;### (autoloads (locate-with-filter locate locate-ls-subdir-switches) 17091;;;### (autoloads (locate-with-filter locate locate-ls-subdir-switches)
17105;;;;;; "locate" "locate.el" (17994 6728)) 17092;;;;;; "locate" "locate.el" (17992 30877))
17106;;; Generated autoloads from locate.el 17093;;; Generated autoloads from locate.el
17107 17094
17108(defvar locate-ls-subdir-switches "-al" "\ 17095(defvar locate-ls-subdir-switches "-al" "\
@@ -17153,7 +17140,7 @@ except that FILTER is not optional.
17153 17140
17154;;;*** 17141;;;***
17155 17142
17156;;;### (autoloads (log-edit) "log-edit" "log-edit.el" (17994 6715)) 17143;;;### (autoloads (log-edit) "log-edit" "log-edit.el" (18010 5298))
17157;;; Generated autoloads from log-edit.el 17144;;; Generated autoloads from log-edit.el
17158 17145
17159(autoload (quote log-edit) "log-edit" "\ 17146(autoload (quote log-edit) "log-edit" "\
@@ -17174,8 +17161,8 @@ If BUFFER is non-nil `log-edit' will jump to that buffer, use it to edit the
17174 17161
17175;;;*** 17162;;;***
17176 17163
17177;;;### (autoloads (log-view-mode) "log-view" "log-view.el" (17994 17164;;;### (autoloads (log-view-mode) "log-view" "log-view.el" (17842
17178;;;;;; 6715)) 17165;;;;;; 58279))
17179;;; Generated autoloads from log-view.el 17166;;; Generated autoloads from log-view.el
17180 17167
17181(autoload (quote log-view-mode) "log-view" "\ 17168(autoload (quote log-view-mode) "log-view" "\
@@ -17185,8 +17172,8 @@ Major mode for browsing CVS log output.
17185 17172
17186;;;*** 17173;;;***
17187 17174
17188;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (18000 17175;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (17992
17189;;;;;; 23879)) 17176;;;;;; 30877))
17190;;; Generated autoloads from longlines.el 17177;;; Generated autoloads from longlines.el
17191 17178
17192(autoload (quote longlines-mode) "longlines" "\ 17179(autoload (quote longlines-mode) "longlines" "\
@@ -17207,8 +17194,8 @@ are indicated with a symbol.
17207;;;*** 17194;;;***
17208 17195
17209;;;### (autoloads (print-region lpr-region print-buffer lpr-buffer 17196;;;### (autoloads (print-region lpr-region print-buffer lpr-buffer
17210;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (17994 17197;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (17842
17211;;;;;; 6715)) 17198;;;;;; 58279))
17212;;; Generated autoloads from lpr.el 17199;;; Generated autoloads from lpr.el
17213 17200
17214(defvar lpr-windows-system (memq system-type (quote (emx win32 w32 mswindows ms-dos windows-nt)))) 17201(defvar lpr-windows-system (memq system-type (quote (emx win32 w32 mswindows ms-dos windows-nt))))
@@ -17302,7 +17289,7 @@ for further customization of the printer command.
17302;;;*** 17289;;;***
17303 17290
17304;;;### (autoloads (ls-lisp-support-shell-wildcards) "ls-lisp" "ls-lisp.el" 17291;;;### (autoloads (ls-lisp-support-shell-wildcards) "ls-lisp" "ls-lisp.el"
17305;;;;;; (18000 24333)) 17292;;;;;; (18006 55796))
17306;;; Generated autoloads from ls-lisp.el 17293;;; Generated autoloads from ls-lisp.el
17307 17294
17308(defvar ls-lisp-support-shell-wildcards t "\ 17295(defvar ls-lisp-support-shell-wildcards t "\
@@ -17313,8 +17300,8 @@ Otherwise they are treated as Emacs regexps (for backward compatibility).")
17313 17300
17314;;;*** 17301;;;***
17315 17302
17316;;;### (autoloads (phases-of-moon) "lunar" "calendar/lunar.el" (17994 17303;;;### (autoloads (phases-of-moon) "lunar" "calendar/lunar.el" (17956
17317;;;;;; 6715)) 17304;;;;;; 13479))
17318;;; Generated autoloads from calendar/lunar.el 17305;;; Generated autoloads from calendar/lunar.el
17319 17306
17320(autoload (quote phases-of-moon) "lunar" "\ 17307(autoload (quote phases-of-moon) "lunar" "\
@@ -17327,8 +17314,8 @@ This function is suitable for execution in a .emacs file.
17327 17314
17328;;;*** 17315;;;***
17329 17316
17330;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (17994 17317;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (17923
17331;;;;;; 6715)) 17318;;;;;; 63540))
17332;;; Generated autoloads from progmodes/m4-mode.el 17319;;; Generated autoloads from progmodes/m4-mode.el
17333 17320
17334(autoload (quote m4-mode) "m4-mode" "\ 17321(autoload (quote m4-mode) "m4-mode" "\
@@ -17340,7 +17327,7 @@ A major mode to edit m4 macro files.
17340;;;*** 17327;;;***
17341 17328
17342;;;### (autoloads (macroexpand-all) "macroexp" "emacs-lisp/macroexp.el" 17329;;;### (autoloads (macroexpand-all) "macroexp" "emacs-lisp/macroexp.el"
17343;;;;;; (17994 6715)) 17330;;;;;; (17842 54152))
17344;;; Generated autoloads from emacs-lisp/macroexp.el 17331;;; Generated autoloads from emacs-lisp/macroexp.el
17345 17332
17346(autoload (quote macroexpand-all) "macroexp" "\ 17333(autoload (quote macroexpand-all) "macroexp" "\
@@ -17354,7 +17341,7 @@ definitions to shadow the loaded ones for use in file byte-compilation.
17354;;;*** 17341;;;***
17355 17342
17356;;;### (autoloads (apply-macro-to-region-lines kbd-macro-query insert-kbd-macro 17343;;;### (autoloads (apply-macro-to-region-lines kbd-macro-query insert-kbd-macro
17357;;;;;; name-last-kbd-macro) "macros" "macros.el" (17994 6715)) 17344;;;;;; name-last-kbd-macro) "macros" "macros.el" (17842 58279))
17358;;; Generated autoloads from macros.el 17345;;; Generated autoloads from macros.el
17359 17346
17360(autoload (quote name-last-kbd-macro) "macros" "\ 17347(autoload (quote name-last-kbd-macro) "macros" "\
@@ -17443,7 +17430,7 @@ and then select the region of un-tablified names and use
17443;;;*** 17430;;;***
17444 17431
17445;;;### (autoloads (what-domain mail-extract-address-components) "mail-extr" 17432;;;### (autoloads (what-domain mail-extract-address-components) "mail-extr"
17446;;;;;; "mail/mail-extr.el" (17994 6715)) 17433;;;;;; "mail/mail-extr.el" (17842 55035))
17447;;; Generated autoloads from mail/mail-extr.el 17434;;; Generated autoloads from mail/mail-extr.el
17448 17435
17449(autoload (quote mail-extract-address-components) "mail-extr" "\ 17436(autoload (quote mail-extract-address-components) "mail-extr" "\
@@ -17475,7 +17462,7 @@ Convert mail domain DOMAIN to the country it corresponds to.
17475 17462
17476;;;### (autoloads (mail-hist-put-headers-into-history mail-hist-keep-history 17463;;;### (autoloads (mail-hist-put-headers-into-history mail-hist-keep-history
17477;;;;;; mail-hist-enable mail-hist-define-keys) "mail-hist" "mail/mail-hist.el" 17464;;;;;; mail-hist-enable mail-hist-define-keys) "mail-hist" "mail/mail-hist.el"
17478;;;;;; (17994 6715)) 17465;;;;;; (17842 55035))
17479;;; Generated autoloads from mail/mail-hist.el 17466;;; Generated autoloads from mail/mail-hist.el
17480 17467
17481(autoload (quote mail-hist-define-keys) "mail-hist" "\ 17468(autoload (quote mail-hist-define-keys) "mail-hist" "\
@@ -17506,8 +17493,8 @@ This function normally would be called when the message is sent.
17506 17493
17507;;;### (autoloads (mail-fetch-field mail-unquote-printable-region 17494;;;### (autoloads (mail-fetch-field mail-unquote-printable-region
17508;;;;;; mail-unquote-printable mail-quote-printable mail-file-babyl-p 17495;;;;;; mail-unquote-printable mail-quote-printable mail-file-babyl-p
17509;;;;;; mail-use-rfc822) "mail-utils" "mail/mail-utils.el" (17994 17496;;;;;; mail-use-rfc822) "mail-utils" "mail/mail-utils.el" (17842
17510;;;;;; 6715)) 17497;;;;;; 55035))
17511;;; Generated autoloads from mail/mail-utils.el 17498;;; Generated autoloads from mail/mail-utils.el
17512 17499
17513(defvar mail-use-rfc822 nil "\ 17500(defvar mail-use-rfc822 nil "\
@@ -17559,7 +17546,7 @@ If 4th arg LIST is non-nil, return a list of all such fields.
17559;;;*** 17546;;;***
17560 17547
17561;;;### (autoloads (define-mail-abbrev build-mail-abbrevs mail-abbrevs-setup) 17548;;;### (autoloads (define-mail-abbrev build-mail-abbrevs mail-abbrevs-setup)
17562;;;;;; "mailabbrev" "mail/mailabbrev.el" (17994 6741)) 17549;;;;;; "mailabbrev" "mail/mailabbrev.el" (17992 30878))
17563;;; Generated autoloads from mail/mailabbrev.el 17550;;; Generated autoloads from mail/mailabbrev.el
17564 17551
17565(autoload (quote mail-abbrevs-setup) "mailabbrev" "\ 17552(autoload (quote mail-abbrevs-setup) "mailabbrev" "\
@@ -17582,8 +17569,8 @@ If DEFINITION contains multiple addresses, separate them with commas.
17582;;;*** 17569;;;***
17583 17570
17584;;;### (autoloads (mail-complete define-mail-alias expand-mail-aliases 17571;;;### (autoloads (mail-complete define-mail-alias expand-mail-aliases
17585;;;;;; mail-complete-style) "mailalias" "mail/mailalias.el" (17994 17572;;;;;; mail-complete-style) "mailalias" "mail/mailalias.el" (17842
17586;;;;;; 6715)) 17573;;;;;; 55035))
17587;;; Generated autoloads from mail/mailalias.el 17574;;; Generated autoloads from mail/mailalias.el
17588 17575
17589(defvar mail-complete-style (quote angles) "\ 17576(defvar mail-complete-style (quote angles) "\
@@ -17629,7 +17616,7 @@ current header, calls `mail-complete-function' and passes prefix arg if any.
17629;;;*** 17616;;;***
17630 17617
17631;;;### (autoloads (mailclient-send-it) "mailclient" "mail/mailclient.el" 17618;;;### (autoloads (mailclient-send-it) "mailclient" "mail/mailclient.el"
17632;;;;;; (17994 6715)) 17619;;;;;; (17842 55035))
17633;;; Generated autoloads from mail/mailclient.el 17620;;; Generated autoloads from mail/mailclient.el
17634 17621
17635(autoload (quote mailclient-send-it) "mailclient" "\ 17622(autoload (quote mailclient-send-it) "mailclient" "\
@@ -17643,7 +17630,7 @@ The mail client is taken to be the handler of mailto URLs.
17643 17630
17644;;;### (autoloads (makefile-imake-mode makefile-bsdmake-mode makefile-makepp-mode 17631;;;### (autoloads (makefile-imake-mode makefile-bsdmake-mode makefile-makepp-mode
17645;;;;;; makefile-gmake-mode makefile-automake-mode makefile-mode) 17632;;;;;; makefile-gmake-mode makefile-automake-mode makefile-mode)
17646;;;;;; "make-mode" "progmodes/make-mode.el" (17994 6715)) 17633;;;;;; "make-mode" "progmodes/make-mode.el" (17842 56332))
17647;;; Generated autoloads from progmodes/make-mode.el 17634;;; Generated autoloads from progmodes/make-mode.el
17648 17635
17649(autoload (quote makefile-mode) "make-mode" "\ 17636(autoload (quote makefile-mode) "make-mode" "\
@@ -17760,8 +17747,8 @@ An adapted `makefile-mode' that knows about imake.
17760 17747
17761;;;*** 17748;;;***
17762 17749
17763;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (17994 17750;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (17842
17764;;;;;; 6715)) 17751;;;;;; 58279))
17765;;; Generated autoloads from makesum.el 17752;;; Generated autoloads from makesum.el
17766 17753
17767(autoload (quote make-command-summary) "makesum" "\ 17754(autoload (quote make-command-summary) "makesum" "\
@@ -17772,7 +17759,7 @@ Previous contents of that buffer are killed first.
17772 17759
17773;;;*** 17760;;;***
17774 17761
17775;;;### (autoloads (man-follow man) "man" "man.el" (17994 6743)) 17762;;;### (autoloads (man-follow man) "man" "man.el" (17992 30877))
17776;;; Generated autoloads from man.el 17763;;; Generated autoloads from man.el
17777 17764
17778(defalias (quote manual-entry) (quote man)) 17765(defalias (quote manual-entry) (quote man))
@@ -17799,7 +17786,7 @@ Get a Un*x manual page of the item under point and put it in a buffer.
17799 17786
17800;;;*** 17787;;;***
17801 17788
17802;;;### (autoloads (master-mode) "master" "master.el" (17994 6715)) 17789;;;### (autoloads (master-mode) "master" "master.el" (17842 58279))
17803;;; Generated autoloads from master.el 17790;;; Generated autoloads from master.el
17804 17791
17805(autoload (quote master-mode) "master" "\ 17792(autoload (quote master-mode) "master" "\
@@ -17821,8 +17808,8 @@ yourself the value of `master-of' by calling `master-show-slave'.
17821 17808
17822;;;*** 17809;;;***
17823 17810
17824;;;### (autoloads (menu-bar-mode) "menu-bar" "menu-bar.el" (17994 17811;;;### (autoloads (menu-bar-mode) "menu-bar" "menu-bar.el" (17942
17825;;;;;; 6751)) 17812;;;;;; 63381))
17826;;; Generated autoloads from menu-bar.el 17813;;; Generated autoloads from menu-bar.el
17827 17814
17828(put (quote menu-bar-mode) (quote standard-value) (quote (t))) 17815(put (quote menu-bar-mode) (quote standard-value) (quote (t)))
@@ -17857,7 +17844,7 @@ turn on menu bars; otherwise, turn off menu bars.
17857;;;;;; message-cite-function message-yank-prefix message-citation-line-function 17844;;;;;; message-cite-function message-yank-prefix message-citation-line-function
17858;;;;;; message-send-mail-function message-user-organization-file 17845;;;;;; message-send-mail-function message-user-organization-file
17859;;;;;; message-signature-separator message-from-style) "message" 17846;;;;;; message-signature-separator message-from-style) "message"
17860;;;;;; "gnus/message.el" (17994 6715)) 17847;;;;;; "gnus/message.el" (18010 19867))
17861;;; Generated autoloads from gnus/message.el 17848;;; Generated autoloads from gnus/message.el
17862 17849
17863(defvar message-from-style (quote default) "\ 17850(defvar message-from-style (quote default) "\
@@ -18113,7 +18100,7 @@ which specify the range to operate on.
18113;;;*** 18100;;;***
18114 18101
18115;;;### (autoloads (metapost-mode metafont-mode) "meta-mode" "progmodes/meta-mode.el" 18102;;;### (autoloads (metapost-mode metafont-mode) "meta-mode" "progmodes/meta-mode.el"
18116;;;;;; (17994 6715)) 18103;;;;;; (17842 56332))
18117;;; Generated autoloads from progmodes/meta-mode.el 18104;;; Generated autoloads from progmodes/meta-mode.el
18118 18105
18119(autoload (quote metafont-mode) "meta-mode" "\ 18106(autoload (quote metafont-mode) "meta-mode" "\
@@ -18140,7 +18127,7 @@ Turning on MetaPost mode calls the value of the variable
18140 18127
18141;;;### (autoloads (metamail-region metamail-buffer metamail-interpret-body 18128;;;### (autoloads (metamail-region metamail-buffer metamail-interpret-body
18142;;;;;; metamail-interpret-header) "metamail" "mail/metamail.el" 18129;;;;;; metamail-interpret-header) "metamail" "mail/metamail.el"
18143;;;;;; (17994 6715)) 18130;;;;;; (17842 55035))
18144;;; Generated autoloads from mail/metamail.el 18131;;; Generated autoloads from mail/metamail.el
18145 18132
18146(autoload (quote metamail-interpret-header) "metamail" "\ 18133(autoload (quote metamail-interpret-header) "metamail" "\
@@ -18185,7 +18172,7 @@ redisplayed as output is inserted.
18185 18172
18186;;;### (autoloads (mh-fully-kill-draft mh-send-letter mh-user-agent-compose 18173;;;### (autoloads (mh-fully-kill-draft mh-send-letter mh-user-agent-compose
18187;;;;;; mh-smail-batch mh-smail-other-window mh-smail) "mh-comp" 18174;;;;;; mh-smail-batch mh-smail-other-window mh-smail) "mh-comp"
18188;;;;;; "mh-e/mh-comp.el" (17994 6715)) 18175;;;;;; "mh-e/mh-comp.el" (17842 55144))
18189;;; Generated autoloads from mh-e/mh-comp.el 18176;;; Generated autoloads from mh-e/mh-comp.el
18190 18177
18191(autoload (quote mh-smail) "mh-comp" "\ 18178(autoload (quote mh-smail) "mh-comp" "\
@@ -18272,7 +18259,7 @@ delete the draft message.
18272 18259
18273;;;*** 18260;;;***
18274 18261
18275;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (17994 6715)) 18262;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (17842 55144))
18276;;; Generated autoloads from mh-e/mh-e.el 18263;;; Generated autoloads from mh-e/mh-e.el
18277 18264
18278(put (quote mh-progs) (quote risky-local-variable) t) 18265(put (quote mh-progs) (quote risky-local-variable) t)
@@ -18289,7 +18276,7 @@ Display version information about MH-E and the MH mail handling system.
18289;;;*** 18276;;;***
18290 18277
18291;;;### (autoloads (mh-folder-mode mh-nmail mh-rmail) "mh-folder" 18278;;;### (autoloads (mh-folder-mode mh-nmail mh-rmail) "mh-folder"
18292;;;;;; "mh-e/mh-folder.el" (17994 6715)) 18279;;;;;; "mh-e/mh-folder.el" (17842 55144))
18293;;; Generated autoloads from mh-e/mh-folder.el 18280;;; Generated autoloads from mh-e/mh-folder.el
18294 18281
18295(autoload (quote mh-rmail) "mh-folder" "\ 18282(autoload (quote mh-rmail) "mh-folder" "\
@@ -18371,7 +18358,7 @@ perform the operation on all messages in that region.
18371;;;*** 18358;;;***
18372 18359
18373;;;### (autoloads (midnight-delay-set clean-buffer-list) "midnight" 18360;;;### (autoloads (midnight-delay-set clean-buffer-list) "midnight"
18374;;;;;; "midnight.el" (17994 6715)) 18361;;;;;; "midnight.el" (17842 58279))
18375;;; Generated autoloads from midnight.el 18362;;; Generated autoloads from midnight.el
18376 18363
18377(autoload (quote clean-buffer-list) "midnight" "\ 18364(autoload (quote clean-buffer-list) "midnight" "\
@@ -18398,7 +18385,7 @@ to its second argument TM.
18398;;;*** 18385;;;***
18399 18386
18400;;;### (autoloads (minibuffer-electric-default-mode) "minibuf-eldef" 18387;;;### (autoloads (minibuffer-electric-default-mode) "minibuf-eldef"
18401;;;;;; "minibuf-eldef.el" (17994 6715)) 18388;;;;;; "minibuf-eldef.el" (17842 58279))
18402;;; Generated autoloads from minibuf-eldef.el 18389;;; Generated autoloads from minibuf-eldef.el
18403 18390
18404(defvar minibuffer-electric-default-mode nil "\ 18391(defvar minibuffer-electric-default-mode nil "\
@@ -18426,7 +18413,7 @@ Returns non-nil if the new state is enabled.
18426;;;*** 18413;;;***
18427 18414
18428;;;### (autoloads (mixal-mode) "mixal-mode" "progmodes/mixal-mode.el" 18415;;;### (autoloads (mixal-mode) "mixal-mode" "progmodes/mixal-mode.el"
18429;;;;;; (17994 6715)) 18416;;;;;; (17842 56332))
18430;;; Generated autoloads from progmodes/mixal-mode.el 18417;;; Generated autoloads from progmodes/mixal-mode.el
18431 18418
18432(autoload (quote mixal-mode) "mixal-mode" "\ 18419(autoload (quote mixal-mode) "mixal-mode" "\
@@ -18441,7 +18428,7 @@ Major mode for the mixal asm language.
18441 18428
18442;;;### (autoloads (malayalam-composition-function malayalam-post-read-conversion 18429;;;### (autoloads (malayalam-composition-function malayalam-post-read-conversion
18443;;;;;; malayalam-compose-region) "mlm-util" "language/mlm-util.el" 18430;;;;;; malayalam-compose-region) "mlm-util" "language/mlm-util.el"
18444;;;;;; (17994 6715)) 18431;;;;;; (17842 58278))
18445;;; Generated autoloads from language/mlm-util.el 18432;;; Generated autoloads from language/mlm-util.el
18446 18433
18447(autoload (quote malayalam-compose-region) "mlm-util" "\ 18434(autoload (quote malayalam-compose-region) "mlm-util" "\
@@ -18464,7 +18451,7 @@ PATTERN regexp.
18464;;;*** 18451;;;***
18465 18452
18466;;;### (autoloads (mm-inline-external-body mm-extern-cache-contents) 18453;;;### (autoloads (mm-inline-external-body mm-extern-cache-contents)
18467;;;;;; "mm-extern" "gnus/mm-extern.el" (17994 6715)) 18454;;;;;; "mm-extern" "gnus/mm-extern.el" (17842 54741))
18468;;; Generated autoloads from gnus/mm-extern.el 18455;;; Generated autoloads from gnus/mm-extern.el
18469 18456
18470(autoload (quote mm-extern-cache-contents) "mm-extern" "\ 18457(autoload (quote mm-extern-cache-contents) "mm-extern" "\
@@ -18483,7 +18470,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing.
18483;;;*** 18470;;;***
18484 18471
18485;;;### (autoloads (mm-inline-partial) "mm-partial" "gnus/mm-partial.el" 18472;;;### (autoloads (mm-inline-partial) "mm-partial" "gnus/mm-partial.el"
18486;;;;;; (17994 6715)) 18473;;;;;; (17842 54741))
18487;;; Generated autoloads from gnus/mm-partial.el 18474;;; Generated autoloads from gnus/mm-partial.el
18488 18475
18489(autoload (quote mm-inline-partial) "mm-partial" "\ 18476(autoload (quote mm-inline-partial) "mm-partial" "\
@@ -18497,7 +18484,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing.
18497;;;*** 18484;;;***
18498 18485
18499;;;### (autoloads (mm-url-insert-file-contents-external mm-url-insert-file-contents) 18486;;;### (autoloads (mm-url-insert-file-contents-external mm-url-insert-file-contents)
18500;;;;;; "mm-url" "gnus/mm-url.el" (17994 6715)) 18487;;;;;; "mm-url" "gnus/mm-url.el" (17842 54741))
18501;;; Generated autoloads from gnus/mm-url.el 18488;;; Generated autoloads from gnus/mm-url.el
18502 18489
18503(autoload (quote mm-url-insert-file-contents) "mm-url" "\ 18490(autoload (quote mm-url-insert-file-contents) "mm-url" "\
@@ -18514,7 +18501,7 @@ Insert file contents of URL using `mm-url-program'.
18514;;;*** 18501;;;***
18515 18502
18516;;;### (autoloads (mm-uu-dissect-text-parts mm-uu-dissect) "mm-uu" 18503;;;### (autoloads (mm-uu-dissect-text-parts mm-uu-dissect) "mm-uu"
18517;;;;;; "gnus/mm-uu.el" (17994 6715)) 18504;;;;;; "gnus/mm-uu.el" (17842 54741))
18518;;; Generated autoloads from gnus/mm-uu.el 18505;;; Generated autoloads from gnus/mm-uu.el
18519 18506
18520(autoload (quote mm-uu-dissect) "mm-uu" "\ 18507(autoload (quote mm-uu-dissect) "mm-uu" "\
@@ -18534,7 +18521,7 @@ Assume text has been decoded if DECODED is non-nil.
18534;;;*** 18521;;;***
18535 18522
18536;;;### (autoloads (mml1991-sign mml1991-encrypt) "mml1991" "gnus/mml1991.el" 18523;;;### (autoloads (mml1991-sign mml1991-encrypt) "mml1991" "gnus/mml1991.el"
18537;;;;;; (17994 6715)) 18524;;;;;; (17842 54741))
18538;;; Generated autoloads from gnus/mml1991.el 18525;;; Generated autoloads from gnus/mml1991.el
18539 18526
18540(autoload (quote mml1991-encrypt) "mml1991" "\ 18527(autoload (quote mml1991-encrypt) "mml1991" "\
@@ -18551,7 +18538,7 @@ Not documented
18551 18538
18552;;;### (autoloads (mml2015-self-encrypt mml2015-sign mml2015-encrypt 18539;;;### (autoloads (mml2015-self-encrypt mml2015-sign mml2015-encrypt
18553;;;;;; mml2015-verify-test mml2015-verify mml2015-decrypt-test mml2015-decrypt) 18540;;;;;; mml2015-verify-test mml2015-verify mml2015-decrypt-test mml2015-decrypt)
18554;;;;;; "mml2015" "gnus/mml2015.el" (17994 6715)) 18541;;;;;; "mml2015" "gnus/mml2015.el" (17842 54741))
18555;;; Generated autoloads from gnus/mml2015.el 18542;;; Generated autoloads from gnus/mml2015.el
18556 18543
18557(autoload (quote mml2015-decrypt) "mml2015" "\ 18544(autoload (quote mml2015-decrypt) "mml2015" "\
@@ -18592,7 +18579,7 @@ Not documented
18592;;;*** 18579;;;***
18593 18580
18594;;;### (autoloads (modula-2-mode) "modula2" "progmodes/modula2.el" 18581;;;### (autoloads (modula-2-mode) "modula2" "progmodes/modula2.el"
18595;;;;;; (17994 6715)) 18582;;;;;; (17276 13069))
18596;;; Generated autoloads from progmodes/modula2.el 18583;;; Generated autoloads from progmodes/modula2.el
18597 18584
18598(autoload (quote modula-2-mode) "modula2" "\ 18585(autoload (quote modula-2-mode) "modula2" "\
@@ -18624,7 +18611,7 @@ followed by the first character of the construct.
18624;;;*** 18611;;;***
18625 18612
18626;;;### (autoloads (unmorse-region morse-region) "morse" "play/morse.el" 18613;;;### (autoloads (unmorse-region morse-region) "morse" "play/morse.el"
18627;;;;;; (17994 6715)) 18614;;;;;; (17842 55395))
18628;;; Generated autoloads from play/morse.el 18615;;; Generated autoloads from play/morse.el
18629 18616
18630(autoload (quote morse-region) "morse" "\ 18617(autoload (quote morse-region) "morse" "\
@@ -18639,8 +18626,8 @@ Convert morse coded text in region to ordinary ASCII text.
18639 18626
18640;;;*** 18627;;;***
18641 18628
18642;;;### (autoloads (mouse-sel-mode) "mouse-sel" "mouse-sel.el" (17994 18629;;;### (autoloads (mouse-sel-mode) "mouse-sel" "mouse-sel.el" (17842
18643;;;;;; 6715)) 18630;;;;;; 58279))
18644;;; Generated autoloads from mouse-sel.el 18631;;; Generated autoloads from mouse-sel.el
18645 18632
18646(defvar mouse-sel-mode nil "\ 18633(defvar mouse-sel-mode nil "\
@@ -18692,7 +18679,7 @@ primary selection and region.
18692 18679
18693;;;*** 18680;;;***
18694 18681
18695;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (17994 6715)) 18682;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (17862 6157))
18696;;; Generated autoloads from play/mpuz.el 18683;;; Generated autoloads from play/mpuz.el
18697 18684
18698(autoload (quote mpuz) "mpuz" "\ 18685(autoload (quote mpuz) "mpuz" "\
@@ -18702,7 +18689,7 @@ Multiplication puzzle with GNU Emacs.
18702 18689
18703;;;*** 18690;;;***
18704 18691
18705;;;### (autoloads (msb-mode) "msb" "msb.el" (18000 24333)) 18692;;;### (autoloads (msb-mode) "msb" "msb.el" (18006 55796))
18706;;; Generated autoloads from msb.el 18693;;; Generated autoloads from msb.el
18707 18694
18708(defvar msb-mode nil "\ 18695(defvar msb-mode nil "\
@@ -18729,7 +18716,7 @@ different buffer menu using the function `msb'.
18729;;;;;; describe-current-coding-system describe-current-coding-system-briefly 18716;;;;;; describe-current-coding-system describe-current-coding-system-briefly
18730;;;;;; describe-coding-system describe-character-set list-charset-chars 18717;;;;;; describe-coding-system describe-character-set list-charset-chars
18731;;;;;; read-charset list-character-sets) "mule-diag" "international/mule-diag.el" 18718;;;;;; read-charset list-character-sets) "mule-diag" "international/mule-diag.el"
18732;;;;;; (17994 6715)) 18719;;;;;; (17842 54888))
18733;;; Generated autoloads from international/mule-diag.el 18720;;; Generated autoloads from international/mule-diag.el
18734 18721
18735(defvar non-iso-charset-alist (\` ((mac-roman (ascii latin-iso8859-1 mule-unicode-2500-33ff mule-unicode-0100-24ff mule-unicode-e000-ffff) mac-roman-decoder ((0 255))) (viscii (ascii vietnamese-viscii-lower vietnamese-viscii-upper) viet-viscii-nonascii-translation-table ((0 255))) (vietnamese-tcvn (ascii vietnamese-viscii-lower vietnamese-viscii-upper) viet-tcvn-nonascii-translation-table ((0 255))) (koi8-r (ascii cyrillic-iso8859-5) cyrillic-koi8-r-nonascii-translation-table ((32 255))) (alternativnyj (ascii cyrillic-iso8859-5) cyrillic-alternativnyj-nonascii-translation-table ((32 255))) (koi8-u (ascii cyrillic-iso8859-5 mule-unicode-0100-24ff) cyrillic-koi8-u-nonascii-translation-table ((32 255))) (big5 (ascii chinese-big5-1 chinese-big5-2) decode-big5-char ((32 127) ((161 254) 64 126 161 254))) (sjis (ascii katakana-jisx0201 japanese-jisx0208) decode-sjis-char ((32 127 161 223) ((129 159 224 239) 64 126 128 252))))) "\ 18722(defvar non-iso-charset-alist (\` ((mac-roman (ascii latin-iso8859-1 mule-unicode-2500-33ff mule-unicode-0100-24ff mule-unicode-e000-ffff) mac-roman-decoder ((0 255))) (viscii (ascii vietnamese-viscii-lower vietnamese-viscii-upper) viet-viscii-nonascii-translation-table ((0 255))) (vietnamese-tcvn (ascii vietnamese-viscii-lower vietnamese-viscii-upper) viet-tcvn-nonascii-translation-table ((0 255))) (koi8-r (ascii cyrillic-iso8859-5) cyrillic-koi8-r-nonascii-translation-table ((32 255))) (alternativnyj (ascii cyrillic-iso8859-5) cyrillic-alternativnyj-nonascii-translation-table ((32 255))) (koi8-u (ascii cyrillic-iso8859-5 mule-unicode-0100-24ff) cyrillic-koi8-u-nonascii-translation-table ((32 255))) (big5 (ascii chinese-big5-1 chinese-big5-2) decode-big5-char ((32 127) ((161 254) 64 126 161 254))) (sjis (ascii katakana-jisx0201 japanese-jisx0208) decode-sjis-char ((32 127 161 223) ((129 159 224 239) 64 126 128 252))))) "\
@@ -18903,7 +18890,7 @@ system which uses fontsets).
18903;;;;;; coding-system-translation-table-for-decode coding-system-pre-write-conversion 18890;;;;;; coding-system-translation-table-for-decode coding-system-pre-write-conversion
18904;;;;;; coding-system-post-read-conversion lookup-nested-alist set-nested-alist 18891;;;;;; coding-system-post-read-conversion lookup-nested-alist set-nested-alist
18905;;;;;; truncate-string-to-width store-substring string-to-sequence) 18892;;;;;; truncate-string-to-width store-substring string-to-sequence)
18906;;;;;; "mule-util" "international/mule-util.el" (17994 6715)) 18893;;;;;; "mule-util" "international/mule-util.el" (17842 54888))
18907;;; Generated autoloads from international/mule-util.el 18894;;; Generated autoloads from international/mule-util.el
18908 18895
18909(autoload (quote string-to-sequence) "mule-util" "\ 18896(autoload (quote string-to-sequence) "mule-util" "\
@@ -19032,7 +19019,7 @@ basis, this may not be accurate.
19032;;;*** 19019;;;***
19033 19020
19034;;;### (autoloads (mwheel-install mouse-wheel-mode) "mwheel" "mwheel.el" 19021;;;### (autoloads (mwheel-install mouse-wheel-mode) "mwheel" "mwheel.el"
19035;;;;;; (17994 6715)) 19022;;;;;; (17842 58279))
19036;;; Generated autoloads from mwheel.el 19023;;; Generated autoloads from mwheel.el
19037 19024
19038(defvar mouse-wheel-mode nil "\ 19025(defvar mouse-wheel-mode nil "\
@@ -19061,7 +19048,7 @@ Enable mouse wheel support.
19061;;;### (autoloads (network-connection network-connection-to-service 19048;;;### (autoloads (network-connection network-connection-to-service
19062;;;;;; whois-reverse-lookup whois finger ftp run-dig dns-lookup-host 19049;;;;;; whois-reverse-lookup whois finger ftp run-dig dns-lookup-host
19063;;;;;; nslookup nslookup-host route arp netstat ipconfig ping traceroute) 19050;;;;;; nslookup nslookup-host route arp netstat ipconfig ping traceroute)
19064;;;;;; "net-utils" "net/net-utils.el" (17994 6715)) 19051;;;;;; "net-utils" "net/net-utils.el" (17891 7215))
19065;;; Generated autoloads from net/net-utils.el 19052;;; Generated autoloads from net/net-utils.el
19066 19053
19067(autoload (quote traceroute) "net-utils" "\ 19054(autoload (quote traceroute) "net-utils" "\
@@ -19157,7 +19144,7 @@ Open a network connection to HOST on PORT.
19157;;;;;; uncomment-region comment-kill comment-set-column comment-indent 19144;;;;;; uncomment-region comment-kill comment-set-column comment-indent
19158;;;;;; comment-indent-default comment-normalize-vars comment-multi-line 19145;;;;;; comment-indent-default comment-normalize-vars comment-multi-line
19159;;;;;; comment-padding comment-style comment-column) "newcomment" 19146;;;;;; comment-padding comment-style comment-column) "newcomment"
19160;;;;;; "newcomment.el" (17994 6740)) 19147;;;;;; "newcomment.el" (17992 30877))
19161;;; Generated autoloads from newcomment.el 19148;;; Generated autoloads from newcomment.el
19162 19149
19163(defalias (quote indent-for-comment) (quote comment-indent)) 19150(defalias (quote indent-for-comment) (quote comment-indent))
@@ -19353,7 +19340,7 @@ unless optional argument SOFT is non-nil.
19353 19340
19354;;;### (autoloads (newsticker-show-news newsticker-start-ticker newsticker-start 19341;;;### (autoloads (newsticker-show-news newsticker-start-ticker newsticker-start
19355;;;;;; newsticker-ticker-running-p newsticker-running-p) "newsticker" 19342;;;;;; newsticker-ticker-running-p newsticker-running-p) "newsticker"
19356;;;;;; "net/newsticker.el" (17994 6715)) 19343;;;;;; "net/newsticker.el" (17873 44590))
19357;;; Generated autoloads from net/newsticker.el 19344;;; Generated autoloads from net/newsticker.el
19358 19345
19359(autoload (quote newsticker-running-p) "newsticker" "\ 19346(autoload (quote newsticker-running-p) "newsticker" "\
@@ -19395,7 +19382,7 @@ Switch to newsticker buffer. You may want to bind this to a key.
19395;;;*** 19382;;;***
19396 19383
19397;;;### (autoloads (nndiary-generate-nov-databases) "nndiary" "gnus/nndiary.el" 19384;;;### (autoloads (nndiary-generate-nov-databases) "nndiary" "gnus/nndiary.el"
19398;;;;;; (17994 6741)) 19385;;;;;; (17992 30878))
19399;;; Generated autoloads from gnus/nndiary.el 19386;;; Generated autoloads from gnus/nndiary.el
19400 19387
19401(autoload (quote nndiary-generate-nov-databases) "nndiary" "\ 19388(autoload (quote nndiary-generate-nov-databases) "nndiary" "\
@@ -19405,8 +19392,8 @@ Generate NOV databases in all nndiary directories.
19405 19392
19406;;;*** 19393;;;***
19407 19394
19408;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (17994 19395;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (17842
19409;;;;;; 6715)) 19396;;;;;; 54741))
19410;;; Generated autoloads from gnus/nndoc.el 19397;;; Generated autoloads from gnus/nndoc.el
19411 19398
19412(autoload (quote nndoc-add-type) "nndoc" "\ 19399(autoload (quote nndoc-add-type) "nndoc" "\
@@ -19421,7 +19408,7 @@ symbol in the alist.
19421;;;*** 19408;;;***
19422 19409
19423;;;### (autoloads (nnfolder-generate-active-file) "nnfolder" "gnus/nnfolder.el" 19410;;;### (autoloads (nnfolder-generate-active-file) "nnfolder" "gnus/nnfolder.el"
19424;;;;;; (17994 6715)) 19411;;;;;; (17842 54741))
19425;;; Generated autoloads from gnus/nnfolder.el 19412;;; Generated autoloads from gnus/nnfolder.el
19426 19413
19427(autoload (quote nnfolder-generate-active-file) "nnfolder" "\ 19414(autoload (quote nnfolder-generate-active-file) "nnfolder" "\
@@ -19433,7 +19420,7 @@ This command does not work if you use short group names.
19433;;;*** 19420;;;***
19434 19421
19435;;;### (autoloads (nnkiboze-generate-groups) "nnkiboze" "gnus/nnkiboze.el" 19422;;;### (autoloads (nnkiboze-generate-groups) "nnkiboze" "gnus/nnkiboze.el"
19436;;;;;; (17994 6715)) 19423;;;;;; (17842 54741))
19437;;; Generated autoloads from gnus/nnkiboze.el 19424;;; Generated autoloads from gnus/nnkiboze.el
19438 19425
19439(autoload (quote nnkiboze-generate-groups) "nnkiboze" "\ 19426(autoload (quote nnkiboze-generate-groups) "nnkiboze" "\
@@ -19445,7 +19432,7 @@ Finds out what articles are to be part of the nnkiboze groups.
19445;;;*** 19432;;;***
19446 19433
19447;;;### (autoloads (nnml-generate-nov-databases) "nnml" "gnus/nnml.el" 19434;;;### (autoloads (nnml-generate-nov-databases) "nnml" "gnus/nnml.el"
19448;;;;;; (17994 6715)) 19435;;;;;; (17842 54741))
19449;;; Generated autoloads from gnus/nnml.el 19436;;; Generated autoloads from gnus/nnml.el
19450 19437
19451(autoload (quote nnml-generate-nov-databases) "nnml" "\ 19438(autoload (quote nnml-generate-nov-databases) "nnml" "\
@@ -19456,7 +19443,7 @@ Generate NOV databases in all nnml directories.
19456;;;*** 19443;;;***
19457 19444
19458;;;### (autoloads (nnsoup-revert-variables nnsoup-set-variables nnsoup-pack-replies) 19445;;;### (autoloads (nnsoup-revert-variables nnsoup-set-variables nnsoup-pack-replies)
19459;;;;;; "nnsoup" "gnus/nnsoup.el" (17994 6715)) 19446;;;;;; "nnsoup" "gnus/nnsoup.el" (17842 54741))
19460;;; Generated autoloads from gnus/nnsoup.el 19447;;; Generated autoloads from gnus/nnsoup.el
19461 19448
19462(autoload (quote nnsoup-pack-replies) "nnsoup" "\ 19449(autoload (quote nnsoup-pack-replies) "nnsoup" "\
@@ -19477,7 +19464,7 @@ Revert posting and mailing methods to the standard Emacs methods.
19477;;;*** 19464;;;***
19478 19465
19479;;;### (autoloads (disable-command enable-command disabled-command-function) 19466;;;### (autoloads (disable-command enable-command disabled-command-function)
19480;;;;;; "novice" "novice.el" (17994 6715)) 19467;;;;;; "novice" "novice.el" (17842 58279))
19481;;; Generated autoloads from novice.el 19468;;; Generated autoloads from novice.el
19482 19469
19483(defvar disabled-command-function (quote disabled-command-function) "\ 19470(defvar disabled-command-function (quote disabled-command-function) "\
@@ -19510,7 +19497,7 @@ to future sessions.
19510;;;*** 19497;;;***
19511 19498
19512;;;### (autoloads (nroff-mode) "nroff-mode" "textmodes/nroff-mode.el" 19499;;;### (autoloads (nroff-mode) "nroff-mode" "textmodes/nroff-mode.el"
19513;;;;;; (17994 6715)) 19500;;;;;; (17842 58277))
19514;;; Generated autoloads from textmodes/nroff-mode.el 19501;;; Generated autoloads from textmodes/nroff-mode.el
19515 19502
19516(autoload (quote nroff-mode) "nroff-mode" "\ 19503(autoload (quote nroff-mode) "nroff-mode" "\
@@ -19525,7 +19512,7 @@ closing requests for requests that are used in matched pairs.
19525;;;*** 19512;;;***
19526 19513
19527;;;### (autoloads (octave-help) "octave-hlp" "progmodes/octave-hlp.el" 19514;;;### (autoloads (octave-help) "octave-hlp" "progmodes/octave-hlp.el"
19528;;;;;; (17994 6715)) 19515;;;;;; (17842 56332))
19529;;; Generated autoloads from progmodes/octave-hlp.el 19516;;; Generated autoloads from progmodes/octave-hlp.el
19530 19517
19531(autoload (quote octave-help) "octave-hlp" "\ 19518(autoload (quote octave-help) "octave-hlp" "\
@@ -19539,7 +19526,7 @@ If KEY is not a string, prompt for it with completion.
19539;;;*** 19526;;;***
19540 19527
19541;;;### (autoloads (inferior-octave) "octave-inf" "progmodes/octave-inf.el" 19528;;;### (autoloads (inferior-octave) "octave-inf" "progmodes/octave-inf.el"
19542;;;;;; (17994 6715)) 19529;;;;;; (17842 56332))
19543;;; Generated autoloads from progmodes/octave-inf.el 19530;;; Generated autoloads from progmodes/octave-inf.el
19544 19531
19545(autoload (quote inferior-octave) "octave-inf" "\ 19532(autoload (quote inferior-octave) "octave-inf" "\
@@ -19562,7 +19549,7 @@ startup file, `~/.emacs-octave'.
19562;;;*** 19549;;;***
19563 19550
19564;;;### (autoloads (octave-mode) "octave-mod" "progmodes/octave-mod.el" 19551;;;### (autoloads (octave-mode) "octave-mod" "progmodes/octave-mod.el"
19565;;;;;; (17994 6715)) 19552;;;;;; (17842 56332))
19566;;; Generated autoloads from progmodes/octave-mod.el 19553;;; Generated autoloads from progmodes/octave-mod.el
19567 19554
19568(autoload (quote octave-mode) "octave-mod" "\ 19555(autoload (quote octave-mode) "octave-mod" "\
@@ -19688,7 +19675,7 @@ The Custom feature is intended to make this obsolete.
19688;;;;;; org-remember-handler org-remember org-remember-apply-template 19675;;;;;; org-remember-handler org-remember org-remember-apply-template
19689;;;;;; org-remember-annotation org-store-link orgtbl-mode turn-on-orgtbl 19676;;;;;; org-remember-annotation org-store-link orgtbl-mode turn-on-orgtbl
19690;;;;;; org-global-cycle org-cycle org-mode) "org" "textmodes/org.el" 19677;;;;;; org-global-cycle org-cycle org-mode) "org" "textmodes/org.el"
19691;;;;;; (17994 6715)) 19678;;;;;; (17922 37459))
19692;;; Generated autoloads from textmodes/org.el 19679;;; Generated autoloads from textmodes/org.el
19693 19680
19694(autoload (quote org-mode) "org" "\ 19681(autoload (quote org-mode) "org" "\
@@ -19963,7 +19950,7 @@ The file is stored under the name `org-combined-agenda-icalendar-file'.
19963;;;*** 19950;;;***
19964 19951
19965;;;### (autoloads (outline-minor-mode outline-mode) "outline" "outline.el" 19952;;;### (autoloads (outline-minor-mode outline-mode) "outline" "outline.el"
19966;;;;;; (17994 6715)) 19953;;;;;; (17952 11093))
19967;;; Generated autoloads from outline.el 19954;;; Generated autoloads from outline.el
19968(put 'outline-regexp 'safe-local-variable 'string-or-null-p) 19955(put 'outline-regexp 'safe-local-variable 'string-or-null-p)
19969 19956
@@ -20019,8 +20006,8 @@ See the command `outline-mode' for more information on this mode.
20019 20006
20020;;;*** 20007;;;***
20021 20008
20022;;;### (autoloads nil "paragraphs" "textmodes/paragraphs.el" (17994 20009;;;### (autoloads nil "paragraphs" "textmodes/paragraphs.el" (17842
20023;;;;;; 6715)) 20010;;;;;; 58277))
20024;;; Generated autoloads from textmodes/paragraphs.el 20011;;; Generated autoloads from textmodes/paragraphs.el
20025(put 'paragraph-start 'safe-local-variable 'stringp) 20012(put 'paragraph-start 'safe-local-variable 'stringp)
20026(put 'paragraph-separate 'safe-local-variable 'stringp) 20013(put 'paragraph-separate 'safe-local-variable 'stringp)
@@ -20034,7 +20021,7 @@ See the command `outline-mode' for more information on this mode.
20034 20021
20035;;;*** 20022;;;***
20036 20023
20037;;;### (autoloads (show-paren-mode) "paren" "paren.el" (17994 6715)) 20024;;;### (autoloads (show-paren-mode) "paren" "paren.el" (18016 8765))
20038;;; Generated autoloads from paren.el 20025;;; Generated autoloads from paren.el
20039 20026
20040(defvar show-paren-mode nil "\ 20027(defvar show-paren-mode nil "\
@@ -20059,7 +20046,7 @@ in `show-paren-style' after `show-paren-delay' seconds of Emacs idle time.
20059;;;*** 20046;;;***
20060 20047
20061;;;### (autoloads (parse-time-string) "parse-time" "calendar/parse-time.el" 20048;;;### (autoloads (parse-time-string) "parse-time" "calendar/parse-time.el"
20062;;;;;; (17994 6715)) 20049;;;;;; (17957 43164))
20063;;; Generated autoloads from calendar/parse-time.el 20050;;; Generated autoloads from calendar/parse-time.el
20064 20051
20065(autoload (quote parse-time-string) "parse-time" "\ 20052(autoload (quote parse-time-string) "parse-time" "\
@@ -20071,8 +20058,8 @@ unknown are returned as nil.
20071 20058
20072;;;*** 20059;;;***
20073 20060
20074;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (17994 20061;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (17842
20075;;;;;; 6715)) 20062;;;;;; 56332))
20076;;; Generated autoloads from progmodes/pascal.el 20063;;; Generated autoloads from progmodes/pascal.el
20077 20064
20078(autoload (quote pascal-mode) "pascal" "\ 20065(autoload (quote pascal-mode) "pascal" "\
@@ -20125,7 +20112,7 @@ no args, if that value is non-nil.
20125;;;*** 20112;;;***
20126 20113
20127;;;### (autoloads (pc-bindings-mode) "pc-mode" "emulation/pc-mode.el" 20114;;;### (autoloads (pc-bindings-mode) "pc-mode" "emulation/pc-mode.el"
20128;;;;;; (17994 6715)) 20115;;;;;; (17842 54264))
20129;;; Generated autoloads from emulation/pc-mode.el 20116;;; Generated autoloads from emulation/pc-mode.el
20130 20117
20131(autoload (quote pc-bindings-mode) "pc-mode" "\ 20118(autoload (quote pc-bindings-mode) "pc-mode" "\
@@ -20143,7 +20130,7 @@ C-Escape does list-buffers.
20143;;;*** 20130;;;***
20144 20131
20145;;;### (autoloads (pc-selection-mode pc-selection-mode) "pc-select" 20132;;;### (autoloads (pc-selection-mode pc-selection-mode) "pc-select"
20146;;;;;; "emulation/pc-select.el" (17994 6715)) 20133;;;;;; "emulation/pc-select.el" (17842 54264))
20147;;; Generated autoloads from emulation/pc-select.el 20134;;; Generated autoloads from emulation/pc-select.el
20148 20135
20149(defvar pc-selection-mode nil "\ 20136(defvar pc-selection-mode nil "\
@@ -20219,8 +20206,8 @@ you must modify it using \\[customize] or \\[pc-selection-mode].")
20219 20206
20220;;;*** 20207;;;***
20221 20208
20222;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (17994 20209;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (17842
20223;;;;;; 6715)) 20210;;;;;; 58279))
20224;;; Generated autoloads from pcmpl-cvs.el 20211;;; Generated autoloads from pcmpl-cvs.el
20225 20212
20226(autoload (quote pcomplete/cvs) "pcmpl-cvs" "\ 20213(autoload (quote pcomplete/cvs) "pcmpl-cvs" "\
@@ -20231,7 +20218,7 @@ Completion rules for the `cvs' command.
20231;;;*** 20218;;;***
20232 20219
20233;;;### (autoloads (pcomplete/tar pcomplete/make pcomplete/bzip2 pcomplete/gzip) 20220;;;### (autoloads (pcomplete/tar pcomplete/make pcomplete/bzip2 pcomplete/gzip)
20234;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (17994 6715)) 20221;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (17842 58279))
20235;;; Generated autoloads from pcmpl-gnu.el 20222;;; Generated autoloads from pcmpl-gnu.el
20236 20223
20237(autoload (quote pcomplete/gzip) "pcmpl-gnu" "\ 20224(autoload (quote pcomplete/gzip) "pcmpl-gnu" "\
@@ -20259,7 +20246,7 @@ Completion for the GNU tar utility.
20259;;;*** 20246;;;***
20260 20247
20261;;;### (autoloads (pcomplete/mount pcomplete/umount pcomplete/kill) 20248;;;### (autoloads (pcomplete/mount pcomplete/umount pcomplete/kill)
20262;;;;;; "pcmpl-linux" "pcmpl-linux.el" (17994 6715)) 20249;;;;;; "pcmpl-linux" "pcmpl-linux.el" (17842 58279))
20263;;; Generated autoloads from pcmpl-linux.el 20250;;; Generated autoloads from pcmpl-linux.el
20264 20251
20265(autoload (quote pcomplete/kill) "pcmpl-linux" "\ 20252(autoload (quote pcomplete/kill) "pcmpl-linux" "\
@@ -20279,8 +20266,8 @@ Completion for GNU/Linux `mount'.
20279 20266
20280;;;*** 20267;;;***
20281 20268
20282;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (17994 20269;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (17842
20283;;;;;; 6715)) 20270;;;;;; 58279))
20284;;; Generated autoloads from pcmpl-rpm.el 20271;;; Generated autoloads from pcmpl-rpm.el
20285 20272
20286(autoload (quote pcomplete/rpm) "pcmpl-rpm" "\ 20273(autoload (quote pcomplete/rpm) "pcmpl-rpm" "\
@@ -20296,7 +20283,7 @@ You can use \\[eshell-report-bug] to do so.
20296 20283
20297;;;### (autoloads (pcomplete/chgrp pcomplete/chown pcomplete/which 20284;;;### (autoloads (pcomplete/chgrp pcomplete/chown pcomplete/which
20298;;;;;; pcomplete/xargs pcomplete/rm pcomplete/rmdir pcomplete/cd) 20285;;;;;; pcomplete/xargs pcomplete/rm pcomplete/rmdir pcomplete/cd)
20299;;;;;; "pcmpl-unix" "pcmpl-unix.el" (17994 6715)) 20286;;;;;; "pcmpl-unix" "pcmpl-unix.el" (17842 58279))
20300;;; Generated autoloads from pcmpl-unix.el 20287;;; Generated autoloads from pcmpl-unix.el
20301 20288
20302(autoload (quote pcomplete/cd) "pcmpl-unix" "\ 20289(autoload (quote pcomplete/cd) "pcmpl-unix" "\
@@ -20342,8 +20329,8 @@ Completion for the `chgrp' command.
20342 20329
20343;;;### (autoloads (pcomplete-shell-setup pcomplete-comint-setup pcomplete-list 20330;;;### (autoloads (pcomplete-shell-setup pcomplete-comint-setup pcomplete-list
20344;;;;;; pcomplete-help pcomplete-expand pcomplete-continue pcomplete-expand-and-complete 20331;;;;;; pcomplete-help pcomplete-expand pcomplete-continue pcomplete-expand-and-complete
20345;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (17994 20332;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (17944
20346;;;;;; 6715)) 20333;;;;;; 62194))
20347;;; Generated autoloads from pcomplete.el 20334;;; Generated autoloads from pcomplete.el
20348 20335
20349(autoload (quote pcomplete) "pcomplete" "\ 20336(autoload (quote pcomplete) "pcomplete" "\
@@ -20402,7 +20389,7 @@ Setup shell-mode to use pcomplete.
20402 20389
20403;;;### (autoloads (cvs-dired-use-hook cvs-dired-action cvs-status 20390;;;### (autoloads (cvs-dired-use-hook cvs-dired-action cvs-status
20404;;;;;; cvs-update cvs-examine cvs-quickdir cvs-checkout) "pcvs" 20391;;;;;; cvs-update cvs-examine cvs-quickdir cvs-checkout) "pcvs"
20405;;;;;; "pcvs.el" (18000 24333)) 20392;;;;;; "pcvs.el" (18006 55796))
20406;;; Generated autoloads from pcvs.el 20393;;; Generated autoloads from pcvs.el
20407 20394
20408(autoload (quote cvs-checkout) "pcvs" "\ 20395(autoload (quote cvs-checkout) "pcvs" "\
@@ -20479,7 +20466,7 @@ The exact behavior is determined also by `cvs-dired-use-hook'." (when (stringp d
20479 20466
20480;;;*** 20467;;;***
20481 20468
20482;;;### (autoloads nil "pcvs-defs" "pcvs-defs.el" (17994 6715)) 20469;;;### (autoloads nil "pcvs-defs" "pcvs-defs.el" (17842 58279))
20483;;; Generated autoloads from pcvs-defs.el 20470;;; Generated autoloads from pcvs-defs.el
20484 20471
20485(defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key m [status] (quote (menu-item "Directory Status" cvs-status :help "A more verbose status of a workarea"))) (define-key m [checkout] (quote (menu-item "Checkout Module" cvs-checkout :help "Check out a module from the repository"))) (define-key m [update] (quote (menu-item "Update Directory" cvs-update :help "Fetch updates from the repository"))) (define-key m [examine] (quote (menu-item "Examine Directory" cvs-examine :help "Examine the current state of a workarea"))) (fset (quote cvs-global-menu) m))) 20472(defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key m [status] (quote (menu-item "Directory Status" cvs-status :help "A more verbose status of a workarea"))) (define-key m [checkout] (quote (menu-item "Checkout Module" cvs-checkout :help "Check out a module from the repository"))) (define-key m [update] (quote (menu-item "Update Directory" cvs-update :help "Fetch updates from the repository"))) (define-key m [examine] (quote (menu-item "Examine Directory" cvs-examine :help "Examine the current state of a workarea"))) (fset (quote cvs-global-menu) m)))
@@ -20487,7 +20474,7 @@ The exact behavior is determined also by `cvs-dired-use-hook'." (when (stringp d
20487;;;*** 20474;;;***
20488 20475
20489;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el" 20476;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el"
20490;;;;;; (17994 6715)) 20477;;;;;; (17962 28280))
20491;;; Generated autoloads from progmodes/perl-mode.el 20478;;; Generated autoloads from progmodes/perl-mode.el
20492 20479
20493(autoload (quote perl-mode) "perl-mode" "\ 20480(autoload (quote perl-mode) "perl-mode" "\
@@ -20545,7 +20532,7 @@ Turning on Perl mode runs the normal hook `perl-mode-hook'.
20545;;;### (autoloads (pgg-snarf-keys pgg-snarf-keys-region pgg-insert-key 20532;;;### (autoloads (pgg-snarf-keys pgg-snarf-keys-region pgg-insert-key
20546;;;;;; pgg-verify pgg-verify-region pgg-sign pgg-sign-region pgg-decrypt 20533;;;;;; pgg-verify pgg-verify-region pgg-sign pgg-sign-region pgg-decrypt
20547;;;;;; pgg-decrypt-region pgg-encrypt pgg-encrypt-symmetric pgg-encrypt-symmetric-region 20534;;;;;; pgg-decrypt-region pgg-encrypt pgg-encrypt-symmetric pgg-encrypt-symmetric-region
20548;;;;;; pgg-encrypt-region) "pgg" "pgg.el" (17994 6715)) 20535;;;;;; pgg-encrypt-region) "pgg" "pgg.el" (17842 58279))
20549;;; Generated autoloads from pgg.el 20536;;; Generated autoloads from pgg.el
20550 20537
20551(autoload (quote pgg-encrypt-region) "pgg" "\ 20538(autoload (quote pgg-encrypt-region) "pgg" "\
@@ -20679,7 +20666,7 @@ Import public keys in the current buffer.
20679;;;*** 20666;;;***
20680 20667
20681;;;### (autoloads (pgg-gpg-symmetric-key-p) "pgg-gpg" "pgg-gpg.el" 20668;;;### (autoloads (pgg-gpg-symmetric-key-p) "pgg-gpg" "pgg-gpg.el"
20682;;;;;; (17994 6715)) 20669;;;;;; (17887 33207))
20683;;; Generated autoloads from pgg-gpg.el 20670;;; Generated autoloads from pgg-gpg.el
20684 20671
20685(autoload (quote pgg-gpg-symmetric-key-p) "pgg-gpg" "\ 20672(autoload (quote pgg-gpg-symmetric-key-p) "pgg-gpg" "\
@@ -20690,7 +20677,7 @@ True if decoded armor MESSAGE-KEYS has symmetric encryption indicator.
20690;;;*** 20677;;;***
20691 20678
20692;;;### (autoloads (picture-mode) "picture" "textmodes/picture.el" 20679;;;### (autoloads (picture-mode) "picture" "textmodes/picture.el"
20693;;;;;; (17994 6715)) 20680;;;;;; (17842 58277))
20694;;; Generated autoloads from textmodes/picture.el 20681;;; Generated autoloads from textmodes/picture.el
20695 20682
20696(autoload (quote picture-mode) "picture" "\ 20683(autoload (quote picture-mode) "picture" "\
@@ -20771,7 +20758,7 @@ they are not defaultly assigned to keys.
20771;;;*** 20758;;;***
20772 20759
20773;;;### (autoloads (po-find-file-coding-system) "po" "textmodes/po.el" 20760;;;### (autoloads (po-find-file-coding-system) "po" "textmodes/po.el"
20774;;;;;; (17994 6715)) 20761;;;;;; (17842 58277))
20775;;; Generated autoloads from textmodes/po.el 20762;;; Generated autoloads from textmodes/po.el
20776 20763
20777(autoload (quote po-find-file-coding-system) "po" "\ 20764(autoload (quote po-find-file-coding-system) "po" "\
@@ -20782,7 +20769,7 @@ Called through `file-coding-system-alist', before the file is visited for real.
20782 20769
20783;;;*** 20770;;;***
20784 20771
20785;;;### (autoloads (pong) "pong" "play/pong.el" (17994 6715)) 20772;;;### (autoloads (pong) "pong" "play/pong.el" (17842 55395))
20786;;; Generated autoloads from play/pong.el 20773;;; Generated autoloads from play/pong.el
20787 20774
20788(autoload (quote pong) "pong" "\ 20775(autoload (quote pong) "pong" "\
@@ -20799,7 +20786,7 @@ pong-mode keybindings:\\<pong-mode-map>
20799;;;*** 20786;;;***
20800 20787
20801;;;### (autoloads (pp-eval-last-sexp pp-eval-expression pp pp-buffer 20788;;;### (autoloads (pp-eval-last-sexp pp-eval-expression pp pp-buffer
20802;;;;;; pp-to-string) "pp" "emacs-lisp/pp.el" (17994 6715)) 20789;;;;;; pp-to-string) "pp" "emacs-lisp/pp.el" (17852 19612))
20803;;; Generated autoloads from emacs-lisp/pp.el 20790;;; Generated autoloads from emacs-lisp/pp.el
20804 20791
20805(autoload (quote pp-to-string) "pp" "\ 20792(autoload (quote pp-to-string) "pp" "\
@@ -20855,7 +20842,7 @@ Ignores leading comment characters.
20855;;;;;; pr-ps-buffer-print pr-ps-buffer-using-ghostscript pr-ps-buffer-preview 20842;;;;;; pr-ps-buffer-print pr-ps-buffer-using-ghostscript pr-ps-buffer-preview
20856;;;;;; pr-ps-directory-ps-print pr-ps-directory-print pr-ps-directory-using-ghostscript 20843;;;;;; pr-ps-directory-ps-print pr-ps-directory-print pr-ps-directory-using-ghostscript
20857;;;;;; pr-ps-directory-preview pr-interface) "printing" "printing.el" 20844;;;;;; pr-ps-directory-preview pr-interface) "printing" "printing.el"
20858;;;;;; (18000 24338)) 20845;;;;;; (18006 55796))
20859;;; Generated autoloads from printing.el 20846;;; Generated autoloads from printing.el
20860 20847
20861(autoload (quote pr-interface) "printing" "\ 20848(autoload (quote pr-interface) "printing" "\
@@ -21443,7 +21430,7 @@ are both set to t.
21443;;;*** 21430;;;***
21444 21431
21445;;;### (autoloads (switch-to-prolog prolog-mode) "prolog" "progmodes/prolog.el" 21432;;;### (autoloads (switch-to-prolog prolog-mode) "prolog" "progmodes/prolog.el"
21446;;;;;; (17994 6715)) 21433;;;;;; (17842 56332))
21447;;; Generated autoloads from progmodes/prolog.el 21434;;; Generated autoloads from progmodes/prolog.el
21448 21435
21449(autoload (quote prolog-mode) "prolog" "\ 21436(autoload (quote prolog-mode) "prolog" "\
@@ -21466,7 +21453,7 @@ With prefix argument \\[universal-prefix], prompt for the program to use.
21466 21453
21467;;;*** 21454;;;***
21468 21455
21469;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (17994 6715)) 21456;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (17842 58279))
21470;;; Generated autoloads from ps-bdf.el 21457;;; Generated autoloads from ps-bdf.el
21471 21458
21472(defvar bdf-directory-list (if (memq system-type (quote (ms-dos windows-nt))) (list (expand-file-name "fonts/bdf" installation-directory)) (quote ("/usr/local/share/emacs/fonts/bdf"))) "\ 21459(defvar bdf-directory-list (if (memq system-type (quote (ms-dos windows-nt))) (list (expand-file-name "fonts/bdf" installation-directory)) (quote ("/usr/local/share/emacs/fonts/bdf"))) "\
@@ -21475,8 +21462,8 @@ The default value is '(\"/usr/local/share/emacs/fonts/bdf\").")
21475 21462
21476;;;*** 21463;;;***
21477 21464
21478;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (17994 21465;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (17842
21479;;;;;; 6715)) 21466;;;;;; 56332))
21480;;; Generated autoloads from progmodes/ps-mode.el 21467;;; Generated autoloads from progmodes/ps-mode.el
21481 21468
21482(autoload (quote ps-mode) "ps-mode" "\ 21469(autoload (quote ps-mode) "ps-mode" "\
@@ -21525,7 +21512,7 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when the cursor is at the number
21525;;;### (autoloads (ps-mule-begin-page ps-mule-begin-job ps-mule-encode-header-string 21512;;;### (autoloads (ps-mule-begin-page ps-mule-begin-job ps-mule-encode-header-string
21526;;;;;; ps-mule-initialize ps-mule-plot-composition ps-mule-plot-string 21513;;;;;; ps-mule-initialize ps-mule-plot-composition ps-mule-plot-string
21527;;;;;; ps-mule-set-ascii-font ps-mule-prepare-ascii-font ps-multibyte-buffer) 21514;;;;;; ps-mule-set-ascii-font ps-mule-prepare-ascii-font ps-multibyte-buffer)
21528;;;;;; "ps-mule" "ps-mule.el" (17994 6715)) 21515;;;;;; "ps-mule" "ps-mule.el" (17842 58279))
21529;;; Generated autoloads from ps-mule.el 21516;;; Generated autoloads from ps-mule.el
21530 21517
21531(defvar ps-multibyte-buffer nil "\ 21518(defvar ps-multibyte-buffer nil "\
@@ -21646,8 +21633,8 @@ Not documented
21646;;;;;; ps-spool-region ps-spool-buffer-with-faces ps-spool-buffer 21633;;;;;; ps-spool-region ps-spool-buffer-with-faces ps-spool-buffer
21647;;;;;; ps-print-region-with-faces ps-print-region ps-print-buffer-with-faces 21634;;;;;; ps-print-region-with-faces ps-print-region ps-print-buffer-with-faces
21648;;;;;; ps-print-buffer ps-print-customize ps-print-color-p ps-paper-type 21635;;;;;; ps-print-buffer ps-print-customize ps-print-color-p ps-paper-type
21649;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (18000 21636;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (18006
21650;;;;;; 24245)) 21637;;;;;; 55796))
21651;;; Generated autoloads from ps-print.el 21638;;; Generated autoloads from ps-print.el
21652 21639
21653(defvar ps-page-dimensions-database (list (list (quote a4) (/ (* 72 21.0) 2.54) (/ (* 72 29.7) 2.54) "A4") (list (quote a3) (/ (* 72 29.7) 2.54) (/ (* 72 42.0) 2.54) "A3") (list (quote letter) (* 72 8.5) (* 72 11.0) "Letter") (list (quote legal) (* 72 8.5) (* 72 14.0) "Legal") (list (quote letter-small) (* 72 7.68) (* 72 10.16) "LetterSmall") (list (quote tabloid) (* 72 11.0) (* 72 17.0) "Tabloid") (list (quote ledger) (* 72 17.0) (* 72 11.0) "Ledger") (list (quote statement) (* 72 5.5) (* 72 8.5) "Statement") (list (quote executive) (* 72 7.5) (* 72 10.0) "Executive") (list (quote a4small) (* 72 7.47) (* 72 10.85) "A4Small") (list (quote b4) (* 72 10.125) (* 72 14.33) "B4") (list (quote b5) (* 72 7.16) (* 72 10.125) "B5")) "\ 21640(defvar ps-page-dimensions-database (list (list (quote a4) (/ (* 72 21.0) 2.54) (/ (* 72 29.7) 2.54) "A4") (list (quote a3) (/ (* 72 29.7) 2.54) (/ (* 72 42.0) 2.54) "A3") (list (quote letter) (* 72 8.5) (* 72 11.0) "Letter") (list (quote legal) (* 72 8.5) (* 72 14.0) "Legal") (list (quote letter-small) (* 72 7.68) (* 72 10.16) "LetterSmall") (list (quote tabloid) (* 72 11.0) (* 72 17.0) "Tabloid") (list (quote ledger) (* 72 17.0) (* 72 11.0) "Ledger") (list (quote statement) (* 72 5.5) (* 72 8.5) "Statement") (list (quote executive) (* 72 7.5) (* 72 10.0) "Executive") (list (quote a4small) (* 72 7.47) (* 72 10.85) "A4Small") (list (quote b4) (* 72 10.125) (* 72 14.33) "B4") (list (quote b5) (* 72 7.16) (* 72 10.125) "B5")) "\
@@ -21844,7 +21831,7 @@ If EXTENSION is any other symbol, it is ignored.
21844;;;*** 21831;;;***
21845 21832
21846;;;### (autoloads (jython-mode python-mode run-python) "python" "progmodes/python.el" 21833;;;### (autoloads (jython-mode python-mode run-python) "python" "progmodes/python.el"
21847;;;;;; (17994 6741)) 21834;;;;;; (17992 30878))
21848;;; Generated autoloads from progmodes/python.el 21835;;; Generated autoloads from progmodes/python.el
21849 21836
21850(add-to-list (quote interpreter-mode-alist) (quote ("jython" . jython-mode))) 21837(add-to-list (quote interpreter-mode-alist) (quote ("jython" . jython-mode)))
@@ -21919,7 +21906,7 @@ Runs `jython-mode-hook' after `python-mode-hook'.
21919;;;*** 21906;;;***
21920 21907
21921;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el" 21908;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el"
21922;;;;;; (17994 6715)) 21909;;;;;; (17842 54741))
21923;;; Generated autoloads from gnus/qp.el 21910;;; Generated autoloads from gnus/qp.el
21924 21911
21925(autoload (quote quoted-printable-decode-region) "qp" "\ 21912(autoload (quote quoted-printable-decode-region) "qp" "\
@@ -21942,7 +21929,7 @@ them into characters should be done separately.
21942;;;;;; quail-defrule quail-install-decode-map quail-install-map 21929;;;;;; quail-defrule quail-install-decode-map quail-install-map
21943;;;;;; quail-define-rules quail-show-keyboard-layout quail-set-keyboard-layout 21930;;;;;; quail-define-rules quail-show-keyboard-layout quail-set-keyboard-layout
21944;;;;;; quail-define-package quail-use-package quail-title) "quail" 21931;;;;;; quail-define-package quail-use-package quail-title) "quail"
21945;;;;;; "international/quail.el" (17994 6715)) 21932;;;;;; "international/quail.el" (17921 16827))
21946;;; Generated autoloads from international/quail.el 21933;;; Generated autoloads from international/quail.el
21947 21934
21948(autoload (quote quail-title) "quail" "\ 21935(autoload (quote quail-title) "quail" "\
@@ -22173,8 +22160,8 @@ of each directory.
22173 22160
22174;;;### (autoloads (quickurl-list quickurl-list-mode quickurl-edit-urls 22161;;;### (autoloads (quickurl-list quickurl-list-mode quickurl-edit-urls
22175;;;;;; quickurl-browse-url-ask quickurl-browse-url quickurl-add-url 22162;;;;;; quickurl-browse-url-ask quickurl-browse-url quickurl-add-url
22176;;;;;; quickurl-ask quickurl) "quickurl" "net/quickurl.el" (17994 22163;;;;;; quickurl-ask quickurl) "quickurl" "net/quickurl.el" (17842
22177;;;;;; 6715)) 22164;;;;;; 55218))
22178;;; Generated autoloads from net/quickurl.el 22165;;; Generated autoloads from net/quickurl.el
22179 22166
22180(defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn (require 'quickurl) (add-hook 'local-write-file-hooks (lambda () (quickurl-read) nil)))\n;; End:\n" "\ 22167(defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn (require 'quickurl) (add-hook 'local-write-file-hooks (lambda () (quickurl-read) nil)))\n;; End:\n" "\
@@ -22246,7 +22233,7 @@ Display `quickurl-list' as a formatted list using `quickurl-list-mode'.
22246;;;*** 22233;;;***
22247 22234
22248;;;### (autoloads (rcirc-track-minor-mode rcirc-connect rcirc) "rcirc" 22235;;;### (autoloads (rcirc-track-minor-mode rcirc-connect rcirc) "rcirc"
22249;;;;;; "net/rcirc.el" (17994 6737)) 22236;;;;;; "net/rcirc.el" (18006 55797))
22250;;; Generated autoloads from net/rcirc.el 22237;;; Generated autoloads from net/rcirc.el
22251 22238
22252(autoload (quote rcirc) "rcirc" "\ 22239(autoload (quote rcirc) "rcirc" "\
@@ -22278,8 +22265,8 @@ Global minor mode for tracking activity in rcirc buffers.
22278 22265
22279;;;*** 22266;;;***
22280 22267
22281;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (17994 22268;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (17842
22282;;;;;; 6715)) 22269;;;;;; 55218))
22283;;; Generated autoloads from net/rcompile.el 22270;;; Generated autoloads from net/rcompile.el
22284 22271
22285(autoload (quote remote-compile) "rcompile" "\ 22272(autoload (quote remote-compile) "rcompile" "\
@@ -22291,7 +22278,7 @@ See \\[compile].
22291;;;*** 22278;;;***
22292 22279
22293;;;### (autoloads (re-builder) "re-builder" "emacs-lisp/re-builder.el" 22280;;;### (autoloads (re-builder) "re-builder" "emacs-lisp/re-builder.el"
22294;;;;;; (17994 6715)) 22281;;;;;; (17917 37732))
22295;;; Generated autoloads from emacs-lisp/re-builder.el 22282;;; Generated autoloads from emacs-lisp/re-builder.el
22296 22283
22297(defalias (quote regexp-builder) (quote re-builder)) 22284(defalias (quote regexp-builder) (quote re-builder))
@@ -22303,7 +22290,7 @@ Construct a regexp interactively.
22303 22290
22304;;;*** 22291;;;***
22305 22292
22306;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (17994 6715)) 22293;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (17930 34071))
22307;;; Generated autoloads from recentf.el 22294;;; Generated autoloads from recentf.el
22308 22295
22309(defvar recentf-mode nil "\ 22296(defvar recentf-mode nil "\
@@ -22330,8 +22317,8 @@ that were operated on recently.
22330;;;### (autoloads (clear-rectangle string-insert-rectangle string-rectangle 22317;;;### (autoloads (clear-rectangle string-insert-rectangle string-rectangle
22331;;;;;; delete-whitespace-rectangle open-rectangle insert-rectangle 22318;;;;;; delete-whitespace-rectangle open-rectangle insert-rectangle
22332;;;;;; yank-rectangle kill-rectangle extract-rectangle delete-extract-rectangle 22319;;;;;; yank-rectangle kill-rectangle extract-rectangle delete-extract-rectangle
22333;;;;;; delete-rectangle move-to-column-force) "rect" "rect.el" (17994 22320;;;;;; delete-rectangle move-to-column-force) "rect" "rect.el" (17842
22334;;;;;; 6715)) 22321;;;;;; 58279))
22335;;; Generated autoloads from rect.el 22322;;; Generated autoloads from rect.el
22336 22323
22337(autoload (quote move-to-column-force) "rect" "\ 22324(autoload (quote move-to-column-force) "rect" "\
@@ -22459,8 +22446,8 @@ rectangle which were empty.
22459 22446
22460;;;*** 22447;;;***
22461 22448
22462;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (17994 22449;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (17842
22463;;;;;; 6715)) 22450;;;;;; 58277))
22464;;; Generated autoloads from textmodes/refill.el 22451;;; Generated autoloads from textmodes/refill.el
22465 22452
22466(autoload (quote refill-mode) "refill" "\ 22453(autoload (quote refill-mode) "refill" "\
@@ -22476,7 +22463,7 @@ refilling if they would cause auto-filling.
22476;;;*** 22463;;;***
22477 22464
22478;;;### (autoloads (reftex-reset-scanning-information reftex-mode 22465;;;### (autoloads (reftex-reset-scanning-information reftex-mode
22479;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (17994 6715)) 22466;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (17923 8784))
22480;;; Generated autoloads from textmodes/reftex.el 22467;;; Generated autoloads from textmodes/reftex.el
22481 22468
22482(autoload (quote turn-on-reftex) "reftex" "\ 22469(autoload (quote turn-on-reftex) "reftex" "\
@@ -22526,7 +22513,7 @@ This enforces rescanning the buffer on next use.
22526;;;*** 22513;;;***
22527 22514
22528;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el" 22515;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el"
22529;;;;;; (17994 6715)) 22516;;;;;; (17923 8784))
22530;;; Generated autoloads from textmodes/reftex-cite.el 22517;;; Generated autoloads from textmodes/reftex-cite.el
22531 22518
22532(autoload (quote reftex-citation) "reftex-cite" "\ 22519(autoload (quote reftex-citation) "reftex-cite" "\
@@ -22556,7 +22543,7 @@ While entering the regexp, completion on knows citation keys is possible.
22556;;;*** 22543;;;***
22557 22544
22558;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el" 22545;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el"
22559;;;;;; (17994 6715)) 22546;;;;;; (17923 8784))
22560;;; Generated autoloads from textmodes/reftex-global.el 22547;;; Generated autoloads from textmodes/reftex-global.el
22561 22548
22562(autoload (quote reftex-isearch-minor-mode) "reftex-global" "\ 22549(autoload (quote reftex-isearch-minor-mode) "reftex-global" "\
@@ -22573,7 +22560,7 @@ With no argument, this command toggles
22573;;;*** 22560;;;***
22574 22561
22575;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el" 22562;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el"
22576;;;;;; (17994 6715)) 22563;;;;;; (17923 8784))
22577;;; Generated autoloads from textmodes/reftex-index.el 22564;;; Generated autoloads from textmodes/reftex-index.el
22578 22565
22579(autoload (quote reftex-index-phrases-mode) "reftex-index" "\ 22566(autoload (quote reftex-index-phrases-mode) "reftex-index" "\
@@ -22606,7 +22593,7 @@ Here are all local bindings.
22606;;;*** 22593;;;***
22607 22594
22608;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el" 22595;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el"
22609;;;;;; (17994 6715)) 22596;;;;;; (17923 8784))
22610;;; Generated autoloads from textmodes/reftex-parse.el 22597;;; Generated autoloads from textmodes/reftex-parse.el
22611 22598
22612(autoload (quote reftex-all-document-files) "reftex-parse" "\ 22599(autoload (quote reftex-all-document-files) "reftex-parse" "\
@@ -22618,8 +22605,8 @@ of master file.
22618 22605
22619;;;*** 22606;;;***
22620 22607
22621;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (17994 22608;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (17923
22622;;;;;; 6715)) 22609;;;;;; 8784))
22623;;; Generated autoloads from textmodes/reftex-vars.el 22610;;; Generated autoloads from textmodes/reftex-vars.el
22624(put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) 22611(put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
22625(put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) 22612(put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
@@ -22629,7 +22616,7 @@ of master file.
22629;;;*** 22616;;;***
22630 22617
22631;;;### (autoloads (regexp-opt-depth regexp-opt) "regexp-opt" "emacs-lisp/regexp-opt.el" 22618;;;### (autoloads (regexp-opt-depth regexp-opt) "regexp-opt" "emacs-lisp/regexp-opt.el"
22632;;;;;; (17994 6715)) 22619;;;;;; (17842 54152))
22633;;; Generated autoloads from emacs-lisp/regexp-opt.el 22620;;; Generated autoloads from emacs-lisp/regexp-opt.el
22634 22621
22635(autoload (quote regexp-opt) "regexp-opt" "\ 22622(autoload (quote regexp-opt) "regexp-opt" "\
@@ -22656,7 +22643,7 @@ This means the number of non-shy regexp grouping constructs
22656 22643
22657;;;*** 22644;;;***
22658 22645
22659;;;### (autoloads (repeat) "repeat" "repeat.el" (17994 6715)) 22646;;;### (autoloads (repeat) "repeat" "repeat.el" (17842 58279))
22660;;; Generated autoloads from repeat.el 22647;;; Generated autoloads from repeat.el
22661 22648
22662(autoload (quote repeat) "repeat" "\ 22649(autoload (quote repeat) "repeat" "\
@@ -22674,7 +22661,7 @@ can be modified by the global variable `repeat-on-final-keystroke'.
22674;;;*** 22661;;;***
22675 22662
22676;;;### (autoloads (reporter-submit-bug-report) "reporter" "mail/reporter.el" 22663;;;### (autoloads (reporter-submit-bug-report) "reporter" "mail/reporter.el"
22677;;;;;; (17994 6715)) 22664;;;;;; (17842 55035))
22678;;; Generated autoloads from mail/reporter.el 22665;;; Generated autoloads from mail/reporter.el
22679 22666
22680(autoload (quote reporter-submit-bug-report) "reporter" "\ 22667(autoload (quote reporter-submit-bug-report) "reporter" "\
@@ -22706,7 +22693,7 @@ mail-sending package is used for editing and sending the message.
22706;;;*** 22693;;;***
22707 22694
22708;;;### (autoloads (reposition-window) "reposition" "reposition.el" 22695;;;### (autoloads (reposition-window) "reposition" "reposition.el"
22709;;;;;; (17994 6715)) 22696;;;;;; (17842 58279))
22710;;; Generated autoloads from reposition.el 22697;;; Generated autoloads from reposition.el
22711 22698
22712(autoload (quote reposition-window) "reposition" "\ 22699(autoload (quote reposition-window) "reposition" "\
@@ -22733,8 +22720,8 @@ first comment line visible (if point is in a comment).
22733 22720
22734;;;*** 22721;;;***
22735 22722
22736;;;### (autoloads (resume-suspend-hook) "resume" "resume.el" (17994 22723;;;### (autoloads (resume-suspend-hook) "resume" "resume.el" (17842
22737;;;;;; 6715)) 22724;;;;;; 58279))
22738;;; Generated autoloads from resume.el 22725;;; Generated autoloads from resume.el
22739 22726
22740(autoload (quote resume-suspend-hook) "resume" "\ 22727(autoload (quote resume-suspend-hook) "resume" "\
@@ -22745,7 +22732,7 @@ Clear out the file used for transmitting args when Emacs resumes.
22745;;;*** 22732;;;***
22746 22733
22747;;;### (autoloads (global-reveal-mode reveal-mode) "reveal" "reveal.el" 22734;;;### (autoloads (global-reveal-mode reveal-mode) "reveal" "reveal.el"
22748;;;;;; (17994 6715)) 22735;;;;;; (17842 58279))
22749;;; Generated autoloads from reveal.el 22736;;; Generated autoloads from reveal.el
22750 22737
22751(autoload (quote reveal-mode) "reveal" "\ 22738(autoload (quote reveal-mode) "reveal" "\
@@ -22780,7 +22767,7 @@ With zero or negative ARG turn mode off.
22780;;;*** 22767;;;***
22781 22768
22782;;;### (autoloads (make-ring ring-p) "ring" "emacs-lisp/ring.el" 22769;;;### (autoloads (make-ring ring-p) "ring" "emacs-lisp/ring.el"
22783;;;;;; (17994 6715)) 22770;;;;;; (17842 54152))
22784;;; Generated autoloads from emacs-lisp/ring.el 22771;;; Generated autoloads from emacs-lisp/ring.el
22785 22772
22786(autoload (quote ring-p) "ring" "\ 22773(autoload (quote ring-p) "ring" "\
@@ -22795,7 +22782,7 @@ Make a ring that can contain SIZE elements.
22795 22782
22796;;;*** 22783;;;***
22797 22784
22798;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (17994 6715)) 22785;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (17842 55218))
22799;;; Generated autoloads from net/rlogin.el 22786;;; Generated autoloads from net/rlogin.el
22800 (add-hook 'same-window-regexps "^\\*rlogin-.*\\*\\(\\|<[0-9]+>\\)") 22787 (add-hook 'same-window-regexps "^\\*rlogin-.*\\*\\(\\|<[0-9]+>\\)")
22801 22788
@@ -22846,8 +22833,8 @@ variable.
22846;;;;;; rmail-mail-new-frame rmail-primary-inbox-list rmail-delete-after-output 22833;;;;;; rmail-mail-new-frame rmail-primary-inbox-list rmail-delete-after-output
22847;;;;;; rmail-highlight-face rmail-highlighted-headers rmail-retry-ignored-headers 22834;;;;;; rmail-highlight-face rmail-highlighted-headers rmail-retry-ignored-headers
22848;;;;;; rmail-displayed-headers rmail-ignored-headers rmail-dont-reply-to-names 22835;;;;;; rmail-displayed-headers rmail-ignored-headers rmail-dont-reply-to-names
22849;;;;;; rmail-movemail-variant-p) "rmail" "mail/rmail.el" (18000 22836;;;;;; rmail-movemail-variant-p) "rmail" "mail/rmail.el" (18006
22850;;;;;; 24323)) 22837;;;;;; 55797))
22851;;; Generated autoloads from mail/rmail.el 22838;;; Generated autoloads from mail/rmail.el
22852 22839
22853(autoload (quote rmail-movemail-variant-p) "rmail" "\ 22840(autoload (quote rmail-movemail-variant-p) "rmail" "\
@@ -23112,7 +23099,7 @@ Set PASSWORD to be used for retrieving mail from a POP or IMAP server.
23112;;;*** 23099;;;***
23113 23100
23114;;;### (autoloads (rmail-edit-current-message) "rmailedit" "mail/rmailedit.el" 23101;;;### (autoloads (rmail-edit-current-message) "rmailedit" "mail/rmailedit.el"
23115;;;;;; (17994 6715)) 23102;;;;;; (17887 18399))
23116;;; Generated autoloads from mail/rmailedit.el 23103;;; Generated autoloads from mail/rmailedit.el
23117 23104
23118(autoload (quote rmail-edit-current-message) "rmailedit" "\ 23105(autoload (quote rmail-edit-current-message) "rmailedit" "\
@@ -23124,7 +23111,7 @@ Edit the contents of this message.
23124 23111
23125;;;### (autoloads (rmail-next-labeled-message rmail-previous-labeled-message 23112;;;### (autoloads (rmail-next-labeled-message rmail-previous-labeled-message
23126;;;;;; rmail-read-label rmail-kill-label rmail-add-label) "rmailkwd" 23113;;;;;; rmail-read-label rmail-kill-label rmail-add-label) "rmailkwd"
23127;;;;;; "mail/rmailkwd.el" (17994 6715)) 23114;;;;;; "mail/rmailkwd.el" (17842 55035))
23128;;; Generated autoloads from mail/rmailkwd.el 23115;;; Generated autoloads from mail/rmailkwd.el
23129 23116
23130(autoload (quote rmail-add-label) "rmailkwd" "\ 23117(autoload (quote rmail-add-label) "rmailkwd" "\
@@ -23163,7 +23150,7 @@ With prefix argument N moves forward N messages with these labels.
23163;;;*** 23150;;;***
23164 23151
23165;;;### (autoloads (set-rmail-inbox-list) "rmailmsc" "mail/rmailmsc.el" 23152;;;### (autoloads (set-rmail-inbox-list) "rmailmsc" "mail/rmailmsc.el"
23166;;;;;; (17994 6715)) 23153;;;;;; (17842 55035))
23167;;; Generated autoloads from mail/rmailmsc.el 23154;;; Generated autoloads from mail/rmailmsc.el
23168 23155
23169(autoload (quote set-rmail-inbox-list) "rmailmsc" "\ 23156(autoload (quote set-rmail-inbox-list) "rmailmsc" "\
@@ -23177,7 +23164,7 @@ If FILE-NAME is empty, remove any existing inbox list.
23177 23164
23178;;;### (autoloads (rmail-output-body-to-file rmail-output rmail-fields-not-to-output 23165;;;### (autoloads (rmail-output-body-to-file rmail-output rmail-fields-not-to-output
23179;;;;;; rmail-output-to-rmail-file rmail-output-file-alist) "rmailout" 23166;;;;;; rmail-output-to-rmail-file rmail-output-file-alist) "rmailout"
23180;;;;;; "mail/rmailout.el" (17994 6715)) 23167;;;;;; "mail/rmailout.el" (17842 55035))
23181;;; Generated autoloads from mail/rmailout.el 23168;;; Generated autoloads from mail/rmailout.el
23182 23169
23183(defvar rmail-output-file-alist nil "\ 23170(defvar rmail-output-file-alist nil "\
@@ -23244,8 +23231,8 @@ FILE-NAME defaults, interactively, from the Subject field of the message.
23244 23231
23245;;;### (autoloads (rmail-sort-by-labels rmail-sort-by-lines rmail-sort-by-correspondent 23232;;;### (autoloads (rmail-sort-by-labels rmail-sort-by-lines rmail-sort-by-correspondent
23246;;;;;; rmail-sort-by-recipient rmail-sort-by-author rmail-sort-by-subject 23233;;;;;; rmail-sort-by-recipient rmail-sort-by-author rmail-sort-by-subject
23247;;;;;; rmail-sort-by-date) "rmailsort" "mail/rmailsort.el" (17994 23234;;;;;; rmail-sort-by-date) "rmailsort" "mail/rmailsort.el" (17842
23248;;;;;; 6715)) 23235;;;;;; 55035))
23249;;; Generated autoloads from mail/rmailsort.el 23236;;; Generated autoloads from mail/rmailsort.el
23250 23237
23251(autoload (quote rmail-sort-by-date) "rmailsort" "\ 23238(autoload (quote rmail-sort-by-date) "rmailsort" "\
@@ -23297,7 +23284,7 @@ KEYWORDS is a comma-separated list of labels.
23297;;;;;; rmail-summary-by-senders rmail-summary-by-topic rmail-summary-by-regexp 23284;;;;;; rmail-summary-by-senders rmail-summary-by-topic rmail-summary-by-regexp
23298;;;;;; rmail-summary-by-recipients rmail-summary-by-labels rmail-summary 23285;;;;;; rmail-summary-by-recipients rmail-summary-by-labels rmail-summary
23299;;;;;; rmail-summary-line-count-flag rmail-summary-scroll-between-messages) 23286;;;;;; rmail-summary-line-count-flag rmail-summary-scroll-between-messages)
23300;;;;;; "rmailsum" "mail/rmailsum.el" (17994 6715)) 23287;;;;;; "rmailsum" "mail/rmailsum.el" (17842 55035))
23301;;; Generated autoloads from mail/rmailsum.el 23288;;; Generated autoloads from mail/rmailsum.el
23302 23289
23303(defvar rmail-summary-scroll-between-messages t "\ 23290(defvar rmail-summary-scroll-between-messages t "\
@@ -23392,7 +23379,7 @@ If NOQUERY is non-nil, we do not query before doing the work.
23392;;;*** 23379;;;***
23393 23380
23394;;;### (autoloads (toggle-rot13-mode rot13-other-window rot13-region 23381;;;### (autoloads (toggle-rot13-mode rot13-other-window rot13-region
23395;;;;;; rot13-string rot13) "rot13" "rot13.el" (17994 6715)) 23382;;;;;; rot13-string rot13) "rot13" "rot13.el" (17842 58279))
23396;;; Generated autoloads from rot13.el 23383;;; Generated autoloads from rot13.el
23397 23384
23398(autoload (quote rot13) "rot13" "\ 23385(autoload (quote rot13) "rot13" "\
@@ -23429,52 +23416,8 @@ Toggle the use of ROT13 encoding for the current window.
23429 23416
23430;;;*** 23417;;;***
23431 23418
23432;;;### (autoloads (resize-minibuffer-mode resize-minibuffer-frame-exactly 23419;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (17833
23433;;;;;; resize-minibuffer-frame-max-height resize-minibuffer-frame 23420;;;;;; 43069))
23434;;;;;; resize-minibuffer-window-exactly resize-minibuffer-window-max-height
23435;;;;;; resize-minibuffer-mode) "rsz-mini" "obsolete/rsz-mini.el"
23436;;;;;; (17994 6715))
23437;;; Generated autoloads from obsolete/rsz-mini.el
23438
23439(defvar resize-minibuffer-mode nil "\
23440*This variable is obsolete.")
23441
23442(custom-autoload (quote resize-minibuffer-mode) "rsz-mini" t)
23443
23444(defvar resize-minibuffer-window-max-height nil "\
23445*This variable is obsolete.")
23446
23447(custom-autoload (quote resize-minibuffer-window-max-height) "rsz-mini" t)
23448
23449(defvar resize-minibuffer-window-exactly t "\
23450*This variable is obsolete.")
23451
23452(custom-autoload (quote resize-minibuffer-window-exactly) "rsz-mini" t)
23453
23454(defvar resize-minibuffer-frame nil "\
23455*This variable is obsolete.")
23456
23457(custom-autoload (quote resize-minibuffer-frame) "rsz-mini" t)
23458
23459(defvar resize-minibuffer-frame-max-height nil "\
23460*This variable is obsolete.")
23461
23462(custom-autoload (quote resize-minibuffer-frame-max-height) "rsz-mini" t)
23463
23464(defvar resize-minibuffer-frame-exactly t "\
23465*This variable is obsolete.")
23466
23467(custom-autoload (quote resize-minibuffer-frame-exactly) "rsz-mini" t)
23468
23469(autoload (quote resize-minibuffer-mode) "rsz-mini" "\
23470This function is obsolete.
23471
23472\(fn &optional PREFIX)" t nil)
23473
23474;;;***
23475
23476;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (17994
23477;;;;;; 6715))
23478;;; Generated autoloads from ruler-mode.el 23421;;; Generated autoloads from ruler-mode.el
23479 23422
23480(autoload (quote ruler-mode) "ruler-mode" "\ 23423(autoload (quote ruler-mode) "ruler-mode" "\
@@ -23484,8 +23427,8 @@ Display a ruler in the header line if ARG > 0.
23484 23427
23485;;;*** 23428;;;***
23486 23429
23487;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (17994 23430;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (18011
23488;;;;;; 6715)) 23431;;;;;; 44080))
23489;;; Generated autoloads from emacs-lisp/rx.el 23432;;; Generated autoloads from emacs-lisp/rx.el
23490 23433
23491(autoload (quote rx-to-string) "rx" "\ 23434(autoload (quote rx-to-string) "rx" "\
@@ -23557,8 +23500,7 @@ CHAR
23557 matches the empty string, but only at point. 23500 matches the empty string, but only at point.
23558 23501
23559`word-start', `bow' 23502`word-start', `bow'
23560 matches the empty string, but only at the beginning or end of a 23503 matches the empty string, but only at the beginning of a word.
23561 word.
23562 23504
23563`word-end', `eow' 23505`word-end', `eow'
23564 matches the empty string, but only at the end of a word. 23506 matches the empty string, but only at the end of a word.
@@ -23572,6 +23514,12 @@ CHAR
23572 matches the empty string, but not at the beginning or end of a 23514 matches the empty string, but not at the beginning or end of a
23573 word. 23515 word.
23574 23516
23517`symbol-start'
23518 matches the empty string, but only at the beginning of a symbol.
23519
23520`symbol-end'
23521 matches the empty string, but only at the end of a symbol.
23522
23575`digit', `numeric', `num' 23523`digit', `numeric', `num'
23576 matches 0 through 9. 23524 matches 0 through 9.
23577 23525
@@ -23793,7 +23741,7 @@ enclosed in `(and ...)'.
23793;;;*** 23741;;;***
23794 23742
23795;;;### (autoloads (savehist-mode savehist-mode) "savehist" "savehist.el" 23743;;;### (autoloads (savehist-mode savehist-mode) "savehist" "savehist.el"
23796;;;;;; (17994 6715)) 23744;;;;;; (17842 58279))
23797;;; Generated autoloads from savehist.el 23745;;; Generated autoloads from savehist.el
23798 23746
23799(defvar savehist-mode nil "\ 23747(defvar savehist-mode nil "\
@@ -23819,7 +23767,7 @@ which is probably undesirable.
23819;;;*** 23767;;;***
23820 23768
23821;;;### (autoloads (dsssl-mode scheme-mode) "scheme" "progmodes/scheme.el" 23769;;;### (autoloads (dsssl-mode scheme-mode) "scheme" "progmodes/scheme.el"
23822;;;;;; (17994 6715)) 23770;;;;;; (17842 56332))
23823;;; Generated autoloads from progmodes/scheme.el 23771;;; Generated autoloads from progmodes/scheme.el
23824 23772
23825(autoload (quote scheme-mode) "scheme" "\ 23773(autoload (quote scheme-mode) "scheme" "\
@@ -23861,7 +23809,7 @@ that variable's value is a string.
23861;;;*** 23809;;;***
23862 23810
23863;;;### (autoloads (gnus-score-mode) "score-mode" "gnus/score-mode.el" 23811;;;### (autoloads (gnus-score-mode) "score-mode" "gnus/score-mode.el"
23864;;;;;; (17994 6715)) 23812;;;;;; (17842 54741))
23865;;; Generated autoloads from gnus/score-mode.el 23813;;; Generated autoloads from gnus/score-mode.el
23866 23814
23867(autoload (quote gnus-score-mode) "score-mode" "\ 23815(autoload (quote gnus-score-mode) "score-mode" "\
@@ -23900,7 +23848,7 @@ Interesting variables:
23900;;;*** 23848;;;***
23901 23849
23902;;;### (autoloads (scroll-all-mode) "scroll-all" "scroll-all.el" 23850;;;### (autoloads (scroll-all-mode) "scroll-all" "scroll-all.el"
23903;;;;;; (17994 6715)) 23851;;;;;; (17842 58278))
23904;;; Generated autoloads from scroll-all.el 23852;;; Generated autoloads from scroll-all.el
23905 23853
23906(defvar scroll-all-mode nil "\ 23854(defvar scroll-all-mode nil "\
@@ -23923,7 +23871,7 @@ apply to all visible windows in the same frame.
23923;;;*** 23871;;;***
23924 23872
23925;;;### (autoloads (scroll-lock-mode) "scroll-lock" "scroll-lock.el" 23873;;;### (autoloads (scroll-lock-mode) "scroll-lock" "scroll-lock.el"
23926;;;;;; (17994 6715)) 23874;;;;;; (17842 58278))
23927;;; Generated autoloads from scroll-lock.el 23875;;; Generated autoloads from scroll-lock.el
23928 23876
23929(autoload (quote scroll-lock-mode) "scroll-lock" "\ 23877(autoload (quote scroll-lock-mode) "scroll-lock" "\
@@ -23945,7 +23893,7 @@ during scrolling.
23945;;;;;; mail-alias-file mail-default-reply-to mail-archive-file-name 23893;;;;;; mail-alias-file mail-default-reply-to mail-archive-file-name
23946;;;;;; mail-header-separator send-mail-function mail-interactive 23894;;;;;; mail-header-separator send-mail-function mail-interactive
23947;;;;;; mail-self-blind mail-specify-envelope-from mail-from-style) 23895;;;;;; mail-self-blind mail-specify-envelope-from mail-from-style)
23948;;;;;; "sendmail" "mail/sendmail.el" (17994 6715)) 23896;;;;;; "sendmail" "mail/sendmail.el" (17942 63381))
23949;;; Generated autoloads from mail/sendmail.el 23897;;; Generated autoloads from mail/sendmail.el
23950 23898
23951(defvar mail-from-style (quote angles) "\ 23899(defvar mail-from-style (quote angles) "\
@@ -24245,8 +24193,8 @@ Like `mail' command, but display mail buffer in another frame.
24245 24193
24246;;;*** 24194;;;***
24247 24195
24248;;;### (autoloads (server-save-buffers-kill-terminal server-mode 24196;;;### (autoloads (server-mode server-start) "server" "server.el"
24249;;;;;; server-start) "server" "server.el" (18000 23796)) 24197;;;;;; (17921 16827))
24250;;; Generated autoloads from server.el 24198;;; Generated autoloads from server.el
24251 24199
24252(autoload (quote server-start) "server" "\ 24200(autoload (quote server-start) "server" "\
@@ -24290,7 +24238,7 @@ only these files will be asked to be saved.
24290 24238
24291;;;*** 24239;;;***
24292 24240
24293;;;### (autoloads (ses-mode) "ses" "ses.el" (17994 6715)) 24241;;;### (autoloads (ses-mode) "ses" "ses.el" (17902 31690))
24294;;; Generated autoloads from ses.el 24242;;; Generated autoloads from ses.el
24295 24243
24296(autoload (quote ses-mode) "ses" "\ 24244(autoload (quote ses-mode) "ses" "\
@@ -24309,7 +24257,7 @@ These are active only in the minibuffer, when entering or editing a formula:
24309;;;*** 24257;;;***
24310 24258
24311;;;### (autoloads (html-mode sgml-mode) "sgml-mode" "textmodes/sgml-mode.el" 24259;;;### (autoloads (html-mode sgml-mode) "sgml-mode" "textmodes/sgml-mode.el"
24312;;;;;; (18000 24371)) 24260;;;;;; (18010 58080))
24313;;; Generated autoloads from textmodes/sgml-mode.el 24261;;; Generated autoloads from textmodes/sgml-mode.el
24314 24262
24315(autoload (quote sgml-mode) "sgml-mode" "\ 24263(autoload (quote sgml-mode) "sgml-mode" "\
@@ -24377,7 +24325,7 @@ To work around that, do:
24377;;;*** 24325;;;***
24378 24326
24379;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el" 24327;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el"
24380;;;;;; (17994 6728)) 24328;;;;;; (17992 30878))
24381;;; Generated autoloads from progmodes/sh-script.el 24329;;; Generated autoloads from progmodes/sh-script.el
24382(put 'sh-shell 'safe-local-variable 'symbolp) 24330(put 'sh-shell 'safe-local-variable 'symbolp)
24383 24331
@@ -24441,7 +24389,7 @@ with your script for an edit-interpret-debug cycle.
24441 24389
24442;;;*** 24390;;;***
24443 24391
24444;;;### (autoloads (sha1) "sha1" "gnus/sha1.el" (17994 6715)) 24392;;;### (autoloads (sha1) "sha1" "gnus/sha1.el" (17842 54741))
24445;;; Generated autoloads from gnus/sha1.el 24393;;; Generated autoloads from gnus/sha1.el
24446 24394
24447(autoload (quote sha1) "sha1" "\ 24395(autoload (quote sha1) "sha1" "\
@@ -24456,7 +24404,7 @@ If BINARY is non-nil, return a string in binary form.
24456;;;*** 24404;;;***
24457 24405
24458;;;### (autoloads (list-load-path-shadows) "shadow" "emacs-lisp/shadow.el" 24406;;;### (autoloads (list-load-path-shadows) "shadow" "emacs-lisp/shadow.el"
24459;;;;;; (17994 6715)) 24407;;;;;; (17853 57352))
24460;;; Generated autoloads from emacs-lisp/shadow.el 24408;;; Generated autoloads from emacs-lisp/shadow.el
24461 24409
24462(autoload (quote list-load-path-shadows) "shadow" "\ 24410(autoload (quote list-load-path-shadows) "shadow" "\
@@ -24503,8 +24451,8 @@ buffer called `*Shadows*'. Shadowings are located by calling the
24503;;;*** 24451;;;***
24504 24452
24505;;;### (autoloads (shadow-initialize shadow-define-regexp-group shadow-define-literal-group 24453;;;### (autoloads (shadow-initialize shadow-define-regexp-group shadow-define-literal-group
24506;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (17994 24454;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (17842
24507;;;;;; 6715)) 24455;;;;;; 58278))
24508;;; Generated autoloads from shadowfile.el 24456;;; Generated autoloads from shadowfile.el
24509 24457
24510(autoload (quote shadow-define-cluster) "shadowfile" "\ 24458(autoload (quote shadow-define-cluster) "shadowfile" "\
@@ -24543,7 +24491,7 @@ Set up file shadowing.
24543;;;*** 24491;;;***
24544 24492
24545;;;### (autoloads (shell shell-dumb-shell-regexp) "shell" "shell.el" 24493;;;### (autoloads (shell shell-dumb-shell-regexp) "shell" "shell.el"
24546;;;;;; (17994 6715)) 24494;;;;;; (17899 1575))
24547;;; Generated autoloads from shell.el 24495;;; Generated autoloads from shell.el
24548 24496
24549(defvar shell-dumb-shell-regexp "cmd\\(proxy\\)?\\.exe" "\ 24497(defvar shell-dumb-shell-regexp "cmd\\(proxy\\)?\\.exe" "\
@@ -24590,7 +24538,7 @@ Otherwise, one argument `-i' is passed to the shell.
24590;;;*** 24538;;;***
24591 24539
24592;;;### (autoloads (sieve-upload-and-bury sieve-upload sieve-manage) 24540;;;### (autoloads (sieve-upload-and-bury sieve-upload sieve-manage)
24593;;;;;; "sieve" "gnus/sieve.el" (17994 6715)) 24541;;;;;; "sieve" "gnus/sieve.el" (17842 54741))
24594;;; Generated autoloads from gnus/sieve.el 24542;;; Generated autoloads from gnus/sieve.el
24595 24543
24596(autoload (quote sieve-manage) "sieve" "\ 24544(autoload (quote sieve-manage) "sieve" "\
@@ -24611,7 +24559,7 @@ Not documented
24611;;;*** 24559;;;***
24612 24560
24613;;;### (autoloads (sieve-mode) "sieve-mode" "gnus/sieve-mode.el" 24561;;;### (autoloads (sieve-mode) "sieve-mode" "gnus/sieve-mode.el"
24614;;;;;; (17994 6715)) 24562;;;;;; (17842 54741))
24615;;; Generated autoloads from gnus/sieve-mode.el 24563;;; Generated autoloads from gnus/sieve-mode.el
24616 24564
24617(autoload (quote sieve-mode) "sieve-mode" "\ 24565(autoload (quote sieve-mode) "sieve-mode" "\
@@ -24626,14 +24574,14 @@ Turning on Sieve mode runs `sieve-mode-hook'.
24626 24574
24627;;;*** 24575;;;***
24628 24576
24629;;;### (autoloads nil "simple" "simple.el" (18000 24377)) 24577;;;### (autoloads nil "simple" "simple.el" (18009 38727))
24630;;; Generated autoloads from simple.el 24578;;; Generated autoloads from simple.el
24631(put 'fill-prefix 'safe-local-variable 'string-or-null-p) 24579(put 'fill-prefix 'safe-local-variable 'string-or-null-p)
24632 24580
24633;;;*** 24581;;;***
24634 24582
24635;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (17994 24583;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (17842
24636;;;;;; 6715)) 24584;;;;;; 56332))
24637;;; Generated autoloads from progmodes/simula.el 24585;;; Generated autoloads from progmodes/simula.el
24638 24586
24639(autoload (quote simula-mode) "simula" "\ 24587(autoload (quote simula-mode) "simula" "\
@@ -24682,7 +24630,7 @@ with no arguments, if that value is non-nil.
24682;;;*** 24630;;;***
24683 24631
24684;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy-new 24632;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy-new
24685;;;;;; define-skeleton) "skeleton" "skeleton.el" (17994 6715)) 24633;;;;;; define-skeleton) "skeleton" "skeleton.el" (17842 58278))
24686;;; Generated autoloads from skeleton.el 24634;;; Generated autoloads from skeleton.el
24687 24635
24688(defvar skeleton-filter-function (quote identity) "\ 24636(defvar skeleton-filter-function (quote identity) "\
@@ -24792,7 +24740,7 @@ symmetrical ones, and the same character twice for the others.
24792;;;*** 24740;;;***
24793 24741
24794;;;### (autoloads (smerge-mode smerge-ediff) "smerge-mode" "smerge-mode.el" 24742;;;### (autoloads (smerge-mode smerge-ediff) "smerge-mode" "smerge-mode.el"
24795;;;;;; (17994 6715)) 24743;;;;;; (17904 28230))
24796;;; Generated autoloads from smerge-mode.el 24744;;; Generated autoloads from smerge-mode.el
24797 24745
24798(autoload (quote smerge-ediff) "smerge-mode" "\ 24746(autoload (quote smerge-ediff) "smerge-mode" "\
@@ -24811,7 +24759,7 @@ Minor mode to simplify editing output from the diff3 program.
24811;;;*** 24759;;;***
24812 24760
24813;;;### (autoloads (smiley-buffer smiley-region) "smiley" "gnus/smiley.el" 24761;;;### (autoloads (smiley-buffer smiley-region) "smiley" "gnus/smiley.el"
24814;;;;;; (17994 6715)) 24762;;;;;; (17875 18370))
24815;;; Generated autoloads from gnus/smiley.el 24763;;; Generated autoloads from gnus/smiley.el
24816 24764
24817(autoload (quote smiley-region) "smiley" "\ 24765(autoload (quote smiley-region) "smiley" "\
@@ -24829,7 +24777,7 @@ interactively. If there's no argument, do it at the current buffer
24829;;;*** 24777;;;***
24830 24778
24831;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail" 24779;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail"
24832;;;;;; "mail/smtpmail.el" (17994 6715)) 24780;;;;;; "mail/smtpmail.el" (17939 50716))
24833;;; Generated autoloads from mail/smtpmail.el 24781;;; Generated autoloads from mail/smtpmail.el
24834 24782
24835(autoload (quote smtpmail-send-it) "smtpmail" "\ 24783(autoload (quote smtpmail-send-it) "smtpmail" "\
@@ -24844,7 +24792,7 @@ Send mail that was queued as a result of setting `smtpmail-queue-mail'.
24844 24792
24845;;;*** 24793;;;***
24846 24794
24847;;;### (autoloads (snake) "snake" "play/snake.el" (17994 6715)) 24795;;;### (autoloads (snake) "snake" "play/snake.el" (17842 55395))
24848;;; Generated autoloads from play/snake.el 24796;;; Generated autoloads from play/snake.el
24849 24797
24850(autoload (quote snake) "snake" "\ 24798(autoload (quote snake) "snake" "\
@@ -24868,7 +24816,7 @@ Snake mode keybindings:
24868;;;*** 24816;;;***
24869 24817
24870;;;### (autoloads (snmpv2-mode snmp-mode) "snmp-mode" "net/snmp-mode.el" 24818;;;### (autoloads (snmpv2-mode snmp-mode) "snmp-mode" "net/snmp-mode.el"
24871;;;;;; (17994 6715)) 24819;;;;;; (17842 55218))
24872;;; Generated autoloads from net/snmp-mode.el 24820;;; Generated autoloads from net/snmp-mode.el
24873 24821
24874(autoload (quote snmp-mode) "snmp-mode" "\ 24822(autoload (quote snmp-mode) "snmp-mode" "\
@@ -24899,7 +24847,7 @@ then `snmpv2-mode-hook'.
24899 24847
24900;;;### (autoloads (solar-equinoxes-solstices sunrise-sunset calendar-location-name 24848;;;### (autoloads (solar-equinoxes-solstices sunrise-sunset calendar-location-name
24901;;;;;; calendar-longitude calendar-latitude calendar-time-display-form) 24849;;;;;; calendar-longitude calendar-latitude calendar-time-display-form)
24902;;;;;; "solar" "calendar/solar.el" (17994 6715)) 24850;;;;;; "solar" "calendar/solar.el" (17956 13479))
24903;;; Generated autoloads from calendar/solar.el 24851;;; Generated autoloads from calendar/solar.el
24904 24852
24905(defvar calendar-time-display-form (quote (12-hours ":" minutes am-pm (if time-zone " (") time-zone (if time-zone ")"))) "\ 24853(defvar calendar-time-display-form (quote (12-hours ":" minutes am-pm (if time-zone " (") time-zone (if time-zone ")"))) "\
@@ -24970,8 +24918,8 @@ Requires floating point.
24970 24918
24971;;;*** 24919;;;***
24972 24920
24973;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (17994 24921;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (17842
24974;;;;;; 6715)) 24922;;;;;; 55395))
24975;;; Generated autoloads from play/solitaire.el 24923;;; Generated autoloads from play/solitaire.el
24976 24924
24977(autoload (quote solitaire) "solitaire" "\ 24925(autoload (quote solitaire) "solitaire" "\
@@ -25048,7 +24996,7 @@ Pick your favourite shortcuts:
25048 24996
25049;;;### (autoloads (reverse-region sort-columns sort-regexp-fields 24997;;;### (autoloads (reverse-region sort-columns sort-regexp-fields
25050;;;;;; sort-fields sort-numeric-fields sort-pages sort-paragraphs 24998;;;;;; sort-fields sort-numeric-fields sort-pages sort-paragraphs
25051;;;;;; sort-lines sort-subr) "sort" "sort.el" (17994 6715)) 24999;;;;;; sort-lines sort-subr) "sort" "sort.el" (17842 58278))
25052;;; Generated autoloads from sort.el 25000;;; Generated autoloads from sort.el
25053 25001
25054(autoload (quote sort-subr) "sort" "\ 25002(autoload (quote sort-subr) "sort" "\
@@ -25190,8 +25138,8 @@ From a program takes two point or marker arguments, BEG and END.
25190 25138
25191;;;*** 25139;;;***
25192 25140
25193;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (17994 25141;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (17842
25194;;;;;; 6715)) 25142;;;;;; 54741))
25195;;; Generated autoloads from gnus/spam.el 25143;;; Generated autoloads from gnus/spam.el
25196 25144
25197(autoload (quote spam-initialize) "spam" "\ 25145(autoload (quote spam-initialize) "spam" "\
@@ -25203,7 +25151,7 @@ Install the spam.el hooks and do other initialization
25203 25151
25204;;;### (autoloads (spam-report-deagentize spam-report-agentize spam-report-url-to-file 25152;;;### (autoloads (spam-report-deagentize spam-report-agentize spam-report-url-to-file
25205;;;;;; spam-report-url-ping-mm-url spam-report-process-queue) "spam-report" 25153;;;;;; spam-report-url-ping-mm-url spam-report-process-queue) "spam-report"
25206;;;;;; "gnus/spam-report.el" (17994 6715)) 25154;;;;;; "gnus/spam-report.el" (17842 54741))
25207;;; Generated autoloads from gnus/spam-report.el 25155;;; Generated autoloads from gnus/spam-report.el
25208 25156
25209(autoload (quote spam-report-process-queue) "spam-report" "\ 25157(autoload (quote spam-report-process-queue) "spam-report" "\
@@ -25246,7 +25194,7 @@ Spam reports will be queued with the method used when
25246;;;*** 25194;;;***
25247 25195
25248;;;### (autoloads (speedbar-get-focus speedbar-frame-mode) "speedbar" 25196;;;### (autoloads (speedbar-get-focus speedbar-frame-mode) "speedbar"
25249;;;;;; "speedbar.el" (17994 6715)) 25197;;;;;; "speedbar.el" (17881 43027))
25250;;; Generated autoloads from speedbar.el 25198;;; Generated autoloads from speedbar.el
25251 25199
25252(defalias (quote speedbar) (quote speedbar-frame-mode)) 25200(defalias (quote speedbar) (quote speedbar-frame-mode))
@@ -25271,7 +25219,7 @@ selected. If the speedbar frame is active, then select the attached frame.
25271;;;*** 25219;;;***
25272 25220
25273;;;### (autoloads (spell-string spell-region spell-word spell-buffer) 25221;;;### (autoloads (spell-string spell-region spell-word spell-buffer)
25274;;;;;; "spell" "textmodes/spell.el" (17994 6715)) 25222;;;;;; "spell" "textmodes/spell.el" (17842 58276))
25275;;; Generated autoloads from textmodes/spell.el 25223;;; Generated autoloads from textmodes/spell.el
25276 25224
25277(put (quote spell-filter) (quote risky-local-variable) t) 25225(put (quote spell-filter) (quote risky-local-variable) t)
@@ -25307,8 +25255,8 @@ Check spelling of string supplied as argument.
25307 25255
25308;;;*** 25256;;;***
25309 25257
25310;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (17994 25258;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (17842
25311;;;;;; 6715)) 25259;;;;;; 55395))
25312;;; Generated autoloads from play/spook.el 25260;;; Generated autoloads from play/spook.el
25313 25261
25314(autoload (quote spook) "spook" "\ 25262(autoload (quote spook) "spook" "\
@@ -25326,8 +25274,8 @@ Return a vector containing the lines from `spook-phrases-file'.
25326;;;### (autoloads (sql-linter sql-db2 sql-interbase sql-postgres 25274;;;### (autoloads (sql-linter sql-db2 sql-interbase sql-postgres
25327;;;;;; sql-ms sql-ingres sql-solid sql-mysql sql-sqlite sql-informix 25275;;;;;; sql-ms sql-ingres sql-solid sql-mysql sql-sqlite sql-informix
25328;;;;;; sql-sybase sql-oracle sql-product-interactive sql-mode sql-help 25276;;;;;; sql-sybase sql-oracle sql-product-interactive sql-mode sql-help
25329;;;;;; sql-add-product-keywords) "sql" "progmodes/sql.el" (17994 25277;;;;;; sql-add-product-keywords) "sql" "progmodes/sql.el" (17842
25330;;;;;; 6715)) 25278;;;;;; 56332))
25331;;; Generated autoloads from progmodes/sql.el 25279;;; Generated autoloads from progmodes/sql.el
25332 25280
25333(autoload (quote sql-add-product-keywords) "sql" "\ 25281(autoload (quote sql-add-product-keywords) "sql" "\
@@ -25758,8 +25706,8 @@ input. See `sql-interactive-mode'.
25758;;;;;; strokes-mode strokes-list-strokes strokes-load-user-strokes 25706;;;;;; strokes-mode strokes-list-strokes strokes-load-user-strokes
25759;;;;;; strokes-help strokes-describe-stroke strokes-do-complex-stroke 25707;;;;;; strokes-help strokes-describe-stroke strokes-do-complex-stroke
25760;;;;;; strokes-do-stroke strokes-read-complex-stroke strokes-read-stroke 25708;;;;;; strokes-do-stroke strokes-read-complex-stroke strokes-read-stroke
25761;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (17994 25709;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (17842
25762;;;;;; 6715)) 25710;;;;;; 58278))
25763;;; Generated autoloads from strokes.el 25711;;; Generated autoloads from strokes.el
25764 25712
25765(autoload (quote strokes-global-set-stroke) "strokes" "\ 25713(autoload (quote strokes-global-set-stroke) "strokes" "\
@@ -25889,7 +25837,7 @@ Studlify-case the current buffer.
25889 25837
25890;;;*** 25838;;;***
25891 25839
25892;;;### (autoloads (locate-library) "subr" "subr.el" (17994 6751)) 25840;;;### (autoloads (locate-library) "subr" "subr.el" (17964 48351))
25893;;; Generated autoloads from subr.el 25841;;; Generated autoloads from subr.el
25894 25842
25895(autoload (quote locate-library) "subr" "\ 25843(autoload (quote locate-library) "subr" "\
@@ -25911,7 +25859,7 @@ and the file name is displayed in the echo area.
25911;;;*** 25859;;;***
25912 25860
25913;;;### (autoloads (sc-cite-original) "supercite" "mail/supercite.el" 25861;;;### (autoloads (sc-cite-original) "supercite" "mail/supercite.el"
25914;;;;;; (17994 6715)) 25862;;;;;; (17854 7564))
25915;;; Generated autoloads from mail/supercite.el 25863;;; Generated autoloads from mail/supercite.el
25916 25864
25917(autoload (quote sc-cite-original) "supercite" "\ 25865(autoload (quote sc-cite-original) "supercite" "\
@@ -25943,7 +25891,7 @@ before, and `sc-post-hook' is run after the guts of this function.
25943 25891
25944;;;*** 25892;;;***
25945 25893
25946;;;### (autoloads (t-mouse-mode) "t-mouse" "t-mouse.el" (18000 28945)) 25894;;;### (autoloads (t-mouse-mode) "t-mouse" "t-mouse.el" (18006 55796))
25947;;; Generated autoloads from t-mouse.el 25895;;; Generated autoloads from t-mouse.el
25948 25896
25949(defvar t-mouse-mode nil "\ 25897(defvar t-mouse-mode nil "\
@@ -25967,7 +25915,7 @@ It requires the `mev' program, part of the `gpm' utilities.
25967 25915
25968;;;*** 25916;;;***
25969 25917
25970;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (17994 6715)) 25918;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (17842 58278))
25971;;; Generated autoloads from tabify.el 25919;;; Generated autoloads from tabify.el
25972 25920
25973(autoload (quote untabify) "tabify" "\ 25921(autoload (quote untabify) "tabify" "\
@@ -26002,7 +25950,7 @@ The variable `tab-width' controls the spacing of tab stops.
26002;;;;;; table-recognize table-insert-row-column table-insert-column 25950;;;;;; table-recognize table-insert-row-column table-insert-column
26003;;;;;; table-insert-row table-insert table-point-left-cell-hook 25951;;;;;; table-insert-row table-insert table-point-left-cell-hook
26004;;;;;; table-point-entered-cell-hook table-load-hook table-cell-map-hook) 25952;;;;;; table-point-entered-cell-hook table-load-hook table-cell-map-hook)
26005;;;;;; "table" "textmodes/table.el" (17994 6716)) 25953;;;;;; "table" "textmodes/table.el" (18012 17784))
26006;;; Generated autoloads from textmodes/table.el 25954;;; Generated autoloads from textmodes/table.el
26007 25955
26008(defvar table-cell-map-hook nil "\ 25956(defvar table-cell-map-hook nil "\
@@ -26590,7 +26538,7 @@ converts a table into plain text without frames. It is a companion to
26590 26538
26591;;;*** 26539;;;***
26592 26540
26593;;;### (autoloads (talk talk-connect) "talk" "talk.el" (17994 6751)) 26541;;;### (autoloads (talk-connect) "talk" "talk.el" (17842 58278))
26594;;; Generated autoloads from talk.el 26542;;; Generated autoloads from talk.el
26595 26543
26596(autoload (quote talk-connect) "talk" "\ 26544(autoload (quote talk-connect) "talk" "\
@@ -26605,7 +26553,7 @@ Connect to the Emacs talk group from the current X display or tty frame.
26605 26553
26606;;;*** 26554;;;***
26607 26555
26608;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (17994 6715)) 26556;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (18010 5426))
26609;;; Generated autoloads from tar-mode.el 26557;;; Generated autoloads from tar-mode.el
26610 26558
26611(autoload (quote tar-mode) "tar-mode" "\ 26559(autoload (quote tar-mode) "tar-mode" "\
@@ -26629,7 +26577,7 @@ See also: variables `tar-update-datestamp' and `tar-anal-blocksize'.
26629;;;*** 26577;;;***
26630 26578
26631;;;### (autoloads (tcl-help-on-word inferior-tcl tcl-mode) "tcl" 26579;;;### (autoloads (tcl-help-on-word inferior-tcl tcl-mode) "tcl"
26632;;;;;; "progmodes/tcl.el" (17994 6715)) 26580;;;;;; "progmodes/tcl.el" (17842 56332))
26633;;; Generated autoloads from progmodes/tcl.el 26581;;; Generated autoloads from progmodes/tcl.el
26634 26582
26635(autoload (quote tcl-mode) "tcl" "\ 26583(autoload (quote tcl-mode) "tcl" "\
@@ -26680,7 +26628,7 @@ Prefix argument means invert sense of `tcl-use-smart-word-finder'.
26680 26628
26681;;;*** 26629;;;***
26682 26630
26683;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (17994 6715)) 26631;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (17842 55218))
26684;;; Generated autoloads from net/telnet.el 26632;;; Generated autoloads from net/telnet.el
26685 (add-hook 'same-window-regexps "\\*telnet-.*\\*\\(\\|<[0-9]+>\\)") 26633 (add-hook 'same-window-regexps "\\*telnet-.*\\*\\(\\|<[0-9]+>\\)")
26686 26634
@@ -26707,8 +26655,8 @@ Normally input is edited in Emacs and sent a line at a time.
26707 26655
26708;;;*** 26656;;;***
26709 26657
26710;;;### (autoloads (ansi-term term make-term) "term" "term.el" (17994 26658;;;### (autoloads (ansi-term term make-term) "term" "term.el" (17952
26711;;;;;; 6715)) 26659;;;;;; 11093))
26712;;; Generated autoloads from term.el 26660;;; Generated autoloads from term.el
26713 26661
26714(autoload (quote make-term) "term" "\ 26662(autoload (quote make-term) "term" "\
@@ -26736,8 +26684,8 @@ Start a terminal-emulator in a new buffer.
26736 26684
26737;;;*** 26685;;;***
26738 26686
26739;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (17994 26687;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (17842
26740;;;;;; 6715)) 26688;;;;;; 58278))
26741;;; Generated autoloads from terminal.el 26689;;; Generated autoloads from terminal.el
26742 26690
26743(autoload (quote terminal-emulator) "terminal" "\ 26691(autoload (quote terminal-emulator) "terminal" "\
@@ -26774,7 +26722,7 @@ subprocess started.
26774;;;*** 26722;;;***
26775 26723
26776;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el" 26724;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el"
26777;;;;;; (17994 6715)) 26725;;;;;; (17925 52793))
26778;;; Generated autoloads from emacs-lisp/testcover.el 26726;;; Generated autoloads from emacs-lisp/testcover.el
26779 26727
26780(autoload (quote testcover-this-defun) "testcover" "\ 26728(autoload (quote testcover-this-defun) "testcover" "\
@@ -26784,7 +26732,7 @@ Start coverage on function under point.
26784 26732
26785;;;*** 26733;;;***
26786 26734
26787;;;### (autoloads (tetris) "tetris" "play/tetris.el" (17994 6715)) 26735;;;### (autoloads (tetris) "tetris" "play/tetris.el" (17941 38806))
26788;;; Generated autoloads from play/tetris.el 26736;;; Generated autoloads from play/tetris.el
26789 26737
26790(autoload (quote tetris) "tetris" "\ 26738(autoload (quote tetris) "tetris" "\
@@ -26815,7 +26763,7 @@ tetris-mode keybindings:
26815;;;;;; tex-start-commands tex-start-options slitex-run-command latex-run-command 26763;;;;;; tex-start-commands tex-start-options slitex-run-command latex-run-command
26816;;;;;; tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp 26764;;;;;; tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp
26817;;;;;; tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el" 26765;;;;;; tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el"
26818;;;;;; (17994 6743)) 26766;;;;;; (17992 30878))
26819;;; Generated autoloads from textmodes/tex-mode.el 26767;;; Generated autoloads from textmodes/tex-mode.el
26820 26768
26821(defvar tex-shell-file-name nil "\ 26769(defvar tex-shell-file-name nil "\
@@ -27117,7 +27065,7 @@ Major mode to edit DocTeX files.
27117;;;*** 27065;;;***
27118 27066
27119;;;### (autoloads (texi2info texinfo-format-region texinfo-format-buffer) 27067;;;### (autoloads (texi2info texinfo-format-region texinfo-format-buffer)
27120;;;;;; "texinfmt" "textmodes/texinfmt.el" (17994 6716)) 27068;;;;;; "texinfmt" "textmodes/texinfmt.el" (17842 58276))
27121;;; Generated autoloads from textmodes/texinfmt.el 27069;;; Generated autoloads from textmodes/texinfmt.el
27122 27070
27123(autoload (quote texinfo-format-buffer) "texinfmt" "\ 27071(autoload (quote texinfo-format-buffer) "texinfmt" "\
@@ -27157,7 +27105,7 @@ if large. You can use Info-split to do this manually.
27157;;;*** 27105;;;***
27158 27106
27159;;;### (autoloads (texinfo-mode texinfo-close-quote texinfo-open-quote) 27107;;;### (autoloads (texinfo-mode texinfo-close-quote texinfo-open-quote)
27160;;;;;; "texinfo" "textmodes/texinfo.el" (17994 6716)) 27108;;;;;; "texinfo" "textmodes/texinfo.el" (17842 58276))
27161;;; Generated autoloads from textmodes/texinfo.el 27109;;; Generated autoloads from textmodes/texinfo.el
27162 27110
27163(defvar texinfo-open-quote "``" "\ 27111(defvar texinfo-open-quote "``" "\
@@ -27244,7 +27192,7 @@ value of `texinfo-mode-hook'.
27244;;;### (autoloads (thai-auto-composition-mode thai-composition-function 27192;;;### (autoloads (thai-auto-composition-mode thai-composition-function
27245;;;;;; thai-post-read-conversion thai-compose-buffer thai-compose-string 27193;;;;;; thai-post-read-conversion thai-compose-buffer thai-compose-string
27246;;;;;; thai-compose-region) "thai-util" "language/thai-util.el" 27194;;;;;; thai-compose-region) "thai-util" "language/thai-util.el"
27247;;;;;; (17994 6715)) 27195;;;;;; (17842 58278))
27248;;; Generated autoloads from language/thai-util.el 27196;;; Generated autoloads from language/thai-util.el
27249 27197
27250(autoload (quote thai-compose-region) "thai-util" "\ 27198(autoload (quote thai-compose-region) "thai-util" "\
@@ -27288,7 +27236,7 @@ Minor mode for automatically correct Thai character composition.
27288 27236
27289;;;### (autoloads (list-at-point number-at-point symbol-at-point 27237;;;### (autoloads (list-at-point number-at-point symbol-at-point
27290;;;;;; sexp-at-point thing-at-point bounds-of-thing-at-point forward-thing) 27238;;;;;; sexp-at-point thing-at-point bounds-of-thing-at-point forward-thing)
27291;;;;;; "thingatpt" "thingatpt.el" (17994 6716)) 27239;;;;;; "thingatpt" "thingatpt.el" (17842 58278))
27292;;; Generated autoloads from thingatpt.el 27240;;; Generated autoloads from thingatpt.el
27293 27241
27294(autoload (quote forward-thing) "thingatpt" "\ 27242(autoload (quote forward-thing) "thingatpt" "\
@@ -27345,7 +27293,7 @@ Not documented
27345 27293
27346;;;### (autoloads (thumbs-dired-setroot thumbs-dired-show thumbs-dired-show-marked 27294;;;### (autoloads (thumbs-dired-setroot thumbs-dired-show thumbs-dired-show-marked
27347;;;;;; thumbs-show-from-dir thumbs-find-thumb) "thumbs" "thumbs.el" 27295;;;;;; thumbs-show-from-dir thumbs-find-thumb) "thumbs" "thumbs.el"
27348;;;;;; (17994 6716)) 27296;;;;;; (17963 26308))
27349;;; Generated autoloads from thumbs.el 27297;;; Generated autoloads from thumbs.el
27350 27298
27351(autoload (quote thumbs-find-thumb) "thumbs" "\ 27299(autoload (quote thumbs-find-thumb) "thumbs" "\
@@ -27384,7 +27332,7 @@ In dired, call the setroot program on the image at point.
27384;;;;;; tibetan-composition-function tibetan-decompose-string tibetan-decompose-region 27332;;;;;; tibetan-composition-function tibetan-decompose-string tibetan-decompose-region
27385;;;;;; tibetan-compose-region tibetan-compose-string tibetan-transcription-to-tibetan 27333;;;;;; tibetan-compose-region tibetan-compose-string tibetan-transcription-to-tibetan
27386;;;;;; tibetan-tibetan-to-transcription tibetan-char-p) "tibet-util" 27334;;;;;; tibetan-tibetan-to-transcription tibetan-char-p) "tibet-util"
27387;;;;;; "language/tibet-util.el" (17994 6715)) 27335;;;;;; "language/tibet-util.el" (17842 58278))
27388;;; Generated autoloads from language/tibet-util.el 27336;;; Generated autoloads from language/tibet-util.el
27389 27337
27390(autoload (quote tibetan-char-p) "tibet-util" "\ 27338(autoload (quote tibetan-char-p) "tibet-util" "\
@@ -27463,7 +27411,7 @@ Not documented
27463;;;*** 27411;;;***
27464 27412
27465;;;### (autoloads (tildify-buffer tildify-region) "tildify" "textmodes/tildify.el" 27413;;;### (autoloads (tildify-buffer tildify-region) "tildify" "textmodes/tildify.el"
27466;;;;;; (17994 6716)) 27414;;;;;; (17842 58276))
27467;;; Generated autoloads from textmodes/tildify.el 27415;;; Generated autoloads from textmodes/tildify.el
27468 27416
27469(autoload (quote tildify-region) "tildify" "\ 27417(autoload (quote tildify-region) "tildify" "\
@@ -27487,7 +27435,7 @@ This function performs no refilling of the changed text.
27487;;;*** 27435;;;***
27488 27436
27489;;;### (autoloads (display-time-mode display-time display-time-day-and-date) 27437;;;### (autoloads (display-time-mode display-time display-time-day-and-date)
27490;;;;;; "time" "time.el" (18000 24333)) 27438;;;;;; "time" "time.el" (18006 55796))
27491;;; Generated autoloads from time.el 27439;;; Generated autoloads from time.el
27492 27440
27493(defvar display-time-day-and-date nil "\ 27441(defvar display-time-day-and-date nil "\
@@ -27529,8 +27477,8 @@ This runs the normal hook `display-time-hook' after each update.
27529;;;### (autoloads (safe-date-to-time time-to-days time-to-day-in-year 27477;;;### (autoloads (safe-date-to-time time-to-days time-to-day-in-year
27530;;;;;; date-leap-year-p days-between date-to-day time-add time-subtract 27478;;;;;; date-leap-year-p days-between date-to-day time-add time-subtract
27531;;;;;; time-since days-to-time time-less-p seconds-to-time time-to-seconds 27479;;;;;; time-since days-to-time time-less-p seconds-to-time time-to-seconds
27532;;;;;; date-to-time) "time-date" "calendar/time-date.el" (17994 27480;;;;;; date-to-time) "time-date" "calendar/time-date.el" (17842
27533;;;;;; 6715)) 27481;;;;;; 53792))
27534;;; Generated autoloads from calendar/time-date.el 27482;;; Generated autoloads from calendar/time-date.el
27535 27483
27536(autoload (quote date-to-time) "time-date" "\ 27484(autoload (quote date-to-time) "time-date" "\
@@ -27616,7 +27564,7 @@ If DATE is malformed, return a time value of zeros.
27616;;;*** 27564;;;***
27617 27565
27618;;;### (autoloads (time-stamp-toggle-active time-stamp) "time-stamp" 27566;;;### (autoloads (time-stamp-toggle-active time-stamp) "time-stamp"
27619;;;;;; "time-stamp.el" (17994 6716)) 27567;;;;;; "time-stamp.el" (17842 58278))
27620;;; Generated autoloads from time-stamp.el 27568;;; Generated autoloads from time-stamp.el
27621(put 'time-stamp-format 'safe-local-variable 'stringp) 27569(put 'time-stamp-format 'safe-local-variable 'stringp)
27622(put 'time-stamp-line-limit 'safe-local-variable 'integerp) 27570(put 'time-stamp-line-limit 'safe-local-variable 'integerp)
@@ -27659,7 +27607,7 @@ With ARG, turn time stamping on if and only if arg is positive.
27659;;;;;; timeclock-workday-remaining-string timeclock-reread-log timeclock-query-out 27607;;;;;; timeclock-workday-remaining-string timeclock-reread-log timeclock-query-out
27660;;;;;; timeclock-change timeclock-status-string timeclock-out timeclock-in 27608;;;;;; timeclock-change timeclock-status-string timeclock-out timeclock-in
27661;;;;;; timeclock-modeline-display) "timeclock" "calendar/timeclock.el" 27609;;;;;; timeclock-modeline-display) "timeclock" "calendar/timeclock.el"
27662;;;;;; (17994 6731)) 27610;;;;;; (17992 30878))
27663;;; Generated autoloads from calendar/timeclock.el 27611;;; Generated autoloads from calendar/timeclock.el
27664 27612
27665(autoload (quote timeclock-modeline-display) "timeclock" "\ 27613(autoload (quote timeclock-modeline-display) "timeclock" "\
@@ -27760,7 +27708,7 @@ relative only to the time worked today, and not to past time.
27760 27708
27761;;;### (autoloads (with-timeout run-with-idle-timer add-timeout run-with-timer 27709;;;### (autoloads (with-timeout run-with-idle-timer add-timeout run-with-timer
27762;;;;;; run-at-time cancel-function-timers cancel-timer) "timer" 27710;;;;;; run-at-time cancel-function-timers cancel-timer) "timer"
27763;;;;;; "emacs-lisp/timer.el" (17994 6715)) 27711;;;;;; "emacs-lisp/timer.el" (17935 13348))
27764;;; Generated autoloads from emacs-lisp/timer.el 27712;;; Generated autoloads from emacs-lisp/timer.el
27765 27713
27766(defalias (quote disable-timeout) (quote cancel-timer)) 27714(defalias (quote disable-timeout) (quote cancel-timer))
@@ -27841,7 +27789,7 @@ be detected.
27841;;;*** 27789;;;***
27842 27790
27843;;;### (autoloads (batch-titdic-convert titdic-convert) "titdic-cnv" 27791;;;### (autoloads (batch-titdic-convert titdic-convert) "titdic-cnv"
27844;;;;;; "international/titdic-cnv.el" (17994 6715)) 27792;;;;;; "international/titdic-cnv.el" (17870 32853))
27845;;; Generated autoloads from international/titdic-cnv.el 27793;;; Generated autoloads from international/titdic-cnv.el
27846 27794
27847(autoload (quote titdic-convert) "titdic-cnv" "\ 27795(autoload (quote titdic-convert) "titdic-cnv" "\
@@ -27864,8 +27812,8 @@ To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\".
27864;;;*** 27812;;;***
27865 27813
27866;;;### (autoloads (tamil-composition-function tamil-post-read-conversion 27814;;;### (autoloads (tamil-composition-function tamil-post-read-conversion
27867;;;;;; tamil-compose-region) "tml-util" "language/tml-util.el" (17994 27815;;;;;; tamil-compose-region) "tml-util" "language/tml-util.el" (17842
27868;;;;;; 6715)) 27816;;;;;; 58278))
27869;;; Generated autoloads from language/tml-util.el 27817;;; Generated autoloads from language/tml-util.el
27870 27818
27871(autoload (quote tamil-compose-region) "tml-util" "\ 27819(autoload (quote tamil-compose-region) "tml-util" "\
@@ -27888,7 +27836,7 @@ PATTERN regexp.
27888;;;*** 27836;;;***
27889 27837
27890;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm" 27838;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm"
27891;;;;;; "tmm.el" (17994 6751)) 27839;;;;;; "tmm.el" (17952 58711))
27892;;; Generated autoloads from tmm.el 27840;;; Generated autoloads from tmm.el
27893 (define-key global-map "\M-`" 'tmm-menubar) 27841 (define-key global-map "\M-`" 'tmm-menubar)
27894 (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse) 27842 (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@@ -27928,7 +27876,7 @@ Its value should be an event that has a binding in MENU.
27928 27876
27929;;;### (autoloads (todo-show todo-cp todo-mode todo-print todo-top-priorities 27877;;;### (autoloads (todo-show todo-cp todo-mode todo-print todo-top-priorities
27930;;;;;; todo-insert-item todo-add-item-non-interactively todo-add-category) 27878;;;;;; todo-insert-item todo-add-item-non-interactively todo-add-category)
27931;;;;;; "todo-mode" "calendar/todo-mode.el" (17994 6715)) 27879;;;;;; "todo-mode" "calendar/todo-mode.el" (17962 52848))
27932;;; Generated autoloads from calendar/todo-mode.el 27880;;; Generated autoloads from calendar/todo-mode.el
27933 27881
27934(autoload (quote todo-add-category) "todo-mode" "\ 27882(autoload (quote todo-add-category) "todo-mode" "\
@@ -27988,8 +27936,8 @@ Show TODO list.
27988;;;*** 27936;;;***
27989 27937
27990;;;### (autoloads (tool-bar-local-item-from-menu tool-bar-add-item-from-menu 27938;;;### (autoloads (tool-bar-local-item-from-menu tool-bar-add-item-from-menu
27991;;;;;; tool-bar-local-item tool-bar-add-item toggle-tool-bar-mode-from-frame) 27939;;;;;; tool-bar-local-item tool-bar-add-item) "tool-bar" "tool-bar.el"
27992;;;;;; "tool-bar" "tool-bar.el" (17994 6751)) 27940;;;;;; (17842 58278))
27993;;; Generated autoloads from tool-bar.el 27941;;; Generated autoloads from tool-bar.el
27994 27942
27995(autoload (quote toggle-tool-bar-mode-from-frame) "tool-bar" "\ 27943(autoload (quote toggle-tool-bar-mode-from-frame) "tool-bar" "\
@@ -28062,7 +28010,7 @@ holds a keymap.
28062;;;*** 28010;;;***
28063 28011
28064;;;### (autoloads (tpu-edt-on tpu-edt-mode) "tpu-edt" "emulation/tpu-edt.el" 28012;;;### (autoloads (tpu-edt-on tpu-edt-mode) "tpu-edt" "emulation/tpu-edt.el"
28065;;;;;; (18000 24377)) 28013;;;;;; (18006 55796))
28066;;; Generated autoloads from emulation/tpu-edt.el 28014;;; Generated autoloads from emulation/tpu-edt.el
28067 28015
28068(defvar tpu-edt-mode nil "\ 28016(defvar tpu-edt-mode nil "\
@@ -28089,7 +28037,7 @@ Turn on TPU/edt emulation.
28089;;;*** 28037;;;***
28090 28038
28091;;;### (autoloads (tpu-set-cursor-bound tpu-set-cursor-free tpu-set-scroll-margins) 28039;;;### (autoloads (tpu-set-cursor-bound tpu-set-cursor-free tpu-set-scroll-margins)
28092;;;;;; "tpu-extras" "emulation/tpu-extras.el" (17994 6715)) 28040;;;;;; "tpu-extras" "emulation/tpu-extras.el" (17842 54264))
28093;;; Generated autoloads from emulation/tpu-extras.el 28041;;; Generated autoloads from emulation/tpu-extras.el
28094 28042
28095(autoload (quote tpu-set-scroll-margins) "tpu-extras" "\ 28043(autoload (quote tpu-set-scroll-margins) "tpu-extras" "\
@@ -28109,7 +28057,7 @@ Constrain the cursor to the flow of the text.
28109 28057
28110;;;*** 28058;;;***
28111 28059
28112;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (17994 6715)) 28060;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (17842 54152))
28113;;; Generated autoloads from emacs-lisp/tq.el 28061;;; Generated autoloads from emacs-lisp/tq.el
28114 28062
28115(autoload (quote tq-create) "tq" "\ 28063(autoload (quote tq-create) "tq" "\
@@ -28123,7 +28071,7 @@ to a tcp server on another machine.
28123;;;*** 28071;;;***
28124 28072
28125;;;### (autoloads (trace-function-background trace-function trace-buffer) 28073;;;### (autoloads (trace-function-background trace-function trace-buffer)
28126;;;;;; "trace" "emacs-lisp/trace.el" (17994 6715)) 28074;;;;;; "trace" "emacs-lisp/trace.el" (17842 54152))
28127;;; Generated autoloads from emacs-lisp/trace.el 28075;;; Generated autoloads from emacs-lisp/trace.el
28128 28076
28129(defvar trace-buffer "*trace-output*" "\ 28077(defvar trace-buffer "*trace-output*" "\
@@ -28160,7 +28108,7 @@ BUFFER defaults to `trace-buffer'.
28160;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion 28108;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion
28161;;;;;; tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers 28109;;;;;; tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers
28162;;;;;; tramp-file-name-handler tramp-completion-file-name-regexp 28110;;;;;; tramp-file-name-handler tramp-completion-file-name-regexp
28163;;;;;; tramp-file-name-regexp) "tramp" "net/tramp.el" (17994 6715)) 28111;;;;;; tramp-file-name-regexp) "tramp" "net/tramp.el" (17934 45069))
28164;;; Generated autoloads from net/tramp.el 28112;;; Generated autoloads from net/tramp.el
28165 28113
28166(defvar tramp-unified-filenames (not (featurep (quote xemacs))) "\ 28114(defvar tramp-unified-filenames (not (featurep (quote xemacs))) "\
@@ -28277,7 +28225,7 @@ Discard Tramp from loading remote files.
28277;;;*** 28225;;;***
28278 28226
28279;;;### (autoloads (tramp-ftp-enable-ange-ftp) "tramp-ftp" "net/tramp-ftp.el" 28227;;;### (autoloads (tramp-ftp-enable-ange-ftp) "tramp-ftp" "net/tramp-ftp.el"
28280;;;;;; (17994 6715)) 28228;;;;;; (17842 55218))
28281;;; Generated autoloads from net/tramp-ftp.el 28229;;; Generated autoloads from net/tramp-ftp.el
28282 28230
28283(autoload (quote tramp-ftp-enable-ange-ftp) "tramp-ftp" "\ 28231(autoload (quote tramp-ftp-enable-ange-ftp) "tramp-ftp" "\
@@ -28287,8 +28235,8 @@ Not documented
28287 28235
28288;;;*** 28236;;;***
28289 28237
28290;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (18000 28238;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (18006
28291;;;;;; 24333)) 28239;;;;;; 55796))
28292;;; Generated autoloads from tutorial.el 28240;;; Generated autoloads from tutorial.el
28293 28241
28294(autoload (quote help-with-tutorial) "tutorial" "\ 28242(autoload (quote help-with-tutorial) "tutorial" "\
@@ -28313,7 +28261,7 @@ resumed later.
28313;;;*** 28261;;;***
28314 28262
28315;;;### (autoloads (2C-split 2C-associate-buffer 2C-two-columns) "two-column" 28263;;;### (autoloads (2C-split 2C-associate-buffer 2C-two-columns) "two-column"
28316;;;;;; "textmodes/two-column.el" (17994 6716)) 28264;;;;;; "textmodes/two-column.el" (17842 58276))
28317;;; Generated autoloads from textmodes/two-column.el 28265;;; Generated autoloads from textmodes/two-column.el
28318 (autoload '2C-command "two-column" () t 'keymap) 28266 (autoload '2C-command "two-column" () t 'keymap)
28319 (global-set-key "\C-x6" '2C-command) 28267 (global-set-key "\C-x6" '2C-command)
@@ -28364,7 +28312,7 @@ First column's text sSs Second column's text
28364;;;;;; type-break type-break-mode type-break-keystroke-threshold 28312;;;;;; type-break type-break-mode type-break-keystroke-threshold
28365;;;;;; type-break-good-break-interval type-break-good-rest-interval 28313;;;;;; type-break-good-break-interval type-break-good-rest-interval
28366;;;;;; type-break-interval type-break-mode) "type-break" "type-break.el" 28314;;;;;; type-break-interval type-break-mode) "type-break" "type-break.el"
28367;;;;;; (17994 6716)) 28315;;;;;; (17908 29123))
28368;;; Generated autoloads from type-break.el 28316;;; Generated autoloads from type-break.el
28369 28317
28370(defvar type-break-mode nil "\ 28318(defvar type-break-mode nil "\
@@ -28547,7 +28495,7 @@ FRAC should be the inverse of the fractional value; for example, a value of
28547;;;*** 28495;;;***
28548 28496
28549;;;### (autoloads (ununderline-region underline-region) "underline" 28497;;;### (autoloads (ununderline-region underline-region) "underline"
28550;;;;;; "textmodes/underline.el" (17994 6716)) 28498;;;;;; "textmodes/underline.el" (17842 58276))
28551;;; Generated autoloads from textmodes/underline.el 28499;;; Generated autoloads from textmodes/underline.el
28552 28500
28553(autoload (quote underline-region) "underline" "\ 28501(autoload (quote underline-region) "underline" "\
@@ -28568,7 +28516,7 @@ which specify the range to operate on.
28568;;;*** 28516;;;***
28569 28517
28570;;;### (autoloads (unforward-rmail-message undigestify-rmail-message) 28518;;;### (autoloads (unforward-rmail-message undigestify-rmail-message)
28571;;;;;; "undigest" "mail/undigest.el" (17994 6715)) 28519;;;;;; "undigest" "mail/undigest.el" (17842 55035))
28572;;; Generated autoloads from mail/undigest.el 28520;;; Generated autoloads from mail/undigest.el
28573 28521
28574(autoload (quote undigestify-rmail-message) "undigest" "\ 28522(autoload (quote undigestify-rmail-message) "undigest" "\
@@ -28587,7 +28535,7 @@ following the containing message.
28587;;;*** 28535;;;***
28588 28536
28589;;;### (autoloads (unrmail batch-unrmail) "unrmail" "mail/unrmail.el" 28537;;;### (autoloads (unrmail batch-unrmail) "unrmail" "mail/unrmail.el"
28590;;;;;; (17994 6715)) 28538;;;;;; (17842 55035))
28591;;; Generated autoloads from mail/unrmail.el 28539;;; Generated autoloads from mail/unrmail.el
28592 28540
28593(autoload (quote batch-unrmail) "unrmail" "\ 28541(autoload (quote batch-unrmail) "unrmail" "\
@@ -28606,8 +28554,8 @@ Convert Rmail file FILE to system inbox format file TO-FILE.
28606 28554
28607;;;*** 28555;;;***
28608 28556
28609;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (17994 28557;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (17842
28610;;;;;; 6715)) 28558;;;;;; 54152))
28611;;; Generated autoloads from emacs-lisp/unsafep.el 28559;;; Generated autoloads from emacs-lisp/unsafep.el
28612 28560
28613(autoload (quote unsafep) "unsafep" "\ 28561(autoload (quote unsafep) "unsafep" "\
@@ -28620,7 +28568,7 @@ of symbols with local bindings.
28620;;;*** 28568;;;***
28621 28569
28622;;;### (autoloads (url-retrieve-synchronously url-retrieve) "url" 28570;;;### (autoloads (url-retrieve-synchronously url-retrieve) "url"
28623;;;;;; "url/url.el" (17994 6716)) 28571;;;;;; "url/url.el" (17842 56569))
28624;;; Generated autoloads from url/url.el 28572;;; Generated autoloads from url/url.el
28625 28573
28626(autoload (quote url-retrieve) "url" "\ 28574(autoload (quote url-retrieve) "url" "\
@@ -28660,7 +28608,7 @@ no further processing). URL is either a string or a parsed URL.
28660;;;*** 28608;;;***
28661 28609
28662;;;### (autoloads (url-register-auth-scheme url-get-authentication) 28610;;;### (autoloads (url-register-auth-scheme url-get-authentication)
28663;;;;;; "url-auth" "url/url-auth.el" (17994 6716)) 28611;;;;;; "url-auth" "url/url-auth.el" (17854 10173))
28664;;; Generated autoloads from url/url-auth.el 28612;;; Generated autoloads from url/url-auth.el
28665 28613
28666(autoload (quote url-get-authentication) "url-auth" "\ 28614(autoload (quote url-get-authentication) "url-auth" "\
@@ -28702,8 +28650,8 @@ RATING a rating between 1 and 10 of the strength of the authentication.
28702;;;*** 28650;;;***
28703 28651
28704;;;### (autoloads (url-cache-expired url-cache-extract url-is-cached 28652;;;### (autoloads (url-cache-expired url-cache-extract url-is-cached
28705;;;;;; url-store-in-cache) "url-cache" "url/url-cache.el" (17994 28653;;;;;; url-store-in-cache) "url-cache" "url/url-cache.el" (17842
28706;;;;;; 6716)) 28654;;;;;; 56569))
28707;;; Generated autoloads from url/url-cache.el 28655;;; Generated autoloads from url/url-cache.el
28708 28656
28709(autoload (quote url-store-in-cache) "url-cache" "\ 28657(autoload (quote url-store-in-cache) "url-cache" "\
@@ -28728,7 +28676,7 @@ Return t iff a cached file has expired.
28728 28676
28729;;;*** 28677;;;***
28730 28678
28731;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (17994 6716)) 28679;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (17842 56569))
28732;;; Generated autoloads from url/url-cid.el 28680;;; Generated autoloads from url/url-cid.el
28733 28681
28734(autoload (quote url-cid) "url-cid" "\ 28682(autoload (quote url-cid) "url-cid" "\
@@ -28739,7 +28687,7 @@ Not documented
28739;;;*** 28687;;;***
28740 28688
28741;;;### (autoloads (url-dav-vc-registered url-dav-supported-p) "url-dav" 28689;;;### (autoloads (url-dav-vc-registered url-dav-supported-p) "url-dav"
28742;;;;;; "url/url-dav.el" (17994 6716)) 28690;;;;;; "url/url-dav.el" (17842 56569))
28743;;; Generated autoloads from url/url-dav.el 28691;;; Generated autoloads from url/url-dav.el
28744 28692
28745(autoload (quote url-dav-supported-p) "url-dav" "\ 28693(autoload (quote url-dav-supported-p) "url-dav" "\
@@ -28754,8 +28702,8 @@ Not documented
28754 28702
28755;;;*** 28703;;;***
28756 28704
28757;;;### (autoloads (url-file) "url-file" "url/url-file.el" (17994 28705;;;### (autoloads (url-file) "url-file" "url/url-file.el" (17842
28758;;;;;; 6716)) 28706;;;;;; 56569))
28759;;; Generated autoloads from url/url-file.el 28707;;; Generated autoloads from url/url-file.el
28760 28708
28761(autoload (quote url-file) "url-file" "\ 28709(autoload (quote url-file) "url-file" "\
@@ -28766,7 +28714,7 @@ Handle file: and ftp: URLs.
28766;;;*** 28714;;;***
28767 28715
28768;;;### (autoloads (url-open-stream url-gateway-nslookup-host) "url-gw" 28716;;;### (autoloads (url-open-stream url-gateway-nslookup-host) "url-gw"
28769;;;;;; "url/url-gw.el" (17994 6716)) 28717;;;;;; "url/url-gw.el" (17842 56569))
28770;;; Generated autoloads from url/url-gw.el 28718;;; Generated autoloads from url/url-gw.el
28771 28719
28772(autoload (quote url-gateway-nslookup-host) "url-gw" "\ 28720(autoload (quote url-gateway-nslookup-host) "url-gw" "\
@@ -28785,8 +28733,8 @@ Might do a non-blocking connection; use `process-status' to check.
28785;;;*** 28733;;;***
28786 28734
28787;;;### (autoloads (url-insert-file-contents url-file-local-copy url-copy-file 28735;;;### (autoloads (url-insert-file-contents url-file-local-copy url-copy-file
28788;;;;;; url-handler-mode) "url-handlers" "url/url-handlers.el" (17994 28736;;;;;; url-handler-mode) "url-handlers" "url/url-handlers.el" (17842
28789;;;;;; 6716)) 28737;;;;;; 56569))
28790;;; Generated autoloads from url/url-handlers.el 28738;;; Generated autoloads from url/url-handlers.el
28791 28739
28792(defvar url-handler-mode nil "\ 28740(defvar url-handler-mode nil "\
@@ -28830,7 +28778,7 @@ Not documented
28830;;;*** 28778;;;***
28831 28779
28832;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p 28780;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p
28833;;;;;; url-http) "url-http" "url/url-http.el" (17994 6716)) 28781;;;;;; url-http) "url-http" "url/url-http.el" (17952 11683))
28834;;; Generated autoloads from url/url-http.el 28782;;; Generated autoloads from url/url-http.el
28835 28783
28836(autoload (quote url-http) "url-http" "\ 28784(autoload (quote url-http) "url-http" "\
@@ -28895,7 +28843,7 @@ HTTPS retrievals are asynchronous.")
28895 28843
28896;;;*** 28844;;;***
28897 28845
28898;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (17994 6716)) 28846;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (17842 56569))
28899;;; Generated autoloads from url/url-irc.el 28847;;; Generated autoloads from url/url-irc.el
28900 28848
28901(autoload (quote url-irc) "url-irc" "\ 28849(autoload (quote url-irc) "url-irc" "\
@@ -28905,8 +28853,8 @@ Not documented
28905 28853
28906;;;*** 28854;;;***
28907 28855
28908;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (17994 28856;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (17842
28909;;;;;; 6716)) 28857;;;;;; 56569))
28910;;; Generated autoloads from url/url-ldap.el 28858;;; Generated autoloads from url/url-ldap.el
28911 28859
28912(autoload (quote url-ldap) "url-ldap" "\ 28860(autoload (quote url-ldap) "url-ldap" "\
@@ -28920,7 +28868,7 @@ URL can be a URL string, or a URL vector of the type returned by
28920;;;*** 28868;;;***
28921 28869
28922;;;### (autoloads (url-mailto url-mail) "url-mailto" "url/url-mailto.el" 28870;;;### (autoloads (url-mailto url-mail) "url-mailto" "url/url-mailto.el"
28923;;;;;; (17994 6716)) 28871;;;;;; (18012 18089))
28924;;; Generated autoloads from url/url-mailto.el 28872;;; Generated autoloads from url/url-mailto.el
28925 28873
28926(autoload (quote url-mail) "url-mailto" "\ 28874(autoload (quote url-mail) "url-mailto" "\
@@ -28936,7 +28884,7 @@ Handle the mailto: URL syntax.
28936;;;*** 28884;;;***
28937 28885
28938;;;### (autoloads (url-data url-generic-emulator-loader url-info 28886;;;### (autoloads (url-data url-generic-emulator-loader url-info
28939;;;;;; url-man) "url-misc" "url/url-misc.el" (17994 6716)) 28887;;;;;; url-man) "url-misc" "url/url-misc.el" (17842 56569))
28940;;; Generated autoloads from url/url-misc.el 28888;;; Generated autoloads from url/url-misc.el
28941 28889
28942(autoload (quote url-man) "url-misc" "\ 28890(autoload (quote url-man) "url-misc" "\
@@ -28968,7 +28916,7 @@ Fetch a data URL (RFC 2397).
28968;;;*** 28916;;;***
28969 28917
28970;;;### (autoloads (url-snews url-news) "url-news" "url/url-news.el" 28918;;;### (autoloads (url-snews url-news) "url-news" "url/url-news.el"
28971;;;;;; (17994 6716)) 28919;;;;;; (17842 56569))
28972;;; Generated autoloads from url/url-news.el 28920;;; Generated autoloads from url/url-news.el
28973 28921
28974(autoload (quote url-news) "url-news" "\ 28922(autoload (quote url-news) "url-news" "\
@@ -28985,7 +28933,7 @@ Not documented
28985 28933
28986;;;### (autoloads (url-ns-user-pref url-ns-prefs isInNet isResolvable 28934;;;### (autoloads (url-ns-user-pref url-ns-prefs isInNet isResolvable
28987;;;;;; dnsResolve dnsDomainIs isPlainHostName) "url-ns" "url/url-ns.el" 28935;;;;;; dnsResolve dnsDomainIs isPlainHostName) "url-ns" "url/url-ns.el"
28988;;;;;; (17994 6716)) 28936;;;;;; (17842 56569))
28989;;; Generated autoloads from url/url-ns.el 28937;;; Generated autoloads from url/url-ns.el
28990 28938
28991(autoload (quote isPlainHostName) "url-ns" "\ 28939(autoload (quote isPlainHostName) "url-ns" "\
@@ -29026,7 +28974,7 @@ Not documented
29026;;;*** 28974;;;***
29027 28975
29028;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse" 28976;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse"
29029;;;;;; "url/url-parse.el" (17994 6716)) 28977;;;;;; "url/url-parse.el" (17954 22157))
29030;;; Generated autoloads from url/url-parse.el 28978;;; Generated autoloads from url/url-parse.el
29031 28979
29032(autoload (quote url-recreate-url) "url-parse" "\ 28980(autoload (quote url-recreate-url) "url-parse" "\
@@ -29044,7 +28992,7 @@ Format is:
29044;;;*** 28992;;;***
29045 28993
29046;;;### (autoloads (url-setup-privacy-info) "url-privacy" "url/url-privacy.el" 28994;;;### (autoloads (url-setup-privacy-info) "url-privacy" "url/url-privacy.el"
29047;;;;;; (17994 6716)) 28995;;;;;; (17842 56569))
29048;;; Generated autoloads from url/url-privacy.el 28996;;; Generated autoloads from url/url-privacy.el
29049 28997
29050(autoload (quote url-setup-privacy-info) "url-privacy" "\ 28998(autoload (quote url-setup-privacy-info) "url-privacy" "\
@@ -29060,7 +29008,7 @@ Setup variables that expose info about you and your system.
29060;;;;;; url-strip-leading-spaces url-eat-trailing-space url-get-normalized-date 29008;;;;;; url-strip-leading-spaces url-eat-trailing-space url-get-normalized-date
29061;;;;;; url-lazy-message url-normalize-url url-insert-entities-in-string 29009;;;;;; url-lazy-message url-normalize-url url-insert-entities-in-string
29062;;;;;; url-parse-args url-debug url-debug) "url-util" "url/url-util.el" 29010;;;;;; url-parse-args url-debug url-debug) "url-util" "url/url-util.el"
29063;;;;;; (17994 6716)) 29011;;;;;; (17842 56569))
29064;;; Generated autoloads from url/url-util.el 29012;;; Generated autoloads from url/url-util.el
29065 29013
29066(defvar url-debug nil "\ 29014(defvar url-debug nil "\
@@ -29189,7 +29137,7 @@ This uses `url-current-object', set locally to the buffer.
29189;;;*** 29137;;;***
29190 29138
29191;;;### (autoloads (ask-user-about-supersession-threat ask-user-about-lock) 29139;;;### (autoloads (ask-user-about-supersession-threat ask-user-about-lock)
29192;;;;;; "userlock" "userlock.el" (17994 6716)) 29140;;;;;; "userlock" "userlock.el" (17842 58278))
29193;;; Generated autoloads from userlock.el 29141;;; Generated autoloads from userlock.el
29194 29142
29195(autoload (quote ask-user-about-lock) "userlock" "\ 29143(autoload (quote ask-user-about-lock) "userlock" "\
@@ -29217,7 +29165,7 @@ The buffer in question is current when this function is called.
29217 29165
29218;;;*** 29166;;;***
29219 29167
29220;;;### (autoloads nil "utf-7" "international/utf-7.el" (17994 6715)) 29168;;;### (autoloads nil "utf-7" "international/utf-7.el" (17842 54888))
29221;;; Generated autoloads from international/utf-7.el 29169;;; Generated autoloads from international/utf-7.el
29222(autoload-coding-system 'utf-7 '(require 'utf-7)) 29170(autoload-coding-system 'utf-7 '(require 'utf-7))
29223 29171
@@ -29225,7 +29173,7 @@ The buffer in question is current when this function is called.
29225 29173
29226;;;### (autoloads (uudecode-decode-region uudecode-decode-region-internal 29174;;;### (autoloads (uudecode-decode-region uudecode-decode-region-internal
29227;;;;;; uudecode-decode-region-external) "uudecode" "gnus/uudecode.el" 29175;;;;;; uudecode-decode-region-external) "uudecode" "gnus/uudecode.el"
29228;;;;;; (17994 6715)) 29176;;;;;; (17855 50203))
29229;;; Generated autoloads from gnus/uudecode.el 29177;;; Generated autoloads from gnus/uudecode.el
29230 29178
29231(autoload (quote uudecode-decode-region-external) "uudecode" "\ 29179(autoload (quote uudecode-decode-region-external) "uudecode" "\
@@ -29255,7 +29203,7 @@ If FILE-NAME is non-nil, save the result to FILE-NAME.
29255;;;;;; vc-directory vc-merge vc-insert-headers vc-version-other-window 29203;;;;;; vc-directory vc-merge vc-insert-headers vc-version-other-window
29256;;;;;; vc-diff vc-register vc-next-action vc-do-command edit-vc-file 29204;;;;;; vc-diff vc-register vc-next-action vc-do-command edit-vc-file
29257;;;;;; with-vc-file vc-branch-part vc-trunk-p vc-before-checkin-hook 29205;;;;;; with-vc-file vc-branch-part vc-trunk-p vc-before-checkin-hook
29258;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc.el" (17994 6739)) 29206;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc.el" (17992 30877))
29259;;; Generated autoloads from vc.el 29207;;; Generated autoloads from vc.el
29260 29208
29261(defvar vc-checkout-hook nil "\ 29209(defvar vc-checkout-hook nil "\
@@ -29543,7 +29491,7 @@ colors. `vc-annotate-background' specifies the background color.
29543 29491
29544;;;*** 29492;;;***
29545 29493
29546;;;### (autoloads nil "vc-arch" "vc-arch.el" (17994 6716)) 29494;;;### (autoloads nil "vc-arch" "vc-arch.el" (17930 34221))
29547;;; Generated autoloads from vc-arch.el 29495;;; Generated autoloads from vc-arch.el
29548 (defun vc-arch-registered (file) 29496 (defun vc-arch-registered (file)
29549 (if (vc-find-root file "{arch}/=tagging-method") 29497 (if (vc-find-root file "{arch}/=tagging-method")
@@ -29553,7 +29501,7 @@ colors. `vc-annotate-background' specifies the background color.
29553 29501
29554;;;*** 29502;;;***
29555 29503
29556;;;### (autoloads nil "vc-cvs" "vc-cvs.el" (17994 6716)) 29504;;;### (autoloads nil "vc-cvs" "vc-cvs.el" (17842 58278))
29557;;; Generated autoloads from vc-cvs.el 29505;;; Generated autoloads from vc-cvs.el
29558 (defun vc-cvs-registered (f) 29506 (defun vc-cvs-registered (f)
29559 (when (file-readable-p (expand-file-name 29507 (when (file-readable-p (expand-file-name
@@ -29563,7 +29511,7 @@ colors. `vc-annotate-background' specifies the background color.
29563 29511
29564;;;*** 29512;;;***
29565 29513
29566;;;### (autoloads nil "vc-mcvs" "vc-mcvs.el" (17994 6716)) 29514;;;### (autoloads nil "vc-mcvs" "vc-mcvs.el" (17842 58278))
29567;;; Generated autoloads from vc-mcvs.el 29515;;; Generated autoloads from vc-mcvs.el
29568 (defun vc-mcvs-registered (file) 29516 (defun vc-mcvs-registered (file)
29569 (if (vc-find-root file "MCVS/CVS") 29517 (if (vc-find-root file "MCVS/CVS")
@@ -29574,7 +29522,7 @@ colors. `vc-annotate-background' specifies the background color.
29574;;;*** 29522;;;***
29575 29523
29576;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc-rcs.el" 29524;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc-rcs.el"
29577;;;;;; (17994 6716)) 29525;;;;;; (17925 15266))
29578;;; Generated autoloads from vc-rcs.el 29526;;; Generated autoloads from vc-rcs.el
29579 29527
29580(defvar vc-rcs-master-templates (quote ("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\ 29528(defvar vc-rcs-master-templates (quote ("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\
@@ -29587,7 +29535,7 @@ For a description of possible values, see `vc-check-master-templates'.")
29587;;;*** 29535;;;***
29588 29536
29589;;;### (autoloads (vc-sccs-master-templates) "vc-sccs" "vc-sccs.el" 29537;;;### (autoloads (vc-sccs-master-templates) "vc-sccs" "vc-sccs.el"
29590;;;;;; (17994 6716)) 29538;;;;;; (17842 58278))
29591;;; Generated autoloads from vc-sccs.el 29539;;; Generated autoloads from vc-sccs.el
29592 29540
29593(defvar vc-sccs-master-templates (quote ("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\ 29541(defvar vc-sccs-master-templates (quote ("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\
@@ -29604,7 +29552,7 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir)
29604 29552
29605;;;*** 29553;;;***
29606 29554
29607;;;### (autoloads nil "vc-svn" "vc-svn.el" (17994 6716)) 29555;;;### (autoloads nil "vc-svn" "vc-svn.el" (17881 64914))
29608;;; Generated autoloads from vc-svn.el 29556;;; Generated autoloads from vc-svn.el
29609 (defun vc-svn-registered (f) 29557 (defun vc-svn-registered (f)
29610 (let ((admin-dir (cond ((and (eq system-type 'windows-nt) 29558 (let ((admin-dir (cond ((and (eq system-type 'windows-nt)
@@ -29622,7 +29570,7 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir)
29622;;;*** 29570;;;***
29623 29571
29624;;;### (autoloads (vhdl-mode) "vhdl-mode" "progmodes/vhdl-mode.el" 29572;;;### (autoloads (vhdl-mode) "vhdl-mode" "progmodes/vhdl-mode.el"
29625;;;;;; (17994 6715)) 29573;;;;;; (17962 27361))
29626;;; Generated autoloads from progmodes/vhdl-mode.el 29574;;; Generated autoloads from progmodes/vhdl-mode.el
29627 29575
29628(autoload (quote vhdl-mode) "vhdl-mode" "\ 29576(autoload (quote vhdl-mode) "vhdl-mode" "\
@@ -30163,7 +30111,7 @@ Key bindings:
30163 30111
30164;;;*** 30112;;;***
30165 30113
30166;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (17994 6715)) 30114;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (17788 40208))
30167;;; Generated autoloads from emulation/vi.el 30115;;; Generated autoloads from emulation/vi.el
30168 30116
30169(autoload (quote vi-mode) "vi" "\ 30117(autoload (quote vi-mode) "vi" "\
@@ -30218,7 +30166,7 @@ Syntax table and abbrevs while in vi mode remain as they were in Emacs.
30218;;;### (autoloads (viqr-pre-write-conversion viqr-post-read-conversion 30166;;;### (autoloads (viqr-pre-write-conversion viqr-post-read-conversion
30219;;;;;; viet-encode-viqr-buffer viet-encode-viqr-region viet-decode-viqr-buffer 30167;;;;;; viet-encode-viqr-buffer viet-encode-viqr-region viet-decode-viqr-buffer
30220;;;;;; viet-decode-viqr-region viet-encode-viscii-char) "viet-util" 30168;;;;;; viet-decode-viqr-region viet-encode-viscii-char) "viet-util"
30221;;;;;; "language/viet-util.el" (17994 6715)) 30169;;;;;; "language/viet-util.el" (17842 58278))
30222;;; Generated autoloads from language/viet-util.el 30170;;; Generated autoloads from language/viet-util.el
30223 30171
30224(autoload (quote viet-encode-viscii-char) "viet-util" "\ 30172(autoload (quote viet-encode-viscii-char) "viet-util" "\
@@ -30264,8 +30212,8 @@ Not documented
30264 30212
30265;;;### (autoloads (View-exit-and-edit view-mode-enter view-mode view-buffer-other-frame 30213;;;### (autoloads (View-exit-and-edit view-mode-enter view-mode view-buffer-other-frame
30266;;;;;; view-buffer-other-window view-buffer view-file-other-frame 30214;;;;;; view-buffer-other-window view-buffer view-file-other-frame
30267;;;;;; view-file-other-window view-file) "view" "view.el" (18000 30215;;;;;; view-file-other-window view-file) "view" "view.el" (18006
30268;;;;;; 24333)) 30216;;;;;; 55796))
30269;;; Generated autoloads from view.el 30217;;; Generated autoloads from view.el
30270 30218
30271(defvar view-mode nil "\ 30219(defvar view-mode nil "\
@@ -30474,8 +30422,8 @@ Exit View mode and make the current buffer editable.
30474 30422
30475;;;*** 30423;;;***
30476 30424
30477;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (17994 30425;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (17842
30478;;;;;; 6715)) 30426;;;;;; 54264))
30479;;; Generated autoloads from emulation/vip.el 30427;;; Generated autoloads from emulation/vip.el
30480 30428
30481(autoload (quote vip-setup) "vip" "\ 30429(autoload (quote vip-setup) "vip" "\
@@ -30491,7 +30439,7 @@ Turn on VIP emulation of VI.
30491;;;*** 30439;;;***
30492 30440
30493;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el" 30441;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el"
30494;;;;;; (17994 6715)) 30442;;;;;; (17921 23052))
30495;;; Generated autoloads from emulation/viper.el 30443;;; Generated autoloads from emulation/viper.el
30496 30444
30497(autoload (quote toggle-viper-mode) "viper" "\ 30445(autoload (quote toggle-viper-mode) "viper" "\
@@ -30508,7 +30456,7 @@ Turn on Viper emulation of Vi in Emacs. See Info node `(viper)Top'.
30508;;;*** 30456;;;***
30509 30457
30510;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el" 30458;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el"
30511;;;;;; (17994 6715)) 30459;;;;;; (17935 13348))
30512;;; Generated autoloads from emacs-lisp/warnings.el 30460;;; Generated autoloads from emacs-lisp/warnings.el
30513 30461
30514(defvar warning-prefix-function nil "\ 30462(defvar warning-prefix-function nil "\
@@ -30598,7 +30546,7 @@ this is equivalent to `display-warning', using
30598;;;*** 30546;;;***
30599 30547
30600;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el" 30548;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el"
30601;;;;;; (17994 6716)) 30549;;;;;; (17842 58278))
30602;;; Generated autoloads from wdired.el 30550;;; Generated autoloads from wdired.el
30603 30551
30604(autoload (quote wdired-change-to-wdired-mode) "wdired" "\ 30552(autoload (quote wdired-change-to-wdired-mode) "wdired" "\
@@ -30614,7 +30562,7 @@ See `wdired-mode'.
30614 30562
30615;;;*** 30563;;;***
30616 30564
30617;;;### (autoloads (webjump) "webjump" "net/webjump.el" (17994 6715)) 30565;;;### (autoloads (webjump) "webjump" "net/webjump.el" (17842 55218))
30618;;; Generated autoloads from net/webjump.el 30566;;; Generated autoloads from net/webjump.el
30619 30567
30620(autoload (quote webjump) "webjump" "\ 30568(autoload (quote webjump) "webjump" "\
@@ -30631,7 +30579,7 @@ Please submit bug reports and other feedback to the author, Neil W. Van Dyke
30631;;;*** 30579;;;***
30632 30580
30633;;;### (autoloads (which-function-mode) "which-func" "progmodes/which-func.el" 30581;;;### (autoloads (which-function-mode) "which-func" "progmodes/which-func.el"
30634;;;;;; (17994 6715)) 30582;;;;;; (17842 56332))
30635;;; Generated autoloads from progmodes/which-func.el 30583;;; Generated autoloads from progmodes/which-func.el
30636 (put 'which-func-format 'risky-local-variable t) 30584 (put 'which-func-format 'risky-local-variable t)
30637 (put 'which-func-current 'risky-local-variable t) 30585 (put 'which-func-current 'risky-local-variable t)
@@ -30664,7 +30612,7 @@ and off otherwise.
30664;;;;;; whitespace-buffer whitespace-toggle-ateol-check whitespace-toggle-spacetab-check 30612;;;;;; whitespace-buffer whitespace-toggle-ateol-check whitespace-toggle-spacetab-check
30665;;;;;; whitespace-toggle-indent-check whitespace-toggle-trailing-check 30613;;;;;; whitespace-toggle-indent-check whitespace-toggle-trailing-check
30666;;;;;; whitespace-toggle-leading-check) "whitespace" "whitespace.el" 30614;;;;;; whitespace-toggle-leading-check) "whitespace" "whitespace.el"
30667;;;;;; (17994 6716)) 30615;;;;;; (17925 15266))
30668;;; Generated autoloads from whitespace.el 30616;;; Generated autoloads from whitespace.el
30669 30617
30670(autoload (quote whitespace-toggle-leading-check) "whitespace" "\ 30618(autoload (quote whitespace-toggle-leading-check) "whitespace" "\
@@ -30755,7 +30703,7 @@ This is meant to be added buffer-locally to `write-file-functions'.
30755;;;*** 30703;;;***
30756 30704
30757;;;### (autoloads (widget-minor-mode widget-browse-other-window widget-browse 30705;;;### (autoloads (widget-minor-mode widget-browse-other-window widget-browse
30758;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (17994 6716)) 30706;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (17842 58278))
30759;;; Generated autoloads from wid-browse.el 30707;;; Generated autoloads from wid-browse.el
30760 30708
30761(autoload (quote widget-browse-at) "wid-browse" "\ 30709(autoload (quote widget-browse-at) "wid-browse" "\
@@ -30782,8 +30730,8 @@ With arg, turn widget mode on if and only if arg is positive.
30782;;;*** 30730;;;***
30783 30731
30784;;;### (autoloads (widget-setup widget-insert widget-delete widget-create 30732;;;### (autoloads (widget-setup widget-insert widget-delete widget-create
30785;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (17994 30733;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (17952
30786;;;;;; 6716)) 30734;;;;;; 11093))
30787;;; Generated autoloads from wid-edit.el 30735;;; Generated autoloads from wid-edit.el
30788 30736
30789(autoload (quote widgetp) "wid-edit" "\ 30737(autoload (quote widgetp) "wid-edit" "\
@@ -30827,8 +30775,8 @@ Setup current buffer so editing string widgets works.
30827;;;*** 30775;;;***
30828 30776
30829;;;### (autoloads (windmove-default-keybindings windmove-down windmove-right 30777;;;### (autoloads (windmove-default-keybindings windmove-down windmove-right
30830;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (17994 30778;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (17842
30831;;;;;; 6716)) 30779;;;;;; 58278))
30832;;; Generated autoloads from windmove.el 30780;;; Generated autoloads from windmove.el
30833 30781
30834(autoload (quote windmove-left) "windmove" "\ 30782(autoload (quote windmove-left) "windmove" "\
@@ -30881,7 +30829,7 @@ Default MODIFIER is 'shift.
30881;;;*** 30829;;;***
30882 30830
30883;;;### (autoloads (winner-mode winner-mode) "winner" "winner.el" 30831;;;### (autoloads (winner-mode winner-mode) "winner" "winner.el"
30884;;;;;; (17994 6716)) 30832;;;;;; (17842 58278))
30885;;; Generated autoloads from winner.el 30833;;; Generated autoloads from winner.el
30886 30834
30887(defvar winner-mode nil "\ 30835(defvar winner-mode nil "\
@@ -30900,7 +30848,7 @@ With arg, turn Winner mode on if and only if arg is positive.
30900;;;*** 30848;;;***
30901 30849
30902;;;### (autoloads (woman-find-file woman-dired-find-file woman) "woman" 30850;;;### (autoloads (woman-find-file woman-dired-find-file woman) "woman"
30903;;;;;; "woman.el" (17994 6716)) 30851;;;;;; "woman.el" (17949 41467))
30904;;; Generated autoloads from woman.el 30852;;; Generated autoloads from woman.el
30905 30853
30906(autoload (quote woman) "woman" "\ 30854(autoload (quote woman) "woman" "\
@@ -30936,7 +30884,7 @@ decompress the file if appropriate. See the documentation for the
30936;;;*** 30884;;;***
30937 30885
30938;;;### (autoloads (wordstar-mode) "ws-mode" "emulation/ws-mode.el" 30886;;;### (autoloads (wordstar-mode) "ws-mode" "emulation/ws-mode.el"
30939;;;;;; (17994 6715)) 30887;;;;;; (17842 54264))
30940;;; Generated autoloads from emulation/ws-mode.el 30888;;; Generated autoloads from emulation/ws-mode.el
30941 30889
30942(autoload (quote wordstar-mode) "ws-mode" "\ 30890(autoload (quote wordstar-mode) "ws-mode" "\
@@ -31049,7 +30997,7 @@ The key bindings are:
31049;;;*** 30997;;;***
31050 30998
31051;;;### (autoloads (xml-parse-region xml-parse-file) "xml" "xml.el" 30999;;;### (autoloads (xml-parse-region xml-parse-file) "xml" "xml.el"
31052;;;;;; (17994 6716)) 31000;;;;;; (17916 14776))
31053;;; Generated autoloads from xml.el 31001;;; Generated autoloads from xml.el
31054 31002
31055(autoload (quote xml-parse-file) "xml" "\ 31003(autoload (quote xml-parse-file) "xml" "\
@@ -31074,8 +31022,8 @@ If PARSE-NS is non-nil, then QNAMES are expanded.
31074 31022
31075;;;*** 31023;;;***
31076 31024
31077;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (18000 31025;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (18007
31078;;;;;; 23909)) 31026;;;;;; 39657))
31079;;; Generated autoloads from xt-mouse.el 31027;;; Generated autoloads from xt-mouse.el
31080 31028
31081(defvar xterm-mouse-mode nil "\ 31029(defvar xterm-mouse-mode nil "\
@@ -31103,7 +31051,7 @@ down the SHIFT key while pressing the mouse button.
31103;;;*** 31051;;;***
31104 31052
31105;;;### (autoloads (yenc-extract-filename yenc-decode-region) "yenc" 31053;;;### (autoloads (yenc-extract-filename yenc-decode-region) "yenc"
31106;;;;;; "gnus/yenc.el" (17994 6715)) 31054;;;;;; "gnus/yenc.el" (17842 54741))
31107;;; Generated autoloads from gnus/yenc.el 31055;;; Generated autoloads from gnus/yenc.el
31108 31056
31109(autoload (quote yenc-decode-region) "yenc" "\ 31057(autoload (quote yenc-decode-region) "yenc" "\
@@ -31119,7 +31067,7 @@ Extract file name from an yenc header.
31119;;;*** 31067;;;***
31120 31068
31121;;;### (autoloads (psychoanalyze-pinhead apropos-zippy insert-zippyism 31069;;;### (autoloads (psychoanalyze-pinhead apropos-zippy insert-zippyism
31122;;;;;; yow) "yow" "play/yow.el" (17994 6715)) 31070;;;;;; yow) "yow" "play/yow.el" (17842 55395))
31123;;; Generated autoloads from play/yow.el 31071;;; Generated autoloads from play/yow.el
31124 31072
31125(autoload (quote yow) "yow" "\ 31073(autoload (quote yow) "yow" "\
@@ -31145,7 +31093,7 @@ Zippy goes to the analyst.
31145 31093
31146;;;*** 31094;;;***
31147 31095
31148;;;### (autoloads (zone) "zone" "play/zone.el" (17994 6715)) 31096;;;### (autoloads (zone) "zone" "play/zone.el" (17941 38806))
31149;;; Generated autoloads from play/zone.el 31097;;; Generated autoloads from play/zone.el
31150 31098
31151(autoload (quote zone) "zone" "\ 31099(autoload (quote zone) "zone" "\
@@ -31285,7 +31233,7 @@ Zone out, completely.
31285;;;;;; "url/url-vars.el" "url/vc-dav.el" "vc-hooks.el" "vcursor.el" 31233;;;;;; "url/url-vars.el" "url/vc-dav.el" "vc-hooks.el" "vcursor.el"
31286;;;;;; "version.el" "vms-patch.el" "vmsproc.el" "vt-control.el" 31234;;;;;; "version.el" "vms-patch.el" "vmsproc.el" "vt-control.el"
31287;;;;;; "vt100-led.el" "w32-fns.el" "w32-vars.el" "widget.el" "window.el" 31235;;;;;; "vt100-led.el" "w32-fns.el" "w32-vars.el" "widget.el" "window.el"
31288;;;;;; "x-dnd.el") (18000 29139 491614)) 31236;;;;;; "x-dnd.el") (18016 62249 573562))
31289 31237
31290;;;*** 31238;;;***
31291 31239
diff --git a/lisp/longlines.el b/lisp/longlines.el
index f39d31e69f0..149f69c9f26 100644
--- a/lisp/longlines.el
+++ b/lisp/longlines.el
@@ -368,10 +368,10 @@ Hard newlines are left intact."
368With optional argument ARG, turn on line wrapping if and only if ARG is positive. 368With optional argument ARG, turn on line wrapping if and only if ARG is positive.
369If automatic line wrapping is turned on, wrap the entire buffer." 369If automatic line wrapping is turned on, wrap the entire buffer."
370 (interactive "P") 370 (interactive "P")
371 (and (null arg) 371 (setq arg (if arg
372 (null longlines-auto-wrap) 372 (> (prefix-numeric-value arg) 0)
373 (setq arg 1)) 373 (not longlines-auto-wrap)))
374 (if (> (prefix-numeric-value arg) 0) 374 (if arg
375 (let ((mod (buffer-modified-p))) 375 (let ((mod (buffer-modified-p)))
376 (setq longlines-auto-wrap t) 376 (setq longlines-auto-wrap t)
377 (longlines-wrap-region (point-min) (point-max)) 377 (longlines-wrap-region (point-min) (point-max))
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 13aba1a3fb0..2a2f0355ab2 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -228,7 +228,7 @@ Otherwise, look for `movemail' in the directories in
228 `emacs' Means any implementation, compatible with the native Emacs one. 228 `emacs' Means any implementation, compatible with the native Emacs one.
229 This is the default; 229 This is the default;
230 `mailutils' Means GNU mailutils implementation, capable of handling full 230 `mailutils' Means GNU mailutils implementation, capable of handling full
231mail URLs as the source mailbox;") 231mail URLs as the source mailbox.")
232 232
233;;;###autoload 233;;;###autoload
234(defun rmail-movemail-variant-p (&rest variants) 234(defun rmail-movemail-variant-p (&rest variants)
diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el
index 6383722a4be..288f3f24e66 100644
--- a/lisp/mail/rmailsum.el
+++ b/lisp/mail/rmailsum.el
@@ -854,6 +854,15 @@ Search, the `unseen' attribute is restored.")
854 (set-buffer rmail-buffer) 854 (set-buffer rmail-buffer)
855 (rmail-show-message msg-num t)))))) 855 (rmail-show-message msg-num t))))))
856 (rmail-summary-update-highlight nil))))) 856 (rmail-summary-update-highlight nil)))))
857
858(defun rmail-summary-save-buffer ()
859 "Save the buffer associated with this RMAIL summary."
860 (interactive)
861 (save-window-excursion
862 (save-excursion
863 (switch-to-buffer rmail-buffer)
864 (save-buffer))))
865
857 866
858(if rmail-summary-mode-map 867(if rmail-summary-mode-map
859 nil 868 nil
@@ -923,6 +932,7 @@ Search, the `unseen' attribute is restored.")
923 'rmail-summary-sort-by-lines) 932 'rmail-summary-sort-by-lines)
924 (define-key rmail-summary-mode-map "\C-c\C-s\C-k" 933 (define-key rmail-summary-mode-map "\C-c\C-s\C-k"
925 'rmail-summary-sort-by-labels) 934 'rmail-summary-sort-by-labels)
935 (define-key rmail-summary-mode-map "\C-x\C-s" 'rmail-summary-save-buffer)
926 ) 936 )
927 937
928;;; Menu bar bindings. 938;;; Menu bar bindings.
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index 8b122f89b49..3d3a08e0528 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,8 @@
12007-06-06 Juanma Barranquero <lekktu@gmail.com>
2
3 * mh-mime.el (mh-mh-directive-present-p):
4 * mh-search.el (mh-index-group-by-folder): Fix typos in docstrings.
5
12006-11-14 Bill Wohler <wohler@newt.com> 62006-11-14 Bill Wohler <wohler@newt.com>
2 7
3 * mh-xface.el (mh-x-image-url-cache-canonicalize): Add `*' to 8 * mh-xface.el (mh-x-image-url-cache-canonicalize): Add `*' to
@@ -10,7 +15,7 @@
10 * mh-e.el (Version, mh-version): Update for release 8.0.3. 15 * mh-e.el (Version, mh-version): Update for release 8.0.3.
11 16
12 * mh-e.el (mh-alias-local-users): Boolean docstrings should start 17 * mh-e.el (mh-alias-local-users): Boolean docstrings should start
13 with "Non-nil means". Perhaps this option should have a -flag 18 with "Non-nil means". Perhaps this option should have a -flag
14 appended. 19 appended.
15 (mh-junk-background): Sync docstring with manual. 20 (mh-junk-background): Sync docstring with manual.
16 21
@@ -62,7 +67,7 @@
62 * mh-tool-bar.el (mh-tool-bar-define): Fix XEmacs' vector-list so 67 * mh-tool-bar.el (mh-tool-bar-define): Fix XEmacs' vector-list so
63 it refers to the icons in mh-xemacs-icon-map instead of trying to 68 it refers to the icons in mh-xemacs-icon-map instead of trying to
64 declare the icons in situ. This allows mh-tool-bar.el to be 69 declare the icons in situ. This allows mh-tool-bar.el to be
65 compiled under XEmacs. Remove initial value for 70 compiled under XEmacs. Remove initial value for
66 mh-tool-bar-folder-buttons, mh-tool-bar-show-buttons, 71 mh-tool-bar-folder-buttons, mh-tool-bar-show-buttons,
67 mh-tool-bar-letter-buttons. The MH-E icons now appear in XEmacs. 72 mh-tool-bar-letter-buttons. The MH-E icons now appear in XEmacs.
68 In mh-tool-bar-init, check for mh-xemacs-use-tool-bar-flag sooner. 73 In mh-tool-bar-init, check for mh-xemacs-use-tool-bar-flag sooner.
@@ -133,7 +138,7 @@
1332006-04-26 Eric Ding <ericding@alum.mit.edu> 1382006-04-26 Eric Ding <ericding@alum.mit.edu>
134 139
135 * mh-e.el (mh-invisible-header-fields-internal): Add entry 140 * mh-e.el (mh-invisible-header-fields-internal): Add entry
136 "X-Provags-ID:" 141 "X-Provags-ID:".
137 142
1382006-04-25 Bill Wohler <wohler@newt.com> 1432006-04-25 Bill Wohler <wohler@newt.com>
139 144
@@ -155,9 +160,9 @@
155 160
156 * mh-letter.el (mh-insert-letter): If a message number isn't 161 * mh-letter.el (mh-insert-letter): If a message number isn't
157 given, throw an error rather than using a potentially incorrect 162 given, throw an error rather than using a potentially incorrect
158 message number (closes SF #1473729). In addition, use the cur 163 message number (closes SF #1473729). In addition, use the cur
159 message if mh-sent-from-msg is nil (when sending a message, in 164 message if mh-sent-from-msg is nil (when sending a message, in
160 contrast to replying). Move conversion of int to string into 165 contrast to replying). Move conversion of int to string into
161 interactive stanza so body can assume variables are of proper 166 interactive stanza so body can assume variables are of proper
162 type. 167 type.
163 168
@@ -177,15 +182,15 @@
177 (mh-tool-bar-folder-buttons-set, mh-tool-bar-letter-buttons-set): 182 (mh-tool-bar-folder-buttons-set, mh-tool-bar-letter-buttons-set):
178 Call it (closes SF #1452718). 183 Call it (closes SF #1452718).
179 184
180 * mh-folder.el (mh-folder-buttons-init-flag): Delete. Use 185 * mh-folder.el (mh-folder-buttons-init-flag): Delete. Use
181 mh-folder-tool-bar-map instead. 186 mh-folder-tool-bar-map instead.
182 (image-load-path): Delete. No longer used. 187 (image-load-path): Delete. No longer used.
183 (mh-folder-mode): Moved setting of image-load-path into 188 (mh-folder-mode): Moved setting of image-load-path into
184 mh-tool-bar-folder-buttons-init. 189 mh-tool-bar-folder-buttons-init.
185 190
186 * mh-letter.el (mh-letter-buttons-init-flag): Delete. Use 191 * mh-letter.el (mh-letter-buttons-init-flag): Delete. Use
187 mh-letter-tool-bar-map instead. 192 mh-letter-tool-bar-map instead.
188 (image-load-path): Delete. No longer used. 193 (image-load-path): Delete. No longer used.
189 (mh-letter-mode): Moved setting of image-load-path into 194 (mh-letter-mode): Moved setting of image-load-path into
190 mh-tool-bar-letter-buttons-init. 195 mh-tool-bar-letter-buttons-init.
191 196
@@ -202,10 +207,10 @@
202 * mh-e.el (defcustom-mh, defface-mh, defgroup-mh, mh-face-data) 207 * mh-e.el (defcustom-mh, defface-mh, defgroup-mh, mh-face-data)
203 (mh-strip-package-version, mh-face-data, mh-inherit-face-flag) 208 (mh-strip-package-version, mh-face-data, mh-inherit-face-flag)
204 (mh-min-colors-defined-flag): Do not unbind these macros and 209 (mh-min-colors-defined-flag): Do not unbind these macros and
205 variables. Nice idea, but too many nasty side-effects. These 210 variables. Nice idea, but too many nasty side-effects. These
206 macros are needed by [Cc]ustom-make-dependencies when creating the 211 macros are needed by [Cc]ustom-make-dependencies when creating the
207 MH-E customization groups in mh-cus-load.el. These disappeared 212 MH-E customization groups in mh-cus-load.el. These disappeared
208 when the macros above were introduced. Besides, if a developer 213 when the macros above were introduced. Besides, if a developer
209 were to try to show the help for a macro or variable they were 214 were to try to show the help for a macro or variable they were
210 looking at and got [No match] when they did so, that would be bad. 215 looking at and got [No match] when they did so, that would be bad.
211 216
@@ -218,11 +223,11 @@
218 variables and functions with the same name are found correctly by 223 variables and functions with the same name are found correctly by
219 find-func (invoked by clicking on the filename link in the *Help* 224 find-func (invoked by clicking on the filename link in the *Help*
220 buffer). 225 buffer).
221 (mh-defmacro-compat): Rename to defmacro-mh. Ditto. 226 (mh-defmacro-compat): Rename to defmacro-mh. Ditto.
222 227
223 * mh-e.el: (mh-defgroup): Rename to defgroup-mh. Ditto. 228 * mh-e.el (mh-defgroup): Rename to defgroup-mh. Ditto.
224 (mh-defcustom): Rename to defcustom-mh. Ditto. 229 (mh-defcustom): Rename to defcustom-mh. Ditto.
225 (mh-defface): Rename to defface-mh. Ditto. 230 (mh-defface): Rename to defface-mh. Ditto.
226 (mh-font-lock-add-keywords): Make changes according to these 231 (mh-font-lock-add-keywords): Make changes according to these
227 renamings. 232 renamings.
228 233
@@ -232,11 +237,11 @@
232 * mh-utils.el (mh-sub-folders-actual): Mention that folder must 237 * mh-utils.el (mh-sub-folders-actual): Mention that folder must
233 have been processed by mh-normalize-folder-name. 238 have been processed by mh-normalize-folder-name.
234 (mh-folder-completion-function): Handle completion of folders with 239 (mh-folder-completion-function): Handle completion of folders with
235 absolute names. Also, when flag is t, display complete folder name 240 absolute names. Also, when flag is t, display complete folder name
236 to provide proper highlighting in Emacs 22 now that 241 to provide proper highlighting in Emacs 22 now that
237 minibuffer-completing-file-name is nil (closes SF #1470518). 242 minibuffer-completing-file-name is nil (closes SF #1470518).
238 (mh-folder-completing-read): No longer set 243 (mh-folder-completing-read): No longer set
239 minibuffer-completing-file-name to t. This was causing "Can't set 244 minibuffer-completing-file-name to t. This was causing "Can't set
240 current directory errors" when browsing absolute file names. 245 current directory errors" when browsing absolute file names.
241 Another benefit of this change is that SPC can be used for 246 Another benefit of this change is that SPC can be used for
242 completion again (closes SF #1470518). 247 completion again (closes SF #1470518).
@@ -256,9 +261,9 @@
256 261
257 * mh-show.el (font-lock-auto-fontify): Ditto. 262 * mh-show.el (font-lock-auto-fontify): Ditto.
258 263
259 * mh-utils.el (mh-speed-flists-cache): Ditto 264 * mh-utils.el (mh-speed-flists-cache): Ditto.
260 265
261 * mh-acros.el (struct, x, y): No need to wrap defvar with 266 * mh-acros.el (struct, x, y): No need to wrap defvar with
262 eval-when-compile when shushing compiler, even when 267 eval-when-compile when shushing compiler, even when
263 mh-do-in-xemacs or another construct is used. 268 mh-do-in-xemacs or another construct is used.
264 269
@@ -287,7 +292,7 @@
287 * mh-xface.el (default-enable-multibyte-characters): Ditto. 292 * mh-xface.el (default-enable-multibyte-characters): Ditto.
288 293
289 * mh-compat.el (mh-font-lock-add-keywords): New alias for 294 * mh-compat.el (mh-font-lock-add-keywords): New alias for
290 font-lock-add-keywords. Returns nil on XEmacs. 295 font-lock-add-keywords. Returns nil on XEmacs.
291 296
292 * mh-e.el: Add MH-E function and variable keywords such as 297 * mh-e.el: Add MH-E function and variable keywords such as
293 mh-defun-compat and mh-defcustom to font-lock-keywords. 298 mh-defun-compat and mh-defcustom to font-lock-keywords.
@@ -297,7 +302,7 @@
297 * mh-e.el (customize-package-emacs-version-alist) 302 * mh-e.el (customize-package-emacs-version-alist)
298 (mh-e, mh-alias, mh-folder, mh-folder-selection) 303 (mh-e, mh-alias, mh-folder, mh-folder-selection)
299 (mh-identity, mh-inc, mh-junk, mh-letter, mh-ranges) 304 (mh-identity, mh-inc, mh-junk, mh-letter, mh-ranges)
300 (mh-scan-line-formats, mh-search, mh-sending-mail, ) 305 (mh-scan-line-formats, mh-search, mh-sending-mail)
301 (mh-sequences, mh-show, mh-speedbar, mh-thread, mh-tool-bar) 306 (mh-sequences, mh-show, mh-speedbar, mh-thread, mh-tool-bar)
302 (mh-hooks, mh-faces, mh-alias-completion-ignore-case-flag) 307 (mh-hooks, mh-faces, mh-alias-completion-ignore-case-flag)
303 (mh-alias-expand-aliases-flag, mh-alias-flash-on-comma) 308 (mh-alias-expand-aliases-flag, mh-alias-flash-on-comma)
@@ -307,7 +312,7 @@
307 (mh-new-messages-folders, mh-ticked-messages-folders) 312 (mh-new-messages-folders, mh-ticked-messages-folders)
308 (mh-large-folder, mh-recenter-summary-flag) 313 (mh-large-folder, mh-recenter-summary-flag)
309 (mh-recursive-folders-flag, mh-sortm-args) 314 (mh-recursive-folders-flag, mh-sortm-args)
310 (mh-default-folder-for-message-function, ) 315 (mh-default-folder-for-message-function)
311 (mh-default-folder-list, mh-default-folder-must-exist-flag) 316 (mh-default-folder-list, mh-default-folder-must-exist-flag)
312 (mh-default-folder-prefix, mh-identity-list) 317 (mh-default-folder-prefix, mh-identity-list)
313 (mh-auto-fields-list, mh-auto-fields-prompt-flag) 318 (mh-auto-fields-list, mh-auto-fields-prompt-flag)
@@ -320,18 +325,18 @@
320 (mh-extract-from-attribution-verb, mh-ins-buf-prefix) 325 (mh-extract-from-attribution-verb, mh-ins-buf-prefix)
321 (mh-letter-complete-function, mh-letter-fill-column) 326 (mh-letter-complete-function, mh-letter-fill-column)
322 (mh-mml-method-default, mh-signature-file-name) 327 (mh-mml-method-default, mh-signature-file-name)
323 (mh-signature-separator-flag, mh-x-face-file, ) 328 (mh-signature-separator-flag, mh-x-face-file)
324 (mh-yank-behavior, mh-interpret-number-as-range-flag) 329 (mh-yank-behavior, mh-interpret-number-as-range-flag)
325 (mh-adaptive-cmd-note-flag, mh-scan-format-file, mh-scan-prog) 330 (mh-adaptive-cmd-note-flag, mh-scan-format-file, mh-scan-prog)
326 (mh-search-program, mh-compose-forward-as-mime-flag) 331 (mh-search-program, mh-compose-forward-as-mime-flag)
327 (mh-compose-letter-function, mh-compose-prompt-flag) 332 (mh-compose-letter-function, mh-compose-prompt-flag)
328 (mh-forward-subject-format, mh-insert-x-mailer-flag) 333 (mh-forward-subject-format, mh-insert-x-mailer-flag)
329 (mh-redist-full-contents-flag, mh-reply-default-reply-to) 334 (mh-redist-full-contents-flag, mh-reply-default-reply-to)
330 (mh-reply-show-message-flag, ) 335 (mh-reply-show-message-flag)
331 (mh-refile-preserves-sequences-flag, mh-tick-seq) 336 (mh-refile-preserves-sequences-flag, mh-tick-seq)
332 (mh-update-sequences-after-mh-show-flag) 337 (mh-update-sequences-after-mh-show-flag)
333 (mh-bury-show-buffer-flag, mh-clean-message-header-flag) 338 (mh-bury-show-buffer-flag, mh-clean-message-header-flag)
334 (mh-decode-mime-flag, ) 339 (mh-decode-mime-flag)
335 (mh-display-buttons-for-alternatives-flag) 340 (mh-display-buttons-for-alternatives-flag)
336 (mh-display-buttons-for-inline-parts-flag) 341 (mh-display-buttons-for-inline-parts-flag)
337 (mh-do-not-confirm-flag, mh-fetch-x-image-url) 342 (mh-do-not-confirm-flag, mh-fetch-x-image-url)
@@ -348,8 +353,7 @@
348 (mh-alias-reloaded-hook, mh-before-commands-processed-hook) 353 (mh-alias-reloaded-hook, mh-before-commands-processed-hook)
349 (mh-before-quit-hook, mh-before-send-letter-hook) 354 (mh-before-quit-hook, mh-before-send-letter-hook)
350 (mh-delete-msg-hook, mh-find-path-hook, mh-folder-mode-hook) 355 (mh-delete-msg-hook, mh-find-path-hook, mh-folder-mode-hook)
351 (mh-forward-hook, mh-inc-folder-hook, ) 356 (mh-forward-hook, mh-inc-folder-hook, mh-insert-signature-hook)
352 (mh-insert-signature-hook, )
353 (mh-kill-folder-suppress-prompt-hooks, mh-letter-mode-hook) 357 (mh-kill-folder-suppress-prompt-hooks, mh-letter-mode-hook)
354 (mh-mh-to-mime-hook, mh-search-mode-hook, mh-quit-hook) 358 (mh-mh-to-mime-hook, mh-search-mode-hook, mh-quit-hook)
355 (mh-refile-msg-hook, mh-show-hook, mh-show-mode-hook) 359 (mh-refile-msg-hook, mh-show-hook, mh-show-mode-hook)
@@ -361,7 +365,7 @@
361 (mh-letter-header-field, mh-search-folder, mh-show-cc) 365 (mh-letter-header-field, mh-search-folder, mh-show-cc)
362 (mh-show-date, mh-show-from, mh-show-header, mh-show-pgg-bad) 366 (mh-show-date, mh-show-from, mh-show-header, mh-show-pgg-bad)
363 (mh-show-pgg-good, mh-show-pgg-unknown, mh-show-signature) 367 (mh-show-pgg-good, mh-show-pgg-unknown, mh-show-signature)
364 (mh-show-subject, mh-show-to, mh-show-xface, ) 368 (mh-show-subject, mh-show-to, mh-show-xface)
365 (mh-speedbar-folder, mh-speedbar-folder-with-unseen-messages) 369 (mh-speedbar-folder, mh-speedbar-folder-with-unseen-messages)
366 (mh-speedbar-selected-folder) 370 (mh-speedbar-selected-folder)
367 (mh-speedbar-selected-folder-with-unseen-messages): Use dotted 371 (mh-speedbar-selected-folder-with-unseen-messages): Use dotted
@@ -375,7 +379,7 @@
3752006-03-31 Bill Wohler <wohler@newt.com> 3792006-03-31 Bill Wohler <wohler@newt.com>
376 380
377 * mh-e.el (mh-strip-package-version): Move before use to avoid 381 * mh-e.el (mh-strip-package-version): Move before use to avoid
378 compiler error. Make macro, also to avoid compiler error. 382 compiler error. Make macro, also to avoid compiler error.
379 (mh-defface-compat): Incorporate body into mh-face-data and 383 (mh-defface-compat): Incorporate body into mh-face-data and
380 delete. 384 delete.
381 385
@@ -474,7 +478,7 @@
474 MH-Letter mode, move save-buffer and mh-fully-kill-draft icons in 478 MH-Letter mode, move save-buffer and mh-fully-kill-draft icons in
475 front of mh-compose-insertion to be consistent with other mailers, 479 front of mh-compose-insertion to be consistent with other mailers,
476 such as Evolution. In MH-Folder mode, move vanilla reply icon to 480 such as Evolution. In MH-Folder mode, move vanilla reply icon to
477 the left of the other reply icons. Use mail/inbox icon instead of 481 the left of the other reply icons. Use mail/inbox icon instead of
478 mail, next-page instead of page-down, delete instead of close, 482 mail, next-page instead of page-down, delete instead of close,
479 mail/move instead of mail/refile, data-save instead of execute, 483 mail/move instead of mail/refile, data-save instead of execute,
480 mail/flag-for-followup instead of highlight, contact instead of 484 mail/flag-for-followup instead of highlight, contact instead of
@@ -513,7 +517,7 @@
5132006-03-15 Bill Wohler <wohler@newt.com> 5172006-03-15 Bill Wohler <wohler@newt.com>
514 518
515 * mh-compat.el (mh-image-load-path-for-library): Fix example by 519 * mh-compat.el (mh-image-load-path-for-library): Fix example by
516 not recommending that one binds image-load-path. Just defvar it to 520 not recommending that one binds image-load-path. Just defvar it to
517 placate compiler and only use it if previously defined. 521 placate compiler and only use it if previously defined.
518 522
519 * mh-e.el (image-load-path): Don't bind! 523 * mh-e.el (image-load-path): Don't bind!
@@ -551,11 +555,11 @@
5512006-03-10 Bill Wohler <wohler@newt.com> 5552006-03-10 Bill Wohler <wohler@newt.com>
552 556
553 * mh-compat.el (mh-replace-regexp-in-string): Pass the literal 557 * mh-compat.el (mh-replace-regexp-in-string): Pass the literal
554 flag to replace-in-string. This was badly needed by 558 flag to replace-in-string. This was badly needed by
555 mh-quote-pick-expr in order to properly quote subjects when using 559 mh-quote-pick-expr in order to properly quote subjects when using
556 / s on XEmacs (closes SF #1447598). 560 / s on XEmacs (closes SF #1447598).
557 (mh-image-load-path-for-library): Merged changes from Reiner. Add 561 (mh-image-load-path-for-library): Merged changes from Reiner. Add
558 no-error argument. If path t, just return directory. 562 no-error argument. If path t, just return directory.
559 563
560 * mh-e.el (mh-profile-component): Drop `s' from mhparam 564 * mh-e.el (mh-profile-component): Drop `s' from mhparam
561 -components for Mailutils compatibility (closes SF #1446985). 565 -components for Mailutils compatibility (closes SF #1446985).
@@ -598,11 +602,11 @@
598 (mh-sub-folders): Use new flag to mh-normalize-folder-name to make 602 (mh-sub-folders): Use new flag to mh-normalize-folder-name to make
599 this function more robust. It could too easily list the folders in /. 603 this function more robust. It could too easily list the folders in /.
600 (mh-folder-list): Fix a couple of problems pointed out by Thomas 604 (mh-folder-list): Fix a couple of problems pointed out by Thomas
601 Baumann. Set folder to nil if empty. Don't append "/" if folder nil. 605 Baumann. Set folder to nil if empty. Don't append "/" if folder nil.
602 606
6032006-03-03 Bill Wohler <wohler@newt.com> 6072006-03-03 Bill Wohler <wohler@newt.com>
604 608
605 * mh-folder.el (mh-folder-mode): Rename mh-image-load-path to 609 * mh-folder.el (mh-folder-mode): Rename mh-image-load-path to
606 mh-image-load-path-for-library. 610 mh-image-load-path-for-library.
607 611
608 * mh-letter.el (mh-letter-mode): Rename mh-image-load-path to 612 * mh-letter.el (mh-letter-mode): Rename mh-image-load-path to
@@ -689,7 +693,7 @@
6892006-02-21 Eric Ding <ericding@alum.mit.edu> 6932006-02-21 Eric Ding <ericding@alum.mit.edu>
690 694
691 * mh-e.el (mh-invisible-header-fields-internal): Add entry 695 * mh-e.el (mh-invisible-header-fields-internal): Add entry
692 "X-Sasl-enc:" 696 "X-Sasl-enc:".
693 697
6942006-02-20 Eric Ding <ericding@alum.mit.edu> 6982006-02-20 Eric Ding <ericding@alum.mit.edu>
695 699
@@ -958,7 +962,7 @@
958 962
959 * mh-comp.el (mh-send-sub): Don't find components file in current 963 * mh-comp.el (mh-send-sub): Don't find components file in current
960 directory--this seems to have been a side-effect of commenting out 964 directory--this seems to have been a side-effect of commenting out
961 the use of an old mh-etc variable. Improve error message. 965 the use of an old mh-etc variable. Improve error message.
962 966
9632006-01-31 Bill Wohler <wohler@newt.com> 9672006-01-31 Bill Wohler <wohler@newt.com>
964 968
@@ -979,7 +983,7 @@
979 (mh-display-completion-list): Move here from mh-comp.el. 983 (mh-display-completion-list): Move here from mh-comp.el.
980 (mh-face-foreground, mh-face-background): Move here from 984 (mh-face-foreground, mh-face-background): Move here from
981 mh-xface.el. 985 mh-xface.el.
982 (mh-write-file-functions): Move here from mh-folder.el 986 (mh-write-file-functions): Move here from mh-folder.el.
983 987
984 * mh-folder.el (mh-write-file-functions-compat): Move to 988 * mh-folder.el (mh-write-file-functions-compat): Move to
985 mh-compat.el and rename to mh-write-file-functions. 989 mh-compat.el and rename to mh-write-file-functions.
@@ -1042,7 +1046,7 @@
1042 mh-adaptive-cmd-note-flag. 1046 mh-adaptive-cmd-note-flag.
1043 1047
1044 * mh-comp.el (sc-cite-original): Remove autoload of "sc" with old 1048 * mh-comp.el (sc-cite-original): Remove autoload of "sc" with old
1045 docstring. sc-cite-original is autoloaded via loaddefs.el for all 1049 docstring. sc-cite-original is autoloaded via loaddefs.el for all
1046 supported versions. In addition, the package name "sc" has been 1050 supported versions. In addition, the package name "sc" has been
1047 made obsolete by "supercite since at least Emacs 21. 1051 made obsolete by "supercite since at least Emacs 21.
1048 1052
@@ -1323,7 +1327,7 @@
1323 1327
1324 * mh-exec.el: Move content into mh-e.el and remove. 1328 * mh-exec.el: Move content into mh-e.el and remove.
1325 1329
1326 * mh-folder.el: New file. Contains mh-folder-mode from mh-e.el. 1330 * mh-folder.el: New file. Contains mh-folder-mode from mh-e.el.
1327 1331
1328 * mh-funcs.el (mh-note-copied, mh-note-printed): Move to new file 1332 * mh-funcs.el (mh-note-copied, mh-note-printed): Move to new file
1329 mh-scan.el. 1333 mh-scan.el.
@@ -1368,7 +1372,7 @@
1368 1372
1369 * mh-print.el: Rearrange for consistency with other files. 1373 * mh-print.el: Rearrange for consistency with other files.
1370 1374
1371 * mh-scan.el: New file. Contains scan line constants and utilities 1375 * mh-scan.el: New file. Contains scan line constants and utilities
1372 from XXX, mh-funcs, mh-utils.el. 1376 from XXX, mh-funcs, mh-utils.el.
1373 1377
1374 * mh-search.el: Rearrange for consistency with other files. 1378 * mh-search.el: Rearrange for consistency with other files.
@@ -1565,7 +1569,7 @@
1565 * mh-comp.el (mh-pgp-support-flag): Move here from mh-utils.el; 1569 * mh-comp.el (mh-pgp-support-flag): Move here from mh-utils.el;
1566 needed to help remove dependency on mh-utils. 1570 needed to help remove dependency on mh-utils.
1567 1571
1568 * mh-exec.el: New file. Move process support routines here from 1572 * mh-exec.el: New file. Move process support routines here from
1569 mh-utils.el. 1573 mh-utils.el.
1570 1574
1571 * mh-init.el (mh-utils): Remove require. 1575 * mh-init.el (mh-utils): Remove require.
@@ -1612,7 +1616,7 @@
1612 (mh-kill-folder-suppress-prompt-hooks): Rename mh-index-p to 1616 (mh-kill-folder-suppress-prompt-hooks): Rename mh-index-p to
1613 mh-search-p. 1617 mh-search-p.
1614 (mh-search-mode-hook): Change group from mh-index to mh-search. 1618 (mh-search-mode-hook): Change group from mh-index to mh-search.
1615 (mh-index-folder): Rename to mh-search-folder. Change group from 1619 (mh-index-folder): Rename to mh-search-folder. Change group from
1616 mh-index to mh-search. 1620 mh-index to mh-search.
1617 1621
1618 * mh-e.el (mh-folder-font-lock-keywords): Rename mh-index-folder 1622 * mh-e.el (mh-folder-font-lock-keywords): Rename mh-index-folder
@@ -1667,7 +1671,7 @@
16672006-01-12 Bill Wohler <wohler@newt.com> 16712006-01-12 Bill Wohler <wohler@newt.com>
1668 1672
1669 * mh-search.el: New file containing contents of mh-index.el and 1673 * mh-search.el: New file containing contents of mh-index.el and
1670 mh-pick.el. C-c C-c launches your mh-index-program; C-c C-p runs 1674 mh-pick.el. C-c C-c launches your mh-index-program; C-c C-p runs
1671 pick. Pick no longer sets the "search" sequence. Instead, it 1675 pick. Pick no longer sets the "search" sequence. Instead, it
1672 brings up a folder view that we're accustomed to. (Closes SF 1676 brings up a folder view that we're accustomed to. (Closes SF
1673 #829207.) 1677 #829207.)
@@ -1722,13 +1726,13 @@
1722 1726
1723 * mh-utils.el (mh-x-image-url-cache-canonicalize): Use 1727 * mh-utils.el (mh-x-image-url-cache-canonicalize): Use
1724 url-hexify-string to remove special characters from filenames 1728 url-hexify-string to remove special characters from filenames
1725 (closes SF #1396499). Note that this invalidates the existing 1729 (closes SF #1396499). Note that this invalidates the existing
1726 names in your cache so you might as well remove 1730 names in your cache so you might as well remove
1727 ~/Mail/.mhe-x-image-cache/* now. 1731 ~/Mail/.mhe-x-image-cache/* now.
1728 (url-unreserved-chars, url-hexify-string): Define if not defined. 1732 (url-unreserved-chars, url-hexify-string): Define if not defined.
1729 Copied from url-util.el in Emacs22 for Emacs 21. 1733 Copied from url-util.el in Emacs22 for Emacs 21.
1730 1734
1731 * mh-buffers.el: New file. Contains constants and code from 1735 * mh-buffers.el: New file. Contains constants and code from
1732 mh-index.el and mh-utils.el. 1736 mh-index.el and mh-utils.el.
1733 1737
1734 * mh-alias.el: 1738 * mh-alias.el:
@@ -1758,7 +1762,7 @@
17582006-01-10 Bill Wohler <wohler@newt.com> 17622006-01-10 Bill Wohler <wohler@newt.com>
1759 1763
1760 * mh-comp.el (mh-insert-letter): If you choose a different folder, 1764 * mh-comp.el (mh-insert-letter): If you choose a different folder,
1761 the cur message is used. Sync docstring with manual (closes SF 1765 the cur message is used. Sync docstring with manual (closes SF
1762 #1205890). 1766 #1205890).
1763 1767
1764 * mh-mime.el (mh-compose-forward): Use standard range argument 1768 * mh-mime.el (mh-compose-forward): Use standard range argument
@@ -1776,7 +1780,7 @@
1776 use function mh-variants instead. 1780 use function mh-variants instead.
1777 (mh-variant-info, mh-variant-mh-info, mh-variant-mu-mh-info) 1781 (mh-variant-info, mh-variant-mh-info, mh-variant-mu-mh-info)
1778 (mh-variant-nmh-info): Co-locate next to mh-variants, which uses 1782 (mh-variant-nmh-info): Co-locate next to mh-variants, which uses
1779 them. Updated to use mh-file-command-p which is more accurrate 1783 them. Updated to use mh-file-command-p which is more accurrate
1780 than file-executable-p which returns t for directories. 1784 than file-executable-p which returns t for directories.
1781 (mh-file-command-p): Move here from mh-utils, since 1785 (mh-file-command-p): Move here from mh-utils, since
1782 mh-variant-*-info are the only functions to use it. 1786 mh-variant-*-info are the only functions to use it.
@@ -1962,8 +1966,8 @@
1962 1966
1963 * mh-customize.el (mh-folder-msg-number): Snow is actually 1967 * mh-customize.el (mh-folder-msg-number): Snow is actually
1964 off-white on low color displays which turns to white when bold. 1968 off-white on low color displays which turns to white when bold.
1965 This is unreadable on white backgrounds. Use snow with min-colors 1969 This is unreadable on white backgrounds. Use snow with min-colors
1966 requirement. Use cyan on low-color displays. 1970 requirement. Use cyan on low-color displays.
1967 1971
1968 * mh-init.el (mh-defface-compat): On low-color displays, delete 1972 * mh-init.el (mh-defface-compat): On low-color displays, delete
1969 the high-color display rather than simply strip the min-colors 1973 the high-color display rather than simply strip the min-colors
@@ -1976,13 +1980,13 @@
19762006-01-02 Bill Wohler <wohler@newt.com> 19802006-01-02 Bill Wohler <wohler@newt.com>
1977 1981
1978 * mh-alias.el (mh-alias-grab-from-field): Remove leading * from 1982 * mh-alias.el (mh-alias-grab-from-field): Remove leading * from
1979 docstring. Does this mean something in a defun? 1983 docstring. Does this mean something in a defun?
1980 1984
1981 * mh-customize.el (bw-new-face-to-old, bw-old-face-to-new): 1985 * mh-customize.el (bw-new-face-to-old, bw-old-face-to-new):
1982 Checkdoc fix. 1986 Checkdoc fix.
1983 1987
1984 * mh-e.el (mh-inc-folder): Rename maildrop-name argument to file 1988 * mh-e.el (mh-inc-folder): Rename maildrop-name argument to file
1985 so it reads better in docstring and manual. Sync docstring with 1989 so it reads better in docstring and manual. Sync docstring with
1986 manual. 1990 manual.
1987 1991
1988 * mh-init.el (mh-defface-compat): Remove trailing space (checkdoc). 1992 * mh-init.el (mh-defface-compat): Remove trailing space (checkdoc).
@@ -2004,7 +2008,7 @@
2004 * mh-e.el (mh-refile-or-write-again, mh-toggle-showing): Ditto. 2008 * mh-e.el (mh-refile-or-write-again, mh-toggle-showing): Ditto.
2005 2009
2006 * mh-funcs.el (mh-pipe-msg, mh-sort-folder, mh-undo-folder) 2010 * mh-funcs.el (mh-pipe-msg, mh-sort-folder, mh-undo-folder)
2007 (mh-store-msg, mh-store-buffer): Ditto 2011 (mh-store-msg, mh-store-buffer): Ditto.
2008 2012
2009 * mh-index.el (mh-index-search, mh-index-do-search) 2013 * mh-index.el (mh-index-search, mh-index-do-search)
2010 (mh-index-next-folder, mh-index-sequenced-messages): Ditto. 2014 (mh-index-next-folder, mh-index-sequenced-messages): Ditto.
@@ -2014,7 +2018,7 @@
2014 * mh-mime.el (mh-mh-compose-external-compressed-tar) 2018 * mh-mime.el (mh-mh-compose-external-compressed-tar)
2015 (mh-mh-compose-external-type, mh-mh-to-mime, mh-mh-to-mime-undo) 2019 (mh-mh-compose-external-type, mh-mh-to-mime, mh-mh-to-mime-undo)
2016 (mh-mml-secure-message-sign, mh-mml-secure-message-encrypt) 2020 (mh-mml-secure-message-sign, mh-mml-secure-message-encrypt)
2017 (mh-mml-secure-message-signencrypt): Ditto 2021 (mh-mml-secure-message-signencrypt): Ditto.
2018 2022
2019 * mh-pick.el (mh-search-folder): Ditto. 2023 * mh-pick.el (mh-search-folder): Ditto.
2020 2024
@@ -2068,7 +2072,7 @@
2068 (mh-scan-date-regexp, mh-scan-rcpt-regexp, mh-scan-body-regexp) 2072 (mh-scan-date-regexp, mh-scan-rcpt-regexp, mh-scan-body-regexp)
2069 (mh-scan-subject-regexp): Sync docstrings with manual 2073 (mh-scan-subject-regexp): Sync docstrings with manual
2070 (mh-scan-format-regexp): Rename to 2074 (mh-scan-format-regexp): Rename to
2071 mh-scan-sent-to-me-sender-regexp. Drop date parenthesized 2075 mh-scan-sent-to-me-sender-regexp. Drop date parenthesized
2072 expression. Make expression more like the others (anchored at the 2076 expression. Make expression more like the others (anchored at the
2073 beginning of line). Sync docstrings with manual. 2077 beginning of line). Sync docstrings with manual.
2074 (mh-folder-font-lock-keywords): Use faces directly rather than 2078 (mh-folder-font-lock-keywords): Use faces directly rather than
@@ -2228,7 +2232,7 @@
2228 (mh-tool-bar-define): Replace toolbar with tool-bar or tool bar 2232 (mh-tool-bar-define): Replace toolbar with tool-bar or tool bar
2229 depending on context. 2233 depending on context.
2230 (mh-toolbar-init): Rename to mh-tool-bar-init. Simplify condition 2234 (mh-toolbar-init): Rename to mh-tool-bar-init. Simplify condition
2231 for calling set-specifier. Only look at the value of 2235 for calling set-specifier. Only look at the value of
2232 mh-xemacs-use-tool-bar-flag. 2236 mh-xemacs-use-tool-bar-flag.
2233 (mh-tool-bar-folder-buttons, mh-tool-bar-letter-buttons): 2237 (mh-tool-bar-folder-buttons, mh-tool-bar-letter-buttons):
2234 Sync docstrings with manual. 2238 Sync docstrings with manual.
@@ -2501,7 +2505,7 @@
2501 msg argument to message (to make for a better docstring). 2505 msg argument to message (to make for a better docstring).
2502 2506
2503 * mh-customize.el (mh-redist-full-contents-flag): Convert defvar 2507 * mh-customize.el (mh-redist-full-contents-flag): Convert defvar
2504 to defcustom. Rename by adding -flag. 2508 to defcustom. Rename by adding -flag.
2505 (mh-compose-forward-as-mime-flag) 2509 (mh-compose-forward-as-mime-flag)
2506 (mh-compose-letter-function, mh-forward-subject-format) 2510 (mh-compose-letter-function, mh-forward-subject-format)
2507 (mh-insert-x-mailer-flag, mh-reply-default-reply-to) 2511 (mh-insert-x-mailer-flag, mh-reply-default-reply-to)
@@ -2623,10 +2627,10 @@
2623 Sync docstring with manual. 2627 Sync docstring with manual.
2624 2628
2625 * mh-identity.el (mh-assoc-ignore-case): Merge with version in 2629 * mh-identity.el (mh-assoc-ignore-case): Merge with version in
2626 mh-alias.el and move to mh-acros.el 2630 mh-alias.el and move to mh-acros.el.
2627 2631
2628 * mh-alias.el (mh-assoc-ignore-case): Merge with version in 2632 * mh-alias.el (mh-assoc-ignore-case): Merge with version in
2629 mh-identity.el and move to mh-acros.el 2633 mh-identity.el and move to mh-acros.el.
2630 2634
2631 * mh-acros.el (mh-assoc-ignore-case): Merge of function from 2635 * mh-acros.el (mh-assoc-ignore-case): Merge of function from
2632 mh-identity.el and mh-alias.el. 2636 mh-identity.el and mh-alias.el.
@@ -2667,15 +2671,15 @@
2667 mh-mhn-compose-external-compressed-tar to 2671 mh-mhn-compose-external-compressed-tar to
2668 mh-mh-compose-external-compressed-tar. Rename 2672 mh-mh-compose-external-compressed-tar. Rename
2669 mh-mhn-compose-anon-ftp to mh-mh-compose-anon-ftp. Rename 2673 mh-mhn-compose-anon-ftp to mh-mh-compose-anon-ftp. Rename
2670 mh-edit-mhn to mh-mh-to-mime. Rename mh-mhn-directive-present-p to 2674 mh-edit-mhn to mh-mh-to-mime. Rename mh-mhn-directive-present-p to
2671 mh-mh-directive-present-p. Rename mh-revert-mhn-edit to 2675 mh-mh-directive-present-p. Rename mh-revert-mhn-edit to
2672 mh-mh-to-mime-undo. Rename mh-gnus-pgp-support-flag to 2676 mh-mh-to-mime-undo. Rename mh-gnus-pgp-support-flag to
2673 mh-pgp-support-flag. Rename mh-compose-insertion value from 'mhn 2677 mh-pgp-support-flag. Rename mh-compose-insertion value from 'mhn
2674 to 'mh. 2678 to 'mh.
2675 (mh-insert-signature): Rename mh-mhn-directive-present-p to 2679 (mh-insert-signature): Rename mh-mhn-directive-present-p to
2676 mh-mh-directive-present-p. 2680 mh-mh-directive-present-p.
2677 (mh-send-letter): Rename mh-mhn-directive-present-p to 2681 (mh-send-letter): Rename mh-mhn-directive-present-p to
2678 mh-mh-directive-present-p. Rename mh-edit-mhn to mh-mh-to-mime. 2682 mh-mh-directive-present-p. Rename mh-edit-mhn to mh-mh-to-mime.
2679 (mh-letter-mode-map): Rename mh-edit-mhn to mh-mh-to-mime. Rename 2683 (mh-letter-mode-map): Rename mh-edit-mhn to mh-mh-to-mime. Rename
2680 mh-mhn-compose-anon-ftp to mh-mh-compose-anon-ftp. Rename 2684 mh-mhn-compose-anon-ftp to mh-mh-compose-anon-ftp. Rename
2681 mh-mhn-compose-external-compressed-tar to 2685 mh-mhn-compose-external-compressed-tar to
@@ -2829,7 +2833,7 @@
2829 2833
2830 * mh-e.el (Version, mh-version): Add +cvs to version. 2834 * mh-e.el (Version, mh-version): Add +cvs to version.
2831 2835
28322005-10-14 Bill Wohler <wohler@newt.com> 28362005-10-14 Bill Wohler <wohler@newt.com>
2833 2837
2834 Released MH-E version 7.85. 2838 Released MH-E version 7.85.
2835 2839
diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el
index 0f2b7daa741..56cfc6544ce 100644
--- a/lisp/mh-e/mh-mime.el
+++ b/lisp/mh-e/mh-mime.el
@@ -1667,7 +1667,7 @@ This action can be undone by running \\[undo]."
1667(defun mh-mh-directive-present-p (&optional begin end) 1667(defun mh-mh-directive-present-p (&optional begin end)
1668 "Check if the text between BEGIN and END might be a MH-style directive. 1668 "Check if the text between BEGIN and END might be a MH-style directive.
1669The optional argument BEGIN defaults to the beginning of the 1669The optional argument BEGIN defaults to the beginning of the
1670buffer, while END defaults to the the end of the buffer." 1670buffer, while END defaults to the end of the buffer."
1671 (unless begin (setq begin (point-min))) 1671 (unless begin (setq begin (point-min)))
1672 (unless end (setq end (point-max))) 1672 (unless end (setq end (point-max)))
1673 (save-excursion 1673 (save-excursion
diff --git a/lisp/mh-e/mh-search.el b/lisp/mh-e/mh-search.el
index 715556ad16d..ebd45aef6a6 100644
--- a/lisp/mh-e/mh-search.el
+++ b/lisp/mh-e/mh-search.el
@@ -1357,7 +1357,7 @@ record is invalid return 'error."
1357;;;###mh-autoload 1357;;;###mh-autoload
1358(defun mh-index-group-by-folder () 1358(defun mh-index-group-by-folder ()
1359 "Partition the messages based on source folder. 1359 "Partition the messages based on source folder.
1360Returns an alist with the the folder names in the car and the cdr 1360Returns an alist with the folder names in the car and the cdr
1361being the list of messages originally from that folder." 1361being the list of messages originally from that folder."
1362 (save-excursion 1362 (save-excursion
1363 (goto-char (point-min)) 1363 (goto-char (point-min))
diff --git a/lisp/net/socks.el b/lisp/net/socks.el
new file mode 100644
index 00000000000..ee2bc0c1d2d
--- /dev/null
+++ b/lisp/net/socks.el
@@ -0,0 +1,650 @@
1;;; socks.el --- A Socks v5 Client for Emacs
2
3;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002,
4;; 2007 Free Software Foundation, Inc.
5
6;; Author: William M. Perry <wmperry@gnu.org>
7;; Dave Love <fx@gnu.org>
8;; Keywords: comm, firewalls
9
10;; This file is part of GNU Emacs.
11
12;; GNU Emacs is free software; you can redistribute it and/or modify
13;; it under the terms of the GNU General Public License as published by
14;; the Free Software Foundation; either version 2, or (at your option)
15;; any later version.
16
17;; GNU Emacs is distributed in the hope that it will be useful,
18;; but WITHOUT ANY WARRANTY; without even the implied warranty of
19;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20;; GNU General Public License for more details.
21
22;; You should have received a copy of the GNU General Public License
23;; along with GNU Emacs; see the file COPYING. If not, write to the
24;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
25;; Boston, MA 02110-1301, USA.
26
27;;; Commentary:
28
29;; This is an implementation of the SOCKS v5 protocol as defined in
30;; RFC 1928.
31
32;; TODO
33;; - Finish the redirection rules stuff
34;; - Implement composition of servers. Recursively evaluate the
35;; redirection rules and do SOCKS-over-HTTP and SOCKS-in-SOCKS
36
37(eval-when-compile
38 (require 'wid-edit))
39(require 'custom)
40
41(if (not (fboundp 'split-string))
42 (defun split-string (string &optional pattern)
43 "Return a list of substrings of STRING which are separated by PATTERN.
44If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"."
45 (or pattern
46 (setq pattern "[ \f\t\n\r\v]+"))
47 (let (parts (start 0))
48 (while (string-match pattern string start)
49 (setq parts (cons (substring string start (match-beginning 0)) parts)
50 start (match-end 0)))
51 (nreverse (cons (substring string start) parts)))))
52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
53;;; Custom widgets
54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
55(define-widget 'dynamic-choice 'menu-choice
56 "A pretty simple dynamic dropdown list"
57 :format "%[%t%]: %v"
58 :tag "Network"
59 :case-fold t
60 :void '(item :format "invalid (%t)\n")
61 :value-create 's5-widget-value-create
62 :value-delete 'widget-children-value-delete
63 :value-get 'widget-choice-value-get
64 :value-inline 'widget-choice-value-inline
65 :mouse-down-action 'widget-choice-mouse-down-action
66 :action 'widget-choice-action
67 :error "Make a choice"
68 :validate 'widget-choice-validate
69 :match 's5-dynamic-choice-match
70 :match-inline 's5-dynamic-choice-match-inline)
71
72(defun s5-dynamic-choice-match (widget value)
73 (let ((choices (funcall (widget-get widget :choice-function)))
74 current found)
75 (while (and choices (not found))
76 (setq current (car choices)
77 choices (cdr choices)
78 found (widget-apply current :match value)))
79 found))
80
81(defun s5-dynamic-choice-match-inline (widget value)
82 (let ((choices (funcall (widget-get widget :choice-function)))
83 current found)
84 (while (and choices (not found))
85 (setq current (car choices)
86 choices (cdr choices)
87 found (widget-match-inline current value)))
88 found))
89
90(defun s5-widget-value-create (widget)
91 (let ((choices (funcall (widget-get widget :choice-function)))
92 (value (widget-get widget :value)))
93 (if (not value)
94 (widget-put widget :value (widget-value (car choices))))
95 (widget-put widget :args choices)
96 (widget-choice-value-create widget)))
97
98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
99;;; Customization support
100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
101(defgroup socks nil
102 "SOCKS Support"
103 :prefix "socks-"
104 :group 'processes)
105
106'(defcustom socks-server-aliases nil
107 "A list of server aliases for use in access control and filtering rules."
108 :group 'socks
109 :type '(repeat (list :format "%v"
110 :value ("" "" 1080 5)
111 (string :tag "Alias")
112 (string :tag "Hostname/IP Address")
113 (integer :tag "Port #")
114 (choice :tag "SOCKS Version"
115 (integer :tag "SOCKS v4" :value 4)
116 (integer :tag "SOCKS v5" :value 5)))))
117
118'(defcustom socks-network-aliases
119 '(("Anywhere" (netmask "0.0.0.0" "0.0.0.0")))
120 "A list of network aliases for use in subsequent rules."
121 :group 'socks
122 :type '(repeat (list :format "%v"
123 :value (netmask "" "255.255.255.0")
124 (string :tag "Alias")
125 (radio-button-choice
126 :format "%v"
127 (list :tag "IP address range"
128 (const :format "" :value range)
129 (string :tag "From")
130 (string :tag "To"))
131 (list :tag "IP address/netmask"
132 (const :format "" :value netmask)
133 (string :tag "IP Address")
134 (string :tag "Netmask"))
135 (list :tag "Domain Name"
136 (const :format "" :value domain)
137 (string :tag "Domain name"))
138 (list :tag "Unique hostname/IP address"
139 (const :format "" :value exact)
140 (string :tag "Hostname/IP Address"))))))
141
142'(defun s5-servers-filter ()
143 (if socks-server-aliases
144 (mapcar (lambda (x) (list 'const :tag (car x) :value (car x))) s5-server-aliases)
145 '((const :tag "No aliases defined" :value nil))))
146
147'(defun s5-network-aliases-filter ()
148 (mapcar (lambda (x) (list 'const :tag (car x) :value (car x)))
149 socks-network-aliases))
150
151'(defcustom socks-redirection-rules
152 nil
153 "A list of redirection rules."
154 :group 'socks
155 :type '(repeat (list :format "%v"
156 :value ("Anywhere" nil)
157 (dynamic-choice :choice-function s5-network-aliases-filter
158 :tag "Destination network")
159 (radio-button-choice
160 :tag "Connection type"
161 (const :tag "Direct connection" :value nil)
162 (dynamic-choice :format "%t: %[%v%]"
163 :choice-function s5-servers-filter
164 :tag "Proxy chain via")))))
165
166(defcustom socks-server
167 (list "Default server" "socks" 1080 5)
168 ""
169 :group 'socks
170 :type '(list
171 (string :format "" :value "Default server")
172 (string :tag "Server")
173 (integer :tag "Port")
174 (radio-button-choice :tag "SOCKS Version"
175 :format "%t: %v"
176 (const :tag "SOCKS v4 " :format "%t" :value 4)
177 (const :tag "SOCKS v5" :format "%t" :value 5))))
178
179
180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
181;;; Get down to the nitty gritty
182;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
183(defconst socks-version 5)
184(defvar socks-debug nil)
185
186;; Common socks v5 commands
187(defconst socks-connect-command 1)
188(defconst socks-bind-command 2)
189(defconst socks-udp-associate-command 3)
190
191;; Miscellaneous other socks constants
192(defconst socks-authentication-null 0)
193(defconst socks-authentication-failure 255)
194
195;; Response codes
196(defconst socks-response-success 0)
197(defconst socks-response-general-failure 1)
198(defconst socks-response-access-denied 2)
199(defconst socks-response-network-unreachable 3)
200(defconst socks-response-host-unreachable 4)
201(defconst socks-response-connection-refused 5)
202(defconst socks-response-ttl-expired 6)
203(defconst socks-response-cmd-not-supported 7)
204(defconst socks-response-address-not-supported 8)
205
206(defvar socks-errors
207 '("Succeeded"
208 "General SOCKS server failure"
209 "Connection not allowed by ruleset"
210 "Network unreachable"
211 "Host unreachable"
212 "Connection refused"
213 "Time-to-live expired"
214 "Command not supported"
215 "Address type not supported"))
216
217;; The socks v5 address types
218(defconst socks-address-type-v4 1)
219(defconst socks-address-type-name 3)
220(defconst socks-address-type-v6 4)
221
222;; Base variables
223(defvar socks-timeout 5)
224(defvar socks-connections (make-hash-table :size 13))
225
226;; Miscellaneous stuff for authentication
227(defvar socks-authentication-methods nil)
228(defvar socks-username (user-login-name))
229(defvar socks-password nil)
230
231(defun socks-register-authentication-method (id desc callback)
232 (let ((old (assq id socks-authentication-methods)))
233 (if old
234 (setcdr old (cons desc callback))
235 (setq socks-authentication-methods
236 (cons (cons id (cons desc callback))
237 socks-authentication-methods)))))
238
239(defun socks-unregister-authentication-method (id)
240 (let ((old (assq id socks-authentication-methods)))
241 (if old
242 (setq socks-authentication-methods
243 (delq old socks-authentication-methods)))))
244
245(socks-register-authentication-method 0 "No authentication" 'identity)
246
247(defun socks-build-auth-list ()
248 (let ((num 0)
249 (retval ""))
250 (mapcar
251 (function
252 (lambda (x)
253 (if (fboundp (cdr (cdr x)))
254 (setq retval (format "%s%c" retval (car x))
255 num (1+ num)))))
256 (reverse socks-authentication-methods))
257 (format "%c%s" num retval)))
258
259(defconst socks-state-waiting-for-auth 0)
260(defconst socks-state-submethod-negotiation 1)
261(defconst socks-state-authenticated 2)
262(defconst socks-state-waiting 3)
263(defconst socks-state-connected 4)
264
265(defmacro socks-wait-for-state-change (proc htable cur-state)
266 (`
267 (while (and (= (gethash 'state (, htable)) (, cur-state))
268 (memq (process-status (, proc)) '(run open)))
269 (accept-process-output (, proc) socks-timeout))))
270
271(defun socks-filter (proc string)
272 (let ((info (gethash proc socks-connections))
273 state version desired-len)
274 (or info (error "socks-filter called on non-SOCKS connection %S" proc))
275 (setq state (gethash 'state info))
276 (cond
277 ((= state socks-state-waiting-for-auth)
278 (puthash 'scratch (concat string (gethash 'scratch info)) info)
279 (setq string (gethash 'scratch info))
280 (if (< (length string) 2)
281 nil ; We need to spin some more
282 (puthash 'authtype (aref string 1) info)
283 (puthash 'scratch (substring string 2 nil) info)
284 (puthash 'state socks-state-submethod-negotiation info)))
285 ((= state socks-state-submethod-negotiation)
286 )
287 ((= state socks-state-authenticated)
288 )
289 ((= state socks-state-waiting)
290 (puthash 'scratch (concat string (gethash 'scratch info)) info)
291 (setq string (gethash 'scratch info))
292 (setq version (gethash 'server-protocol info))
293 (cond
294 ((equal version 'http)
295 (if (not (string-match "\r\n\r\n" string))
296 nil ; Need to spin some more
297 (puthash 'state socks-state-connected info)
298 (puthash 'reply 0 info)
299 (puthash 'response string info)))
300 ((equal version 4)
301 (if (< (length string) 2)
302 nil ; Can't know how much to read yet
303 (setq desired-len
304 (+ 4 ; address length
305 2 ; port
306 2 ; initial data
307 ))
308 (if (< (length string) desired-len)
309 nil ; need to spin some more
310 (let ((response (aref string 1)))
311 (if (= response 90)
312 (setq response 0))
313 (puthash 'state socks-state-connected info)
314 (puthash 'reply response info)
315 (puthash 'response string info)))))
316 ((equal version 5)
317 (if (< (length string) 4)
318 nil
319 (setq desired-len
320 (+ 6 ; Standard socks header
321 (cond
322 ((= (aref string 3) socks-address-type-v4) 4)
323 ((= (aref string 3) socks-address-type-v6) 16)
324 ((= (aref string 3) socks-address-type-name)
325 (if (< (length string) 5)
326 255
327 (+ 1 (aref string 4)))))))
328 (if (< (length string) desired-len)
329 nil ; Need to spin some more
330 (puthash 'state socks-state-connected info)
331 (puthash 'reply (aref string 1) info)
332 (puthash 'response string info))))))
333 ((= state socks-state-connected)
334 )
335 )
336 )
337 )
338
339(defun socks-open-connection (server-info)
340 (interactive)
341 (save-excursion
342 (let ((proc (socks-original-open-network-stream "socks"
343 nil
344 (nth 1 server-info)
345 (nth 2 server-info)))
346 (info (make-hash-table :size 13))
347 (authtype nil)
348 version)
349
350 ;; Initialize process and info about the process
351 (set-process-filter proc 'socks-filter)
352 (set-process-query-on-exit-flag proc nil)
353 (puthash proc info socks-connections)
354 (puthash 'state socks-state-waiting-for-auth info)
355 (puthash 'authtype socks-authentication-failure info)
356 (puthash 'server-protocol (nth 3 server-info) info)
357 (puthash 'server-name (nth 1 server-info) info)
358 (setq version (nth 3 server-info))
359 (cond
360 ((equal version 'http)
361 ;; Don't really have to do any connection setup under http
362 nil)
363 ((equal version 4)
364 ;; Don't really have to do any connection setup under v4
365 nil)
366 ((equal version 5)
367 ;; Need to handle all the authentication crap under v5
368 ;; Send what we think we can handle for authentication types
369 (process-send-string proc (format "%c%s" socks-version
370 (socks-build-auth-list)))
371
372 ;; Basically just do a select() until we change states.
373 (socks-wait-for-state-change proc info socks-state-waiting-for-auth)
374 (setq authtype (gethash 'authtype info))
375 (cond
376 ((= authtype socks-authentication-null)
377 (and socks-debug (message "No authentication necessary")))
378 ((= authtype socks-authentication-failure)
379 (error "No acceptable authentication methods found."))
380 (t
381 (let* ((auth-type (gethash 'authtype info))
382 (auth-handler (assoc auth-type socks-authentication-methods))
383 (auth-func (and auth-handler (cdr (cdr auth-handler))))
384 (auth-desc (and auth-handler (car (cdr auth-handler)))))
385 (set-process-filter proc nil)
386 (if (and auth-func (fboundp auth-func)
387 (funcall auth-func proc))
388 nil ; We succeeded!
389 (delete-process proc)
390 (error "Failed to use auth method: %s (%d)"
391 (or auth-desc "Unknown") auth-type))
392 )
393 )
394 )
395 (puthash 'state socks-state-authenticated info)
396 (set-process-filter proc 'socks-filter)))
397 proc)))
398
399(defun socks-send-command (proc command atype address port)
400 (let ((addr (cond
401 ((or (= atype socks-address-type-v4)
402 (= atype socks-address-type-v6))
403 address)
404 ((= atype socks-address-type-name)
405 (format "%c%s" (length address) address))
406 (t
407 (error "Unkown address type: %d" atype))))
408 (info (gethash proc socks-connections))
409 request version)
410 (or info (error "socks-send-command called on non-SOCKS connection %S"
411 proc))
412 (puthash 'state socks-state-waiting info)
413 (setq version (gethash 'server-protocol info))
414 (cond
415 ((equal version 'http)
416 (setq request (format (eval-when-compile
417 (concat
418 "CONNECT %s:%d HTTP/1.0\r\n"
419 "User-Agent: Emacs/SOCKS v1.0\r\n"
420 "\r\n"))
421 (cond
422 ((equal atype socks-address-type-name) address)
423 (t
424 (error "Unsupported address type for HTTP: %d" atype)))
425 port)))
426 ((equal version 4)
427 (setq request (format
428 "%c%c%c%c%s%s%c"
429 version ; version
430 command ; command
431 (lsh port -8) ; port, high byte
432 (- port (lsh (lsh port -8) 8)) ; port, low byte
433 addr ; address
434 (user-full-name) ; username
435 0 ; terminate username
436 )))
437 ((equal version 5)
438 (setq request (format
439 "%c%c%c%c%s%c%c"
440 version ; version
441 command ; command
442 0 ; reserved
443 atype ; address type
444 addr ; address
445 (lsh port -8) ; port, high byte
446 (- port (lsh (lsh port -8) 8)) ; port, low byte
447 )))
448 (t
449 (error "Unknown protocol version: %d" version)))
450 (process-send-string proc request)
451 (socks-wait-for-state-change proc info socks-state-waiting)
452 (process-status proc)
453 (if (= (or (gethash 'reply info) 1) socks-response-success)
454 nil ; Sweet sweet success!
455 (delete-process proc)
456 (error "SOCKS: %s" (nth (or (gethash 'reply info) 1) socks-errors)))
457 proc))
458
459
460;; Replacement functions for open-network-stream, etc.
461(defvar socks-noproxy nil
462 "*List of regexps matching hosts that we should not socksify connections to")
463
464(defun socks-find-route (host service)
465 (let ((route socks-server)
466 (noproxy socks-noproxy))
467 (while noproxy
468 (if (eq ?! (aref (car noproxy) 0))
469 (if (string-match (substring (car noproxy) 1) host)
470 (setq noproxy nil))
471 (if (string-match (car noproxy) host)
472 (setq route nil
473 noproxy nil)))
474 (setq noproxy (cdr noproxy)))
475 route))
476
477(defvar socks-override-functions nil
478 "*Whether to overwrite the open-network-stream function with the SOCKSified
479version.")
480
481(if (fboundp 'socks-original-open-network-stream)
482 nil ; Do nothing, we've been here already
483 (defalias 'socks-original-open-network-stream
484 (symbol-function 'open-network-stream))
485 (if socks-override-functions
486 (defalias 'open-network-stream 'socks-open-network-stream)))
487
488(defvar socks-services-file "/etc/services")
489(defvar socks-tcp-services (make-hash-table :size 13 :test 'equal))
490(defvar socks-udp-services (make-hash-table :size 13 :test 'equal))
491
492(defun socks-parse-services ()
493 (if (not (and (file-exists-p socks-services-file)
494 (file-readable-p socks-services-file)))
495 (error "Could not find services file: %s" socks-services-file))
496 (save-excursion
497 (clrhash socks-tcp-services)
498 (clrhash socks-udp-services)
499 (set-buffer (get-buffer-create " *socks-tmp*"))
500 (erase-buffer)
501 (insert-file-contents socks-services-file)
502 ;; Nuke comments
503 (goto-char (point-min))
504 (while (re-search-forward "#.*" nil t)
505 (replace-match ""))
506 ;; Nuke empty lines
507 (goto-char (point-min))
508 (while (re-search-forward "^[ \t\n]+" nil t)
509 (replace-match ""))
510 ;; Now find all the lines
511 (goto-char (point-min))
512 (let (name port type)
513 (while (re-search-forward "^\\([^ \t]+\\)[ \t]+\\([0-9]+\\)/\\([a-z]+\\)"
514 nil t)
515 (setq name (downcase (match-string 1))
516 port (string-to-number (match-string 2))
517 type (downcase (match-string 3)))
518 (puthash name port (if (equal type "udp")
519 socks-udp-services
520 socks-tcp-services))))))
521
522(defun socks-find-services-entry (service &optional udp)
523 "Return the port # associated with SERVICE"
524 (if (= (hash-table-count socks-tcp-services) 0)
525 (socks-parse-services))
526 (gethash (downcase service)
527 (if udp socks-udp-services socks-tcp-services)))
528
529(defun socks-open-network-stream (name buffer host service)
530 (let* ((route (socks-find-route host service))
531 proc info version atype)
532 (if (not route)
533 (socks-original-open-network-stream name buffer host service)
534 (setq proc (socks-open-connection route)
535 info (gethash proc socks-connections)
536 version (gethash 'server-protocol info))
537 (cond
538 ((equal version 4)
539 (setq host (socks-nslookup-host host))
540 (if (not (listp host))
541 (error "Could not get IP address for: %s" host))
542 (setq host (apply 'format "%c%c%c%c" host))
543 (setq atype socks-address-type-v4))
544 (t
545 (setq atype socks-address-type-name)))
546 (socks-send-command proc
547 socks-connect-command
548 atype
549 host
550 (if (stringp service)
551 (socks-find-services-entry service)
552 service))
553 (puthash 'buffer buffer info)
554 (puthash 'host host info)
555 (puthash 'service host info)
556 (set-process-filter proc nil)
557 (set-process-buffer proc (if buffer (get-buffer-create buffer)))
558 proc)))
559
560;; Authentication modules go here
561
562;; Basic username/password authentication, ala RFC 1929
563(socks-register-authentication-method 2 "Username/Password"
564 'socks-username/password-auth)
565
566(defconst socks-username/password-auth-version 1)
567
568(defun socks-username/password-auth-filter (proc str)
569 (let ((info (gethash proc socks-connections))
570 state desired-len)
571 (or info (error "socks-filter called on non-SOCKS connection %S" proc))
572 (setq state (gethash 'state info))
573 (puthash 'scratch (concat (gethash 'scratch info) str) info)
574 (if (< (length (gethash 'scratch info)) 2)
575 nil
576 (puthash 'password-auth-status (aref (gethash 'scratch info) 1) info)
577 (puthash 'state socks-state-authenticated info))))
578
579(defun socks-username/password-auth (proc)
580 (let* ((info (gethash proc socks-connections))
581 (state (gethash 'state info)))
582 (if (not socks-password)
583 (setq socks-password (read-passwd
584 (format "Password for %s@%s: "
585 socks-username
586 (gethash 'server-name info)))))
587 (puthash 'scratch "" info)
588 (set-process-filter proc 'socks-username/password-auth-filter)
589 (process-send-string proc
590 (format "%c%c%s%c%s"
591 socks-username/password-auth-version
592 (length socks-username)
593 socks-username
594 (length socks-password)
595 socks-password))
596 (socks-wait-for-state-change proc info state)
597 (= (gethash 'password-auth-status info) 0)))
598
599
600;; More advanced GSS/API stuff, not yet implemented - volunteers?
601;; (socks-register-authentication-method 1 "GSS/API" 'socks-gssapi-auth)
602
603(defun socks-gssapi-auth (proc)
604 nil)
605
606
607;; CHAP stuff
608;; (socks-register-authentication-method 3 "CHAP" 'socks-chap-auth)
609(defun socks-chap-auth (proc)
610 nil)
611
612
613;; CRAM stuff
614;; (socks-register-authentication-method 5 "CRAM" 'socks-cram-auth)
615(defun socks-cram-auth (proc)
616 nil)
617
618
619(defcustom socks-nslookup-program "nslookup"
620 "*If non-NIL then a string naming the nslookup program."
621 :type '(choice (const :tag "None" :value nil) string)
622 :group 'socks)
623
624(defun socks-nslookup-host (host)
625 "Attempt to resolve the given HOSTNAME using nslookup if possible."
626 (interactive "sHost: ")
627 (if socks-nslookup-program
628 (let ((proc (start-process " *nslookup*" " *nslookup*"
629 socks-nslookup-program host))
630 (res host))
631 (set-process-query-on-exit-flag proc nil)
632 (save-excursion
633 (set-buffer (process-buffer proc))
634 (while (progn
635 (accept-process-output proc)
636 (memq (process-status proc) '(run open))))
637 (goto-char (point-min))
638 (if (re-search-forward "Name:.*\nAddress\\(es\\)?: *\\([0-9.]+\\)$" nil t)
639 (progn
640 (setq res (buffer-substring (match-beginning 2)
641 (match-end 2))
642 res (mapcar 'string-to-int (split-string res "\\.")))))
643 (kill-buffer (current-buffer)))
644 res)
645 host))
646
647(provide 'socks)
648
649;; arch-tag: 67aef0d9-f4f7-4056-89c3-b4c9bf93ce7f
650;;; socks.el ends here
diff --git a/lisp/pgg.el b/lisp/pgg.el
index f6a5a96d2b8..eabc4f47408 100644
--- a/lisp/pgg.el
+++ b/lisp/pgg.el
@@ -332,7 +332,7 @@ cache or user."
332 (interactive "r") 332 (interactive "r")
333 (let ((status 333 (let ((status
334 (pgg-save-coding-system start end 334 (pgg-save-coding-system start end
335 (pgg-invoke "encrypt-symmetric-region" 335 (pgg-invoke "encrypt-symmetric-region"
336 (or pgg-scheme pgg-default-scheme) 336 (or pgg-scheme pgg-default-scheme)
337 (point-min) (point-max) passphrase)))) 337 (point-min) (point-max) passphrase))))
338 (when (interactive-p) 338 (when (interactive-p)
@@ -416,7 +416,7 @@ If the optional 3rd argument CLEARTEXT is non-nil, it does not create
416a detached signature. 416a detached signature.
417 417
418If this function is called interactively, CLEARTEXT is enabled 418If this function is called interactively, CLEARTEXT is enabled
419and the the output is displayed. 419and the output is displayed.
420 420
421If optional PASSPHRASE is not specified, it will be obtained from the 421If optional PASSPHRASE is not specified, it will be obtained from the
422passphrase cache or user." 422passphrase cache or user."
@@ -441,7 +441,7 @@ If optional arguments START and END are specified, only sign data
441within the region. 441within the region.
442 442
443If this function is called interactively, CLEARTEXT is enabled 443If this function is called interactively, CLEARTEXT is enabled
444and the the output is displayed. 444and the output is displayed.
445 445
446If optional PASSPHRASE is not specified, it will be obtained from the 446If optional PASSPHRASE is not specified, it will be obtained from the
447passphrase cache or user." 447passphrase cache or user."
@@ -485,7 +485,7 @@ signer's public key from `pgg-default-keyserver-address'."
485 (or (cdr (assq 'preferred-key-server packet)) 485 (or (cdr (assq 'preferred-key-server packet))
486 pgg-default-keyserver-address)) 486 pgg-default-keyserver-address))
487 (pgg-fetch-key keyserver key)) 487 (pgg-fetch-key keyserver key))
488 (setq status 488 (setq status
489 (pgg-save-coding-system start end 489 (pgg-save-coding-system start end
490 (pgg-invoke "verify-region" (or pgg-scheme pgg-default-scheme) 490 (pgg-invoke "verify-region" (or pgg-scheme pgg-default-scheme)
491 (point-min) (point-max) signature))) 491 (point-min) (point-max) signature)))
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 7701809463d..a9f5f77c126 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -38,11 +38,14 @@
38;; LINE will be nil for a message that doesn't contain them. Then the 38;; LINE will be nil for a message that doesn't contain them. Then the
39;; location refers to a indented beginning of line or beginning of file. 39;; location refers to a indented beginning of line or beginning of file.
40;; Once any location in some file has been jumped to, the list is extended to 40;; Once any location in some file has been jumped to, the list is extended to
41;; (COLUMN LINE FILE-STRUCTURE MARKER . VISITED) for all LOCs pertaining to 41;; (COLUMN LINE FILE-STRUCTURE MARKER TIMESTAMP . VISITED)
42;; that file. 42;; for all LOCs pertaining to that file.
43;; MARKER initially points to LINE and COLUMN in a buffer visiting that file. 43;; MARKER initially points to LINE and COLUMN in a buffer visiting that file.
44;; Being a marker it sticks to some text, when the buffer grows or shrinks 44;; Being a marker it sticks to some text, when the buffer grows or shrinks
45;; before that point. VISITED is t if we have jumped there, else nil. 45;; before that point. VISITED is t if we have jumped there, else nil.
46;; TIMESTAMP is necessary because of "incremental compilation": `omake -P'
47;; polls filesystem for changes and recompiles when a file is modified
48;; using the same *compilation* buffer. this necessitates re-parsing markers.
46 49
47;; FILE-STRUCTURE is a list of 50;; FILE-STRUCTURE is a list of
48;; ((FILENAME . DIRECTORY) FORMATS (LINE LOC ...) ...) 51;; ((FILENAME . DIRECTORY) FORMATS (LINE LOC ...) ...)
@@ -117,7 +120,7 @@ bound to the compilation buffer and window, respectively.")
117 "Function to compute the name of a compilation buffer. 120 "Function to compute the name of a compilation buffer.
118The function receives one argument, the name of the major mode of the 121The function receives one argument, the name of the major mode of the
119compilation buffer. It should return a string. 122compilation buffer. It should return a string.
120nil means compute the name with `(concat \"*\" (downcase major-mode) \"*\")'.") 123If nil, compute the name with `(concat \"*\" (downcase major-mode) \"*\")'.")
121 124
122;;;###autoload 125;;;###autoload
123(defvar compilation-finish-function nil 126(defvar compilation-finish-function nil
@@ -126,7 +129,7 @@ It is called with two arguments: the compilation buffer, and a string
126describing how the process finished.") 129describing how the process finished.")
127 130
128(make-obsolete-variable 'compilation-finish-function 131(make-obsolete-variable 'compilation-finish-function
129 "Use `compilation-finish-functions', but it works a little differently." 132 "use `compilation-finish-functions', but it works a little differently."
130 "22.1") 133 "22.1")
131 134
132;;;###autoload 135;;;###autoload
@@ -466,7 +469,7 @@ Otherwise, it saves all modified buffers without asking."
466(defcustom compilation-search-path '(nil) 469(defcustom compilation-search-path '(nil)
467 "*List of directories to search for source files named in error messages. 470 "*List of directories to search for source files named in error messages.
468Elements should be directory names, not file names of directories. 471Elements should be directory names, not file names of directories.
469nil as an element means to try the default directory." 472The value nil as an element means to try the default directory."
470 :type '(repeat (choice (const :tag "Default" nil) 473 :type '(repeat (choice (const :tag "Default" nil)
471 (string :tag "Directory"))) 474 (string :tag "Directory")))
472 :group 'compilation) 475 :group 'compilation)
@@ -1419,7 +1422,7 @@ Turning the mode on runs the normal hook `compilation-minor-mode-hook'."
1419 (font-lock-fontify-buffer))) 1422 (font-lock-fontify-buffer)))
1420 1423
1421(defun compilation-handle-exit (process-status exit-status msg) 1424(defun compilation-handle-exit (process-status exit-status msg)
1422 "Write MSG in the current buffer and hack its mode-line-process." 1425 "Write MSG in the current buffer and hack its `mode-line-process'."
1423 (let ((inhibit-read-only t) 1426 (let ((inhibit-read-only t)
1424 (status (if compilation-exit-message-function 1427 (status (if compilation-exit-message-function
1425 (funcall compilation-exit-message-function 1428 (funcall compilation-exit-message-function
@@ -1516,7 +1519,7 @@ Just inserts the text, but uses `insert-before-markers'."
1516 (eq (prog1 last (setq last (nth 2 (car msg)))) 1519 (eq (prog1 last (setq last (nth 2 (car msg))))
1517 last)) 1520 last))
1518 (if compilation-skip-visited 1521 (if compilation-skip-visited
1519 (nthcdr 4 (car msg))) 1522 (nthcdr 5 (car msg)))
1520 (if compilation-skip-to-next-location 1523 (if compilation-skip-to-next-location
1521 (eq (car msg) loc)) 1524 (eq (car msg) loc))
1522 ;; count this message only if none of the above are true 1525 ;; count this message only if none of the above are true
@@ -1619,7 +1622,7 @@ This is the value of `next-error-function' in Compilation buffers."
1619 (when reset 1622 (when reset
1620 (setq compilation-current-error nil)) 1623 (setq compilation-current-error nil))
1621 (let* ((columns compilation-error-screen-columns) ; buffer's local value 1624 (let* ((columns compilation-error-screen-columns) ; buffer's local value
1622 (last 1) 1625 (last 1) timestamp
1623 (loc (compilation-next-error (or n 1) nil 1626 (loc (compilation-next-error (or n 1) nil
1624 (or compilation-current-error 1627 (or compilation-current-error
1625 compilation-messages-start 1628 compilation-messages-start
@@ -1632,10 +1635,17 @@ This is the value of `next-error-function' in Compilation buffers."
1632 compilation-current-error 1635 compilation-current-error
1633 (copy-marker (line-beginning-position))) 1636 (copy-marker (line-beginning-position)))
1634 loc (car loc)) 1637 loc (car loc))
1635 ;; If loc contains no marker, no error in that file has been visited. If 1638 ;; If loc contains no marker, no error in that file has been visited.
1636 ;; the marker is invalid the buffer has been killed. So, recalculate all 1639 ;; If the marker is invalid the buffer has been killed.
1637 ;; markers for that file. 1640 ;; If the file is newer than the timestamp, it has been modified
1638 (unless (and (nth 3 loc) (marker-buffer (nth 3 loc))) 1641 ;; (`omake -P' polls filesystem for changes and recompiles when needed
1642 ;; in the same process and buffer).
1643 ;; So, recalculate all markers for that file.
1644 (unless (and (nth 3 loc) (marker-buffer (nth 3 loc))
1645 (equal (nth 4 loc)
1646 (setq timestamp
1647 (with-current-buffer (marker-buffer (nth 3 loc))
1648 (visited-file-modtime)))))
1639 (with-current-buffer (compilation-find-file marker (caar (nth 2 loc)) 1649 (with-current-buffer (compilation-find-file marker (caar (nth 2 loc))
1640 (cadr (car (nth 2 loc)))) 1650 (cadr (car (nth 2 loc))))
1641 (save-restriction 1651 (save-restriction
@@ -1658,7 +1668,8 @@ This is the value of `next-error-function' in Compilation buffers."
1658 (set-marker (nth 3 col) (point)) 1668 (set-marker (nth 3 col) (point))
1659 (setcdr (nthcdr 2 col) `(,(point-marker))))))))) 1669 (setcdr (nthcdr 2 col) `(,(point-marker)))))))))
1660 (compilation-goto-locus marker (nth 3 loc) (nth 3 end-loc)) 1670 (compilation-goto-locus marker (nth 3 loc) (nth 3 end-loc))
1661 (setcdr (nthcdr 3 loc) t))) ; Set this one as visited. 1671 (setcdr (nthcdr 3 loc) (list timestamp))
1672 (setcdr (nthcdr 4 loc) t))) ; Set this one as visited.
1662 1673
1663(defvar compilation-gcpro nil 1674(defvar compilation-gcpro nil
1664 "Internal variable used to keep some values from being GC'd.") 1675 "Internal variable used to keep some values from being GC'd.")
@@ -1825,8 +1836,8 @@ and overlay is highlighted between MK and END-MK."
1825Search the directories in `compilation-search-path'. 1836Search the directories in `compilation-search-path'.
1826A nil in `compilation-search-path' means to try the 1837A nil in `compilation-search-path' means to try the
1827\"current\" directory, which is passed in DIRECTORY. 1838\"current\" directory, which is passed in DIRECTORY.
1828If DIRECTORY. is relative, it is combined with `default-directory'. 1839If DIRECTORY is relative, it is combined with `default-directory'.
1829If DIRECTORY. is nil, that means use `default-directory'. 1840If DIRECTORY is nil, that means use `default-directory'.
1830If FILENAME is not found at all, ask the user where to find it. 1841If FILENAME is not found at all, ask the user where to find it.
1831Pop up the buffer containing MARKER and scroll to MARKER if we ask the user." 1842Pop up the buffer containing MARKER and scroll to MARKER if we ask the user."
1832 (or formats (setq formats '("%s"))) 1843 (or formats (setq formats '("%s")))
@@ -1867,7 +1878,7 @@ Pop up the buffer containing MARKER and scroll to MARKER if we ask the user."
1867 ;; restrictive otherwise, since it also prevents the 1878 ;; restrictive otherwise, since it also prevents the
1868 ;; user from completing "fo" to "foo/" when she 1879 ;; user from completing "fo" to "foo/" when she
1869 ;; wants to enter "foo/bar". 1880 ;; wants to enter "foo/bar".
1870 ;; 1881 ;;
1871 ;; Try to make sure the user can only select 1882 ;; Try to make sure the user can only select
1872 ;; a valid answer. This predicate may be ignored, 1883 ;; a valid answer. This predicate may be ignored,
1873 ;; tho, so we still have to double-check afterwards. 1884 ;; tho, so we still have to double-check afterwards.
diff --git a/lisp/progmodes/ebrowse.el b/lisp/progmodes/ebrowse.el
index cc808adda39..d3e00888889 100644
--- a/lisp/progmodes/ebrowse.el
+++ b/lisp/progmodes/ebrowse.el
@@ -1003,7 +1003,7 @@ type `ebrowse-hs' is set to the resulting obarray."
1003 1003
1004 1004
1005(defun ebrowse-member-table (header) 1005(defun ebrowse-member-table (header)
1006 "Return the member obarray. Build it it hasn't been set up yet. 1006 "Return the member obarray. Build it if it hasn't been set up yet.
1007HEADER is the tree header structure of the class tree." 1007HEADER is the tree header structure of the class tree."
1008 (when (null (ebrowse-hs-member-table header)) 1008 (when (null (ebrowse-hs-member-table header))
1009 (loop for buffer in (ebrowse-browser-buffer-list) 1009 (loop for buffer in (ebrowse-browser-buffer-list)
@@ -3598,7 +3598,7 @@ The file name is read from the minibuffer."
3598 3598
3599 3599
3600(defun* ebrowse-draw-file-member-info (info &optional (kind "")) 3600(defun* ebrowse-draw-file-member-info (info &optional (kind ""))
3601 "Display a line in an the members per file info buffer. 3601 "Display a line in the members info buffer.
3602INFO describes the member. It has the form (TREE ACCESSOR MEMBER). 3602INFO describes the member. It has the form (TREE ACCESSOR MEMBER).
3603TREE is the class of the member to display. 3603TREE is the class of the member to display.
3604ACCESSOR is the accessor symbol of its member list. 3604ACCESSOR is the accessor symbol of its member list.
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index cf518b17d94..4c58919ec1f 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -7095,7 +7095,7 @@ sort the list before displaying"
7095 "Make the user select an element from the alist in the variable SYM. 7095 "Make the user select an element from the alist in the variable SYM.
7096The keys of the alist are expected to be strings. The function returns the 7096The keys of the alist are expected to be strings. The function returns the
7097car of the selected association. 7097car of the selected association.
7098To do this, PROMPT is displayed and and the user must hit a letter key to 7098To do this, PROMPT is displayed and the user must hit a letter key to
7099select an entry. If the user does not reply within DELAY seconds, a help 7099select an entry. If the user does not reply within DELAY seconds, a help
7100window with the options is displayed automatically. 7100window with the options is displayed automatically.
7101The key which is associated with each option is generated automatically. 7101The key which is associated with each option is generated automatically.
diff --git a/lisp/progmodes/mixal-mode.el b/lisp/progmodes/mixal-mode.el
index d2b78b1d143..146b228453e 100644
--- a/lisp/progmodes/mixal-mode.el
+++ b/lisp/progmodes/mixal-mode.el
@@ -1017,7 +1017,7 @@ The converted character representation is stored in rAX."
1017 "Alist that contains all the possible operation codes for mix. 1017 "Alist that contains all the possible operation codes for mix.
1018Each elt has the form 1018Each elt has the form
1019 (OP-CODE GROUP FULL-NAME C-BYTE F-BYTE DESCRIPTION EXECUTION-TIME) 1019 (OP-CODE GROUP FULL-NAME C-BYTE F-BYTE DESCRIPTION EXECUTION-TIME)
1020Where OP-CODE is the text of the opcode as an symbol, 1020Where OP-CODE is the text of the opcode as a symbol,
1021FULL-NAME is the human readable name as a string, 1021FULL-NAME is the human readable name as a string,
1022C-BYTE is the operation code telling what operation is to be performed, 1022C-BYTE is the operation code telling what operation is to be performed,
1023F-BYTE holds a modification of the operation code which can be a symbol 1023F-BYTE holds a modification of the operation code which can be a symbol
diff --git a/lisp/ses.el b/lisp/ses.el
index 2eec1b68e47..4f51c803de1 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -878,9 +878,9 @@ preceding cell has spilled over."
878 878
879(defun ses-call-printer (printer &optional value) 879(defun ses-call-printer (printer &optional value)
880 "Invokes PRINTER (a string or parenthesized string or function-symbol or 880 "Invokes PRINTER (a string or parenthesized string or function-symbol or
881lambda of one argument) on VALUE. Result is the the printed cell as a 881lambda of one argument) on VALUE. Result is the printed cell as a string.
882string. The variable `ses-call-printer-return' is set to t if the printer 882The variable `ses-call-printer-return' is set to t if the printer used
883used parenthesis to request left-justification, or the error-signal if the 883parenthesis to request left-justification, or the error-signal if the
884printer signaled one (and \"%s\" is used as the default printer), else nil." 884printer signaled one (and \"%s\" is used as the default printer), else nil."
885 (setq ses-call-printer-return nil) 885 (setq ses-call-printer-return nil)
886 (unless value 886 (unless value
diff --git a/lisp/startup.el b/lisp/startup.el
index b36c9f1cfc4..4c2ae272545 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1295,7 +1295,7 @@ using the mouse.\n\n")
1295 (emacs-version) 1295 (emacs-version)
1296 "\n" 1296 "\n"
1297 :face '(variable-pitch :height 0.5) 1297 :face '(variable-pitch :height 0.5)
1298 "Copyright (C) 2007 Free Software Foundation, Inc.") 1298 emacs-copyright)
1299 (and auto-save-list-file-prefix 1299 (and auto-save-list-file-prefix
1300 ;; Don't signal an error if the 1300 ;; Don't signal an error if the
1301 ;; directory for auto-save-list files 1301 ;; directory for auto-save-list files
diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el
index 65e2b0f1c0b..b97cb11165e 100644
--- a/lisp/tar-mode.el
+++ b/lisp/tar-mode.el
@@ -658,15 +658,15 @@ appear on disk when you save the tar-file's buffer."
658 (size (tar-header-size tokens)) 658 (size (tar-header-size tokens))
659 (link-p (tar-header-link-type tokens))) 659 (link-p (tar-header-link-type tokens)))
660 (if link-p 660 (if link-p
661 (error "This is a%s, not a real file" 661 (error "This is %s, not a real file"
662 (cond ((eq link-p 5) " directory") 662 (cond ((eq link-p 5) "a directory")
663 ((eq link-p 20) " tar directory header") 663 ((eq link-p 20) "a tar directory header")
664 ((eq link-p 28) " next has longname") 664 ((eq link-p 28) "a next has longname")
665 ((eq link-p 29) " multivolume-continuation") 665 ((eq link-p 29) "a multivolume-continuation")
666 ((eq link-p 35) " sparse entry") 666 ((eq link-p 35) "a sparse entry")
667 ((eq link-p 38) " volume header") 667 ((eq link-p 38) "a volume header")
668 ((eq link-p 55) "n extended pax header") 668 ((eq link-p 55) "an extended pax header")
669 (t "link")))) 669 (t "a link"))))
670 (if (zerop size) (error "This is a zero-length file")) 670 (if (zerop size) (error "This is a zero-length file"))
671 descriptor)) 671 descriptor))
672 672
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
new file mode 100644
index 00000000000..00a438a3e95
--- /dev/null
+++ b/lisp/textmodes/css-mode.el
@@ -0,0 +1,469 @@
1;;; css-mode.el --- Major mode to edit CSS files
2
3;; Copyright (C) 2006, 2007 Free Software Foundation, Inc.
4
5;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
6;; Keywords: hypermedia
7
8;; This file is free software; you can redistribute it and/or modify
9;; it under the terms of the GNU General Public License as published by
10;; the Free Software Foundation; either version 2, or (at your option)
11;; any later version.
12
13;; This file is distributed in the hope that it will be useful,
14;; but WITHOUT ANY WARRANTY; without even the implied warranty of
15;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16;; GNU General Public License for more details.
17
18;; You should have received a copy of the GNU General Public License
19;; along with GNU Emacs; see the file COPYING. If not, write to
20;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21;; Boston, MA 02110-1301, USA.
22
23;;; Commentary:
24
25;; Yet another CSS mode.
26
27;;; Todo:
28
29;; - electric ; and }
30;; - filling code with auto-fill-mode
31;; - completion
32;; - fix font-lock errors with multi-line selectors
33
34;;; Code:
35
36(defun css-extract-keyword-list (res)
37 (with-temp-buffer
38 (url-insert-file-contents "http://www.w3.org/TR/REC-CSS2/css2.txt")
39 (goto-char (point-max))
40 (search-backward "Appendix H. Index")
41 (forward-line)
42 (delete-region (point-min) (point))
43 (let ((result nil)
44 keys)
45 (dolist (re res)
46 (goto-char (point-min))
47 (setq keys nil)
48 (while (re-search-forward (cdr re) nil t)
49 (push (match-string 1) keys))
50 (push (cons (car re) (sort keys 'string-lessp)) result))
51 (nreverse result))))
52
53(defun css-extract-parse-val-grammar (string env)
54 (let ((start 0)
55 (elems ())
56 name)
57 (while (string-match
58 (concat "\\(?:"
59 (concat "<a [^>]+><span [^>]+>\\(?:"
60 "&lt;\\([^&]+\\)&gt;\\|'\\([^']+\\)'"
61 "\\)</span></a>")
62 "\\|" "\\(\\[\\)"
63 "\\|" "\\(]\\)"
64 "\\|" "\\(||\\)"
65 "\\|" "\\(|\\)"
66 "\\|" "\\([*+?]\\)"
67 "\\|" "\\({[^}]+}\\)"
68 "\\|" "\\(\\w+\\(?:-\\w+\\)*\\)"
69 "\\)[ \t\n]*")
70 string start)
71 ;; (assert (eq start (match-beginning 0)))
72 (setq start (match-end 0))
73 (cond
74 ;; Reference to a type of value.
75 ((setq name (match-string-no-properties 1 string))
76 (push (intern name) elems))
77 ;; Reference to another property's values.
78 ((setq name (match-string-no-properties 2 string))
79 (setq elems (delete-dups (append (cdr (assoc name env)) elems))))
80 ;; A literal
81 ((setq name (match-string-no-properties 9 string))
82 (push name elems))
83 ;; We just ignore the rest. I.e. we ignore the structure because
84 ;; it's too difficult to exploit anyway (it would allow us to only
85 ;; complete top/center/bottom after one of left/center/right and
86 ;; vice-versa).
87 (t nil)))
88 elems))
89
90
91(defun css-extract-props-and-vals ()
92 (with-temp-buffer
93 (url-insert-file-contents "http://www.w3.org/TR/CSS21/propidx.html")
94 (goto-char (point-min))
95 (let ((props ()))
96 (while (re-search-forward "#propdef-\\([^\"]+\\)\"><span class=\"propinst-\\1 xref\">'\\1'</span></a>" nil t)
97 (let ((prop (match-string-no-properties 1)))
98 (save-excursion
99 (goto-char (match-end 0))
100 (search-forward "<td>")
101 (let ((vals-string (buffer-substring (point)
102 (progn
103 (re-search-forward "[ \t\n]+|[ \t\n]+<a href=\"cascade.html#value-def-inherit\" class=\"noxref\"><span class=\"value-inst-inherit\">inherit</span></a>")
104 (match-beginning 0)))))
105 ;;
106 (push (cons prop (css-extract-parse-val-grammar vals-string props))
107 props)))))
108 props)))
109
110;; Extraction was done with:
111;; (css-extract-keyword-list
112;; '((pseudo . "^ +\\* :\\([^ \n,]+\\)")
113;; (at . "^ +\\* @\\([^ \n,]+\\)")
114;; (descriptor . "^ +\\* '\\([^ '\n]+\\)' (descriptor)")
115;; (media . "^ +\\* '\\([^ '\n]+\\)' media group")
116;; (property . "^ +\\* '\\([^ '\n]+\\)',")))
117
118(defconst css-pseudo-ids
119 '("active" "after" "before" "first" "first-child" "first-letter" "first-line"
120 "focus" "hover" "lang" "left" "link" "right" "visited")
121 "Identifiers for pseudo-elements and pseudo-classes.")
122
123(defconst css-at-ids
124 '("charset" "font-face" "import" "media" "page")
125 "Identifiers that appear in the form @foo.")
126
127(defconst css-descriptor-ids
128 '("ascent" "baseline" "bbox" "cap-height" "centerline" "definition-src"
129 "descent" "font-family" "font-size" "font-stretch" "font-style"
130 "font-variant" "font-weight" "mathline" "panose-1" "slope" "src" "stemh"
131 "stemv" "topline" "unicode-range" "units-per-em" "widths" "x-height")
132 "Identifiers for font descriptors.")
133
134(defconst css-media-ids
135 '("all" "aural" "bitmap" "continuous" "grid" "paged" "static" "tactile"
136 "visual")
137 "Identifiers for types of media.")
138
139(defconst css-property-ids
140 '("azimuth" "background" "background-attachment" "background-color"
141 "background-image" "background-position" "background-repeat" "block"
142 "border" "border-bottom" "border-bottom-color" "border-bottom-style"
143 "border-bottom-width" "border-collapse" "border-color" "border-left"
144 "border-left-color" "border-left-style" "border-left-width" "border-right"
145 "border-right-color" "border-right-style" "border-right-width"
146 "border-spacing" "border-style" "border-top" "border-top-color"
147 "border-top-style" "border-top-width" "border-width" "bottom"
148 "caption-side" "clear" "clip" "color" "compact" "content"
149 "counter-increment" "counter-reset" "cue" "cue-after" "cue-before"
150 "cursor" "dashed" "direction" "display" "dotted" "double" "elevation"
151 "empty-cells" "float" "font" "font-family" "font-size" "font-size-adjust"
152 "font-stretch" "font-style" "font-variant" "font-weight" "groove" "height"
153 "hidden" "inline" "inline-table" "inset" "left" "letter-spacing"
154 "line-height" "list-item" "list-style" "list-style-image"
155 "list-style-position" "list-style-type" "margin" "margin-bottom"
156 "margin-left" "margin-right" "margin-top" "marker-offset" "marks"
157 "max-height" "max-width" "min-height" "min-width" "orphans" "outline"
158 "outline-color" "outline-style" "outline-width" "outset" "overflow"
159 "padding" "padding-bottom" "padding-left" "padding-right" "padding-top"
160 "page" "page-break-after" "page-break-before" "page-break-inside" "pause"
161 "pause-after" "pause-before" "pitch" "pitch-range" "play-during" "position"
162 "quotes" "richness" "ridge" "right" "run-in" "size" "solid" "speak"
163 "speak-header" "speak-numeral" "speak-punctuation" "speech-rate" "stress"
164 "table" "table-caption" "table-cell" "table-column" "table-column-group"
165 "table-footer-group" "table-header-group" "table-layout" "table-row"
166 "table-row-group" "text-align" "text-decoration" "text-indent"
167 "text-shadow" "text-transform" "top" "unicode-bidi" "vertical-align"
168 "visibility" "voice-family" "volume" "white-space" "widows" "width"
169 "word-spacing" "z-index")
170 "Identifiers for properties.")
171
172(defcustom css-electrick-keys '(?\} ?\;) ;; '()
173 "Self inserting keys which should trigger re-indentation."
174 :type '(repeat character)
175 :options '((?\} ?\;)))
176
177(defvar css-mode-syntax-table
178 (let ((st (make-syntax-table)))
179 ;; C-style comments.
180 (modify-syntax-entry ?/ ". 14" st)
181 (modify-syntax-entry ?* ". 23" st)
182 ;; Strings.
183 (modify-syntax-entry ?\" "\"" st)
184 (modify-syntax-entry ?\' "\"" st)
185 ;; Blocks.
186 (modify-syntax-entry ?\{ "(}" st)
187 (modify-syntax-entry ?\} "){" st)
188 ;; Args in url(...) thingies and other "function calls".
189 (modify-syntax-entry ?\( "()" st)
190 (modify-syntax-entry ?\) ")(" st)
191 ;; To match attributes in selectors.
192 (modify-syntax-entry ?\[ "(]" st)
193 (modify-syntax-entry ?\] ")[" st)
194 ;; Special chars that sometimes come at the beginning of words.
195 (modify-syntax-entry ?@ "'" st)
196 ;; (modify-syntax-entry ?: "'" st)
197 (modify-syntax-entry ?# "'" st)
198 ;; Distinction between words and symbols.
199 (modify-syntax-entry ?- "_" st)
200 st))
201
202(defconst css-escapes-re
203 "\\\\\\(?:[^\000-\037\177]\\|[0-9a-fA-F]+[ \n\t\r\f]?\\)")
204(defconst css-nmchar-re (concat "\\(?:[-[:alnum:]]\\|" css-escapes-re "\\)"))
205(defconst css-nmstart-re (concat "\\(?:[[:alpha:]]\\|" css-escapes-re "\\)"))
206(defconst css-ident-re (concat css-nmstart-re css-nmchar-re "*"))
207(defconst css-name-re (concat css-nmchar-re "+"))
208
209(defface css-selector '((t :inherit font-lock-function-name-face))
210 "Face to use for selectors.")
211(defface css-property '((t :inherit font-lock-variable-name-face))
212 "Face to use for properties.")
213
214(defvar css-font-lock-keywords
215 `(("!\\s-*important" . font-lock-builtin-face)
216 ;; Atrules keywords. IDs not in css-at-ids are valid (ignored).
217 ;; In fact the regexp should probably be
218 ;; (,(concat "\\(@" css-ident-re "\\)\\([ \t\n][^;{]*\\)[;{]")
219 ;; (1 font-lock-builtin-face))
220 ;; Since "An at-rule consists of everything up to and including the next
221 ;; semicolon (;) or the next block, whichever comes first."
222 (,(concat "@" css-ident-re) . font-lock-builtin-face)
223 ;; Selectors.
224 ;; FIXME: attribute selectors don't work well because they may contain
225 ;; strings which have already been highlighted as f-l-string-face and
226 ;; thus prevent this highlighting from being applied (actually now that
227 ;; I use `append' this should work better). But really the part of hte
228 ;; selector between [...] should simply not be highlighted.
229 (,(concat "^\\([ \t]*[^@:{\n][^:{\n]+\\(?::" (regexp-opt css-pseudo-ids t)
230 "\\(?:([^)]+)\\)?[^:{\n]*\\)*\\)\\(?:\n[ \t]*\\)*{")
231 (1 'css-selector append))
232 ;; In the above rule, we allow the open-brace to be on some subsequent
233 ;; line. This will only work if we properly mark the intervening text
234 ;; as being part of a multiline element (and even then, this only
235 ;; ensures proper refontification, but not proper discovery).
236 ("^[ \t]*{" (0 (save-excursion
237 (goto-char (match-beginning 0))
238 (skip-chars-backward " \n\t")
239 (put-text-property (point) (match-end 0)
240 'font-lock-multiline t)
241 ;; No face.
242 nil)))
243 ;; Properties. Again, we don't limit ourselves to css-property-ids.
244 (,(concat "\\(?:[{;]\\|^\\)[ \t]*\\(" css-ident-re "\\)\\s-*:")
245 (1 'css-property))))
246
247(defvar css-font-lock-defaults
248 '(css-font-lock-keywords nil t))
249
250(unless (fboundp 'prog-mode) (defalias 'prog-mode 'fundamental-mode))
251
252;;;###autoload (add-to-list 'auto-mode-alist '("\\.css\\'" . css-mode))
253;;;###autoload
254(define-derived-mode css-mode prog-mode "CSS"
255 "Major mode to edit Cascading Style Sheets."
256 (set (make-local-variable 'font-lock-defaults) css-font-lock-defaults)
257 (set (make-local-variable 'comment-start) "/*")
258 (set (make-local-variable 'comment-start-skip) "/\\*+[ \t]*")
259 (set (make-local-variable 'comment-end) "*/")
260 (set (make-local-variable 'comment-end-skip) "[ \t]*\\*+/")
261 (set (make-local-variable 'forward-sexp-function) 'css-forward-sexp)
262 (set (make-local-variable 'parse-sexp-ignore-comments) t)
263 (set (make-local-variable 'indent-line-function) 'css-indent-line)
264 (set (make-local-variable 'fill-paragraph-function)
265 'css-fill-paragraph)
266 (when css-electrick-keys
267 (let ((fc (make-char-table 'auto-fill-chars)))
268 (set-char-table-parent fc auto-fill-chars)
269 (dolist (c css-electrick-keys)
270 (aset fc c 'indent-according-to-mode))
271 (set (make-local-variable 'auto-fill-chars) fc))))
272
273(defun css-fill-paragraph (&optional justify)
274 (save-excursion
275 (let ((ppss (syntax-ppss))
276 (eol (line-end-position)))
277 (cond
278 ((and (nth 4 ppss)
279 (save-excursion
280 (goto-char (nth 8 ppss))
281 (forward-comment 1)
282 (prog1 (not (bolp))
283 (setq eol (point)))))
284 ;; Filling inside a comment whose comment-end marker is not \n.
285 ;; This code is meant to be generic, so that it works not only for
286 ;; css-mode but for all modes.
287 (save-restriction
288 (narrow-to-region (nth 8 ppss) eol)
289 (comment-normalize-vars)
290 (let ((fill-paragraph-function nil)
291 (paragraph-separate
292 (if (and comment-continue
293 (string-match "[^ \t]" comment-continue))
294 (concat "\\(?:[ \t]*" (regexp-quote comment-continue)
295 "\\)?\\(?:" paragraph-separate "\\)")
296 paragraph-separate))
297 (paragraph-start
298 (if (and comment-continue
299 (string-match "[^ \t]" comment-continue))
300 (concat "\\(?:[ \t]*" (regexp-quote comment-continue)
301 "\\)?\\(?:" paragraph-start "\\)")
302 paragraph-start)))
303 (fill-paragraph justify)
304 ;; Don't try filling again.
305 t)))
306
307 ((and (null (nth 8 ppss))
308 (or (nth 1 ppss)
309 (and (ignore-errors
310 (down-list 1)
311 (when (<= (point) eol)
312 (setq ppss (syntax-ppss)))))))
313 (goto-char (nth 1 ppss))
314 (let ((end (save-excursion
315 (ignore-errors (forward-sexp 1) (copy-marker (point) t)))))
316 (when end
317 (while (re-search-forward "[{;}]" end t)
318 (cond
319 ;; This is a false positive inside a string or comment.
320 ((nth 8 (syntax-ppss)) nil)
321 ((eq (char-before) ?\})
322 (save-excursion
323 (forward-char -1)
324 (skip-chars-backward " \t")
325 (unless (bolp) (newline))))
326 (t
327 (while
328 (progn
329 (setq eol (line-end-position))
330 (and (forward-comment 1)
331 (> (point) eol)
332 ;; A multi-line comment should be on its own line.
333 (save-excursion (forward-comment -1)
334 (when (< (point) eol)
335 (newline)
336 t)))))
337 (if (< (point) eol) (newline)))))
338 (goto-char (nth 1 ppss))
339 (indent-region (line-beginning-position 2) end)
340 ;; Don't use the default filling code.
341 t)))))))
342
343;;; Navigation and indentation.
344
345(defconst css-navigation-syntax-table
346 (let ((st (make-syntax-table css-mode-syntax-table)))
347 (map-char-table (lambda (c v)
348 ;; Turn punctuation (code = 1) into symbol (code = 1).
349 (if (eq (car-safe v) 1)
350 (set-char-table-range st c (cons 3 (cdr v)))))
351 st)
352 st))
353
354(defun css-backward-sexp (n)
355 (let ((forward-sexp-function nil))
356 (if (< n 0) (css-forward-sexp (- n))
357 (while (> n 0)
358 (setq n (1- n))
359 (forward-comment (- (point-max)))
360 (if (not (eq (char-before) ?\;))
361 (backward-sexp 1)
362 (while (progn (backward-sexp 1)
363 (save-excursion
364 (forward-comment (- (point-max)))
365 ;; FIXME: We should also skip punctuation.
366 (not (memq (char-before) '(?\; ?\{)))))))))))
367
368(defun css-forward-sexp (n)
369 (let ((forward-sexp-function nil))
370 (if (< n 0) (css-backward-sexp (- n))
371 (while (> n 0)
372 (setq n (1- n))
373 (forward-comment (point-max))
374 (if (not (eq (char-after) ?\;))
375 (forward-sexp 1)
376 (while (progn (forward-sexp 1)
377 (save-excursion
378 (forward-comment (point-max))
379 ;; FIXME: We should also skip punctuation.
380 (not (memq (char-after) '(?\; ?\})))))))))))
381
382(defun css-indent-calculate-virtual ()
383 (if (or (save-excursion (skip-chars-backward " \t") (bolp))
384 (if (looking-at "\\s(")
385 (save-excursion
386 (forward-char 1) (skip-chars-forward " \t")
387 (not (or (eolp) (looking-at comment-start-skip))))))
388 (current-column)
389 (css-indent-calculate)))
390
391(defcustom css-indent-offset 4
392 "Basic size of one indentation step."
393 :type 'integer)
394
395(defun css-indent-calculate ()
396 (let ((ppss (syntax-ppss))
397 pos)
398 (with-syntax-table css-navigation-syntax-table
399 (save-excursion
400 (cond
401 ;; Inside a string.
402 ((nth 3 ppss) 'noindent)
403 ;; Inside a comment.
404 ((nth 4 ppss)
405 (setq pos (point))
406 (forward-line -1)
407 (skip-chars-forward " \t")
408 (if (>= (nth 8 ppss) (point))
409 (progn
410 (goto-char (nth 8 ppss))
411 (if (eq (char-after pos) ?*)
412 (forward-char 1)
413 (if (not (looking-at comment-start-skip))
414 (error "Internal css-mode error")
415 (goto-char (match-end 0))))
416 (current-column))
417 (if (and (eq (char-after pos) ?*) (eq (char-after) ?*))
418 (current-column)
419 ;; 'noindent
420 (current-column)
421 )))
422 ;; In normal code.
423 (t
424 (or
425 (when (looking-at "\\s)")
426 (forward-char 1)
427 (backward-sexp 1)
428 (css-indent-calculate-virtual))
429 (when (looking-at comment-start-skip)
430 (forward-comment (point-max))
431 (css-indent-calculate))
432 (when (save-excursion (forward-comment (- (point-max)))
433 (setq pos (point))
434 (eq (char-syntax (preceding-char)) ?\())
435 (goto-char (1- pos))
436 (if (not (looking-at "\\s([ \t]*"))
437 (error "Internal css-mode error")
438 (if (or (memq (char-after (match-end 0)) '(?\n nil))
439 (save-excursion (goto-char (match-end 0))
440 (looking-at comment-start-skip)))
441 (+ (css-indent-calculate-virtual) css-indent-offset)
442 (progn (goto-char (match-end 0)) (current-column)))))
443 (progn
444 (css-backward-sexp 1)
445 (if (looking-at "\\s(")
446 (css-indent-calculate)
447 (css-indent-calculate-virtual))))))))))
448
449
450(defun css-indent-line ()
451 "Indent current line according to CSS indentation rules."
452 (interactive)
453 (let* ((savep (point))
454 (forward-sexp-function nil)
455 (indent (condition-case nil
456 (save-excursion
457 (forward-line 0)
458 (skip-chars-forward " \t")
459 (if (>= (point) savep) (setq savep nil))
460 (css-indent-calculate))
461 (error nil))))
462 (if (not (numberp indent)) 'noindent
463 (if savep
464 (save-excursion (indent-line-to indent))
465 (indent-line-to indent)))))
466
467(provide 'css-mode)
468;; arch-tag: b4d8b8e2-b130-4e74-b3aa-cd8f1ab659d0
469;;; css-mode.el ends here
diff --git a/lisp/textmodes/org-publish.el b/lisp/textmodes/org-publish.el
new file mode 100644
index 00000000000..74cd7096935
--- /dev/null
+++ b/lisp/textmodes/org-publish.el
@@ -0,0 +1,603 @@
1;;; org-publish.el --- publish related org-mode files as a website
2
3;; Copyright (C) 2006, 2007 Free Software Foundation, Inc.
4
5;; Author: David O'Toole <dto@gnu.org>
6;; Keywords: hypermedia, outlines
7;; Version: 1.80
8
9;; $Id: org-publish.el,v 1.2 2007/06/07 02:04:17 miles Exp $
10
11;; This file is free software; you can redistribute it and/or modify
12;; it under the terms of the GNU General Public License as published by
13;; the Free Software Foundation; either version 2, or (at your option)
14;; any later version.
15
16;; This file is distributed in the hope that it will be useful,
17;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;; GNU General Public License for more details.
20
21;; You should have received a copy of the GNU General Public License
22;; along with GNU Emacs; see the file COPYING. If not, write to
23;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
24;; Boston, MA 02110-1301, USA.
25
26;; This file is part of GNU Emacs.
27
28;;; Commentary:
29
30;; Requires at least version 4.27 of org.el
31;;
32;; The official org-mode website:
33;; http://staff.science.uva.nl/~dominik/Tools/org/
34;;
35;; Home page for org-publish.el:
36;; http://dto.freeshell.org/notebook/OrgMode.html
37
38;; This program extends the HTML publishing support of Emacs Org-mode
39;; to allow configurable publishing of related sets of files as a
40;; complete website.
41;;
42;; org-publish.el can do the following:
43;;
44;; + Publish all one's org-files to html
45;; + Upload html, images, attachments and other files to a web server
46;; + Exclude selected private pages from publishing
47;; + Publish a clickable index of pages
48;; + Manage local timestamps, for publishing only changed files
49;; + Accept plugin functions to extend range of publishable content
50;;
51;; Special thanks to the org-mode maintainer Carsten Dominik for his
52;; ideas, enthusiasm, and cooperation.
53
54;;; Installation:
55
56;; Put org-publish.el in your load path, byte-compile it, and then add
57;; the following lines to your emacs initialization file:
58
59;; (autoload 'org-publish "org-publish" nil t)
60;; (autoload 'org-publish "org-publish-all" nil t)
61;; (autoload 'org-publish "org-publish-current-file" nil t)
62;; (autoload 'org-publish "org-publish-current-project" nil t)
63
64;; NOTE: When org-publish.el is included with org.el, those forms are
65;; already in the file org-install.el, and hence don't need to be put
66;; in your emacs initialization file in this case.
67
68;;; Usage:
69;;
70;; The program's main configuration variable is
71;; `org-publish-project-alist'. See below for example configurations
72;; with commentary.
73
74;; The main interactive functions are:
75;;
76;; M-x org-publish
77;; M-x org-publish-all
78;; M-x org-publish-current-file
79;; M-x org-publish-current-project
80
81;;;; Simple example configuration:
82
83;; (setq org-publish-project-alist
84;; (list
85;; '("org" . (:base-directory "~/org/"
86;; :base-extension "org"
87;; :publishing-directory "~/public_html"
88;; :with-section-numbers nil
89;; :table-of-contents nil
90;; :style "<link rel=stylesheet href=\"../other/mystyle.css\" type=\"text/css\">")))
91
92;;;; More complex example configuration:
93
94;; Imagine your *.org files are kept in ~/org, your images in
95;; ~/images, and stylesheets in ~/other. Now imagine you want to
96;; publish the files through an ssh connection to a remote host, via
97;; Tramp-mode. To maintain relative links from *.org files to /images
98;; and /other, we should replicate the same directory structure in
99;; your web server account's designated html root (in this case,
100;; assumed to be ~/html)
101
102;; Once you've done created the proper directories, you can adapt the
103;; following example configuration to your specific paths, run M-x
104;; org-publish-all, and it should publish the files to the correct
105;; directories on the web server, transforming the *.org files into
106;; HTML, and leaving other files alone.
107
108;; (setq org-publish-project-alist
109;; (list
110;; '("orgfiles" :base-directory "~/org/"
111;; :base-extension "org"
112;; :publishing-directory "/ssh:user@host:~/html/notebook/"
113;; :publishing-function org-publish-org-to-html
114;; :exclude "PrivatePage.org" ;; regexp
115;; :headline-levels 3
116;; :with-section-numbers nil
117;; :table-of-contents nil
118;; :style "<link rel=stylesheet href=\"../other/mystyle.css\" type=\"text/css\">"
119;; :auto-preamble t
120;; :auto-postamble nil)
121;;
122;; ("images" :base-directory "~/images/"
123;; :base-extension "jpg\\|gif\\|png"
124;; :publishing-directory "/ssh:user@host:~/html/images/"
125;; :publishing-function org-publish-attachment)
126;;
127;; ("other" :base-directory "~/other/"
128;; :base-extension "css"
129;; :publishing-directory "/ssh:user@host:~/html/other/"
130;; :publishing-function org-publish-attachment)
131;; ("website" :components ("orgfiles" "images" "other"))))
132
133;; For more information, see the documentation for the variable
134;; `org-publish-project-alist'.
135
136;; Of course, you don't have to publish to remote directories from
137;; within emacs. You can always just publish to local folders, and
138;; then use the synchronization/upload tool of your choice.
139
140
141;;; List of user-visible changes since version 1.27
142
143;; 1.78: Allow list-valued :publishing-function
144;; 1.77: Added :preparation-function, this allows you to use GNU Make etc.
145;; 1.65: Remove old "composite projects". They're redundant.
146;; 1.64: Allow meta-projects with :components
147;; 1.57: Timestamps flag is now called "org-publish-use-timestamps-flag"
148;; 1.52: Properly set default for :index-filename
149;; 1.48: Composite projects allowed.
150;; :include keyword allowed.
151;; 1.43: Index no longer includes itself in the index.
152;; 1.42: Fix "function definition is void" error
153;; when :publishing-function not set in org-publish-current-file.
154;; 1.41: Fixed bug where index isn't published on first try.
155;; 1.37: Added interactive function "org-publish". Prompts for particular
156;; project name to publish.
157;; 1.34: Added force-publish option to all interactive functions.
158;; 1.32: Fixed "index.org has changed on disk" error during index publishing.
159;; 1.30: Fixed startup error caused by (require 'em-unix)
160
161;;; Code:
162
163
164(eval-when-compile
165 (require 'cl))
166
167
168(defgroup org-publish nil
169 "Options for publishing a set of Org-mode and related files."
170 :tag "Org Publishing"
171 :group 'org)
172
173
174(defcustom org-publish-project-alist nil
175 "Association list to control publishing behavior.
176Each element of the alist is a publishing 'project.' The CAR of
177each element is a string, uniquely identifying the project. The
178CDR of each element is in one of the following forms:
179
180 (:property value :property value ... )
181
182OR,
183
184 (:components (\"project-1\" \"project-2\" ...))
185
186When the CDR of an element of org-publish-project-alist is in
187this second form, the elements of the list after :components are
188taken to be components of the project, which group together files
189requiring different publishing options. When you publish such a
190project with M-x org-publish, the components all publish.
191
192When a property is given a value in org-publish-project-alist, its
193setting overrides the value of the corresponding user variable
194 (if any) during publishing. However, options set within a file
195override everything.
196
197Most properties are optional, but some should always be set:
198
199 :base-directory Directory containing publishing source files
200 :base-extension Extension (without the dot!) of source files.
201 This can be a regular expression.
202 :publishing-directory Directory (possibly remote) where output
203 files will be published
204
205The :exclude property may be used to prevent certain files from
206being published. Its value may be a string or regexp matching
207file names you don't want to be published.
208
209The :include property may be used to include extra files. Its
210value may be a list of filenames to include. The filenames are
211considered relative to the publishing directory.
212
213When both :include and :exclude properties are given values, the
214exclusion step happens first.
215
216One special property controls which back-end function to use for
217publishing files in the project. This can be used to extend the
218set of file types publishable by org-publish, as well as the set
219of output formats.
220
221 :publishing-function Function to publish file. The default is
222 org-publish-org-to-html, but other
223 values are possible. May also be a
224 list of functions, in which case
225 each function in the list is invoked
226 in turn.
227
228Another property allows you to insert code that prepares a
229project for publishing. For example, you could call GNU Make on a
230certain makefile, to ensure published files are built up to date.
231
232 :preparation-function Function to be called before publishing
233 this project.
234
235Some properties control details of the Org publishing process,
236and are equivalent to the corresponding user variables listed in
237the right column. See the documentation for those variables to
238learn more about their use and default values.
239
240 :language org-export-default-language
241 :headline-levels org-export-headline-levels
242 :section-numbers org-export-with-section-numbers
243 :table-of-contents org-export-with-toc
244 :emphasize org-export-with-emphasize
245 :sub-superscript org-export-with-sub-superscripts
246 :TeX-macros org-export-with-TeX-macros
247 :fixed-width org-export-with-fixed-width
248 :tables org-export-with-tables
249 :table-auto-headline org-export-highlight-first-table-line
250 :style org-export-html-style
251 :convert-org-links org-export-html-link-org-files-as-html
252 :inline-images org-export-html-inline-images
253 :expand-quoted-html org-export-html-expand
254 :timestamp org-export-html-with-timestamp
255 :publishing-directory org-export-publishing-directory
256 :preamble org-export-html-preamble
257 :postamble org-export-html-postamble
258 :auto-preamble org-export-html-auto-preamble
259 :auto-postamble org-export-html-auto-postamble
260 :author user-full-name
261 :email user-mail-address
262
263The following properties may be used to control publishing of an
264index of files or summary page for a given project.
265
266 :auto-index Whether to publish an index during
267 org-publish-current-project or org-publish-all.
268 :index-filename Filename for output of index. Defaults
269 to 'index.org' (which becomes 'index.html')
270 :index-title Title of index page. Defaults to name of file.
271 :index-function Plugin function to use for generation of index.
272 Defaults to 'org-publish-org-index', which
273 generates a plain list of links to all files
274 in the project.
275"
276 :group 'org-publish
277 :type 'alist)
278
279
280(defcustom org-publish-use-timestamps-flag t
281 "When non-nil, use timestamp checking to publish only changed files.
282When nil, do no timestamp checking and always publish all
283files."
284 :group 'org-publish
285 :type 'boolean)
286
287
288(defcustom org-publish-timestamp-directory "~/.org-timestamps/"
289 "Name of directory in which to store publishing timestamps."
290 :group 'org-publish
291 :type 'string)
292
293
294;;;; Timestamp-related functions
295
296
297(defun org-publish-timestamp-filename (filename)
298 "Return path to timestamp file for filename FILENAME."
299 (while (string-match "~\\|/" filename)
300 (setq filename (replace-match "_" nil t filename)))
301 (concat org-publish-timestamp-directory filename ".timestamp"))
302
303
304(defun org-publish-needed-p (filename)
305 "Check whether file should be published.
306If org-publish-use-timestamps-flag is set to nil, this function always
307returns t. Otherwise, check the timestamps folder to determine
308whether file should be published."
309 (if org-publish-use-timestamps-flag
310 (progn
311 ;;
312 ;; create folder if needed
313 (if (not (file-exists-p org-publish-timestamp-directory))
314 (make-directory org-publish-timestamp-directory)
315 (if (not (file-directory-p org-publish-timestamp-directory))
316 (error "org-publish-timestamp-directory must be a directory.")))
317 ;;
318 ;; check timestamp. ok if timestamp file doesn't exist
319 (let* ((timestamp (org-publish-timestamp-filename filename))
320 (rtn (file-newer-than-file-p filename timestamp)))
321 (if rtn
322 ;; handle new timestamps
323 (if (not (file-exists-p timestamp))
324 ;; create file
325 (with-temp-buffer
326 (make-directory (file-name-directory timestamp) :parents)
327 (write-file timestamp)
328 (kill-buffer (current-buffer)))))
329 rtn))
330 t))
331
332
333(defun org-publish-update-timestamp (filename)
334 "Update publishing timestamp for file FILENAME."
335 (let ((timestamp (org-publish-timestamp-filename filename)))
336 ;; Emacs 21 doesn't have set-file-times
337 (if (fboundp 'set-file-times)
338 (set-file-times timestamp)
339 (call-process "touch" nil 0 nil timestamp))))
340
341
342;;;; A hash mapping files to project names
343
344
345(defvar org-publish-files (make-hash-table :test 'equal) "Hash
346table mapping file names to project names.")
347
348
349;;;; Checking filenames against this hash
350
351
352(defun org-publish-validate-link (link &optional directory)
353 (gethash (file-truename (expand-file-name link directory))
354 org-publish-files))
355
356
357;;;; Getting project information out of org-publish-project-alist
358
359
360(defun org-publish-get-plists (&optional project-name)
361 "Return a list of property lists for project PROJECT-NAME.
362When argument is not given, return all property lists for all projects."
363 (let ((alist (if project-name
364 (list (assoc project-name org-publish-project-alist))
365 org-publish-project-alist))
366 (project nil)
367 (plists nil)
368 (single nil)
369 (components nil))
370
371 ;;
372 ;;
373 (while (setq project (pop alist))
374 ;; what kind of project is it?
375 (if (setq components (plist-get (cdr project) :components))
376 ;; meta project. annotate each plist with name of enclosing project
377 (setq single
378 (apply 'append
379 (mapcar 'org-publish-get-plists components)))
380 ;; normal project
381 (setq single (list (cdr project))))
382 ;;
383 (setq plists (append plists single))
384 (dolist (p single)
385 (let* ((exclude (plist-get p :exclude))
386 (files (org-publish-get-base-files p exclude)))
387 (dolist (f files)
388 (puthash (file-truename f) (car project) org-publish-files)))))
389 plists))
390
391
392
393(defun org-publish-get-base-files (plist &optional exclude-regexp)
394 "Return a list of all files in project defined by PLIST.
395If EXCLUDE-REGEXP is set, this will be used to filter out
396matching filenames."
397 (let* ((dir (file-name-as-directory (plist-get plist :base-directory)))
398 (include-list (plist-get plist :include))
399 (extension (or (plist-get plist :base-extension) "org"))
400 (regexp (concat "^[^\\.].*\\.\\(" extension "\\)$"))
401 (allfiles (directory-files dir t regexp)))
402 ;;
403 ;; exclude files
404 (setq allfiles
405 (if (not exclude-regexp)
406 allfiles
407 (delq nil
408 (mapcar (lambda (x)
409 (if (string-match exclude-regexp x) nil x))
410 allfiles))))
411 ;;
412 ;; include extra files
413 (let ((inc nil))
414 (while (setq inc (pop include-list))
415 (setq allfiles (cons (expand-file-name inc dir) allfiles))))
416
417 allfiles))
418
419
420(defun org-publish-get-project-from-filename (filename)
421 "Figure out which project a given FILENAME belongs to, if any.
422Filename should contain full path. Returns name of project, or
423nil if not found."
424 (org-publish-get-plists)
425 (gethash (file-truename filename) org-publish-files))
426
427
428(defun org-publish-get-plist-from-filename (filename)
429 "Return publishing configuration plist for file FILENAME."
430 (let ((found nil))
431 (mapcar
432 (lambda (plist)
433 (let ((files (org-publish-get-base-files plist)))
434 (if (member (expand-file-name filename) files)
435 (setq found plist))))
436 (org-publish-get-plists))
437 found))
438
439
440
441;;;; Pluggable publishing back-end functions
442
443
444(defun org-publish-org-to-html (plist filename)
445 "Publish an org file to HTML.
446PLIST is the property list for the given project.
447FILENAME is the filename of the org file to be published."
448 (require 'org)
449 (let* ((arg (plist-get plist :headline-levels)))
450 (progn
451 (find-file filename)
452 (org-export-as-html arg nil plist)
453 ;; get rid of HTML buffer
454 (kill-buffer (current-buffer)))))
455
456
457(defun org-publish-attachment (plist filename)
458 "Publish a file with no transformation of any kind.
459PLIST is the property list for the given project.
460FILENAME is the filename of the file to be published."
461 ;; make sure eshell/cp code is loaded
462 (require 'eshell)
463 (require 'esh-maint)
464 (require 'em-unix)
465 (let ((destination (file-name-as-directory (plist-get plist :publishing-directory))))
466 (eshell/cp filename destination)))
467
468
469;;;; Publishing files, sets of files, and indices
470
471
472(defun org-publish-file (filename)
473 "Publish file FILENAME."
474 (let* ((project-name (org-publish-get-project-from-filename filename))
475 (plist (org-publish-get-plist-from-filename filename))
476 (publishing-function (or (plist-get plist :publishing-function) 'org-publish-org-to-html)))
477 (if (not project-name)
478 (error (format "File %s is not part of any known project." filename)))
479 (when (org-publish-needed-p filename)
480 (if (listp publishing-function)
481 ;; allow chain of publishing functions
482 (mapc (lambda (f)
483 (funcall f plist filename))
484 publishing-function)
485 (funcall publishing-function plist filename))
486 (org-publish-update-timestamp filename))))
487
488
489(defun org-publish-plist (plist)
490 "Publish all files in set defined by PLIST.
491 If :auto-index is set, publish the index too."
492 (let* ((exclude-regexp (plist-get plist :exclude))
493 (publishing-function (or (plist-get plist :publishing-function) 'org-publish-org-to-html))
494 (index-p (plist-get plist :auto-index))
495 (index-filename (or (plist-get plist :index-filename) "index.org"))
496 (index-function (or (plist-get plist :index-function) 'org-publish-org-index))
497 (preparation-function (plist-get plist :preparation-function))
498 (f nil))
499 ;;
500 (when preparation-function
501 (funcall preparation-function))
502 (if index-p
503 (funcall index-function plist index-filename))
504 (let ((files (org-publish-get-base-files plist exclude-regexp)))
505 (while (setq f (pop files))
506 ;; check timestamps
507 (when (org-publish-needed-p f)
508 (if (listp publishing-function)
509 ;; allow chain of publishing functions
510 (mapc (lambda (func)
511 (funcall func plist f))
512 publishing-function)
513 (funcall publishing-function plist f))
514 (org-publish-update-timestamp f))))))
515
516
517(defun org-publish-org-index (plist &optional index-filename)
518 "Create an index of pages in set defined by PLIST.
519Optionally set the filename of the index with INDEX-FILENAME;
520default is 'index.org'."
521 (let* ((dir (file-name-as-directory (plist-get plist :base-directory)))
522 (exclude-regexp (plist-get plist :exclude))
523 (files (org-publish-get-base-files plist exclude-regexp))
524 (index-filename (concat dir (or index-filename "index.org")))
525 (index-buffer (find-buffer-visiting index-filename))
526 (ifn (file-name-nondirectory index-filename))
527 (f nil))
528 ;;
529 ;; if buffer is already open, kill it to prevent error message
530 (if index-buffer
531 (kill-buffer index-buffer))
532 (with-temp-buffer
533 (while (setq f (pop files))
534 (let ((fn (file-name-nondirectory f)))
535 (unless (string= fn ifn) ;; index shouldn't index itself
536 (insert (concat " + [[file:" fn "]["
537 (file-name-sans-extension fn)
538 "]]\n")))))
539 (write-file index-filename)
540 (kill-buffer (current-buffer)))))
541
542
543;(defun org-publish-meta-index (meta-plist &optional index-filename)
544; "Create an index for a metaproject."
545; (let* ((plists (
546
547
548;;;; Interactive publishing functions
549
550
551;;;###autoload
552(defun org-publish (project-name &optional force)
553 "Publish the project PROJECT-NAME."
554 (interactive (list (completing-read "Project name: " org-publish-project-alist
555 nil t)
556 current-prefix-arg))
557 (save-window-excursion
558 (let ((org-publish-use-timestamps-flag (if force nil t))
559 (plists (org-publish-get-plists project-name)))
560 (mapcar 'org-publish-plist plists))))
561
562
563;;;###autoload
564(defun org-publish-current-project (&optional force)
565 "Publish the project associated with the current file.
566With prefix argument, force publishing all files in project."
567 (interactive "P")
568 (save-window-excursion
569 (let* ((project-name (org-publish-get-project-from-filename (buffer-file-name)))
570 (org-publish-use-timestamps-flag (if force nil t)))
571 (if (not project-name)
572 (error (format "File %s is not part of any known project." (buffer-file-name))))
573 (org-publish project-name))))
574
575
576;;;###autoload
577(defun org-publish-current-file (&optional force)
578 "Publish the current file.
579With prefix argument, force publish the file."
580 (interactive "P")
581 (save-window-excursion
582 (let ((org-publish-use-timestamps-flag
583 (if force nil t)))
584 (org-publish-file (buffer-file-name)))))
585
586
587;;;###autoload
588(defun org-publish-all (&optional force)
589 "Publish all projects.
590With prefix argument, force publish all files."
591 (interactive "P")
592 (save-window-excursion
593 (let ((org-publish-use-timestamps-flag
594 (if force nil t))
595 (plists (org-publish-get-plists)))
596 (mapcar 'org-publish-plist plists))))
597
598
599
600(provide 'org-publish)
601
602;; arch-tag: 72807f3c-8af0-4a6b-8dca-c3376eb25adb
603;;; org-publish.el ends here
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el
index 8ee12638dee..d669ebe586c 100644
--- a/lisp/textmodes/org.el
+++ b/lisp/textmodes/org.el
@@ -1,11 +1,11 @@
1;;;; org.el --- Outline-based notes management and organize 1;;; org.el --- Outline-based notes management and organizer
2;; Carstens outline-mode for keeping track of everything. 2;; Carstens outline-mode for keeping track of everything.
3;; Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc. 3;; Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
4;; 4;;
5;; Author: Carsten Dominik <dominik at science dot uva dot nl> 5;; Author: Carsten Dominik <dominik at science dot uva dot nl>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ 7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
8;; Version: 4.67d 8;; Version: 4.77
9;; 9;;
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
@@ -83,7 +83,7 @@
83 83
84;;; Version 84;;; Version
85 85
86(defvar org-version "4.67c" 86(defconst org-version "4.77"
87 "The version number of the file org.el.") 87 "The version number of the file org.el.")
88(defun org-version () 88(defun org-version ()
89 (interactive) 89 (interactive)
@@ -153,21 +153,13 @@ has been set."
153 :group 'org-startup 153 :group 'org-startup
154 :type 'boolean) 154 :type 'boolean)
155 155
156(defcustom org-CUA-compatible nil 156(defcustom org-replace-disputed-keys nil
157 "Non-nil means use alternative key bindings for S-<cursor movement>. 157 "Non-nil means use alternative key bindings for some keys.
158Org-mode used S-<cursor movement> for changing timestamps and priorities. 158Org-mode uses S-<cursor> keys for changing timestamps and priorities.
159S-<cursor movement> is also used for example by `CUA-mode' to select text. 159These keys are also used by other packages like `CUA-mode' or `windmove.el'.
160If you want to use Org-mode together with `CUA-mode', Org-mode needs to use 160If you want to use Org-mode together with one of these other modes,
161alternative bindings. Setting this variable to t will replace the following 161or more generally if you would like to move some Org-mode commands to
162keys both in Org-mode and in the Org-agenda buffer. 162other keys, set this variable and configure the keys with the variable
163
164S-RET -> C-S-RET
165S-up -> M-p
166S-down -> M-n
167S-left -> M--
168S-right -> M-+
169
170If you do not like the alternative keys, take a look at the variable
171`org-disputed-keys'. 163`org-disputed-keys'.
172 164
173This option is only relevant at load-time of Org-mode, and must be set 165This option is only relevant at load-time of Org-mode, and must be set
@@ -176,21 +168,47 @@ become effective."
176 :group 'org-startup 168 :group 'org-startup
177 :type 'boolean) 169 :type 'boolean)
178 170
179(defvar org-disputed-keys 171(if (fboundp 'defvaralias)
180 '((S-up [(shift up)] [(meta ?p)]) 172 (defvaralias 'org-CUA-compatible 'org-replace-disputed-keys))
181 (S-down [(shift down)] [(meta ?n)]) 173
182 (S-left [(shift left)] [(meta ?-)]) 174(defcustom org-disputed-keys
183 (S-right [(shift right)] [(meta ?+)]) 175 '(([(shift up)] . [(meta p)])
184 (S-return [(shift return)] [(control shift return)])) 176 ([(shift down)] . [(meta n)])
177 ([(shift left)] . [(meta -)])
178 ([(shift right)] . [(meta +)])
179 ([(control shift right)] . [(meta shift +)])
180 ([(control shift left)] . [(meta shift -)]))
185 "Keys for which Org-mode and other modes compete. 181 "Keys for which Org-mode and other modes compete.
186This is an alist, cars are symbols for lookup, 1st element is the default key, 182This is an alist, cars are the default keys, second element specifies
187second element will be used when `org-CUA-compatible' is t.") 183the alternative to use when `org-replace-disputed-keys' is t.
184
185Keys can be specified in any syntax supported by `define-key'.
186The value of this option takes effect only at Org-mode's startup,
187therefore you'll have to restart Emacs to apply it after changing."
188 :group 'org-startup
189 :type 'alist)
188 190
189(defun org-key (key) 191(defun org-key (key)
190 "Select a key according to `org-CUA-compatible'." 192 "Select key according to `org-replace-disputed-keys' and `org-disputed-keys'.
191 (nth (if org-CUA-compatible 2 1) 193Or return the original if not disputed."
192 (or (assq key org-disputed-keys) 194 (if org-replace-disputed-keys
193 (error "Invalid Key %s in `org-key'" key)))) 195 (let* ((nkey (key-description key))
196 (x (org-find-if (lambda (x)
197 (equal (key-description (car x)) nkey))
198 org-disputed-keys)))
199 (if x (cdr x) key))
200 key))
201
202(defun org-find-if (predicate seq)
203 (catch 'exit
204 (while seq
205 (if (funcall predicate (car seq))
206 (throw 'exit (car seq))
207 (pop seq)))))
208
209(defun org-defkey (keymap key def)
210 "Define a key, possibly translated, as returned by `org-key'."
211 (define-key keymap (org-key key) def))
194 212
195(defcustom org-ellipsis nil 213(defcustom org-ellipsis nil
196 "The ellipsis to use in the Org-mode outline. 214 "The ellipsis to use in the Org-mode outline.
@@ -255,7 +273,9 @@ An entry can be toggled between QUOTE and normal with
255 :group 'org-keywords 273 :group 'org-keywords
256 :type 'string) 274 :type 'string)
257 275
258(defvar org-repeat-re "\\<REPEAT(\\([-+ 0-9dwmy]+\\))" 276(defconst org-repeat-re
277 (concat "\\(?:\\<\\(?:" org-scheduled-string "\\|" org-deadline-string "\\)"
278 " +<[0-9]\\{4\\}-[0-9][0-9]-[0-9][0-9] [^>\n]*\\)\\(\\+[0-9]+[dwmy]\\)")
259 "Regular expression for specifying repeated events. 279 "Regular expression for specifying repeated events.
260After a match, group 1 contains the repeat expression.") 280After a match, group 1 contains the repeat expression.")
261 281
@@ -304,7 +324,7 @@ contexts. Valid contexts are
304 (const default)) 324 (const default))
305 (boolean))))) 325 (boolean)))))
306 326
307(defcustom org-show-following-heading '((default . t)) 327(defcustom org-show-following-heading '((default . nil))
308 "Non-nil means, show following heading when revealing a location. 328 "Non-nil means, show following heading when revealing a location.
309Org-mode often shows locations in an org-mode file which might have 329Org-mode often shows locations in an org-mode file which might have
310been invisible before. When this is set, the heading following the 330been invisible before. When this is set, the heading following the
@@ -386,6 +406,7 @@ nil Never
386white Only in completely white lines 406white Only in completely white lines
387whitestart Only at the beginning of lines, before the first non-white char. 407whitestart Only at the beginning of lines, before the first non-white char.
388t Everywhere except in headlines 408t Everywhere except in headlines
409exc-hl-bol Everywhere except at the start of a headline
389If TAB is used in a place where it does not emulate TAB, the current subtree 410If TAB is used in a place where it does not emulate TAB, the current subtree
390visibility is cycled." 411visibility is cycled."
391 :group 'org-cycle 412 :group 'org-cycle
@@ -393,9 +414,25 @@ visibility is cycled."
393 (const :tag "Only in completely white lines" white) 414 (const :tag "Only in completely white lines" white)
394 (const :tag "Before first char in a line" whitestart) 415 (const :tag "Before first char in a line" whitestart)
395 (const :tag "Everywhere except in headlines" t) 416 (const :tag "Everywhere except in headlines" t)
417 (const :tag "Everywhere except at bol in headlines" exc-hl-bol)
396 )) 418 ))
397 419
420(defcustom org-cycle-separator-lines 2
421 "Number of empty lines needed to keep an empty line between collapsed trees.
422If you leave an empty line between the end of a subtree and the following
423headline, this empty line is hidden when the subtree is folded.
424Org-mode will leave (exactly) one empty line visible if the number of
425empty lines is equal or larger to the number given in this variable.
426So the default 2 means, at least 2 empty lines after the end of a subtree
427are needed to produce free space between a collapsed subtree and the
428following headline.
429
430Special case: when 0, never leave empty lines in collapsed view."
431 :group 'org-cycle
432 :type 'integer)
433
398(defcustom org-cycle-hook '(org-cycle-hide-archived-subtrees 434(defcustom org-cycle-hook '(org-cycle-hide-archived-subtrees
435 org-cycle-show-empty-lines
399 org-optimize-window-after-visibility-change) 436 org-optimize-window-after-visibility-change)
400 "Hook that is run after `org-cycle' has changed the buffer visibility. 437 "Hook that is run after `org-cycle' has changed the buffer visibility.
401The function(s) in this hook must accept a single argument which indicates 438The function(s) in this hook must accept a single argument which indicates
@@ -406,12 +443,20 @@ the values `folded', `children', or `subtree'."
406 :group 'org-cycle 443 :group 'org-cycle
407 :type 'hook) 444 :type 'hook)
408 445
409
410(defgroup org-edit-structure nil 446(defgroup org-edit-structure nil
411 "Options concerning structure editing in Org-mode." 447 "Options concerning structure editing in Org-mode."
412 :tag "Org Edit Structure" 448 :tag "Org Edit Structure"
413 :group 'org-structure) 449 :group 'org-structure)
414 450
451(defcustom org-special-ctrl-a nil
452 "Non-nil means `C-a' behaves specially in headlines.
453When set, `C-a' will bring back the cursor to the beginning of the
454headline text, i.e. after the stars and after a possible TODO keyword.
455When the cursor is already at that position, another `C-a' will bring
456it to the beginning of the line."
457 :group 'org-edit-structure
458 :type 'boolean)
459
415(defcustom org-odd-levels-only nil 460(defcustom org-odd-levels-only nil
416 "Non-nil means, skip even levels and only use odd levels for the outline. 461 "Non-nil means, skip even levels and only use odd levels for the outline.
417This has the effect that two stars are being added/taken away in 462This has the effect that two stars are being added/taken away in
@@ -783,6 +828,18 @@ calls `table-recognize-table'."
783 :tag "Org Table Calculation" 828 :tag "Org Table Calculation"
784 :group 'org-table) 829 :group 'org-table)
785 830
831(defcustom org-table-use-standard-references t
832 "Should org-mode work with table refrences like B3 instead of @3$2?
833Possible values are:
834nil never use them
835from accept as input, do not present for editing
836t: accept as input and present for editing"
837 :group 'org-table-calculation
838 :type '(choice
839 (const :tag "Never, don't even check unser input for them" nil)
840 (const :tag "Always, both as user input, and when editing" t)
841 (const :tag "Convert user input, don't offer during editing" 'from)))
842
786(defcustom org-table-copy-increment t 843(defcustom org-table-copy-increment t
787 "Non-nil means, increment when copying current field with \\[org-table-copy-down]." 844 "Non-nil means, increment when copying current field with \\[org-table-copy-down]."
788 :group 'org-table-calculation 845 :group 'org-table-calculation
@@ -815,9 +872,6 @@ the command \\[org-table-eval-formula]."
815 :group 'org-table-calculation 872 :group 'org-table-calculation
816 :type 'boolean) 873 :type 'boolean)
817 874
818;; FIXME this is also a variable that makes Org-mode files non-portable
819;; Maybe I should have a #+ options for constants?
820;; How about the SI/cgs issue?
821(defcustom org-table-formula-use-constants t 875(defcustom org-table-formula-use-constants t
822 "Non-nil means, interpret constants in formulas in tables. 876 "Non-nil means, interpret constants in formulas in tables.
823A constant looks like `$c' or `$Grav' and will be replaced before evaluation 877A constant looks like `$c' or `$Grav' and will be replaced before evaluation
@@ -826,6 +880,8 @@ from the `constants.el' package."
826 :group 'org-table-calculation 880 :group 'org-table-calculation
827 :type 'boolean) 881 :type 'boolean)
828 882
883;; FIXME this is also a variable that makes Org-mode files non-portable
884;; Maybe I should have a #+ options for constants?
829(defcustom org-table-formula-constants nil 885(defcustom org-table-formula-constants nil
830 "Alist with constant names and values, for use in table formulas. 886 "Alist with constant names and values, for use in table formulas.
831The car of each element is a name of a constant, without the `$' before it. 887The car of each element is a name of a constant, without the `$' before it.
@@ -852,7 +908,7 @@ Automatically means, when TAB or RET or C-c C-c are pressed in the line."
852 :group 'org) 908 :group 'org)
853 909
854(defvar org-link-abbrev-alist-local nil 910(defvar org-link-abbrev-alist-local nil
855 "buffer-local version of `org-link-abbrev-alist', which see. 911 "Buffer-local version of `org-link-abbrev-alist', which see.
856The value of this is taken from the #+LINK lines.") 912The value of this is taken from the #+LINK lines.")
857(make-variable-buffer-local 'org-link-abbrev-alist-local) 913(make-variable-buffer-local 'org-link-abbrev-alist-local)
858 914
@@ -1318,30 +1374,64 @@ When nil, new notes will be filed to the end of a file or entry."
1318 :tag "Org Progress" 1374 :tag "Org Progress"
1319 :group 'org-time) 1375 :group 'org-time)
1320 1376
1321(defcustom org-todo-keywords '("TODO" "DONE") 1377(defcustom org-todo-keywords '((sequence "TODO" "DONE"))
1322 "List of TODO entry keywords. 1378 "List of TODO entry keyword sequences and their interpretation.
1323\\<org-mode-map>By default, this is '(\"TODO\" \"DONE\"). The last entry in the list is 1379\\<org-mode-map>This is a list of sequences.
1324considered to mean that the entry is \"done\". All the other mean that 1380
1325action is required, and will make the entry show up in todo lists, diaries 1381Each sequence starts with a symbol, either `sequence' or `type',
1326etc. 1382indicating if the keywords should be interpreted as a sequence of
1327The command \\[org-todo] cycles an entry through these states, and an 1383action steps, or as different types of TODO items. The first
1384keywords are states requiring action - these states will select a headline
1385for inclusion into the global TODO list Org-mode produces. If one of
1386the \"keywords\" is the vertical bat \"|\" the remaining keywords
1387signify that no further action is necessary. If \"|\" is not found,
1388the last keyword is treated as the only DONE state of the sequence.
1389
1390The command \\[org-todo] cycles an entry through these states, and one
1328additional state where no keyword is present. For details about this 1391additional state where no keyword is present. For details about this
1329cycling, see also the variable `org-todo-interpretation' 1392cycling, see the manual.
1330Changes become only effective after restarting Emacs." 1393
1394TODO keywords and interpretation can also be set on a per-file basis with
1395the special #+SEQ_TODO and #+TYP_TODO lines.
1396
1397For backward compatibility, this variable may also be just a list
1398of keywords - in this case the interptetation (sequence or type) will be
1399taken from the (otherwise obsolete) variable `org-todo-interpretation'."
1331 :group 'org-todo 1400 :group 'org-todo
1332 :group 'org-keywords 1401 :group 'org-keywords
1333 :type '(repeat (string :tag "Keyword"))) 1402 :type '(choice
1403 (repeat :tag "Old syntax, just keywords"
1404 (string :tag "Keyword"))
1405 (repeat :tag "New syntax"
1406 (cons
1407 (choice
1408 :tag "Interpretation"
1409 (const :tag "Sequence (cycling hits every state)" sequence)
1410 (const :tag "Type (cycling directly to DONE)" type))
1411 (repeat
1412 (string :tag "Keyword"))))))
1413
1414(defvar org-todo-keywords-1 nil)
1415(make-variable-buffer-local 'org-todo-keywords-1)
1416(defvar org-todo-keywords-for-agenda nil)
1417(defvar org-done-keywords-for-agenda nil)
1418(defvar org-not-done-keywords nil)
1419(make-variable-buffer-local 'org-not-done-keywords)
1420(defvar org-done-keywords nil)
1421(make-variable-buffer-local 'org-done-keywords)
1422(defvar org-todo-heads nil)
1423(make-variable-buffer-local 'org-todo-heads)
1424(defvar org-todo-sets nil)
1425(make-variable-buffer-local 'org-todo-sets)
1426(defvar org-todo-kwd-alist nil)
1427(make-variable-buffer-local 'org-todo-kwd-alist)
1334 1428
1335(defcustom org-todo-interpretation 'sequence 1429(defcustom org-todo-interpretation 'sequence
1336 "Controls how TODO keywords are interpreted. 1430 "Controls how TODO keywords are interpreted.
1337This variable is only relevant if `org-todo-keywords' contains more than two 1431This variable is in principle obsolete and is only used for
1338states. \\<org-mode-map>Possible values are `sequence' and `type'. 1432backward compatibility, if the interpretation of todo keywords is
1339 1433not given already in `org-todo-keywords'. See that variable for
1340When `sequence', \\[org-todo] will always switch to the next state in the 1434more information."
1341`org-todo-keywords' list. When `type', \\[org-todo] only cycles from state
1342to state when executed several times in direct succession. Otherwise, it
1343switches directly to DONE from any state.
1344See the manual for more information."
1345 :group 'org-todo 1435 :group 'org-todo
1346 :group 'org-keywords 1436 :group 'org-keywords
1347 :type '(choice (const sequence) 1437 :type '(choice (const sequence)
@@ -1393,6 +1483,12 @@ the following lines anywhere in the buffer:
1393 (const :tag "when TODO state changes" state) 1483 (const :tag "when TODO state changes" state)
1394 (const :tag "when clocking out" clock-out)))) 1484 (const :tag "when clocking out" clock-out))))
1395 1485
1486(defcustom org-log-done-with-time t
1487 "Non-nil means, the CLOSED time stamp will contain date and time.
1488When nil, only the date will be recorded."
1489 :group 'org-progress
1490 :type 'boolean)
1491
1396(defcustom org-log-note-headings 1492(defcustom org-log-note-headings
1397 '((done . "CLOSING NOTE %t") 1493 '((done . "CLOSING NOTE %t")
1398 (state . "State %-12s %t") 1494 (state . "State %-12s %t")
@@ -1414,11 +1510,9 @@ empty string.
1414 state) string) 1510 state) string)
1415 (cons (const :tag "Heading when clocking out" clock-out) string))) 1511 (cons (const :tag "Heading when clocking out" clock-out) string)))
1416 1512
1417(defcustom org-allow-auto-repeat t 1513(defcustom org-log-repeat t
1418 "Non-nil means, find REPEAT cookies in entries and apply them. 1514 "Non-nil means, prompt for a note when REPEAT is resetting a TODO entry.
1419A repeat cookie looks like REPEAT(+1m) and causes deadlines and schedules 1515When nil, no note will be taken."
1420to repeat themselves shifted by a certain amount of time, each time an
1421entry is marked DONE."
1422 :group 'org-todo 1516 :group 'org-todo
1423 :group 'org-progress 1517 :group 'org-progress
1424 :type 'boolean) 1518 :type 'boolean)
@@ -1428,14 +1522,21 @@ entry is marked DONE."
1428 :tag "Org Priorities" 1522 :tag "Org Priorities"
1429 :group 'org-todo) 1523 :group 'org-todo)
1430 1524
1431(defcustom org-default-priority ?B 1525(defcustom org-highest-priority ?A
1432 "The default priority of TODO items. 1526 "The highest priority of TODO items. A character like ?A, ?B etc.
1433This is the priority an item get if no explicit priority is given." 1527Must have a smaller ASCII number than `org-lowest-priority'."
1434 :group 'org-priorities 1528 :group 'org-priorities
1435 :type 'character) 1529 :type 'character)
1436 1530
1437(defcustom org-lowest-priority ?C 1531(defcustom org-lowest-priority ?C
1438 "The lowest priority of TODO items. A character like ?A, ?B etc." 1532 "The lowest priority of TODO items. A character like ?A, ?B etc.
1533Must have a larger ASCII number than `org-highest-priority'."
1534 :group 'org-priorities
1535 :type 'character)
1536
1537(defcustom org-default-priority ?B
1538 "The default priority of TODO items.
1539This is the priority an item get if no explicit priority is given."
1439 :group 'org-priorities 1540 :group 'org-priorities
1440 :type 'character) 1541 :type 'character)
1441 1542
@@ -1612,7 +1713,7 @@ make sure all corresponding TODO items find their way into the list."
1612 "Variable used by org files to set a category for agenda display. 1713 "Variable used by org files to set a category for agenda display.
1613Such files should use a file variable to set it, for example 1714Such files should use a file variable to set it, for example
1614 1715
1615 -*- mode: org; org-category: \"ELisp\" 1716# -*- mode: org; org-category: \"ELisp\"
1616 1717
1617or contain a special line 1718or contain a special line
1618 1719
@@ -1654,17 +1755,75 @@ forth between agenda and calendar."
1654 :group 'org-agenda 1755 :group 'org-agenda
1655 :type 'sexp) 1756 :type 'sexp)
1656 1757
1758(defgroup org-agenda-export nil
1759 "Options concerning exporting agenda views in Org-mode."
1760 :tag "Org Agenda Export"
1761 :group 'org-agenda)
1762
1763(defcustom org-agenda-with-colors t
1764 "Non-nil means, use colors in agenda views."
1765 :group 'org-agenda-export
1766 :type 'boolean)
1767
1768(defcustom org-agenda-exporter-settings nil
1769 "Alist of variable/value pairs that should be active during agenda export.
1770This is a good place to set uptions for ps-print and for htmlize."
1771 :group 'org-agenda-export
1772 :type '(repeat
1773 (list
1774 (variable)
1775 (sexp :tag "Value"))))
1776
1777(defcustom org-agenda-export-html-style ""
1778 "The style specification for exported HTML Agenda files.
1779If this variable contains a string, it will replace the default <style>
1780section as produced by `htmlize'.
1781Since there are different ways of setting style information, this variable
1782needs to contain the full HTML structure to provide a style, including the
1783surrounding HTML tags. The style specifications should include definitions
1784the fonts used by the agenda, here is an example:
1785
1786 <style type=\"text/css\">
1787 p { font-weight: normal; color: gray; }
1788 .org-agenda-structure {
1789 font-size: 110%;
1790 color: #003399;
1791 font-weight: 600;
1792 }
1793 .org-todo {
1794 color: #cc6666;Week-agenda:
1795 font-weight: bold;
1796 }
1797 .org-done {
1798 color: #339933;
1799 }
1800 .title { text-align: center; }
1801 .todo, .deadline { color: red; }
1802 .done { color: green; }
1803 </style>
1804
1805or, if you want to keep the style in a file,
1806
1807 <link rel=\"stylesheet\" type=\"text/css\" href=\"mystyles.css\">
1808
1809As the value of this option simply gets inserted into the HTML <head> header,
1810you can \"misuse\" it to also add other text to the header. However,
1811<style>...</style> is required, if not present the variable will be ignored."
1812 :group 'org-agenda-export
1813 :group 'org-export-html
1814 :type 'string)
1815
1657(defgroup org-agenda-custom-commands nil 1816(defgroup org-agenda-custom-commands nil
1658 "Options concerning agenda views in Org-mode." 1817 "Options concerning agenda views in Org-mode."
1659 :tag "Org Agenda Custom Commands" 1818 :tag "Org Agenda Custom Commands"
1660 :group 'org-agenda) 1819 :group 'org-agenda)
1661 1820
1662(defcustom org-agenda-custom-commands '(("w" todo "WAITING")) 1821(defcustom org-agenda-custom-commands nil
1663 "Custom commands for the agenda. 1822 "Custom commands for the agenda.
1664These commands will be offered on the splash screen displayed by the 1823These commands will be offered on the splash screen displayed by the
1665agenda dispatcher \\[org-agenda]. Each entry is a list like this: 1824agenda dispatcher \\[org-agenda]. Each entry is a list like this:
1666 1825
1667 (key type match options) 1826 (key type match options files)
1668 1827
1669key The key (a single char as a string) to be associated with the command. 1828key The key (a single char as a string) to be associated with the command.
1670type The command type, any of the following symbols: 1829type The command type, any of the following symbols:
@@ -1680,11 +1839,16 @@ match What to search for:
1680 - a regular expression for occur searches 1839 - a regular expression for occur searches
1681options A list of option setttings, similar to that in a let form, so like 1840options A list of option setttings, similar to that in a let form, so like
1682 this: ((opt1 val1) (opt2 val2) ...) 1841 this: ((opt1 val1) (opt2 val2) ...)
1842files A list of files file to write the produced agenda buffer to
1843 with the command `org-store-agenda-views'.
1844 If a file name ends in \".html\", an HTML version of the buffer
1845 is written out. If it ends in \".ps\", a postscript version is
1846 produced. Otherwide, only the plain text is written to the file.
1683 1847
1684You can also define a set of commands, to create a composite agenda buffer. 1848You can also define a set of commands, to create a composite agenda buffer.
1685In this case, an entry looks like this: 1849In this case, an entry looks like this:
1686 1850
1687 (key desc (cmd1 cmd2 ...) general-options) 1851 (key desc (cmd1 cmd2 ...) general-options file)
1688 1852
1689where 1853where
1690 1854
@@ -1695,19 +1859,22 @@ cmd An agenda command, similar to the above. However, tree commands
1695 (agenda) 1859 (agenda)
1696 (alltodo) 1860 (alltodo)
1697 (stuck) 1861 (stuck)
1698 (todo \"match\" options) 1862 (todo \"match\" options files)
1699 (tags \"match\" options ) 1863 (tags \"match\" options files)
1700 (tags-todo \"match\" options) 1864 (tags-todo \"match\" options files)
1701 1865
1702Each command can carry a list of options, and another set of options can be 1866Each command can carry a list of options, and another set of options can be
1703given for the whole set of commands. Individual command options take 1867given for the whole set of commands. Individual command options take
1704precedence over the general options." 1868precedence over the general options."
1705 :group 'org-agenda-custom-commands 1869 :group 'org-agenda-custom-commands
1706 :type '(repeat 1870 :type '(repeat
1707 (choice 1871 (choice :value ("a" tags "" nil)
1708 (list :tag "Single command" 1872 (list :tag "Single command"
1709 (string :tag "Key") 1873 (string :tag "Key")
1710 (choice 1874 (choice
1875 (const :tag "Agenda" agenda)
1876 (const :tag "TODO list" alltodo)
1877 (const :tag "Stuck projects" stuck)
1711 (const :tag "Tags search (all agenda files)" tags) 1878 (const :tag "Tags search (all agenda files)" tags)
1712 (const :tag "Tags search of TODO entries (all agenda files)" tags-todo) 1879 (const :tag "Tags search of TODO entries (all agenda files)" tags-todo)
1713 (const :tag "TODO keyword search (all agenda files)" todo) 1880 (const :tag "TODO keyword search (all agenda files)" todo)
@@ -1717,7 +1884,8 @@ precedence over the general options."
1717 (symbol :tag "Other, user-defined function")) 1884 (symbol :tag "Other, user-defined function"))
1718 (string :tag "Match") 1885 (string :tag "Match")
1719 (repeat :tag "Local options" 1886 (repeat :tag "Local options"
1720 (list (variable :tag "Option") (sexp :tag "Value")))) 1887 (list (variable :tag "Option") (sexp :tag "Value")))
1888 (option (repeat :tag "Export" (file :tag "Export to"))))
1721 (list :tag "Command series, all agenda files" 1889 (list :tag "Command series, all agenda files"
1722 (string :tag "Key") 1890 (string :tag "Key")
1723 (string :tag "Description") 1891 (string :tag "Description")
@@ -1756,20 +1924,24 @@ precedence over the general options."
1756 1924
1757 (repeat :tag "General options" 1925 (repeat :tag "General options"
1758 (list (variable :tag "Option") 1926 (list (variable :tag "Option")
1759 (sexp :tag "Value"))))))) 1927 (sexp :tag "Value")))
1928 (option (repeat :tag "Export" (file :tag "Export to")))))))
1760 1929
1761(defcustom org-stuck-projects 1930(defcustom org-stuck-projects
1762 '("+LEVEL=2/-DONE" ("TODO" "NEXT" "NEXTACTION") nil) 1931 '("+LEVEL=2/-DONE" ("TODO" "NEXT" "NEXTACTION") nil "")
1763 "How to identify stuck projects. 1932 "How to identify stuck projects.
1764This is a list of three items: 1933This is a list of four items:
17651. A tags/todo matcher string that is used to identify a project. 19341. A tags/todo matcher string that is used to identify a project.
1766 The entire tree below a headline matched by this is considered a project. 1935 The entire tree below a headline matched by this is considered one project.
17672. A list of TODO keywords itentifying non-stuck projects. 19362. A list of TODO keywords identifying non-stuck projects.
1768 If the project subtree contains any headline with one of these todo 1937 If the project subtree contains any headline with one of these todo
1769 keywords, the project is consitered to be not stuck. 1938 keywords, the project is considered to be not stuck. If you specify
1939 \"*\" as a keyword, any TODO keyword will mark the project unstuck.
17703. A list of tags identifying non-stuck projects. 19403. A list of tags identifying non-stuck projects.
1771 If the project subtree contains any headline with one of these tags, 1941 If the project subtree contains any headline with one of these tags,
1772 the project is consitered to be not stuck. 1942 the project is considered to be not stuck. If you specify \"*\" as
1943 a tag, any tag will mark the project unstuck.
19444. An arbitrary regular expression matching non-stuck projects.
1773 1945
1774After defining this variable, you may use \\[org-agenda-list-stuck-projects] 1946After defining this variable, you may use \\[org-agenda-list-stuck-projects]
1775or `C-c a #' to produce the list." 1947or `C-c a #' to produce the list."
@@ -1777,7 +1949,8 @@ or `C-c a #' to produce the list."
1777 :type '(list 1949 :type '(list
1778 (string :tag "Tags/TODO match to identify a project") 1950 (string :tag "Tags/TODO match to identify a project")
1779 (repeat :tag "Projects are *not* stuck if they have an entry with TODO keyword any of" (string)) 1951 (repeat :tag "Projects are *not* stuck if they have an entry with TODO keyword any of" (string))
1780 (repeat :tag "Projects are *not* stuck if they have an entry with TAG being any of" (string)))) 1952 (repeat :tag "Projects are *not* stuck if they have an entry with TAG being any of" (string))
1953 (regexp :tag "Projects are *not* stuck if this regexp matches\ninside the subtree")))
1781 1954
1782 1955
1783(defgroup org-agenda-skip nil 1956(defgroup org-agenda-skip nil
@@ -1815,6 +1988,14 @@ This is relevant for the daily/weekly agenda, not for the TODO list."
1815 :group 'org-agenda-skip 1988 :group 'org-agenda-skip
1816 :type 'boolean) 1989 :type 'boolean)
1817 1990
1991(defcustom org-agenda-skip-deadline-if-done nil
1992 "Non-nil means don't show deadines when the corresponding item is done.
1993When nil, the deadline is still shown and should give you a happy feeling.
1994
1995This is relevant for the daily/weekly agenda."
1996 :group 'org-agenda-skip
1997 :type 'boolean)
1998
1818(defcustom org-timeline-show-empty-dates 3 1999(defcustom org-timeline-show-empty-dates 3
1819 "Non-nil means, `org-timeline' also shows dates without an entry. 2000 "Non-nil means, `org-timeline' also shows dates without an entry.
1820When nil, only the days which actually have entries are shown. 2001When nil, only the days which actually have entries are shown.
@@ -1846,7 +2027,7 @@ Needs to be set before org.el is loaded."
1846 :type 'boolean) 2027 :type 'boolean)
1847 2028
1848(defcustom org-agenda-start-with-follow-mode nil 2029(defcustom org-agenda-start-with-follow-mode nil
1849 "The initial value of follwo-mode in a newly created agenda window." 2030 "The initial value of follow-mode in a newly created agenda window."
1850 :group 'org-agenda-startup 2031 :group 'org-agenda-startup
1851 :type 'boolean) 2032 :type 'boolean)
1852 2033
@@ -1931,7 +2112,7 @@ a format string understood by `format-time-string'.
1931FIXME: Not used currently, because of timezone problem." 2112FIXME: Not used currently, because of timezone problem."
1932 :group 'org-agenda-daily/weekly 2113 :group 'org-agenda-daily/weekly
1933 :type 'string) 2114 :type 'string)
1934 2115
1935(defcustom org-agenda-include-diary nil 2116(defcustom org-agenda-include-diary nil
1936 "If non-nil, include in the agenda entries from the Emacs Calendar's diary." 2117 "If non-nil, include in the agenda entries from the Emacs Calendar's diary."
1937 :group 'org-agenda-daily/weekly 2118 :group 'org-agenda-daily/weekly
@@ -2006,7 +2187,7 @@ a grid line."
2006 (defcustom org-agenda-sorting-strategy 2187 (defcustom org-agenda-sorting-strategy
2007 '((agenda time-up category-keep priority-down) 2188 '((agenda time-up category-keep priority-down)
2008 (todo category-keep priority-down) 2189 (todo category-keep priority-down)
2009 (tags category-keep)) 2190 (tags category-keep priority-down))
2010 "Sorting structure for the agenda items of a single day. 2191 "Sorting structure for the agenda items of a single day.
2011This is a list of symbols which will be used in sequence to determine 2192This is a list of symbols which will be used in sequence to determine
2012if an entry should be listed before another entry. The following 2193if an entry should be listed before another entry. The following
@@ -2113,7 +2294,7 @@ the prefix, you could use:
2113 (setq org-agenda-prefix-format \" %-11:c% s\") 2294 (setq org-agenda-prefix-format \" %-11:c% s\")
2114 2295
2115See also the variables `org-agenda-remove-times-when-in-prefix' and 2296See also the variables `org-agenda-remove-times-when-in-prefix' and
2116`org-agenda-remove-tags-when-in-prefix'." 2297`org-agenda-remove-tags'."
2117 :type '(choice 2298 :type '(choice
2118 (string :tag "General format") 2299 (string :tag "General format")
2119 (list :greedy t :tag "View dependent" 2300 (list :greedy t :tag "View dependent"
@@ -2144,7 +2325,7 @@ the headline/diary entry."
2144 (const :tag "Never" nil) 2325 (const :tag "Never" nil)
2145 (const :tag "When at beginning of entry" beg))) 2326 (const :tag "When at beginning of entry" beg)))
2146 2327
2147(defcustom org-agenda-remove-tags-when-in-prefix nil 2328(defcustom org-agenda-remove-tags nil
2148 "Non-nil means, remove the tags from the headline copy in the agenda. 2329 "Non-nil means, remove the tags from the headline copy in the agenda.
2149When this is the symbol `prefix', only remove tags when 2330When this is the symbol `prefix', only remove tags when
2150`org-agenda-prefix-format' contains a `%T' specifier." 2331`org-agenda-prefix-format' contains a `%T' specifier."
@@ -2154,6 +2335,10 @@ When this is the symbol `prefix', only remove tags when
2154 (const :tag "Never" nil) 2335 (const :tag "Never" nil)
2155 (const :tag "When prefix format contains %T" prefix))) 2336 (const :tag "When prefix format contains %T" prefix)))
2156 2337
2338(if (fboundp 'defvaralias)
2339 (defvaralias 'org-agenda-remove-tags-when-in-prefix
2340 'org-agenda-remove-tags))
2341
2157(defcustom org-agenda-align-tags-to-column 65 2342(defcustom org-agenda-align-tags-to-column 65
2158 "Shift tags in agenda items to this column." 2343 "Shift tags in agenda items to this column."
2159 :group 'org-agenda-prefix 2344 :group 'org-agenda-prefix
@@ -2165,13 +2350,18 @@ When this is the symbol `prefix', only remove tags when
2165 :group 'org) 2350 :group 'org)
2166 2351
2167(defcustom org-format-latex-options 2352(defcustom org-format-latex-options
2168 '(:foreground "Black" :background "Transparent" :scale 1.0 2353 '(:foreground default :background default :scale 1.0
2169 :matchers ("begin" "$" "$$" "\\(" "\\[")) 2354 :html-foreground "Black" :html-background "Transparent" :html-scale 1.0
2355 :matchers ("begin" "$" "$$" "\\(" "\\["))
2170 "Options for creating images from LaTeX fragments. 2356 "Options for creating images from LaTeX fragments.
2171This is a property list with the following properties: 2357This is a property list with the following properties:
2172:foreground the foreground color, for example \"Black\". 2358:foreground the foreground color for images embedded in emacs, e.g. \"Black\".
2359 `default' means use the forground of the default face.
2173:background the background color, or \"Transparent\". 2360:background the background color, or \"Transparent\".
2361 `default' means use the background of the default face.
2174:scale a scaling factor for the size of the images 2362:scale a scaling factor for the size of the images
2363:html-foreground, :html-background, :html-scale
2364 The same numbers for HTML export.
2175:matchers a list indicating which matchers should be used to 2365:matchers a list indicating which matchers should be used to
2176 find LaTeX fragments. Valid members of this list are: 2366 find LaTeX fragments. Valid members of this list are:
2177 \"begin\" find environments 2367 \"begin\" find environments
@@ -2182,6 +2372,18 @@ This is a property list with the following properties:
2182 :group 'org-latex 2372 :group 'org-latex
2183 :type 'plist) 2373 :type 'plist)
2184 2374
2375(defcustom org-format-latex-header "\\documentclass{article}
2376\\usepackage{fullpage} % do not remove
2377\\usepackage{amssymb}
2378\\usepackage[usenames]{color}
2379\\usepackage{amsmath}
2380\\usepackage{latexsym}
2381\\usepackage[mathscr]{eucal}
2382\\pagestyle{empty} % do not remove"
2383 "The document header used for processing LaTeX fragments."
2384 :group 'org-latex
2385 :type 'string)
2386
2185(defgroup org-export nil 2387(defgroup org-export nil
2186 "Options for exporting org-listings." 2388 "Options for exporting org-listings."
2187 :tag "Org Export" 2389 :tag "Org Export"
@@ -2237,6 +2439,12 @@ This should have an association in `org-export-language-setup'."
2237 :group 'org-export-general 2439 :group 'org-export-general
2238 :type 'string) 2440 :type 'string)
2239 2441
2442(defcustom org-export-skip-text-before-1st-heading t
2443 "Non-nil means, skip all text before the first headline when exporting.
2444When nil, that text is exported as well."
2445 :group 'org-export-general
2446 :type 'boolean)
2447
2240(defcustom org-export-headline-levels 3 2448(defcustom org-export-headline-levels 3
2241 "The last level which is still exported as a headline. 2449 "The last level which is still exported as a headline.
2242Inferior levels will produce itemize lists when exported. 2450Inferior levels will produce itemize lists when exported.
@@ -2354,12 +2562,19 @@ sub- or superscripts.
2354 x_{i^2} or x^(2-i) braces or parenthesis do grouping. 2562 x_{i^2} or x^(2-i) braces or parenthesis do grouping.
2355 2563
2356Still, ambiguity is possible - so when in doubt use {} to enclose the 2564Still, ambiguity is possible - so when in doubt use {} to enclose the
2357sub/superscript. 2565sub/superscript. If you set this variable to the symbol `{}',
2566the braces are *required* in order to trigger interpretations as
2567sub/superscript. This can be helpful in documents that need \"_\"
2568frequently in plain text.
2569
2358Not all export backends support this, but HTML does. 2570Not all export backends support this, but HTML does.
2359 2571
2360This option can also be set with the +OPTIONS line, e.g. \"^:nil\"." 2572This option can also be set with the +OPTIONS line, e.g. \"^:nil\"."
2361 :group 'org-export-translation 2573 :group 'org-export-translation
2362 :type 'boolean) 2574 :type '(choice
2575 (const :tag "Always interpret" t)
2576 (const :tag "Only with braces" {})
2577 (const :tag "Never interpret" nil)))
2363 2578
2364(defcustom org-export-with-TeX-macros t 2579(defcustom org-export-with-TeX-macros t
2365 "Non-nil means, interpret simple TeX-like macros when exporting. 2580 "Non-nil means, interpret simple TeX-like macros when exporting.
@@ -2467,7 +2682,7 @@ In the given sequence, these characters will be used for level 1, 2, ..."
2467 2682
2468(defcustom org-export-ascii-bullets '(?* ?+ ?-) 2683(defcustom org-export-ascii-bullets '(?* ?+ ?-)
2469 "Bullet characters for headlines converted to lists in ASCII export. 2684 "Bullet characters for headlines converted to lists in ASCII export.
2470The first character is is used for the first lest level generated in this 2685The first character is used for the first lest level generated in this
2471way, and so on. If there are more levels than characters given here, 2686way, and so on. If there are more levels than characters given here,
2472the list will be repeated. 2687the list will be repeated.
2473Note that plain lists will keep the same bullets as the have in the 2688Note that plain lists will keep the same bullets as the have in the
@@ -2534,6 +2749,7 @@ you can \"misuse\" it to add arbitrary text to the header."
2534 :group 'org-export-html 2749 :group 'org-export-html
2535 :type 'string) 2750 :type 'string)
2536 2751
2752
2537(defcustom org-export-html-title-format "<h1 class=\"title\">%s</h1>\n" 2753(defcustom org-export-html-title-format "<h1 class=\"title\">%s</h1>\n"
2538 "Format for typesetting the document title in HTML export." 2754 "Format for typesetting the document title in HTML export."
2539 :group 'org-export-html 2755 :group 'org-export-html
@@ -2567,7 +2783,7 @@ be linked only."
2567 (const :tag "Always" t) 2783 (const :tag "Always" t)
2568 (const :tag "When there is no description" maybe))) 2784 (const :tag "When there is no description" maybe)))
2569 2785
2570;; FIXME: rename 2786;; FIXME: rename
2571(defcustom org-export-html-expand t 2787(defcustom org-export-html-expand t
2572 "Non-nil means, for HTML export, treat @<...> as HTML tag. 2788 "Non-nil means, for HTML export, treat @<...> as HTML tag.
2573When nil, these tags will be exported as plain text and therefore 2789When nil, these tags will be exported as plain text and therefore
@@ -2579,12 +2795,24 @@ This option can also be set with the +OPTIONS line, e.g. \"@:nil\"."
2579 2795
2580(defcustom org-export-html-table-tag 2796(defcustom org-export-html-table-tag
2581 "<table border=\"2\" cellspacing=\"0\" cellpadding=\"6\" rules=\"groups\" frame=\"hsides\">" 2797 "<table border=\"2\" cellspacing=\"0\" cellpadding=\"6\" rules=\"groups\" frame=\"hsides\">"
2582 "The HTML tag used to start a table. 2798 "The HTML tag that is used to start a table.
2583This must be a <table> tag, but you may change the options like 2799This must be a <table> tag, but you may change the options like
2584borders and spacing." 2800borders and spacing."
2585 :group 'org-export-html 2801 :group 'org-export-html
2586 :type 'string) 2802 :type 'string)
2587 2803
2804(defcustom org-export-table-header-tags '("<th>" . "</th>")
2805 "The opening tag for table header fields.
2806This is customizable so that alignment options can be specified."
2807 :group 'org-export-tables
2808 :type '(cons (string :tag "Opening tag") (string :tag "Closing tag")))
2809
2810(defcustom org-export-table-data-tags '("<td>" . "</td>")
2811 "The opening tag for table data fields.
2812This is customizable so that alignment options can be specified."
2813 :group 'org-export-tables
2814 :type '(cons (string :tag "Opening tag") (string :tag "Closing tag")))
2815
2588(defcustom org-export-html-with-timestamp nil 2816(defcustom org-export-html-with-timestamp nil
2589 "If non-nil, write `org-export-html-html-helper-timestamp' 2817 "If non-nil, write `org-export-html-html-helper-timestamp'
2590into the exported HTML text. Otherwise, the buffer will just be saved 2818into the exported HTML text. Otherwise, the buffer will just be saved
@@ -2618,6 +2846,12 @@ The file name should be absolute."
2618 (const :tag "Unfinished" t) 2846 (const :tag "Unfinished" t)
2619 (const :tag "All" all))) 2847 (const :tag "All" all)))
2620 2848
2849(defcustom org-icalendar-include-sexps t
2850 "Non-nil means, export to iCalendar files should also cover sexp entries.
2851These are entries like in the diary, but directly in an Org-mode file."
2852 :group 'org-export-icalendar
2853 :type 'boolean)
2854
2621(defcustom org-icalendar-combined-name "OrgMode" 2855(defcustom org-icalendar-combined-name "OrgMode"
2622 "Calendar name for the combined iCalendar representing all agenda files." 2856 "Calendar name for the combined iCalendar representing all agenda files."
2623 :group 'org-export-icalendar 2857 :group 'org-export-icalendar
@@ -2690,8 +2924,6 @@ Changing this variable requires a restart of Emacs to take effect."
2690 (setq markers (concat (replace-match "" t t markers) "^"))) 2924 (setq markers (concat (replace-match "" t t markers) "^")))
2691 (if (string-match "-" markers) 2925 (if (string-match "-" markers)
2692 (setq markers (concat (replace-match "" t t markers) "-"))) 2926 (setq markers (concat (replace-match "" t t markers) "-")))
2693; (while (>= (setq nl (1- nl)) 0) (setq body1 (concat body1 "\n?" body "*?")))
2694; (while (>= (setq nl (1- nl)) 0) (setq body1 (concat body1 "\\(?:\n?" body "*?\\)?")))
2695 (if (> nl 0) 2927 (if (> nl 0)
2696 (setq body1 (concat body1 "\\(?:\n" body "*?\\)\\{0," 2928 (setq body1 (concat body1 "\\(?:\n" body "*?\\)\\{0,"
2697 (int-to-string nl) "\\}"))) 2929 (int-to-string nl) "\\}")))
@@ -2701,15 +2933,15 @@ Changing this variable requires a restart of Emacs to take effect."
2701 "\\(" 2933 "\\("
2702 "\\([" markers "]\\)" 2934 "\\([" markers "]\\)"
2703 "\\(" 2935 "\\("
2704 "[^" border markers "]" 2936 "[^" border (if (and nil stacked) markers) "]"
2705 body1 2937 body1
2706 "[^" border markers "]" 2938 "[^" border (if (and nil stacked) markers) "]"
2707 "\\)" 2939 "\\)"
2708 "\\3\\)" 2940 "\\3\\)"
2709 "\\([" post (if stacked markers) "]\\|$\\)"))))) 2941 "\\([" post (if stacked markers) "]\\|$\\)")))))
2710 2942
2711(defcustom org-emphasis-regexp-components 2943(defcustom org-emphasis-regexp-components
2712 '(" \t('\"" " \t.,?;'\")" " \t\r\n," "." 1 nil) 2944 '(" \t('\"" "- \t.,:?;'\")" " \t\r\n,\"'" "." 1 nil)
2713 "Components used to build the reqular expression for emphasis. 2945 "Components used to build the reqular expression for emphasis.
2714This is a list with 6 entries. Terminology: In an emphasis string 2946This is a list with 6 entries. Terminology: In an emphasis string
2715like \" *strong word* \", we call the initial space PREMATCH, the final 2947like \" *strong word* \", we call the initial space PREMATCH, the final
@@ -2719,8 +2951,7 @@ specify what is allowed/forbidden in each part:
2719 2951
2720pre Chars allowed as prematch. Beginning of line will be allowed too. 2952pre Chars allowed as prematch. Beginning of line will be allowed too.
2721post Chars allowed as postmatch. End of line will be allowed too. 2953post Chars allowed as postmatch. End of line will be allowed too.
2722border The chars *forbidden* as border characters. In addition to the 2954border The chars *forbidden* as border characters.
2723 characters given here, all marker characters are forbidden too.
2724body-regexp A regexp like \".\" to match a body character. Don't use 2955body-regexp A regexp like \".\" to match a body character. Don't use
2725 non-shy groups here, and don't allow newline here. 2956 non-shy groups here, and don't allow newline here.
2726newline The maximum number of newlines allowed in an emphasis exp. 2957newline The maximum number of newlines allowed in an emphasis exp.
@@ -2745,11 +2976,11 @@ Use customize to modify this, or restart Emacs after changing it."
2745 ("_" underline "<u>" "</u>") 2976 ("_" underline "<u>" "</u>")
2746 ("=" shadow "<code>" "</code>") 2977 ("=" shadow "<code>" "</code>")
2747 ("+" (:strike-through t) "<del>" "</del>") 2978 ("+" (:strike-through t) "<del>" "</del>")
2748) 2979 )
2749"Special syntax for emphasized text. 2980"Special syntax for emphasized text.
2750Text starting and ending with a special character will be emphasized, for 2981Text starting and ending with a special character will be emphasized, for
2751example *bold*, _underlined_ and /italic/. This variable sets the marker 2982example *bold*, _underlined_ and /italic/. This variable sets the marker
2752characters, the face to bbe used by font-lock for highlighting in Org-mode 2983characters, the face to be used by font-lock for highlighting in Org-mode
2753Emacs buffers, and the HTML tags to be used for this. 2984Emacs buffers, and the HTML tags to be used for this.
2754Use customize to modify this, or restart Emacs after changing it." 2985Use customize to modify this, or restart Emacs after changing it."
2755 :group 'org-font-lock 2986 :group 'org-font-lock
@@ -2894,15 +3125,6 @@ color of the frame."
2894 "Face for deadlines and TODO keywords." 3125 "Face for deadlines and TODO keywords."
2895 :group 'org-faces) 3126 :group 'org-faces)
2896 3127
2897(defface org-headline-done ;; font-lock-string-face
2898 (org-compatible-face
2899 '((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
2900 (((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
2901 (((class color) (min-colors 8) (background light)) (:bold nil))))
2902 "Face used to indicate that a headline is DONE.
2903This face is only used if `org-fontify-done-headline' is set."
2904 :group 'org-faces)
2905
2906(defface org-archived ; similar to shadow 3128(defface org-archived ; similar to shadow
2907 (org-compatible-face 3129 (org-compatible-face
2908 '((((class color grayscale) (min-colors 88) (background light)) 3130 '((((class color grayscale) (min-colors 88) (background light))
@@ -2930,6 +3152,13 @@ This face is only used if `org-fontify-done-headline' is set."
2930 "Face for links." 3152 "Face for links."
2931 :group 'org-faces) 3153 :group 'org-faces)
2932 3154
3155(defface org-sexp-date
3156 '((((class color) (background light)) (:foreground "Purple"))
3157 (((class color) (background dark)) (:foreground "Cyan"))
3158 (t (:underline t)))
3159 "Face for links."
3160 :group 'org-faces)
3161
2933(defface org-tag 3162(defface org-tag
2934 '((t (:bold t))) 3163 '((t (:bold t)))
2935 "Face for tags." 3164 "Face for tags."
@@ -2951,7 +3180,17 @@ This face is only used if `org-fontify-done-headline' is set."
2951 (((class color) (min-colors 16) (background dark)) (:foreground "PaleGreen" :bold t)) 3180 (((class color) (min-colors 16) (background dark)) (:foreground "PaleGreen" :bold t))
2952 (((class color) (min-colors 8)) (:foreground "green")) 3181 (((class color) (min-colors 8)) (:foreground "green"))
2953 (t (:bold t)))) 3182 (t (:bold t))))
2954 "Face used for DONE." 3183 "Face used for todo keywords that indicate DONE items."
3184 :group 'org-faces)
3185
3186(defface org-headline-done ;; font-lock-string-face
3187 (org-compatible-face
3188 '((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
3189 (((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
3190 (((class color) (min-colors 8) (background light)) (:bold nil))))
3191 "Face used to indicate that a headline is DONE.
3192This face is only used if `org-fontify-done-headline' is set. If applies
3193to the part of the headline after the DONE keyword."
2955 :group 'org-faces) 3194 :group 'org-faces)
2956 3195
2957(defface org-table ;; font-lock-function-name-face 3196(defface org-table ;; font-lock-function-name-face
@@ -2975,6 +3214,17 @@ This face is only used if `org-fontify-done-headline' is set."
2975 "Face for formulas." 3214 "Face for formulas."
2976 :group 'org-faces) 3215 :group 'org-faces)
2977 3216
3217(defface org-agenda-structure ;; font-lock-function-name-face
3218 (org-compatible-face
3219 '((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
3220 (((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
3221 (((class color) (min-colors 16) (background light)) (:foreground "Blue"))
3222 (((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue"))
3223 (((class color) (min-colors 8)) (:foreground "blue" :bold t))
3224 (t (:bold t))))
3225 "Face used in agenda for captions and dates."
3226 :group 'org-faces)
3227
2978(defface org-scheduled-today 3228(defface org-scheduled-today
2979 (org-compatible-face 3229 (org-compatible-face
2980 '((((class color) (min-colors 88) (background light)) (:foreground "DarkGreen")) 3230 '((((class color) (min-colors 88) (background light)) (:foreground "DarkGreen"))
@@ -3021,9 +3271,6 @@ This face is only used if `org-fontify-done-headline' is set."
3021 3271
3022;;; Variables for pre-computed regular expressions, all buffer local 3272;;; Variables for pre-computed regular expressions, all buffer local
3023 3273
3024(defvar org-done-string nil
3025 "The last string in `org-todo-keywords', indicating an item is DONE.")
3026(make-variable-buffer-local 'org-done-string)
3027(defvar org-todo-regexp nil 3274(defvar org-todo-regexp nil
3028 "Matches any of the TODO state keywords.") 3275 "Matches any of the TODO state keywords.")
3029(make-variable-buffer-local 'org-todo-regexp) 3276(make-variable-buffer-local 'org-todo-regexp)
@@ -3043,12 +3290,6 @@ Also put tags into group 4 if tags are present.")
3043(defvar org-looking-at-done-regexp nil 3290(defvar org-looking-at-done-regexp nil
3044 "Matches the DONE keyword a point.") 3291 "Matches the DONE keyword a point.")
3045(make-variable-buffer-local 'org-looking-at-done-regexp) 3292(make-variable-buffer-local 'org-looking-at-done-regexp)
3046(defvar org-todo-kwd-priority-p nil
3047 "Do TODO items have priorities?")
3048(make-variable-buffer-local 'org-todo-kwd-priority-p)
3049(defvar org-todo-kwd-max-priority nil
3050 "Maximum priority of TODO items.")
3051(make-variable-buffer-local 'org-todo-kwd-max-priority)
3052(defvar org-ds-keyword-length 12 3293(defvar org-ds-keyword-length 12
3053 "Maximum length of the Deadline and SCHEDULED keywords.") 3294 "Maximum length of the Deadline and SCHEDULED keywords.")
3054(make-variable-buffer-local 'org-ds-keyword-length) 3295(make-variable-buffer-local 'org-ds-keyword-length)
@@ -3080,6 +3321,9 @@ Also put tags into group 4 if tags are present.")
3080(defvar org-maybe-keyword-time-regexp nil 3321(defvar org-maybe-keyword-time-regexp nil
3081 "Matches a timestamp, possibly preceeded by a keyword.") 3322 "Matches a timestamp, possibly preceeded by a keyword.")
3082(make-variable-buffer-local 'org-maybe-keyword-time-regexp) 3323(make-variable-buffer-local 'org-maybe-keyword-time-regexp)
3324(defvar org-planning-or-clock-line-re nil
3325 "Matches a line with planning or clock info.")
3326(make-variable-buffer-local 'org-planning-or-clock-line-re)
3083 3327
3084(defconst org-rm-props '(invisible t face t keymap t intangible t mouse-face t 3328(defconst org-rm-props '(invisible t face t keymap t intangible t mouse-face t
3085 rear-nonsticky t mouse-map t fontified t) 3329 rear-nonsticky t mouse-map t fontified t)
@@ -3102,6 +3346,12 @@ Also put tags into group 4 if tags are present.")
3102 ((assoc key option) (cdr (assoc key option))) 3346 ((assoc key option) (cdr (assoc key option)))
3103 (t (cdr (assq 'default option))))) 3347 (t (cdr (assq 'default option)))))
3104 3348
3349(defsubst org-inhibit-invisibility ()
3350 "Modified `buffer-invisibility-spec' for Emacs 21.
3351Some ops with invisible text do not work correctly on Emacs 21. For these
3352we turn off invisibility temporarily. Use this in a `let' form."
3353 (if (< emacs-major-version 22) nil buffer-invisibility-spec))
3354
3105(defsubst org-set-local (var value) 3355(defsubst org-set-local (var value)
3106 "Make VAR local in current buffer and set it to VALUE." 3356 "Make VAR local in current buffer and set it to VALUE."
3107 (set (make-variable-buffer-local var) value)) 3357 (set (make-variable-buffer-local var) value))
@@ -3139,7 +3389,11 @@ Also put tags into group 4 if tags are present.")
3139 ("nologging" org-log-done nil) 3389 ("nologging" org-log-done nil)
3140 ("lognotedone" org-log-done done push) 3390 ("lognotedone" org-log-done done push)
3141 ("lognotestate" org-log-done state push) 3391 ("lognotestate" org-log-done state push)
3142 ("lognoteclock-out" org-log-done clock-out push)) 3392 ("lognoteclock-out" org-log-done clock-out push)
3393 ("logrepeat" org-log-repeat t)
3394 ("nologrepeat" org-log-repeat nil)
3395 ("constcgs" constants-unit-system cgs)
3396 ("constSI" constants-unit-system SI))
3143 "Variable associated with STARTUP options for org-mode. 3397 "Variable associated with STARTUP options for org-mode.
3144Each element is a list of three items: The startup options as written 3398Each element is a list of three items: The startup options as written
3145in the #+STARTUP line, the corresponding variable, and the value to 3399in the #+STARTUP line, the corresponding variable, and the value to
@@ -3149,11 +3403,16 @@ means to push this value onto the list in the variable.")
3149(defun org-set-regexps-and-options () 3403(defun org-set-regexps-and-options ()
3150 "Precompute regular expressions for current buffer." 3404 "Precompute regular expressions for current buffer."
3151 (when (org-mode-p) 3405 (when (org-mode-p)
3406 (org-set-local 'org-todo-kwd-alist nil)
3407 (org-set-local 'org-todo-keywords-1 nil)
3408 (org-set-local 'org-done-keywords nil)
3409 (org-set-local 'org-todo-heads nil)
3410 (org-set-local 'org-todo-sets nil)
3152 (let ((re (org-make-options-regexp 3411 (let ((re (org-make-options-regexp
3153 '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO" 3412 '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO"
3154 "STARTUP" "ARCHIVE" "TAGS" "LINK"))) 3413 "STARTUP" "ARCHIVE" "TAGS" "LINK" "PRIORITIES")))
3155 (splitre "[ \t]+") 3414 (splitre "[ \t]+")
3156 kwds int key value cat arch tags links) 3415 kwds key value cat arch tags links hw dws tail sep kws1 prio)
3157 (save-excursion 3416 (save-excursion
3158 (save-restriction 3417 (save-restriction
3159 (widen) 3418 (widen)
@@ -3166,14 +3425,9 @@ means to push this value onto the list in the variable.")
3166 (setq value (replace-match "" t t value))) 3425 (setq value (replace-match "" t t value)))
3167 (setq cat (intern value))) 3426 (setq cat (intern value)))
3168 ((equal key "SEQ_TODO") 3427 ((equal key "SEQ_TODO")
3169 (setq int 'sequence 3428 (push (cons 'sequence (org-split-string value splitre)) kwds))
3170 kwds (append kwds (org-split-string value splitre))))
3171 ((equal key "PRI_TODO")
3172 (setq int 'priority
3173 kwds (append kwds (org-split-string value splitre))))
3174 ((equal key "TYP_TODO") 3429 ((equal key "TYP_TODO")
3175 (setq int 'type 3430 (push (cons 'type (org-split-string value splitre)) kwds))
3176 kwds (append kwds (org-split-string value splitre))))
3177 ((equal key "TAGS") 3431 ((equal key "TAGS")
3178 (setq tags (append tags (org-split-string value splitre)))) 3432 (setq tags (append tags (org-split-string value splitre))))
3179 ((equal key "LINK") 3433 ((equal key "LINK")
@@ -3181,17 +3435,20 @@ means to push this value onto the list in the variable.")
3181 (push (cons (match-string 1 value) 3435 (push (cons (match-string 1 value)
3182 (org-trim (match-string 2 value))) 3436 (org-trim (match-string 2 value)))
3183 links))) 3437 links)))
3438 ((equal key "PRIORITIES")
3439 (setq prio (org-split-string value " +")))
3184 ((equal key "STARTUP") 3440 ((equal key "STARTUP")
3185 (let ((opts (org-split-string value splitre)) 3441 (let ((opts (org-split-string value splitre))
3186 l var val) 3442 l var val)
3187 (while (setq l (assoc (pop opts) org-startup-options)) 3443 (while (setq l (pop opts))
3188 (setq var (nth 1 l) val (nth 2 l)) 3444 (when (setq l (assoc l org-startup-options))
3189 (if (not (nth 3 l)) 3445 (setq var (nth 1 l) val (nth 2 l))
3190 (set (make-local-variable var) val) 3446 (if (not (nth 3 l))
3191 (if (not (listp (symbol-value var))) 3447 (set (make-local-variable var) val)
3192 (set (make-local-variable var) nil)) 3448 (if (not (listp (symbol-value var)))
3193 (set (make-local-variable var) (symbol-value var)) 3449 (set (make-local-variable var) nil))
3194 (add-to-list var val))))) 3450 (set (make-local-variable var) (symbol-value var))
3451 (add-to-list var val))))))
3195 ((equal key "ARCHIVE") 3452 ((equal key "ARCHIVE")
3196 (string-match " *$" value) 3453 (string-match " *$" value)
3197 (setq arch (replace-match "" t t value)) 3454 (setq arch (replace-match "" t t value))
@@ -3199,10 +3456,38 @@ means to push this value onto the list in the variable.")
3199 '(face t fontified t) arch))) 3456 '(face t fontified t) arch)))
3200 ))) 3457 )))
3201 (and cat (org-set-local 'org-category cat)) 3458 (and cat (org-set-local 'org-category cat))
3202 (and kwds (org-set-local 'org-todo-keywords kwds)) 3459 (when prio
3460 (if (< (length prio) 3) (setq prio '("A" "C" "B")))
3461 (setq prio (mapcar 'string-to-char prio))
3462 (org-set-local 'org-highest-priority (nth 0 prio))
3463 (org-set-local 'org-lowest-priority (nth 1 prio))
3464 (org-set-local 'org-default-priority (nth 2 prio)))
3203 (and arch (org-set-local 'org-archive-location arch)) 3465 (and arch (org-set-local 'org-archive-location arch))
3204 (and int (org-set-local 'org-todo-interpretation int))
3205 (and links (setq org-link-abbrev-alist-local (nreverse links))) 3466 (and links (setq org-link-abbrev-alist-local (nreverse links)))
3467 ;; Process the TODO keywords
3468 (unless kwds
3469 ;; Use the global values as if they had been given locally.
3470 (setq kwds (default-value 'org-todo-keywords))
3471 (if (stringp (car kwds))
3472 (setq kwds (list (cons org-todo-interpretation
3473 (default-value 'org-todo-keywords)))))
3474 (setq kwds (reverse kwds)))
3475 (setq kwds (nreverse kwds))
3476 (let (inter kws)
3477 (while (setq kws (pop kwds))
3478 (setq inter (pop kws) sep (member "|" kws)
3479 kws1 (delete "|" (copy-sequence kws))
3480 hw (car kws1)
3481 dws (if sep (cdr sep) (last kws1))
3482 tail (list inter hw (car dws) (org-last dws)))
3483 (add-to-list 'org-todo-heads hw 'append)
3484 (push kws1 org-todo-sets)
3485 (setq org-done-keywords (append org-done-keywords dws nil))
3486 (mapc (lambda (x) (push (cons x tail) org-todo-kwd-alist)) kws1)
3487 (setq org-todo-keywords-1 (append org-todo-keywords-1 kws1 nil)))
3488 (setq org-todo-sets (nreverse org-todo-sets)
3489 org-todo-kwd-alist (nreverse org-todo-kwd-alist)))
3490 ;; Process the tags.
3206 (when tags 3491 (when tags
3207 (let (e tgs) 3492 (let (e tgs)
3208 (while (setq e (pop tags)) 3493 (while (setq e (pop tags))
@@ -3221,32 +3506,35 @@ means to push this value onto the list in the variable.")
3221 (push e org-tag-alist)))))) 3506 (push e org-tag-alist))))))
3222 3507
3223 ;; Compute the regular expressions and other local variables 3508 ;; Compute the regular expressions and other local variables
3224 (setq org-todo-kwd-priority-p (equal org-todo-interpretation 'priority) 3509 (if (not org-done-keywords)
3225 org-todo-kwd-max-priority (1- (length org-todo-keywords)) 3510 (setq org-done-keywords (list (org-last org-todo-keywords-1))))
3226 org-ds-keyword-length (+ 2 (max (length org-deadline-string) 3511 (setq org-ds-keyword-length (+ 2 (max (length org-deadline-string)
3227 (length org-scheduled-string))) 3512 (length org-scheduled-string)))
3228 org-done-string 3513 org-not-done-keywords
3229 (nth (1- (length org-todo-keywords)) org-todo-keywords) 3514 (org-delete-all org-done-keywords (copy-sequence org-todo-keywords-1))
3230 org-todo-regexp 3515 org-todo-regexp
3231 (concat "\\<\\(" (mapconcat 'regexp-quote org-todo-keywords 3516 (concat "\\<\\(" (mapconcat 'regexp-quote org-todo-keywords-1
3232 "\\|") "\\)\\>") 3517 "\\|") "\\)\\>")
3233 org-not-done-regexp 3518 org-not-done-regexp
3234 (concat "\\<\\(" 3519 (concat "\\<\\("
3235 (mapconcat 'regexp-quote 3520 (mapconcat 'regexp-quote org-not-done-keywords "\\|")
3236 (nreverse (cdr (reverse org-todo-keywords)))
3237 "\\|")
3238 "\\)\\>") 3521 "\\)\\>")
3239 org-todo-line-regexp 3522 org-todo-line-regexp
3240 (concat "^\\(\\*+\\)[ \t]*\\(?:\\(" 3523 (concat "^\\(\\*+\\)[ \t]*\\(?:\\("
3241 (mapconcat 'regexp-quote org-todo-keywords "\\|") 3524 (mapconcat 'regexp-quote org-todo-keywords-1 "\\|")
3242 "\\)\\>\\)? *\\(.*\\)") 3525 "\\)\\>\\)? *\\(.*\\)")
3243 org-nl-done-regexp 3526 org-nl-done-regexp
3244 (concat "[\r\n]\\*+[ \t]+" org-done-string "\\>") 3527 (concat "[\r\n]\\*+[ \t]+"
3528 "\\(?:" (mapconcat 'regexp-quote org-done-keywords "\\|")
3529 "\\)" "\\>")
3245 org-todo-line-tags-regexp 3530 org-todo-line-tags-regexp
3246 (concat "^\\(\\*+\\)[ \t]*\\(?:\\(" 3531 (concat "^\\(\\*+\\)[ \t]*\\(?:\\("
3247 (mapconcat 'regexp-quote org-todo-keywords "\\|") 3532 (mapconcat 'regexp-quote org-todo-keywords-1 "\\|")
3248 "\\)\\>\\)? *\\(.*?\\([ \t]:[a-zA-Z0-9:_@]+:[ \t]*\\)?$\\)") 3533 "\\)\\>\\)? *\\(.*?\\([ \t]:[a-zA-Z0-9:_@]+:[ \t]*\\)?$\\)")
3249 org-looking-at-done-regexp (concat "^" org-done-string "\\>") 3534 org-looking-at-done-regexp
3535 (concat "^" "\\(?:"
3536 (mapconcat 'regexp-quote org-done-keywords "\\|") "\\)"
3537 "\\>")
3250 org-deadline-regexp (concat "\\<" org-deadline-string) 3538 org-deadline-regexp (concat "\\<" org-deadline-string)
3251 org-deadline-time-regexp 3539 org-deadline-time-regexp
3252 (concat "\\<" org-deadline-string " *<\\([^>]+\\)>") 3540 (concat "\\<" org-deadline-string " *<\\([^>]+\\)>")
@@ -3274,7 +3562,12 @@ means to push this value onto the list in the variable.")
3274 "\\|" org-deadline-string 3562 "\\|" org-deadline-string
3275 "\\|" org-closed-string 3563 "\\|" org-closed-string
3276 "\\|" org-clock-string "\\)\\)?" 3564 "\\|" org-clock-string "\\)\\)?"
3277 " *\\([[<][0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}[^]\r\n>]*?[]>]\\)")) 3565 " *\\([[<][0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [^]\r\n>]*?[]>]\\|<%%([^\r\n>]*>\\)")
3566 org-planning-or-clock-line-re
3567 (concat "\\(?:^[ \t]*\\(" org-scheduled-string
3568 "\\|" org-deadline-string
3569 "\\|" org-closed-string "\\|" org-clock-string "\\)\\>\\)")
3570 )
3278 3571
3279 (org-set-font-lock-defaults))) 3572 (org-set-font-lock-defaults)))
3280 3573
@@ -3325,6 +3618,7 @@ This is for getting out of special buffers like remember.")
3325(defvar annotation) ; from remember.el, dynamically scoped in `remember-mode' 3618(defvar annotation) ; from remember.el, dynamically scoped in `remember-mode'
3326(defvar initial) ; from remember.el, dynamically scoped in `remember-mode' 3619(defvar initial) ; from remember.el, dynamically scoped in `remember-mode'
3327(defvar org-latex-regexps) 3620(defvar org-latex-regexps)
3621(defvar constants-unit-system)
3328 3622
3329(defvar original-date) ; dynamically scoped in calendar.el does scope this 3623(defvar original-date) ; dynamically scoped in calendar.el does scope this
3330 3624
@@ -3394,6 +3688,7 @@ This is for getting out of special buffers like remember.")
3394 (overlay-get ovl prop))) 3688 (overlay-get ovl prop)))
3395(defun org-overlays-at (pos) 3689(defun org-overlays-at (pos)
3396 (if (featurep 'xemacs) (extents-at pos) (overlays-at pos))) 3690 (if (featurep 'xemacs) (extents-at pos) (overlays-at pos)))
3691;; FIXME: this is currently not used
3397(defun org-overlays-in (&optional start end) 3692(defun org-overlays-in (&optional start end)
3398 (if (featurep 'xemacs) 3693 (if (featurep 'xemacs)
3399 (extent-list nil start end) 3694 (extent-list nil start end)
@@ -3402,6 +3697,7 @@ This is for getting out of special buffers like remember.")
3402 (if (featurep 'xemacs) (extent-start-position o) (overlay-start o))) 3697 (if (featurep 'xemacs) (extent-start-position o) (overlay-start o)))
3403(defun org-overlay-end (o) 3698(defun org-overlay-end (o)
3404 (if (featurep 'xemacs) (extent-end-position o) (overlay-end o))) 3699 (if (featurep 'xemacs) (extent-end-position o) (overlay-end o)))
3700;; FIXME: this is currently not used
3405(defun org-find-overlays (prop &optional pos delete) 3701(defun org-find-overlays (prop &optional pos delete)
3406 "Find all overlays specifying PROP at POS or point. 3702 "Find all overlays specifying PROP at POS or point.
3407If DELETE is non-nil, delete all those overlays." 3703If DELETE is non-nil, delete all those overlays."
@@ -3455,6 +3751,7 @@ that can be added."
3455 (setq buffer-invisibility-spec 3751 (setq buffer-invisibility-spec
3456 (delete arg buffer-invisibility-spec))))) 3752 (delete arg buffer-invisibility-spec)))))
3457 3753
3754;; FIXME: this is currently not used
3458(defun org-in-invisibility-spec-p (arg) 3755(defun org-in-invisibility-spec-p (arg)
3459 "Is ARG a member of `buffer-invisibility-spec'?" 3756 "Is ARG a member of `buffer-invisibility-spec'?"
3460 (if (consp buffer-invisibility-spec) 3757 (if (consp buffer-invisibility-spec)
@@ -3477,6 +3774,7 @@ This variable is set by `org-before-change-function'.
3477(defvar org-mode-hook nil) 3774(defvar org-mode-hook nil)
3478(defvar org-inhibit-startup nil) ; Dynamically-scoped param. 3775(defvar org-inhibit-startup nil) ; Dynamically-scoped param.
3479(defvar org-agenda-keep-modes nil) ; Dynamically-scoped param. 3776(defvar org-agenda-keep-modes nil) ; Dynamically-scoped param.
3777(defvar org-table-buffer-is-an nil)
3480 3778
3481 3779
3482;;;###autoload 3780;;;###autoload
@@ -3521,7 +3819,6 @@ The following commands are available:
3521 (when (featurep 'xemacs) 3819 (when (featurep 'xemacs)
3522 (org-set-local 'line-move-ignore-invisible t)) 3820 (org-set-local 'line-move-ignore-invisible t))
3523 (setq outline-regexp "\\*+") 3821 (setq outline-regexp "\\*+")
3524 ;;(setq outline-regexp "\\(?:\\*+\\|[ \t]*\\(?:[-+*]\\|[0-9]+[.)]\\) \\)")
3525 (setq outline-level 'org-outline-level) 3822 (setq outline-level 'org-outline-level)
3526 (when (and org-ellipsis (stringp org-ellipsis) 3823 (when (and org-ellipsis (stringp org-ellipsis)
3527 (fboundp 'set-display-table-slot) (boundp 'buffer-display-table)) 3824 (fboundp 'set-display-table-slot) (boundp 'buffer-display-table))
@@ -3534,6 +3831,7 @@ The following commands are available:
3534 ;; Calc embedded 3831 ;; Calc embedded
3535 (org-set-local 'calc-embedded-open-mode "# ") 3832 (org-set-local 'calc-embedded-open-mode "# ")
3536 (modify-syntax-entry ?# "<") 3833 (modify-syntax-entry ?# "<")
3834 (modify-syntax-entry ?@ "w")
3537 (if org-startup-truncated (setq truncate-lines t)) 3835 (if org-startup-truncated (setq truncate-lines t))
3538 (org-set-local 'font-lock-unfontify-region-function 3836 (org-set-local 'font-lock-unfontify-region-function
3539 'org-unfontify-region) 3837 'org-unfontify-region)
@@ -3545,6 +3843,7 @@ The following commands are available:
3545 (org-add-hook 'kill-buffer-hook 'org-check-running-clock nil 'local) 3843 (org-add-hook 'kill-buffer-hook 'org-check-running-clock nil 'local)
3546 ;; Paragraphs and auto-filling 3844 ;; Paragraphs and auto-filling
3547 (org-set-autofill-regexps) 3845 (org-set-autofill-regexps)
3846 (setq indent-line-function 'org-indent-line-function)
3548 (org-update-radio-target-regexp) 3847 (org-update-radio-target-regexp)
3549 3848
3550 ;; Comment characters 3849 ;; Comment characters
@@ -3564,7 +3863,7 @@ The following commands are available:
3564 (if (and org-insert-mode-line-in-empty-file 3863 (if (and org-insert-mode-line-in-empty-file
3565 (interactive-p) 3864 (interactive-p)
3566 (= (point-min) (point-max))) 3865 (= (point-min) (point-max)))
3567 (insert " -*- mode: org -*-\n\n")) 3866 (insert "# -*- mode: org -*-\n\n"))
3568 3867
3569 (unless org-inhibit-startup 3868 (unless org-inhibit-startup
3570 (when org-startup-align-all-tables 3869 (when org-startup-align-all-tables
@@ -3578,6 +3877,8 @@ The following commands are available:
3578 (let ((this-command 'org-cycle) (last-command 'org-cycle)) 3877 (let ((this-command 'org-cycle) (last-command 'org-cycle))
3579 (org-cycle '(4)) (org-cycle '(4))))))) 3878 (org-cycle '(4)) (org-cycle '(4)))))))
3580 3879
3880(put 'org-mode 'flyspell-mode-predicate 'org-mode-flyspell-verify)
3881
3581(defsubst org-call-with-arg (command arg) 3882(defsubst org-call-with-arg (command arg)
3582 "Call COMMAND interactively, but pretend prefix are was ARG." 3883 "Call COMMAND interactively, but pretend prefix are was ARG."
3583 (let ((current-prefix-arg arg)) (call-interactively command))) 3884 (let ((current-prefix-arg arg)) (call-interactively command)))
@@ -3610,23 +3911,23 @@ that will be added to PLIST. Returns the string that was modified."
3610;;;; Font-Lock stuff, including the activators 3911;;;; Font-Lock stuff, including the activators
3611 3912
3612(defvar org-mouse-map (make-sparse-keymap)) 3913(defvar org-mouse-map (make-sparse-keymap))
3613(define-key org-mouse-map 3914(org-defkey org-mouse-map
3614 (if (featurep 'xemacs) [button2] [mouse-2]) 'org-open-at-mouse) 3915 (if (featurep 'xemacs) [button2] [mouse-2]) 'org-open-at-mouse)
3615(define-key org-mouse-map 3916(org-defkey org-mouse-map
3616 (if (featurep 'xemacs) [button3] [mouse-3]) 'org-find-file-at-mouse) 3917 (if (featurep 'xemacs) [button3] [mouse-3]) 'org-find-file-at-mouse)
3617(when org-mouse-1-follows-link 3918(when org-mouse-1-follows-link
3618 (define-key org-mouse-map [follow-link] 'mouse-face)) 3919 (org-defkey org-mouse-map [follow-link] 'mouse-face))
3619(when org-tab-follows-link 3920(when org-tab-follows-link
3620 (define-key org-mouse-map [(tab)] 'org-open-at-point) 3921 (org-defkey org-mouse-map [(tab)] 'org-open-at-point)
3621 (define-key org-mouse-map "\C-i" 'org-open-at-point)) 3922 (org-defkey org-mouse-map "\C-i" 'org-open-at-point))
3622(when org-return-follows-link 3923(when org-return-follows-link
3623 (define-key org-mouse-map [(return)] 'org-open-at-point) 3924 (org-defkey org-mouse-map [(return)] 'org-open-at-point)
3624 (define-key org-mouse-map "\C-m" 'org-open-at-point)) 3925 (org-defkey org-mouse-map "\C-m" 'org-open-at-point))
3625 3926
3626(require 'font-lock) 3927(require 'font-lock)
3627 3928
3628(defconst org-non-link-chars "]\t\n\r<>") 3929(defconst org-non-link-chars "]\t\n\r<>")
3629(defconst org-link-types '("https?" "ftp" "mailto" "file" "news" "bbdb" "vm" 3930(defconst org-link-types '("http" "https" "ftp" "mailto" "file" "news" "bbdb" "vm"
3630 "wl" "mhe" "rmail" "gnus" "shell" "info" "elisp")) 3931 "wl" "mhe" "rmail" "gnus" "shell" "info" "elisp"))
3631(defconst org-link-re-with-space 3932(defconst org-link-re-with-space
3632 (concat 3933 (concat
@@ -3679,21 +3980,17 @@ that will be added to PLIST. Returns the string that was modified."
3679 (concat "\\(" org-bracket-link-regexp "\\)\\|\\(" 3980 (concat "\\(" org-bracket-link-regexp "\\)\\|\\("
3680 org-angle-link-re "\\)\\|\\(" 3981 org-angle-link-re "\\)\\|\\("
3681 org-plain-link-re "\\)") 3982 org-plain-link-re "\\)")
3682 "Regular expression matching any link.") 3983 "Regular expression matching any link.")
3683 3984
3684(defconst org-ts-lengths 3985(defconst org-ts-regexp "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [^\r\n>]*?\\)>"
3685 (cons (length (format-time-string (car org-time-stamp-formats)))
3686 (length (format-time-string (cdr org-time-stamp-formats))))
3687 "This holds the lengths of the two different time formats.")
3688(defconst org-ts-regexp "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}[^\r\n>]*?\\)>"
3689 "Regular expression for fast time stamp matching.") 3986 "Regular expression for fast time stamp matching.")
3690(defconst org-ts-regexp-both "[[<]\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}[^\r\n>]*?\\)[]>]" 3987(defconst org-ts-regexp-both "[[<]\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [^\r\n>]*?\\)[]>]"
3691 "Regular expression for fast time stamp matching.") 3988 "Regular expression for fast time stamp matching.")
3692(defconst org-ts-regexp1 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\)\\([^]0-9>\r\n]*\\)\\(\\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)" 3989(defconst org-ts-regexp1 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\) \\([^]0-9>\r\n]*\\)\\(\\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)"
3693 "Regular expression matching time strings for analysis.") 3990 "Regular expression matching time strings for analysis.")
3694(defconst org-ts-regexp2 (concat "<" org-ts-regexp1 ">") 3991(defconst org-ts-regexp2 (concat "<" org-ts-regexp1 "[^>\n]\\{0,6\\}>")
3695 "Regular expression matching time stamps, with groups.") 3992 "Regular expression matching time stamps, with groups.")
3696(defconst org-ts-regexp3 (concat "[[<]" org-ts-regexp1 "[]>]") 3993(defconst org-ts-regexp3 (concat "[[<]" org-ts-regexp1 "[^]>\n]\\{0,6\\}[]>]")
3697 "Regular expression matching time stamps (also [..]), with groups.") 3994 "Regular expression matching time stamps (also [..]), with groups.")
3698(defconst org-tr-regexp (concat org-ts-regexp "--?-?" org-ts-regexp) 3995(defconst org-tr-regexp (concat org-ts-regexp "--?-?" org-ts-regexp)
3699 "Regular expression matching a time stamp range.") 3996 "Regular expression matching a time stamp range.")
@@ -3712,27 +4009,87 @@ The time stamps may be either active or inactive.")
3712 4009
3713(defun org-do-emphasis-faces (limit) 4010(defun org-do-emphasis-faces (limit)
3714 "Run through the buffer and add overlays to links." 4011 "Run through the buffer and add overlays to links."
3715 (if (re-search-forward org-emph-re limit t) 4012 (let (rtn)
3716 (progn 4013 (while (and (not rtn) (re-search-forward org-emph-re limit t))
3717 (font-lock-prepend-text-property (match-beginning 2) (match-end 2) 4014 (if (not (= (char-after (match-beginning 3))
3718 'face 4015 (char-after (match-beginning 4))))
3719 (nth 1 (assoc (match-string 3) 4016 (progn
3720 org-emphasis-alist))) 4017 (setq rtn t)
3721 (add-text-properties (match-beginning 2) (match-end 2) 4018 (font-lock-prepend-text-property (match-beginning 2) (match-end 2)
3722 '(font-lock-multiline t)) 4019 'face
3723 (backward-char 1) 4020 (nth 1 (assoc (match-string 3)
3724 t))) 4021 org-emphasis-alist)))
4022 (add-text-properties (match-beginning 2) (match-end 2)
4023 '(font-lock-multiline t))
4024 (backward-char 1))))
4025 rtn))
4026
4027(defun org-emphasize (&optional char)
4028 "Insert or change an emphasis, i.e. a font like bold or italic.
4029If there is an active region, change that region to a new emphasis.
4030If there is no region, just insert the marker characters and position
4031the cursor between them.
4032CHAR should be either the marker character, or the first character of the
4033HTML tag associated with that emphasis. If CHAR is a space, the means
4034to remove the emphasis of the selected region.
4035If char is not given (for example in an interactive call) it
4036will be prompted for."
4037 (interactive)
4038 (let ((eal org-emphasis-alist) e det
4039 (erc org-emphasis-regexp-components)
4040 (prompt "")
4041 (string "") beg end move tag c s)
4042 (if (org-region-active-p)
4043 (setq beg (region-beginning) end (region-end)
4044 string (buffer-substring beg end))
4045 (setq move t))
4046
4047 (while (setq e (pop eal))
4048 (setq tag (car (org-split-string (nth 2 e) "[ <>/]+"))
4049 c (aref tag 0))
4050 (push (cons c (string-to-char (car e))) det)
4051 (setq prompt (concat prompt (format " [%s%c]%s" (car e) c
4052 (substring tag 1)))))
4053 (unless char
4054 (message "%s" (concat "Emphasis marker or tag:" prompt))
4055 (setq char (read-char-exclusive)))
4056 (setq char (or (cdr (assoc char det)) char))
4057 (if (equal char ?\ )
4058 (setq s "" move nil)
4059 (unless (assoc (char-to-string char) org-emphasis-alist)
4060 (error "No such emphasis marker: \"%c\"" char))
4061 (setq s (char-to-string char)))
4062 (while (and (> (length string) 1)
4063 (equal (substring string 0 1) (substring string -1))
4064 (assoc (substring string 0 1) org-emphasis-alist))
4065 (setq string (substring string 1 -1)))
4066 (setq string (concat s string s))
4067 (if beg (delete-region beg end))
4068 (unless (or (bolp)
4069 (string-match (concat "[" (nth 0 erc) "\n]")
4070 (char-to-string (char-before (point)))))
4071 (insert " "))
4072 (unless (string-match (concat "[" (nth 1 erc) "\n]")
4073 (char-to-string (char-after (point))))
4074 (insert " ") (backward-char 1))
4075 (insert string)
4076 (and move (backward-char 1))))
3725 4077
3726(defun org-activate-plain-links (limit) 4078(defun org-activate-plain-links (limit)
3727 "Run through the buffer and add overlays to links." 4079 "Run through the buffer and add overlays to links."
3728 (if (re-search-forward org-plain-link-re limit t) 4080 (catch 'exit
3729 (progn 4081 (let (f)
3730 (add-text-properties (match-beginning 0) (match-end 0) 4082 (while (re-search-forward org-plain-link-re limit t)
3731 (list 'mouse-face 'highlight 4083 (setq f (get-text-property (match-beginning 0) 'face))
3732 'rear-nonsticky t 4084 (if (or (eq f 'org-tag)
3733 'keymap org-mouse-map 4085 (and (listp f) (memq 'org-tag f)))
3734 )) 4086 nil
3735 t))) 4087 (add-text-properties (match-beginning 0) (match-end 0)
4088 (list 'mouse-face 'highlight
4089 'rear-nonsticky t
4090 'keymap org-mouse-map
4091 ))
4092 (throw 'exit t))))))
3736 4093
3737(defun org-activate-angle-links (limit) 4094(defun org-activate-angle-links (limit)
3738 "Run through the buffer and add overlays to links." 4095 "Run through the buffer and add overlays to links."
@@ -3881,11 +4238,6 @@ between words."
3881 'keymap org-mouse-map)) 4238 'keymap org-mouse-map))
3882 t))) 4239 t)))
3883 4240
3884(defun org-font-lock-level ()
3885 (save-excursion
3886 (org-back-to-heading t)
3887 (- (match-end 0) (match-beginning 0))))
3888
3889(defun org-outline-level () 4241(defun org-outline-level ()
3890 (save-excursion 4242 (save-excursion
3891 (looking-at outline-regexp) 4243 (looking-at outline-regexp)
@@ -3906,20 +4258,20 @@ between words."
3906 '("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)" 4258 '("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)"
3907 (1 'org-table)) 4259 (1 'org-table))
3908 ;; Links 4260 ;; Links
4261 (if (memq 'tag lk) '(org-activate-tags (1 'org-tag prepend)))
3909 (if (memq 'angle lk) '(org-activate-angle-links (0 'org-link t))) 4262 (if (memq 'angle lk) '(org-activate-angle-links (0 'org-link t)))
3910 (if (memq 'plain lk) '(org-activate-plain-links (0 'org-link t))) 4263 (if (memq 'plain lk) '(org-activate-plain-links (0 'org-link t)))
3911 (if (memq 'bracket lk) '(org-activate-bracket-links (0 'org-link t))) 4264 (if (memq 'bracket lk) '(org-activate-bracket-links (0 'org-link t)))
3912 (if (memq 'radio lk) '(org-activate-target-links (0 'org-link t))) 4265 (if (memq 'radio lk) '(org-activate-target-links (0 'org-link t)))
3913 (if (memq 'date lk) '(org-activate-dates (0 'org-date t))) 4266 (if (memq 'date lk) '(org-activate-dates (0 'org-date t)))
3914 (if (memq 'tag lk) '(org-activate-tags (1 'org-tag prepend))) 4267 '("^&?%%(.*\\|<%%([^>\n]*?>" (0 'org-sexp-date t))
3915 '(org-hide-wide-columns (0 nil append)) 4268 '(org-hide-wide-columns (0 nil append))
3916 ;; TODO lines 4269 ;; TODO lines
3917 (list (concat "^\\*+[ \t]*" org-not-done-regexp) 4270 (list (concat "^\\*+[ \t]*" org-not-done-regexp)
3918 '(1 'org-todo t)) 4271 '(1 'org-todo t))
3919 ;; Priorities 4272 ;; Priorities
3920 (list (concat "\\[#[A-Z]\\]") '(0 'org-special-keyword t)) 4273 (list (concat "\\[#[A-Z0-9]\\]") '(0 'org-special-keyword t))
3921 ;; Special keywords 4274 ;; Special keywords
3922 (list org-repeat-re '(0 'org-special-keyword t))
3923 (list (concat "\\<" org-deadline-string) '(0 'org-special-keyword t)) 4275 (list (concat "\\<" org-deadline-string) '(0 'org-special-keyword t))
3924 (list (concat "\\<" org-scheduled-string) '(0 'org-special-keyword t)) 4276 (list (concat "\\<" org-scheduled-string) '(0 'org-special-keyword t))
3925 (list (concat "\\<" org-closed-string) '(0 'org-special-keyword t)) 4277 (list (concat "\\<" org-closed-string) '(0 'org-special-keyword t))
@@ -3942,9 +4294,13 @@ between words."
3942 '("^#.*" (0 'font-lock-comment-face t)) 4294 '("^#.*" (0 'font-lock-comment-face t))
3943 ;; DONE 4295 ;; DONE
3944 (if org-fontify-done-headline 4296 (if org-fontify-done-headline
3945 (list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\(.*\\)\\>") 4297 (list (concat "^[*]+ +\\<\\("
4298 (mapconcat 'regexp-quote org-done-keywords "\\|")
4299 "\\)\\(.*\\)")
3946 '(1 'org-done t) '(2 'org-headline-done t)) 4300 '(1 'org-done t) '(2 'org-headline-done t))
3947 (list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\>") 4301 (list (concat "^[*]+ +\\<\\("
4302 (mapconcat 'regexp-quote org-done-keywords "\\|")
4303 "\\)\\>")
3948 '(1 'org-done t))) 4304 '(1 'org-done t)))
3949 ;; Table stuff 4305 ;; Table stuff
3950 '("^[ \t]*\\(:.*\\)" (1 'org-table t)) 4306 '("^[ \t]*\\(:.*\\)" (1 'org-table t))
@@ -4022,8 +4378,8 @@ between words."
4022 `indent-relative', like TAB normally does. See the option 4378 `indent-relative', like TAB normally does. See the option
4023 `org-cycle-emulate-tab' for details. 4379 `org-cycle-emulate-tab' for details.
4024 4380
4025- Special case: if point is the the beginning of the buffer and there is 4381- Special case: if point is the beginning of the buffer and there is no
4026 no headline in line 1, this function will act as if called with prefix arg." 4382 headline in line 1, this function will act as if called with prefix arg."
4027 (interactive "P") 4383 (interactive "P")
4028 (let* ((outline-regexp 4384 (let* ((outline-regexp
4029 (if (and (org-mode-p) org-cycle-include-plain-lists) 4385 (if (and (org-mode-p) org-cycle-include-plain-lists)
@@ -4088,7 +4444,8 @@ between words."
4088 (- (funcall outline-level) arg))) 4444 (- (funcall outline-level) arg)))
4089 (org-show-subtree))) 4445 (org-show-subtree)))
4090 4446
4091 ((save-excursion (beginning-of-line 1) (looking-at outline-regexp)) 4447 ((and (save-excursion (beginning-of-line 1) (looking-at outline-regexp))
4448 (or (bolp) (not (eq org-cycle-emulate-tab 'exc-hl-bol))))
4092 ;; At a heading: rotate between three different views 4449 ;; At a heading: rotate between three different views
4093 (org-back-to-heading) 4450 (org-back-to-heading)
4094 (let ((goal-column 0) eoh eol eos) 4451 (let ((goal-column 0) eoh eol eos)
@@ -4102,20 +4459,30 @@ between words."
4102 (beginning-of-line 2)) (setq eol (point))) 4459 (beginning-of-line 2)) (setq eol (point)))
4103 (outline-end-of-heading) (setq eoh (point)) 4460 (outline-end-of-heading) (setq eoh (point))
4104 (org-end-of-subtree t) 4461 (org-end-of-subtree t)
4105 (skip-chars-forward " \t\n") 4462 (unless (eobp)
4106 (beginning-of-line 1) ; in case this is an item 4463 (skip-chars-forward " \t\n")
4464 (beginning-of-line 1) ; in case this is an item
4465 )
4107 (setq eos (1- (point)))) 4466 (setq eos (1- (point))))
4108 ;; Find out what to do next and set `this-command' 4467 ;; Find out what to do next and set `this-command'
4109 (cond 4468 (cond
4110 ((= eos eoh) 4469 ((= eos eoh)
4111 ;; Nothing is hidden behind this heading 4470 ;; Nothing is hidden behind this heading
4112 (message "EMPTY ENTRY") 4471 (message "EMPTY ENTRY")
4113 (setq org-cycle-subtree-status nil)) 4472 (setq org-cycle-subtree-status nil)
4473 (save-excursion
4474 (goto-char eos)
4475 (outline-next-heading)
4476 (if (org-invisible-p) (org-flag-heading nil))))
4114 ((>= eol eos) 4477 ((>= eol eos)
4115 ;; Entire subtree is hidden in one line: open it 4478 ;; Entire subtree is hidden in one line: open it
4116 (org-show-entry) 4479 (org-show-entry)
4117 (show-children) 4480 (show-children)
4118 (message "CHILDREN") 4481 (message "CHILDREN")
4482 (save-excursion
4483 (goto-char eos)
4484 (outline-next-heading)
4485 (if (org-invisible-p) (org-flag-heading nil)))
4119 (setq org-cycle-subtree-status 'children) 4486 (setq org-cycle-subtree-status 'children)
4120 (run-hook-with-args 'org-cycle-hook 'children)) 4487 (run-hook-with-args 'org-cycle-hook 'children))
4121 ((and (eq last-command this-command) 4488 ((and (eq last-command this-command)
@@ -4137,6 +4504,11 @@ between words."
4137 4504
4138 ((org-try-cdlatex-tab)) 4505 ((org-try-cdlatex-tab))
4139 4506
4507 ((and (eq org-cycle-emulate-tab 'exc-hl-bol)
4508 (or (not (bolp))
4509 (not (looking-at outline-regexp))))
4510 (call-interactively (global-key-binding "\t")))
4511
4140 ((if (and (memq org-cycle-emulate-tab '(white whitestart)) 4512 ((if (and (memq org-cycle-emulate-tab '(white whitestart))
4141 (save-excursion (beginning-of-line 1) (looking-at "[ \t]*")) 4513 (save-excursion (beginning-of-line 1) (looking-at "[ \t]*"))
4142 (or (and (eq org-cycle-emulate-tab 'white) 4514 (or (and (eq org-cycle-emulate-tab 'white)
@@ -4151,7 +4523,7 @@ between words."
4151 (progn 4523 (progn
4152 (beginning-of-line 1) 4524 (beginning-of-line 1)
4153 (and (looking-at "[ \t]+") (replace-match "")))) 4525 (and (looking-at "[ \t]+") (replace-match ""))))
4154 (indent-relative)) 4526 (call-interactively (global-key-binding "\t")))
4155 4527
4156 (t (save-excursion 4528 (t (save-excursion
4157 (org-back-to-heading) 4529 (org-back-to-heading)
@@ -4177,13 +4549,13 @@ of the first headline in the buffer. This is important, because if the
4177first headline is not level one, then (hide-sublevels 1) gives confusing 4549first headline is not level one, then (hide-sublevels 1) gives confusing
4178results." 4550results."
4179 (interactive) 4551 (interactive)
4180 (hide-sublevels (save-excursion 4552 (let ((level (save-excursion
4181 (goto-char (point-min)) 4553 (goto-char (point-min))
4182 (if (re-search-forward (concat "^" outline-regexp) nil t) 4554 (if (re-search-forward (concat "^" outline-regexp) nil t)
4183 (progn 4555 (progn
4184 (goto-char (match-beginning 0)) 4556 (goto-char (match-beginning 0))
4185 (funcall outline-level)) 4557 (funcall outline-level))))))
4186 1)))) 4558 (and level (hide-sublevels level))))
4187 4559
4188(defun org-content (&optional arg) 4560(defun org-content (&optional arg)
4189 "Show all headlines in the buffer, like a table of contents. 4561 "Show all headlines in the buffer, like a table of contents.
@@ -4210,13 +4582,53 @@ With numerical argument N, show content up to level N."
4210This function is the default value of the hook `org-cycle-hook'." 4582This function is the default value of the hook `org-cycle-hook'."
4211 (when (get-buffer-window (current-buffer)) 4583 (when (get-buffer-window (current-buffer))
4212 (cond 4584 (cond
4213 ((eq state 'overview) (org-first-headline-recenter 1)) 4585; ((eq state 'overview) (org-first-headline-recenter 1))
4586; ((eq state 'overview) (org-beginning-of-line))
4214 ((eq state 'content) nil) 4587 ((eq state 'content) nil)
4215 ((eq state 'all) nil) 4588 ((eq state 'all) nil)
4216 ((eq state 'folded) nil) 4589 ((eq state 'folded) nil)
4217 ((eq state 'children) (or (org-subtree-end-visible-p) (recenter 1))) 4590 ((eq state 'children) (or (org-subtree-end-visible-p) (recenter 1)))
4218 ((eq state 'subtree) (or (org-subtree-end-visible-p) (recenter 1)))))) 4591 ((eq state 'subtree) (or (org-subtree-end-visible-p) (recenter 1))))))
4219 4592
4593
4594(defun org-cycle-show-empty-lines (state)
4595 "Show empty lines above all visible headlines.
4596The region to be covered depends on STATE when called through
4597`org-cycle-hook'. Lisp program can use t for STATE to get the
4598entire buffer covered. Note that an empty line is only shown if there
4599are at least `org-cycle-separator-lines' empty lines before the headeline."
4600 (when (> org-cycle-separator-lines 0)
4601 (save-excursion
4602 (let* ((n org-cycle-separator-lines)
4603 (re (cond
4604 ((= n 1) "\\(\n[ \t]*\n\\*+\\) ")
4605 ((= n 2) "^[ \t]*\\(\n[ \t]*\n\\*+\\) ")
4606 (t (let ((ns (number-to-string (- n 2))))
4607 (concat "^\\(?:[ \t]*\n\\)\\{" ns "," ns "\\}"
4608 "[ \t]*\\(\n[ \t]*\n\\*+\\) ")))))
4609 beg end)
4610 (cond
4611 ((memq state '(overview contents t))
4612 (setq beg (point-min) end (point-max)))
4613 ((memq state '(children folded))
4614 (setq beg (point) end (progn (org-end-of-subtree t t)
4615 (beginning-of-line 2)
4616 (point)))))
4617 (when beg
4618 (goto-char beg)
4619 (while (re-search-forward re end t)
4620 (if (not (get-char-property (match-end 1) 'invisible))
4621 (outline-flag-region
4622 (match-beginning 1) (match-end 1) nil)))))))
4623 ;; Never hide empty lines at the end of the file.
4624 (save-excursion
4625 (goto-char (point-max))
4626 (outline-previous-heading)
4627 (outline-end-of-heading)
4628 (if (and (looking-at "[ \t\n]+")
4629 (= (match-end 0) (point-max)))
4630 (outline-flag-region (point) (match-end 0) nil))))
4631
4220(defun org-subtree-end-visible-p () 4632(defun org-subtree-end-visible-p ()
4221 "Is the end of the current subtree visible?" 4633 "Is the end of the current subtree visible?"
4222 (pos-visible-in-window-p 4634 (pos-visible-in-window-p
@@ -4238,27 +4650,27 @@ Optional argument N means, put the headline into the Nth line of the window."
4238(let ((cmds '(isearch-forward isearch-backward)) cmd) 4650(let ((cmds '(isearch-forward isearch-backward)) cmd)
4239 (while (setq cmd (pop cmds)) 4651 (while (setq cmd (pop cmds))
4240 (substitute-key-definition cmd cmd org-goto-map global-map))) 4652 (substitute-key-definition cmd cmd org-goto-map global-map)))
4241(define-key org-goto-map "\C-m" 'org-goto-ret) 4653(org-defkey org-goto-map "\C-m" 'org-goto-ret)
4242(define-key org-goto-map [(left)] 'org-goto-left) 4654(org-defkey org-goto-map [(left)] 'org-goto-left)
4243(define-key org-goto-map [(right)] 'org-goto-right) 4655(org-defkey org-goto-map [(right)] 'org-goto-right)
4244(define-key org-goto-map [(?q)] 'org-goto-quit) 4656(org-defkey org-goto-map [(?q)] 'org-goto-quit)
4245(define-key org-goto-map [(control ?g)] 'org-goto-quit) 4657(org-defkey org-goto-map [(control ?g)] 'org-goto-quit)
4246(define-key org-goto-map "\C-i" 'org-cycle) 4658(org-defkey org-goto-map "\C-i" 'org-cycle)
4247(define-key org-goto-map [(tab)] 'org-cycle) 4659(org-defkey org-goto-map [(tab)] 'org-cycle)
4248(define-key org-goto-map [(down)] 'outline-next-visible-heading) 4660(org-defkey org-goto-map [(down)] 'outline-next-visible-heading)
4249(define-key org-goto-map [(up)] 'outline-previous-visible-heading) 4661(org-defkey org-goto-map [(up)] 'outline-previous-visible-heading)
4250(define-key org-goto-map "n" 'outline-next-visible-heading) 4662(org-defkey org-goto-map "n" 'outline-next-visible-heading)
4251(define-key org-goto-map "p" 'outline-previous-visible-heading) 4663(org-defkey org-goto-map "p" 'outline-previous-visible-heading)
4252(define-key org-goto-map "f" 'outline-forward-same-level) 4664(org-defkey org-goto-map "f" 'outline-forward-same-level)
4253(define-key org-goto-map "b" 'outline-backward-same-level) 4665(org-defkey org-goto-map "b" 'outline-backward-same-level)
4254(define-key org-goto-map "u" 'outline-up-heading) 4666(org-defkey org-goto-map "u" 'outline-up-heading)
4255(define-key org-goto-map "\C-c\C-n" 'outline-next-visible-heading) 4667(org-defkey org-goto-map "\C-c\C-n" 'outline-next-visible-heading)
4256(define-key org-goto-map "\C-c\C-p" 'outline-previous-visible-heading) 4668(org-defkey org-goto-map "\C-c\C-p" 'outline-previous-visible-heading)
4257(define-key org-goto-map "\C-c\C-f" 'outline-forward-same-level) 4669(org-defkey org-goto-map "\C-c\C-f" 'outline-forward-same-level)
4258(define-key org-goto-map "\C-c\C-b" 'outline-backward-same-level) 4670(org-defkey org-goto-map "\C-c\C-b" 'outline-backward-same-level)
4259(define-key org-goto-map "\C-c\C-u" 'outline-up-heading) 4671(org-defkey org-goto-map "\C-c\C-u" 'outline-up-heading)
4260(let ((l '(1 2 3 4 5 6 7 8 9 0))) 4672(let ((l '(1 2 3 4 5 6 7 8 9 0)))
4261 (while l (define-key org-goto-map (int-to-string (pop l)) 'digit-argument))) 4673 (while l (org-defkey org-goto-map (int-to-string (pop l)) 'digit-argument)))
4262 4674
4263(defconst org-goto-help 4675(defconst org-goto-help
4264"Select a location to jump to, press RET 4676"Select a location to jump to, press RET
@@ -4474,10 +4886,13 @@ the current headline."
4474 pos) 4886 pos)
4475 (cond 4887 (cond
4476 ((and (org-on-heading-p) (bolp) 4888 ((and (org-on-heading-p) (bolp)
4477 (save-excursion (backward-char 1) (not (org-invisible-p)))) 4889 (or (bobp)
4890 (save-excursion (backward-char 1) (not (org-invisible-p)))))
4478 (open-line (if blank 2 1))) 4891 (open-line (if blank 2 1)))
4479 ((and (bolp) (save-excursion 4892 ((and (bolp)
4480 (backward-char 1) (not (org-invisible-p)))) 4893 (or (bobp)
4894 (save-excursion
4895 (backward-char 1) (not (org-invisible-p)))))
4481 nil) 4896 nil)
4482 (t (newline (if blank 2 1)))) 4897 (t (newline (if blank 2 1))))
4483 (insert head) (just-one-space) 4898 (insert head) (just-one-space)
@@ -4500,8 +4915,8 @@ state (TODO by default). Also with prefix arg, force first state."
4500 (looking-at org-todo-line-regexp)) 4915 (looking-at org-todo-line-regexp))
4501 (if (or arg 4916 (if (or arg
4502 (not (match-beginning 2)) 4917 (not (match-beginning 2))
4503 (equal (match-string 2) org-done-string)) 4918 (member (match-string 2) org-done-keywords))
4504 (insert (car org-todo-keywords) " ") 4919 (insert (car org-todo-keywords-1) " ")
4505 (insert (match-string 2) " ")))) 4920 (insert (match-string 2) " "))))
4506 4921
4507;;; Promotion and Demotion 4922;;; Promotion and Demotion
@@ -4724,6 +5139,7 @@ is signaled in this case."
4724 (setq txt (buffer-substring beg end)) 5139 (setq txt (buffer-substring beg end))
4725 (delete-region beg end) 5140 (delete-region beg end)
4726 (insert txt) 5141 (insert txt)
5142 (or (bolp) (insert "\n"))
4727 (goto-char ins-point) 5143 (goto-char ins-point)
4728 (if folded (hide-subtree)) 5144 (if folded (hide-subtree))
4729 (move-marker ins-point nil))) 5145 (move-marker ins-point nil)))
@@ -4749,7 +5165,9 @@ This is a short-hand for marking the subtree and then copying it.
4749If CUT is non-nil, actually cut the subtree." 5165If CUT is non-nil, actually cut the subtree."
4750 (interactive) 5166 (interactive)
4751 (let (beg end folded) 5167 (let (beg end folded)
4752 (org-back-to-heading) 5168 (if (interactive-p)
5169 (org-back-to-heading nil) ; take what looks like a subtree
5170 (org-back-to-heading t)) ; take what is really there
4753 (setq beg (point)) 5171 (setq beg (point))
4754 (save-match-data 5172 (save-match-data
4755 (save-excursion (outline-end-of-heading) 5173 (save-excursion (outline-end-of-heading)
@@ -4888,7 +5306,7 @@ If optional TXT is given, check this string instead of the current kill."
4888 (save-excursion 5306 (save-excursion
4889 (narrow-to-region 5307 (narrow-to-region
4890 (progn (org-back-to-heading) (point)) 5308 (progn (org-back-to-heading) (point))
4891 (progn (org-end-of-subtree t) (point))))) 5309 (progn (org-end-of-subtree t t) (point)))))
4892 5310
4893 5311
4894;;; Outline Sorting 5312;;; Outline Sorting
@@ -5130,7 +5548,7 @@ with the current numbers. With optional prefix argument ALL, do this for
5130the whole buffer." 5548the whole buffer."
5131 (interactive "P") 5549 (interactive "P")
5132 (save-excursion 5550 (save-excursion
5133 (let* ((buffer-invisibility-spec nil) ; Emacs 21 compatibility 5551 (let* ((buffer-invisibility-spec (org-inhibit-invisibility)) ; Emacs 21
5134 (beg (progn (outline-back-to-heading) (point))) 5552 (beg (progn (outline-back-to-heading) (point)))
5135 (end (move-marker (make-marker) 5553 (end (move-marker (make-marker)
5136 (progn (outline-next-heading) (point)))) 5554 (progn (outline-next-heading) (point))))
@@ -5214,13 +5632,24 @@ leave it alone. If it is larger than ind, set it to the target."
5214 (concat (make-string i1 ?\ ) l) 5632 (concat (make-string i1 ?\ ) l)
5215 l))) 5633 l)))
5216 5634
5635(defcustom org-empty-line-terminates-plain-lists nil
5636 "Non-nil means, an empty line ends all plain list levels.
5637When nil, empty lines are part of the preceeding item."
5638 :group 'org-plain-lists
5639 :type 'boolean)
5640
5217(defun org-beginning-of-item () 5641(defun org-beginning-of-item ()
5218 "Go to the beginning of the current hand-formatted item. 5642 "Go to the beginning of the current hand-formatted item.
5219If the cursor is not in an item, throw an error." 5643If the cursor is not in an item, throw an error."
5220 (interactive) 5644 (interactive)
5221 (let ((pos (point)) 5645 (let ((pos (point))
5222 (limit (save-excursion (org-back-to-heading) 5646 (limit (save-excursion
5223 (beginning-of-line 2) (point))) 5647 (condition-case nil
5648 (progn
5649 (org-back-to-heading)
5650 (beginning-of-line 2) (point))
5651 (error (point-min)))))
5652 (ind-empty (if org-empty-line-terminates-plain-lists 0 10000))
5224 ind ind1) 5653 ind ind1)
5225 (if (org-at-item-p) 5654 (if (org-at-item-p)
5226 (beginning-of-line 1) 5655 (beginning-of-line 1)
@@ -5230,12 +5659,14 @@ If the cursor is not in an item, throw an error."
5230 (if (catch 'exit 5659 (if (catch 'exit
5231 (while t 5660 (while t
5232 (beginning-of-line 0) 5661 (beginning-of-line 0)
5233 (if (< (point) limit) (throw 'exit nil)) 5662 (if (or (bobp) (< (point) limit)) (throw 'exit nil))
5234 (unless (looking-at "[ \t]*$") 5663
5664 (if (looking-at "[ \t]*$")
5665 (setq ind1 ind-empty)
5235 (skip-chars-forward " \t") 5666 (skip-chars-forward " \t")
5236 (setq ind1 (current-column)) 5667 (setq ind1 (current-column)))
5237 (if (< ind1 ind) 5668 (if (< ind1 ind)
5238 (throw 'exit (org-at-item-p)))))) 5669 (progn (beginning-of-line 1) (throw 'exit (org-at-item-p))))))
5239 nil 5670 nil
5240 (goto-char pos) 5671 (goto-char pos)
5241 (error "Not in an item"))))) 5672 (error "Not in an item")))))
@@ -5244,22 +5675,27 @@ If the cursor is not in an item, throw an error."
5244 "Go to the end of the current hand-formatted item. 5675 "Go to the end of the current hand-formatted item.
5245If the cursor is not in an item, throw an error." 5676If the cursor is not in an item, throw an error."
5246 (interactive) 5677 (interactive)
5247 (let ((pos (point)) 5678 (let* ((pos (point))
5248 (limit (save-excursion (outline-next-heading) (point))) 5679 ind1
5249 (ind (save-excursion 5680 (ind-empty (if org-empty-line-terminates-plain-lists 0 10000))
5250 (org-beginning-of-item) 5681 (limit (save-excursion (outline-next-heading) (point)))
5251 (skip-chars-forward " \t") 5682 (ind (save-excursion
5252 (current-column))) 5683 (org-beginning-of-item)
5253 ind1) 5684 (skip-chars-forward " \t")
5254 (if (catch 'exit 5685 (current-column)))
5255 (while t 5686 (end (catch 'exit
5256 (beginning-of-line 2) 5687 (while t
5257 (if (>= (point) limit) (throw 'exit t)) 5688 (beginning-of-line 2)
5258 (unless (looking-at "[ \t]*$") 5689 (if (eobp) (throw 'exit (point)))
5259 (skip-chars-forward " \t") 5690 (if (>= (point) limit) (throw 'exit (point-at-bol)))
5260 (setq ind1 (current-column)) 5691 (if (looking-at "[ \t]*$")
5261 (if (<= ind1 ind) (throw 'exit t))))) 5692 (setq ind1 ind-empty)
5262 (beginning-of-line 1) 5693 (skip-chars-forward " \t")
5694 (setq ind1 (current-column)))
5695 (if (<= ind1 ind)
5696 (throw 'exit (point-at-bol)))))))
5697 (if end
5698 (goto-char end)
5263 (goto-char pos) 5699 (goto-char pos)
5264 (error "Not in an item")))) 5700 (error "Not in an item"))))
5265 5701
@@ -5338,7 +5774,11 @@ so this really moves item trees."
5338 (while t 5774 (while t
5339 (beginning-of-line 0) 5775 (beginning-of-line 0)
5340 (if (looking-at "[ \t]*$") 5776 (if (looking-at "[ \t]*$")
5341 nil 5777 (if org-empty-line-terminates-plain-lists
5778 (progn
5779 (goto-char pos)
5780 (error "Cannot move this item further up"))
5781 nil)
5342 (if (<= (setq ind1 (org-get-indentation)) ind) 5782 (if (<= (setq ind1 (org-get-indentation)) ind)
5343 (throw 'exit t))))) 5783 (throw 'exit t)))))
5344 (condition-case nil 5784 (condition-case nil
@@ -5468,16 +5908,16 @@ When called with prefix argument FIND-DONE, find whole trees without any
5468open TODO items and archive them (after getting confirmation from the user). 5908open TODO items and archive them (after getting confirmation from the user).
5469If the cursor is not at a headline when this comand is called, try all level 5909If the cursor is not at a headline when this comand is called, try all level
54701 trees. If the cursor is on a headline, only try the direct children of 59101 trees. If the cursor is on a headline, only try the direct children of
5471this heading. " 5911this heading."
5472 (interactive "P") 5912 (interactive "P")
5473 (if find-done 5913 (if find-done
5474 (org-archive-all-done) 5914 (org-archive-all-done)
5475 ;; Save all relevant TODO keyword-relatex variables 5915 ;; Save all relevant TODO keyword-relatex variables
5476 5916
5477 (let ((tr-org-todo-line-regexp org-todo-line-regexp) ; keep despite compiler 5917 (let ((tr-org-todo-line-regexp org-todo-line-regexp) ; keep despite compiler
5478 (tr-org-todo-keywords org-todo-keywords) 5918 (tr-org-todo-keywords-1 org-todo-keywords-1)
5479 (tr-org-todo-interpretation org-todo-interpretation) 5919 (tr-org-todo-kwd-alist org-todo-kwd-alist)
5480 (tr-org-done-string org-done-string) 5920 (tr-org-done-keywords org-done-keywords)
5481 (tr-org-todo-regexp org-todo-regexp) 5921 (tr-org-todo-regexp org-todo-regexp)
5482 (tr-org-todo-line-regexp org-todo-line-regexp) 5922 (tr-org-todo-line-regexp org-todo-line-regexp)
5483 (tr-org-odd-levels-only org-odd-levels-only) 5923 (tr-org-odd-levels-only org-odd-levels-only)
@@ -5488,8 +5928,10 @@ this heading. "
5488 5928
5489 ;; Try to find a local archive location 5929 ;; Try to find a local archive location
5490 (save-excursion 5930 (save-excursion
5491 (if (or (re-search-backward re nil t) (re-search-forward re nil t)) 5931 (save-restriction
5492 (setq org-archive-location (match-string 1)))) 5932 (widen)
5933 (if (or (re-search-backward re nil t) (re-search-forward re nil t))
5934 (setq org-archive-location (match-string 1)))))
5493 5935
5494 (if (string-match "\\(.*\\)::\\(.*\\)" org-archive-location) 5936 (if (string-match "\\(.*\\)::\\(.*\\)" org-archive-location)
5495 (progn 5937 (progn
@@ -5516,7 +5958,8 @@ this heading. "
5516 ;; Enforce org-mode for the archive buffer 5958 ;; Enforce org-mode for the archive buffer
5517 (if (not (org-mode-p)) 5959 (if (not (org-mode-p))
5518 ;; Force the mode for future visits. 5960 ;; Force the mode for future visits.
5519 (let ((org-insert-mode-line-in-empty-file t)) 5961 (let ((org-insert-mode-line-in-empty-file t)
5962 (org-inhibit-startup t))
5520 (call-interactively 'org-mode))) 5963 (call-interactively 'org-mode)))
5521 (when newfile-p 5964 (when newfile-p
5522 (goto-char (point-max)) 5965 (goto-char (point-max))
@@ -5524,13 +5967,13 @@ this heading. "
5524 (buffer-file-name this-buffer)))) 5967 (buffer-file-name this-buffer))))
5525 ;; Force the TODO keywords of the original buffer 5968 ;; Force the TODO keywords of the original buffer
5526 (let ((org-todo-line-regexp tr-org-todo-line-regexp) 5969 (let ((org-todo-line-regexp tr-org-todo-line-regexp)
5527 (org-todo-keywords tr-org-todo-keywords) 5970 (org-todo-keywords-1 tr-org-todo-keywords-1)
5528 (org-todo-interpretation tr-org-todo-interpretation) 5971 (org-todo-kwd-alist tr-org-todo-kwd-alist)
5529 (org-done-string tr-org-done-string) 5972 (org-done-keywords tr-org-done-keywords)
5530 (org-todo-regexp tr-org-todo-regexp) 5973 (org-todo-regexp tr-org-todo-regexp)
5531 (org-todo-line-regexp tr-org-todo-line-regexp) 5974 (org-todo-line-regexp tr-org-todo-line-regexp)
5532 (org-odd-levels-only 5975 (org-odd-levels-only
5533 (if (local-variable-p 'org-odd-levels-only) 5976 (if (local-variable-p 'org-odd-levels-only (current-buffer))
5534 org-odd-levels-only 5977 org-odd-levels-only
5535 tr-org-odd-levels-only))) 5978 tr-org-odd-levels-only)))
5536 (goto-char (point-min)) 5979 (goto-char (point-min))
@@ -5556,10 +5999,10 @@ this heading. "
5556 (goto-char (point-max)) (insert "\n")) 5999 (goto-char (point-max)) (insert "\n"))
5557 ;; Paste 6000 ;; Paste
5558 (org-paste-subtree (org-get-legal-level level 1)) 6001 (org-paste-subtree (org-get-legal-level level 1))
5559 ;; Mark the entry as done, i.e. set to last work in org-todo-keywords 6002 ;; Mark the entry as done, i.e. set to last word in org-todo-keywords-1 FIXME: not right anymore!!!!!!!
5560 (if org-archive-mark-done 6003 (if org-archive-mark-done
5561 (let (org-log-done) 6004 (let (org-log-done)
5562 (org-todo (length org-todo-keywords)))) 6005 (org-todo (length org-todo-keywords-1))))
5563 ;; Move cursor to right after the TODO keyword 6006 ;; Move cursor to right after the TODO keyword
5564 (when org-archive-stamp-time 6007 (when org-archive-stamp-time
5565 (beginning-of-line 1) 6008 (beginning-of-line 1)
@@ -5653,7 +6096,7 @@ When TAG is non-nil, don't move trees, but mark them with the ARCHIVE tag."
5653(defun org-toggle-tag (tag &optional onoff) 6096(defun org-toggle-tag (tag &optional onoff)
5654 "Toggle the tag TAG for the current line. 6097 "Toggle the tag TAG for the current line.
5655If ONOFF is `on' or `off', don't toggle but set to this state." 6098If ONOFF is `on' or `off', don't toggle but set to this state."
5656 (unless (org-on-heading-p) (error "Not on headling")) 6099 (unless (org-on-heading-p t) (error "Not on headling"))
5657 (let (res current) 6100 (let (res current)
5658 (save-excursion 6101 (save-excursion
5659 (beginning-of-line) 6102 (beginning-of-line)
@@ -5749,6 +6192,8 @@ outside the table.")
5749 "Table row types, non-nil only for the duration of a comand.") 6192 "Table row types, non-nil only for the duration of a comand.")
5750(defvar org-table-current-begin-line nil 6193(defvar org-table-current-begin-line nil
5751 "Table begin line, non-nil only for the duration of a comand.") 6194 "Table begin line, non-nil only for the duration of a comand.")
6195(defvar org-table-current-begin-pos nil
6196 "Table begin position, non-nil only for the duration of a comand.")
5752(defvar org-table-dlines nil 6197(defvar org-table-dlines nil
5753 "Vector of data line line numbers in the current table.") 6198 "Vector of data line line numbers in the current table.")
5754(defvar org-table-hlines nil 6199(defvar org-table-hlines nil
@@ -5760,11 +6205,17 @@ outside the table.")
5760 "Regular expression for matching ranges in formulas.") 6205 "Regular expression for matching ranges in formulas.")
5761 6206
5762(defconst org-table-range-regexp2 6207(defconst org-table-range-regexp2
5763 "@\\([-+]?I*[-+]?[0-9]*\\)?\\(\\$[-+]?[a-zA-Z0-9]+\\)?\\(\\.\\.@?\\([-+]?I*[-+]?[0-9]*\\)?\\(\\$[-+]?[a-zA-Z0-9]+\\)?\\)?\\|\\$[a-zA-Z0-9]+\\.\\.\\$[a-zA-Z0-9]+" 6208 (concat
5764 "Regular expression to recognize ranges in formulas for highlighting.") 6209 "\\(" "@[-0-9I$&]+" "\\|" "[a-zA-Z]\\{1,2\\}\\([0-9]+\\|&\\)" "\\|" "\\$[a-zA-Z0-9]+" "\\)"
6210 "\\.\\."
6211 "\\(" "@?[-0-9I$&]+" "\\|" "[a-zA-Z]\\{1,2\\}\\([0-9]+\\|&\\)" "\\|" "\\$[a-zA-Z0-9]+" "\\)")
6212 "Match a range for reference display.")
5765 6213
5766(defvar org-inhibit-highlight-removal nil) 6214(defconst org-table-translate-regexp
6215 (concat "\\(" "@[-0-9I$]+" "\\|" "[a-zA-Z]\\{1,2\\}\\([0-9]+\\|&\\)" "\\)")
6216 "Match a reference that needs translation, for reference display.")
5767 6217
6218(defvar org-inhibit-highlight-removal nil) ; dynamically scoped param
5768 6219
5769(defun org-table-create-with-table.el () 6220(defun org-table-create-with-table.el ()
5770 "Use the table.el package to insert a new table. 6221 "Use the table.el package to insert a new table.
@@ -5783,8 +6234,9 @@ and table.el tables."
5783 6234
5784(defun org-table-create-or-convert-from-region (arg) 6235(defun org-table-create-or-convert-from-region (arg)
5785 "Convert region to table, or create an empty table. 6236 "Convert region to table, or create an empty table.
5786If there is an active region, convert it to a table. If there is no such 6237If there is an active region, convert it to a table, using the function
5787region, create an empty table." 6238`org-table-convert-region'.
6239If there is no such region, create an empty table with `org-table-create'."
5788 (interactive "P") 6240 (interactive "P")
5789 (if (org-region-active-p) 6241 (if (org-region-active-p)
5790 (org-table-convert-region (region-beginning) (region-end) arg) 6242 (org-table-convert-region (region-beginning) (region-end) arg)
@@ -5827,7 +6279,9 @@ SIZE is a string Columns x Rows like for example \"3x2\"."
5827The region goes from BEG0 to END0, but these borders will be moved 6279The region goes from BEG0 to END0, but these borders will be moved
5828slightly, to make sure a beginning of line in the first line is included. 6280slightly, to make sure a beginning of line in the first line is included.
5829When NSPACE is non-nil, it indicates the minimum number of spaces that 6281When NSPACE is non-nil, it indicates the minimum number of spaces that
5830separate columns (default: just one space)." 6282separate columns. By default, the function first checks if every line
6283contains at lease one TAB. If yes, it assumes that the material is TAB
6284separated. If not, it assumes a single space as separator."
5831 (interactive "rP") 6285 (interactive "rP")
5832 (let* ((beg (min beg0 end0)) 6286 (let* ((beg (min beg0 end0))
5833 (end (max beg0 end0)) 6287 (end (max beg0 end0))
@@ -6249,9 +6703,13 @@ If the current field is not empty, it is copied down to the next row, and
6249the cursor is moved with it. Therefore, repeating this command causes the 6703the cursor is moved with it. Therefore, repeating this command causes the
6250column to be filled row-by-row. 6704column to be filled row-by-row.
6251If the variable `org-table-copy-increment' is non-nil and the field is an 6705If the variable `org-table-copy-increment' is non-nil and the field is an
6252integer, it will be incremented while copying." 6706integer or a timestamp, it will be incremented while copying. In the case of
6707a timestamp, if the cursor is on the year, change the year. If it is on the
6708month or the day, change that. Point will stay on the current date field
6709in order to easily repeat the interval."
6253 (interactive "p") 6710 (interactive "p")
6254 (let* ((colpos (org-table-current-column)) 6711 (let* ((colpos (org-table-current-column))
6712 (col (current-column))
6255 (field (org-table-get-field)) 6713 (field (org-table-get-field))
6256 (non-empty (string-match "[^ \t]" field)) 6714 (non-empty (string-match "[^ \t]" field))
6257 (beg (org-table-begin)) 6715 (beg (org-table-begin))
@@ -6279,8 +6737,12 @@ integer, it will be incremented while copying."
6279 (string-match "^[0-9]+$" txt)) 6737 (string-match "^[0-9]+$" txt))
6280 (setq txt (format "%d" (+ (string-to-number txt) 1)))) 6738 (setq txt (format "%d" (+ (string-to-number txt) 1))))
6281 (insert txt) 6739 (insert txt)
6282 (org-table-maybe-recalculate-line) 6740 (move-to-column col)
6283 (org-table-align)) 6741 (if (and org-table-copy-increment (org-at-timestamp-p t))
6742 (org-timestamp-up 1)
6743 (org-table-maybe-recalculate-line))
6744 (org-table-align)
6745 (move-to-column col))
6284 (error "No non-empty field found")))) 6746 (error "No non-empty field found"))))
6285 6747
6286(defun org-table-check-inside-data-field () 6748(defun org-table-check-inside-data-field ()
@@ -6333,7 +6795,7 @@ is always the old value."
6333 6795
6334(defun org-table-field-info (arg) 6796(defun org-table-field-info (arg)
6335 "Show info about the current field, and highlight any reference at point." 6797 "Show info about the current field, and highlight any reference at point."
6336 (interactive "P") 6798 (interactive "P")
6337 (org-table-get-specials) 6799 (org-table-get-specials)
6338 (save-excursion 6800 (save-excursion
6339 (let* ((pos (point)) 6801 (let* ((pos (point))
@@ -6344,21 +6806,26 @@ is always the old value."
6344 (eql (org-table-get-stored-formulas)) 6806 (eql (org-table-get-stored-formulas))
6345 (dline (org-table-current-dline)) 6807 (dline (org-table-current-dline))
6346 (ref (format "@%d$%d" dline col)) 6808 (ref (format "@%d$%d" dline col))
6809 (ref1 (org-table-convert-refs-to-an ref))
6347 (fequation (or (assoc name eql) (assoc ref eql))) 6810 (fequation (or (assoc name eql) (assoc ref eql)))
6348 (cequation (assoc (int-to-string col) eql))) 6811 (cequation (assoc (int-to-string col) eql))
6812 (eqn (or fequation cequation)))
6349 (goto-char pos) 6813 (goto-char pos)
6350 (condition-case nil 6814 (condition-case nil
6351 (org-show-reference 'local) 6815 (org-table-show-reference 'local)
6352 (error nil)) 6816 (error nil))
6353 (message "line @%d, col $%s%s, ref @%d$%d%s%s" 6817 (message "line @%d, col $%s%s, ref @%d$%d or %s%s%s"
6354 dline col 6818 dline col
6355 (if cname (concat " or $" cname) "") 6819 (if cname (concat " or $" cname) "")
6356 dline col 6820 dline col ref1
6357 (if name (concat " or $" name) "") 6821 (if name (concat " or $" name) "")
6358 ;; FIXME: formula info not correct if special table line 6822 ;; FIXME: formula info not correct if special table line
6359 (if (or fequation cequation) 6823 (if eqn
6360 (concat ", " (if fequation "field" "column") 6824 (concat ", formula: "
6361 " formula applies" "") 6825 (org-table-formula-to-user
6826 (concat
6827 (if (string-match "^[$@]"(car eqn)) "" "$")
6828 (car eqn) "=" (cdr eqn))))
6362 ""))))) 6829 "")))))
6363 6830
6364(defun org-table-current-column () 6831(defun org-table-current-column ()
@@ -6573,7 +7040,7 @@ If TABLE-TYPE is non-nil, also check for table.el-type tables."
6573 (goto-line linepos) 7040 (goto-line linepos)
6574 (org-table-goto-column colpos) 7041 (org-table-goto-column colpos)
6575 (org-table-align) 7042 (org-table-align)
6576 (org-table-fix-formulas 7043 (org-table-fix-formulas
6577 "$" (list (cons (number-to-string col) (number-to-string colpos)) 7044 "$" (list (cons (number-to-string col) (number-to-string colpos))
6578 (cons (number-to-string colpos) (number-to-string col)))))) 7045 (cons (number-to-string colpos) (number-to-string col))))))
6579 7046
@@ -6591,7 +7058,7 @@ If TABLE-TYPE is non-nil, also check for table.el-type tables."
6591 (interactive "P") 7058 (interactive "P")
6592 (let* ((col (current-column)) 7059 (let* ((col (current-column))
6593 (pos (point)) 7060 (pos (point))
6594 (hline1p (save-excursion (beginning-of-line 1) 7061 (hline1p (save-excursion (beginning-of-line 1)
6595 (looking-at org-table-hline-regexp))) 7062 (looking-at org-table-hline-regexp)))
6596 (dline1 (org-table-current-dline)) 7063 (dline1 (org-table-current-dline))
6597 (dline2 (+ dline1 (if up -1 1))) 7064 (dline2 (+ dline1 (if up -1 1)))
@@ -6612,7 +7079,7 @@ If TABLE-TYPE is non-nil, also check for table.el-type tables."
6612 (beginning-of-line 0) 7079 (beginning-of-line 0)
6613 (move-to-column col) 7080 (move-to-column col)
6614 (unless (or hline1p hline2p) 7081 (unless (or hline1p hline2p)
6615 (org-table-fix-formulas 7082 (org-table-fix-formulas
6616 "@" (list (cons (number-to-string dline1) (number-to-string dline2)) 7083 "@" (list (cons (number-to-string dline1) (number-to-string dline2))
6617 (cons (number-to-string dline2) (number-to-string dline1))))))) 7084 (cons (number-to-string dline2) (number-to-string dline1)))))))
6618 7085
@@ -6635,9 +7102,9 @@ With prefix ARG, insert below the current line."
6635 (org-table-align)) 7102 (org-table-align))
6636 (org-table-fix-formulas "@" nil (1- (org-table-current-dline)) 1))) 7103 (org-table-fix-formulas "@" nil (1- (org-table-current-dline)) 1)))
6637 7104
6638(defun org-table-insert-hline (&optional arg) 7105(defun org-table-insert-hline (&optional above)
6639 "Insert a horizontal-line below the current line into the table. 7106 "Insert a horizontal-line below the current line into the table.
6640With prefix ARG, insert above the current line." 7107With prefix ABOVE, insert above the current line."
6641 (interactive "P") 7108 (interactive "P")
6642 (if (not (org-at-table-p)) 7109 (if (not (org-at-table-p))
6643 (error "Not at a table")) 7110 (error "Not at a table"))
@@ -6649,12 +7116,25 @@ With prefix ARG, insert above the current line."
6649 (concat "+" (make-string (- (match-end 1) (match-beginning 1)) 7116 (concat "+" (make-string (- (match-end 1) (match-beginning 1))
6650 ?-) "|") t t line))) 7117 ?-) "|") t t line)))
6651 (and (string-match "\\+" line) (setq line (replace-match "|" t t line))) 7118 (and (string-match "\\+" line) (setq line (replace-match "|" t t line)))
6652 (beginning-of-line (if arg 1 2)) 7119 (beginning-of-line (if above 1 2))
6653 (insert line "\n") 7120 (insert line "\n")
6654 (beginning-of-line (if arg 1 -1)) 7121 (beginning-of-line (if above 1 -1))
6655 (move-to-column col) 7122 (move-to-column col)
6656 (and org-table-overlay-coordinates (org-table-align)))) 7123 (and org-table-overlay-coordinates (org-table-align))))
6657 7124
7125(defun org-table-hline-and-move (&optional same-column)
7126 "Insert a hline and move to the row below that line."
7127 (interactive "P")
7128 (let ((col (org-table-current-column)))
7129 (org-table-maybe-eval-formula)
7130 (org-table-maybe-recalculate-line)
7131 (org-table-insert-hline)
7132 (end-of-line 2)
7133 (if (looking-at "\n[ \t]*|-")
7134 (progn (insert "\n|") (org-table-align))
7135 (org-table-next-field))
7136 (if same-column (org-table-goto-column col))))
7137
6658(defun org-table-clean-line (s) 7138(defun org-table-clean-line (s)
6659 "Convert a table line S into a string with only \"|\" and space. 7139 "Convert a table line S into a string with only \"|\" and space.
6660In particular, this does handle wide and invisible characters." 7140In particular, this does handle wide and invisible characters."
@@ -6959,15 +7439,14 @@ it can be edited in place."
6959 (switch-to-buffer-other-window "*Org tmp*") 7439 (switch-to-buffer-other-window "*Org tmp*")
6960 (erase-buffer) 7440 (erase-buffer)
6961 (insert "#\n# Edit field and finish with C-c C-c\n#\n") 7441 (insert "#\n# Edit field and finish with C-c C-c\n#\n")
6962 (org-mode) 7442 (let ((org-inhibit-startup t)) (org-mode))
6963 (goto-char (setq p (point-max))) 7443 (goto-char (setq p (point-max)))
6964 (insert (org-trim field)) 7444 (insert (org-trim field))
6965 (remove-text-properties p (point-max) 7445 (remove-text-properties p (point-max)
6966 '(invisible t org-cwidth t display t 7446 '(invisible t org-cwidth t display t
6967 intangible t)) 7447 intangible t))
6968 (goto-char p) 7448 (goto-char p)
6969 (org-set-local 'org-finish-function 7449 (org-set-local 'org-finish-function 'org-table-finish-edit-field)
6970 'org-table-finish-edit-field)
6971 (org-set-local 'org-window-configuration cw) 7450 (org-set-local 'org-window-configuration cw)
6972 (org-set-local 'org-field-marker pos) 7451 (org-set-local 'org-field-marker pos)
6973 (message "Edit and finish with C-c C-c")))) 7452 (message "Edit and finish with C-c C-c"))))
@@ -6997,8 +7476,8 @@ the table and kill the editing buffer."
6997 7476
6998(defun org-trim (s) 7477(defun org-trim (s)
6999 "Remove whitespace at beginning and end of string." 7478 "Remove whitespace at beginning and end of string."
7000 (if (string-match "^[ \t]+" s) (setq s (replace-match "" t t s))) 7479 (if (string-match "^[ \t\n\r]+" s) (setq s (replace-match "" t t s)))
7001 (if (string-match "[ \t]+$" s) (setq s (replace-match "" t t s))) 7480 (if (string-match "[ \t\n\r]+$" s) (setq s (replace-match "" t t s)))
7002 s) 7481 s)
7003 7482
7004(defun org-wrap (string &optional width lines) 7483(defun org-wrap (string &optional width lines)
@@ -7159,21 +7638,25 @@ If NLAST is a number, only the NLAST fields will actually be summed."
7159 ((equal n 0) nil) 7638 ((equal n 0) nil)
7160 (t n)))) 7639 (t n))))
7161 7640
7162(defun org-table-current-field-formula () 7641(defun org-table-current-field-formula (&optional key noerror)
7163 "Return the formula active for the current field. 7642 "Return the formula active for the current field.
7164Assumes that specials are in place." 7643Assumes that specials are in place.
7644If KEY is given, return the key to this formula.
7645Otherwise return the formula preceeded with \"=\" or \":=\"."
7165 (let* ((name (car (rassoc (list (org-current-line) 7646 (let* ((name (car (rassoc (list (org-current-line)
7166 (org-table-current-column)) 7647 (org-table-current-column))
7167 org-table-named-field-locations))) 7648 org-table-named-field-locations)))
7168 (col (org-table-current-column)) 7649 (col (org-table-current-column))
7169 (scol (int-to-string col)) 7650 (scol (int-to-string col))
7170 (ref (format "@%d$%d" (org-table-current-dline) col)) 7651 (ref (format "@%d$%d" (org-table-current-dline) col))
7171 (stored-list (org-table-get-stored-formulas)) 7652 (stored-list (org-table-get-stored-formulas noerror))
7172 (ass (or (assoc name stored-list) 7653 (ass (or (assoc name stored-list)
7173 (assoc ref stored-list) 7654 (assoc ref stored-list)
7174 (assoc scol stored-list)))) 7655 (assoc scol stored-list))))
7175 (if ass (concat (if (string-match "^[0-9]+$" (car ass)) "=" ":=") 7656 (if key
7176 (cdr ass))))) 7657 (car ass)
7658 (if ass (concat (if (string-match "^[0-9]+$" (car ass)) "=" ":=")
7659 (cdr ass))))))
7177 7660
7178(defun org-table-get-formula (&optional equation named) 7661(defun org-table-get-formula (&optional equation named)
7179 "Read a formula from the minibuffer, offer stored formula as default. 7662 "Read a formula from the minibuffer, offer stored formula as default.
@@ -7199,11 +7682,16 @@ When NAMED is non-nil, look for a named equation."
7199 stored) 7682 stored)
7200 ((stringp equation) 7683 ((stringp equation)
7201 equation) 7684 equation)
7202 (t (read-string 7685 (t (org-table-formula-from-user
7203 (format "%s formula $%s=" (if named "Field" "Column") scol) 7686 (read-string
7204 (or stored "") 'org-table-formula-history 7687 (org-table-formula-to-user
7205 ;stored 7688 (format "%s formula %s%s="
7206 )))) 7689 (if named "Field" "Column")
7690 (if (member (string-to-char scol) '(?$ ?@)) "" "$")
7691 scol))
7692 (if stored (org-table-formula-to-user stored) "")
7693 'org-table-formula-history
7694 )))))
7207 mustsave) 7695 mustsave)
7208 (when (not (string-match "\\S-" eq)) 7696 (when (not (string-match "\\S-" eq))
7209 ;; remove formula 7697 ;; remove formula
@@ -7225,7 +7713,7 @@ When NAMED is non-nil, look for a named equation."
7225 7713
7226(defun org-table-store-formulas (alist) 7714(defun org-table-store-formulas (alist)
7227 "Store the list of formulas below the current table." 7715 "Store the list of formulas below the current table."
7228 (setq alist (sort alist (lambda (a b) (string< (car a) (car b))))) 7716 (setq alist (sort alist 'org-table-formula-less-p))
7229 (save-excursion 7717 (save-excursion
7230 (goto-char (org-table-end)) 7718 (goto-char (org-table-end))
7231 (if (looking-at "\\([ \t]*\n\\)*#\\+TBLFM:\\(.*\n?\\)") 7719 (if (looking-at "\\([ \t]*\n\\)*#\\+TBLFM:\\(.*\n?\\)")
@@ -7242,7 +7730,20 @@ When NAMED is non-nil, look for a named equation."
7242 alist "::") 7730 alist "::")
7243 "\n"))) 7731 "\n")))
7244 7732
7245(defun org-table-get-stored-formulas () 7733(defsubst org-table-formula-make-cmp-string (a)
7734 (when (string-match "^\\(@\\([0-9]+\\)\\)?\\(\\$?\\([0-9]+\\)\\)?\\(\\$?[a-zA-Z0-9]+\\)?" a)
7735 (concat
7736 (if (match-end 2) (format "@%05d" (string-to-number (match-string 2 a))) "")
7737 (if (match-end 4) (format "$%05d" (string-to-number (match-string 4 a))) "")
7738 (if (match-end 5) (concat "@@" (match-string 5 a))))))
7739
7740(defun org-table-formula-less-p (a b)
7741 "Compare two formulas for sorting."
7742 (let ((as (org-table-formula-make-cmp-string (car a)))
7743 (bs (org-table-formula-make-cmp-string (car b))))
7744 (and as bs (string< as bs))))
7745
7746(defun org-table-get-stored-formulas (&optional noerror)
7246 "Return an alist with the stored formulas directly after current table." 7747 "Return an alist with the stored formulas directly after current table."
7247 (interactive) 7748 (interactive)
7248 (let (scol eq eq-alist strings string seen) 7749 (let (scol eq eq-alist strings string seen)
@@ -7252,13 +7753,18 @@ When NAMED is non-nil, look for a named equation."
7252 (setq strings (org-split-string (match-string 2) " *:: *")) 7753 (setq strings (org-split-string (match-string 2) " *:: *"))
7253 (while (setq string (pop strings)) 7754 (while (setq string (pop strings))
7254 (when (string-match "\\(@[0-9]+\\$[0-9]+\\|\\$\\([a-zA-Z0-9]+\\)\\) *= *\\(.*[^ \t]\\)" string) 7755 (when (string-match "\\(@[0-9]+\\$[0-9]+\\|\\$\\([a-zA-Z0-9]+\\)\\) *= *\\(.*[^ \t]\\)" string)
7255 (setq scol (if (match-end 2) 7756 (setq scol (if (match-end 2)
7256 (match-string 2 string) 7757 (match-string 2 string)
7257 (match-string 1 string)) 7758 (match-string 1 string))
7258 eq (match-string 3 string) 7759 eq (match-string 3 string)
7259 eq-alist (cons (cons scol eq) eq-alist)) 7760 eq-alist (cons (cons scol eq) eq-alist))
7260 (if (member scol seen) 7761 (if (member scol seen)
7261 (error "Double definition `$%s=' in TBLFM line, please fix by hand" scol) 7762 (if noerror
7763 (progn
7764 (message "Double definition `$%s=' in TBLFM line, please fix by hand" scol)
7765 (ding)
7766 (sit-for 2))
7767 (error "Double definition `$%s=' in TBLFM line, please fix by hand" scol))
7262 (push scol seen)))))) 7768 (push scol seen))))))
7263 (nreverse eq-alist))) 7769 (nreverse eq-alist)))
7264 7770
@@ -7297,7 +7803,8 @@ For all numbers larger than LIMIT, shift them by DELTA."
7297 org-table-local-parameters nil 7803 org-table-local-parameters nil
7298 org-table-named-field-locations nil 7804 org-table-named-field-locations nil
7299 org-table-current-begin-line nil 7805 org-table-current-begin-line nil
7300 org-table-current-line-types nil) 7806 org-table-current-begin-pos nil
7807 org-table-current-line-types nil)
7301 (goto-char beg) 7808 (goto-char beg)
7302 (when (re-search-forward "^[ \t]*| *! *\\(|.*\\)" end t) 7809 (when (re-search-forward "^[ \t]*| *! *\\(|.*\\)" end t)
7303 (setq names (org-split-string (match-string 1) " *| *") 7810 (setq names (org-split-string (match-string 1) " *| *")
@@ -7334,7 +7841,8 @@ For all numbers larger than LIMIT, shift them by DELTA."
7334 ;; Analyse the line types 7841 ;; Analyse the line types
7335 (goto-char beg) 7842 (goto-char beg)
7336 (setq org-table-current-begin-line (org-current-line) 7843 (setq org-table-current-begin-line (org-current-line)
7337 l org-table-current-begin-line) 7844 org-table-current-begin-pos (point)
7845 l org-table-current-begin-line)
7338 (while (looking-at "[ \t]*|\\(-\\)?") 7846 (while (looking-at "[ \t]*|\\(-\\)?")
7339 (push (if (match-end 1) 'hline 'dline) types) 7847 (push (if (match-end 1) 'hline 'dline) types)
7340 (if (match-end 1) (push l hlines) (push l dlines)) 7848 (if (match-end 1) (push l hlines) (push l dlines))
@@ -7344,13 +7852,6 @@ For all numbers larger than LIMIT, shift them by DELTA."
7344 org-table-dlines (apply 'vector (cons nil (nreverse dlines))) 7852 org-table-dlines (apply 'vector (cons nil (nreverse dlines)))
7345 org-table-hlines (apply 'vector (cons nil (nreverse hlines))))))) 7853 org-table-hlines (apply 'vector (cons nil (nreverse hlines)))))))
7346 7854
7347(defun org-this-word ()
7348 ;; Get the current word
7349 (save-excursion
7350 (let ((beg (progn (skip-chars-backward "^ \t\n") (point)))
7351 (end (progn (skip-chars-forward "^ \t\n") (point))))
7352 (buffer-substring-no-properties beg end))))
7353
7354(defun org-table-maybe-eval-formula () 7855(defun org-table-maybe-eval-formula ()
7355 "Check if the current field starts with \"=\" or \":=\". 7856 "Check if the current field starts with \"=\" or \":=\".
7356If yes, store the formula and apply it." 7857If yes, store the formula and apply it."
@@ -7364,7 +7865,8 @@ If yes, store the formula and apply it."
7364 eq (match-string 1 field)) 7865 eq (match-string 1 field))
7365 (if (or (fboundp 'calc-eval) 7866 (if (or (fboundp 'calc-eval)
7366 (equal (substring eq 0 (min 2 (length eq))) "'(")) 7867 (equal (substring eq 0 (min 2 (length eq))) "'("))
7367 (org-table-eval-formula (if named '(4) nil) eq) 7868 (org-table-eval-formula (if named '(4) nil)
7869 (org-table-formula-from-user eq))
7368 (error "Calc does not seem to be installed, and is needed to evaluate the formula")))))) 7870 (error "Calc does not seem to be installed, and is needed to evaluate the formula"))))))
7369 7871
7370(defvar org-recalc-commands nil 7872(defvar org-recalc-commands nil
@@ -7485,7 +7987,7 @@ formula is installed as valid in only this specific field.
7485 7987
7486When called with two `C-u' prefixes, insert the active equation 7988When called with two `C-u' prefixes, insert the active equation
7487for the field back into the current field, so that it can be 7989for the field back into the current field, so that it can be
7488edited there. This is useful in order to use \\[org-show-reference] 7990edited there. This is useful in order to use \\[org-table-show-reference]
7489to check the referenced fields. 7991to check the referenced fields.
7490 7992
7491When called, the command first prompts for a formula, which is read in 7993When called, the command first prompts for a formula, which is read in
@@ -7577,7 +8079,7 @@ not overwrite the stored one."
7577 ;; Insert complex ranges 8079 ;; Insert complex ranges
7578 (while (string-match org-table-range-regexp form) 8080 (while (string-match org-table-range-regexp form)
7579 (setq form 8081 (setq form
7580 (replace-match 8082 (replace-match
7581 (save-match-data 8083 (save-match-data
7582 (org-table-make-reference 8084 (org-table-make-reference
7583 (org-table-get-range (match-string 0 form) nil n0) 8085 (org-table-get-range (match-string 0 form) nil n0)
@@ -7585,7 +8087,7 @@ not overwrite the stored one."
7585 t t form))) 8087 t t form)))
7586 ;; Insert simple ranges 8088 ;; Insert simple ranges
7587 (while (string-match "\\$\\([0-9]+\\)\\.\\.\\$\\([0-9]+\\)" form) 8089 (while (string-match "\\$\\([0-9]+\\)\\.\\.\\$\\([0-9]+\\)" form)
7588 (setq form 8090 (setq form
7589 (replace-match 8091 (replace-match
7590 (save-match-data 8092 (save-match-data
7591 (org-table-make-reference 8093 (org-table-make-reference
@@ -7596,17 +8098,16 @@ not overwrite the stored one."
7596 t t form))) 8098 t t form)))
7597 (setq form0 form) 8099 (setq form0 form)
7598 ;; Insert the references to fields in same row 8100 ;; Insert the references to fields in same row
7599 (while (string-match "\\$\\([0-9]+\\)?" form) 8101 (while (string-match "\\$\\([0-9]+\\)" form)
7600 (setq n (if (match-beginning 1) 8102 (setq n (string-to-number (match-string 1 form))
7601 (string-to-number (match-string 1 form)) 8103 x (nth (1- (if (= n 0) n0 n)) fields))
7602 n0)
7603 x (nth (1- n) fields))
7604 (unless x (error "Invalid field specifier \"%s\"" 8104 (unless x (error "Invalid field specifier \"%s\""
7605 (match-string 0 form))) 8105 (match-string 0 form)))
7606 (setq form (replace-match 8106 (setq form (replace-match
7607 (save-match-data 8107 (save-match-data
7608 (org-table-make-reference x nil numbers lispp)) 8108 (org-table-make-reference x nil numbers lispp))
7609 t t form))) 8109 t t form)))
8110
7610 (if lispp 8111 (if lispp
7611 (setq ev (condition-case nil 8112 (setq ev (condition-case nil
7612 (eval (eval (read form))) 8113 (eval (eval (read form)))
@@ -7616,7 +8117,7 @@ not overwrite the stored one."
7616 (error "Calc does not seem to be installed, and is needed to evaluate the formula")) 8117 (error "Calc does not seem to be installed, and is needed to evaluate the formula"))
7617 (setq ev (calc-eval (cons form modes) 8118 (setq ev (calc-eval (cons form modes)
7618 (if numbers 'num)))) 8119 (if numbers 'num))))
7619 8120
7620 (when org-table-formula-debug 8121 (when org-table-formula-debug
7621 (with-output-to-temp-buffer "*Substitution History*" 8122 (with-output-to-temp-buffer "*Substitution History*"
7622 (princ (format "Substitution history of formula 8123 (princ (format "Substitution history of formula
@@ -7738,7 +8239,7 @@ and TABLE is a vector with line types."
7738 (setq i 0 hdir "+") 8239 (setq i 0 hdir "+")
7739 (if (eq (aref table 0) 'hline) (setq hn (1- hn))))) 8240 (if (eq (aref table 0) 'hline) (setq hn (1- hn)))))
7740 (if (and (not hn) on (not odir)) 8241 (if (and (not hn) on (not odir))
7741 (error "should never happen");;(aref org-table-dlines on) FIXME 8242 (error "should never happen");;(aref org-table-dlines on)
7742 (if (and hn (> hn 0)) 8243 (if (and hn (> hn 0))
7743 (setq i (org-find-row-type table i 'hline (equal hdir "-") nil hn))) 8244 (setq i (org-find-row-type table i 'hline (equal hdir "-") nil hn)))
7744 (if on 8245 (if on
@@ -7837,7 +8338,7 @@ With prefix arg ALL, do this for all lines in the table."
7837 (goto-char beg) 8338 (goto-char beg)
7838 (and all (message "Re-applying formulas to full table...")) 8339 (and all (message "Re-applying formulas to full table..."))
7839 (while (re-search-forward line-re end t) 8340 (while (re-search-forward line-re end t)
7840 (unless (string-match "^ *[_^!$] *$" (org-table-get-field 1)) 8341 (unless (string-match "^ *[_^!$/] *$" (org-table-get-field 1))
7841 ;; Unprotected line, recalculate 8342 ;; Unprotected line, recalculate
7842 (and all (message "Re-applying formulas to full table...(line %d)" 8343 (and all (message "Re-applying formulas to full table...(line %d)"
7843 (setq cnt (1+ cnt)))) 8344 (setq cnt (1+ cnt))))
@@ -7858,7 +8359,7 @@ With prefix arg ALL, do this for all lines in the table."
7858 a (assoc name org-table-named-field-locations)) 8359 a (assoc name org-table-named-field-locations))
7859 (and (not a) 8360 (and (not a)
7860 (string-match "@\\([0-9]+\\)\\$\\([0-9]+\\)" name) 8361 (string-match "@\\([0-9]+\\)\\$\\([0-9]+\\)" name)
7861 (setq a 8362 (setq a
7862 (list 8363 (list
7863 name 8364 name
7864 (aref org-table-dlines 8365 (aref org-table-dlines
@@ -7876,12 +8377,12 @@ With prefix arg ALL, do this for all lines in the table."
7876 (org-table-goto-column thiscol) 8377 (org-table-goto-column thiscol)
7877 (or noalign (and org-table-may-need-update (org-table-align)) 8378 (or noalign (and org-table-may-need-update (org-table-align))
7878 (and all (message "Re-applying formulas...done")))))) 8379 (and all (message "Re-applying formulas...done"))))))
7879 8380
7880(defun org-table-iterate (&optional arg) 8381(defun org-table-iterate (&optional arg)
7881 "Recalculate the table until it does not change anymore." 8382 "Recalculate the table until it does not change anymore."
7882 (interactive "P") 8383 (interactive "P")
7883 (let ((imax (if arg (prefix-numeric-value arg) 10)) 8384 (let ((imax (if arg (prefix-numeric-value arg) 10))
7884 (i 0) 8385 (i 0)
7885 (lasttbl (buffer-substring (org-table-begin) (org-table-end))) 8386 (lasttbl (buffer-substring (org-table-begin) (org-table-end)))
7886 thistbl) 8387 thistbl)
7887 (catch 'exit 8388 (catch 'exit
@@ -7924,32 +8425,74 @@ Parameters get priority."
7924 (and (fboundp 'constants-get) (constants-get const)) 8425 (and (fboundp 'constants-get) (constants-get const))
7925 "#UNDEFINED_NAME")) 8426 "#UNDEFINED_NAME"))
7926 8427
7927(defvar org-edit-formulas-map (make-sparse-keymap)) 8428(defvar org-table-fedit-map (make-sparse-keymap))
7928(define-key org-edit-formulas-map "\C-c\C-c" 'org-finish-edit-formulas) 8429(org-defkey org-table-fedit-map "\C-x\C-s" 'org-table-fedit-finish)
7929(define-key org-edit-formulas-map "\C-c\C-q" 'org-abort-edit-formulas) 8430(org-defkey org-table-fedit-map "\C-c\C-s" 'org-table-fedit-finish)
7930(define-key org-edit-formulas-map "\C-c?" 'org-show-reference) 8431(org-defkey org-table-fedit-map "\C-c\C-c" 'org-table-fedit-finish)
7931(define-key org-edit-formulas-map [(shift up)] 'org-table-edit-line-up) 8432(org-defkey org-table-fedit-map "\C-c\C-q" 'org-table-fedit-abort)
7932(define-key org-edit-formulas-map [(shift down)] 'org-table-edit-line-down) 8433(org-defkey org-table-fedit-map "\C-c?" 'org-table-show-reference)
7933(define-key org-edit-formulas-map [(shift left)] 'org-table-edit-backward-field) 8434(org-defkey org-table-fedit-map [(meta shift up)] 'org-table-fedit-line-up)
7934(define-key org-edit-formulas-map [(shift right)] 'org-table-edit-next-field) 8435(org-defkey org-table-fedit-map [(meta shift down)] 'org-table-fedit-line-down)
7935(define-key org-edit-formulas-map [(meta up)] 'org-table-edit-scroll-down) 8436(org-defkey org-table-fedit-map [(shift up)] 'org-table-fedit-ref-up)
7936(define-key org-edit-formulas-map [(meta down)] 'org-table-edit-scroll) 8437(org-defkey org-table-fedit-map [(shift down)] 'org-table-fedit-ref-down)
7937(define-key org-edit-formulas-map [(meta tab)] 'lisp-complete-symbol) 8438(org-defkey org-table-fedit-map [(shift left)] 'org-table-fedit-ref-left)
7938(define-key org-edit-formulas-map "\M-\C-i" 'lisp-complete-symbol) 8439(org-defkey org-table-fedit-map [(shift right)] 'org-table-fedit-ref-right)
7939(define-key org-edit-formulas-map [(tab)] 'org-edit-formula-lisp-indent) 8440(org-defkey org-table-fedit-map [(meta up)] 'org-table-fedit-scroll-down)
7940(define-key org-edit-formulas-map "\C-i" 'org-edit-formula-lisp-indent) 8441(org-defkey org-table-fedit-map [(meta down)] 'org-table-fedit-scroll)
8442(org-defkey org-table-fedit-map [(meta tab)] 'lisp-complete-symbol)
8443(org-defkey org-table-fedit-map "\M-\C-i" 'lisp-complete-symbol)
8444(org-defkey org-table-fedit-map [(tab)] 'org-table-fedit-lisp-indent)
8445(org-defkey org-table-fedit-map "\C-i" 'org-table-fedit-lisp-indent)
8446(org-defkey org-table-fedit-map "\C-c\C-r" 'org-table-fedit-toggle-ref-type)
8447(org-defkey org-table-fedit-map "\C-c}" 'org-table-fedit-toggle-coordinates)
8448
8449(easy-menu-define org-table-fedit-menu org-table-fedit-map "Org Edit Formulas Menu"
8450 '("Edit-Formulas"
8451 ["Finish and Install" org-table-fedit-finish t]
8452 ["Finish, Install, and Apply" (org-table-fedit-finish t) :keys "C-u C-c C-c"]
8453 ["Abort" org-table-fedit-abort t]
8454 "--"
8455 ["Pretty-Print Lisp Formula" org-table-fedit-lisp-indent t]
8456 ["Complete Lisp Symbol" lisp-complete-symbol t]
8457 "--"
8458 "Shift Reference at Point"
8459 ["Up" org-table-fedit-ref-up t]
8460 ["Down" org-table-fedit-ref-down t]
8461 ["Left" org-table-fedit-ref-left t]
8462 ["Right" org-table-fedit-ref-right t]
8463 "-"
8464 "Change Test Row for Column Formulas"
8465 ["Up" org-table-fedit-line-up t]
8466 ["Down" org-table-fedit-line-down t]
8467 "--"
8468 ["Scroll Table Window" org-table-fedit-scroll t]
8469 ["Scroll Table Window down" org-table-fedit-scroll-down t]
8470 ["Show Table Grid" org-table-fedit-toggle-coordinates
8471 :style toggle :selected (with-current-buffer (marker-buffer org-pos)
8472 org-table-overlay-coordinates)]
8473 "--"
8474 ["Standard Refs (B3 instead of @3$2)" org-table-fedit-toggle-ref-type
8475 :style toggle :selected org-table-buffer-is-an]))
7941 8476
7942(defvar org-pos) 8477(defvar org-pos)
7943 8478
7944(defun org-table-edit-formulas () 8479(defun org-table-edit-formulas ()
7945 "Edit the formulas of the current table in a separate buffer." 8480 "Edit the formulas of the current table in a separate buffer."
7946 (interactive) 8481 (interactive)
8482 (when (save-excursion (beginning-of-line 1) (looking-at "#\\+TBLFM"))
8483 (beginning-of-line 0))
7947 (unless (org-at-table-p) (error "Not at a table")) 8484 (unless (org-at-table-p) (error "Not at a table"))
7948 (org-table-get-specials) 8485 (org-table-get-specials)
7949 (let ((eql (org-table-get-stored-formulas)) 8486 (let ((key (org-table-current-field-formula 'key 'noerror))
8487 (eql (sort (org-table-get-stored-formulas 'noerror)
8488 'org-table-formula-less-p))
7950 (pos (move-marker (make-marker) (point))) 8489 (pos (move-marker (make-marker) (point)))
8490 (startline 1)
7951 (wc (current-window-configuration)) 8491 (wc (current-window-configuration))
7952 entry s) 8492 (titles '((column . "# Column Formulas\n")
8493 (field . "# Field Formulas\n")
8494 (named . "# Named Field Formulas\n")))
8495 entry s type title)
7953 (switch-to-buffer-other-window "*Edit Formulas*") 8496 (switch-to-buffer-other-window "*Edit Formulas*")
7954 (erase-buffer) 8497 (erase-buffer)
7955 ;; Keep global-font-lock-mode from turning on font-lock-mode 8498 ;; Keep global-font-lock-mode from turning on font-lock-mode
@@ -7958,38 +8501,226 @@ Parameters get priority."
7958 (org-set-local 'font-lock-global-modes (list 'not major-mode)) 8501 (org-set-local 'font-lock-global-modes (list 'not major-mode))
7959 (org-set-local 'org-pos pos) 8502 (org-set-local 'org-pos pos)
7960 (org-set-local 'org-window-configuration wc) 8503 (org-set-local 'org-window-configuration wc)
7961 (use-local-map org-edit-formulas-map) 8504 (use-local-map org-table-fedit-map)
7962 (org-add-hook 'post-command-hook 'org-table-edit-formulas-post-command t t) 8505 (org-add-hook 'post-command-hook 'org-table-fedit-post-command t t)
7963 (setq s "# `C-c C-c' to finish, `C-u C-c C-c' to also apply, `C-c C-q' to abort. 8506 (easy-menu-add org-table-fedit-menu)
7964# `TAB' to pretty-print Lisp expressions, `M-TAB' to complete List symbols 8507 (setq startline (org-current-line))
7965# `M-up/down' to scroll table, `S-up/down' to change line for column formulas\n\n")
7966
7967 (put-text-property 0 (length s) 'face 'font-lock-comment-face s)
7968 (insert s)
7969 (while (setq entry (pop eql)) 8508 (while (setq entry (pop eql))
8509 (setq type (cond
8510 ((equal (string-to-char (car entry)) ?@) 'field)
8511 ((string-match "^[0-9]" (car entry)) 'column)
8512 (t 'named)))
8513 (when (setq title (assq type titles))
8514 (or (bobp) (insert "\n"))
8515 (insert (org-add-props (cdr title) nil 'face font-lock-comment-face))
8516 (setq titles (delq title titles)))
8517 (if (equal key (car entry)) (setq startline (org-current-line)))
7970 (setq s (concat (if (equal (string-to-char (car entry)) ?@) "" "$") 8518 (setq s (concat (if (equal (string-to-char (car entry)) ?@) "" "$")
7971 (car entry) " = " (cdr entry) "\n")) 8519 (car entry) " = " (cdr entry) "\n"))
7972 (remove-text-properties 0 (length s) '(face nil) s) 8520 (remove-text-properties 0 (length s) '(face nil) s)
7973 (insert s)) 8521 (insert s))
7974 (goto-char (point-min)) 8522 (if (eq org-table-use-standard-references t)
7975 (message "Edit formulas and finish with `C-c C-c'."))) 8523 (org-table-fedit-toggle-ref-type))
8524 (goto-line startline)
8525 (message "Edit formulas and finish with `C-c C-c'. See menu for more commands.")))
7976 8526
7977(defun org-table-edit-formulas-post-command () 8527(defun org-table-fedit-post-command ()
7978 (when (not (memq this-command '(lisp-complete-symbol))) 8528 (when (not (memq this-command '(lisp-complete-symbol)))
7979 (let ((win (selected-window))) 8529 (let ((win (selected-window)))
7980 (save-excursion 8530 (save-excursion
7981 (condition-case nil 8531 (condition-case nil
7982 (org-show-reference) 8532 (org-table-show-reference)
7983 (error nil)) 8533 (error nil))
7984 (select-window win))))) 8534 (select-window win)))))
7985 8535
7986(defun org-finish-edit-formulas (&optional arg) 8536(defun org-table-formula-to-user (s)
8537 "Convert a formula from internal to user representation."
8538 (if (eq org-table-use-standard-references t)
8539 (org-table-convert-refs-to-an s)
8540 s))
8541
8542(defun org-table-formula-from-user (s)
8543 "Convert a formula from user to internal representation."
8544 (if org-table-use-standard-references
8545 (org-table-convert-refs-to-rc s)
8546 s))
8547
8548(defun org-table-convert-refs-to-rc (s)
8549 "Convert spreadsheet references from AB7 to @7$28.
8550Works for single references, but also for entire formulas and even the
8551full TBLFM line."
8552 (let ((start 0))
8553 (while (string-match "\\<\\([a-zA-Z]+\\)\\([0-9]+\\>\\|&\\)\\|\\(;[^\r\n:]+\\)" s start)
8554 (cond
8555 ((match-end 3)
8556 ;; format match, just advance
8557 (setq start (match-end 0)))
8558 ((and (> (match-beginning 0) 0)
8559 (equal ?. (aref s (max (1- (match-beginning 0)) 0))))
8560 ;; 3.e5 or something like this. FIXME: is this ok????
8561 (setq start (match-end 0)))
8562 (t
8563 (setq start (match-beginning 0)
8564 s (replace-match
8565 (if (equal (match-string 2 s) "&")
8566 (format "$%d" (org-letters-to-number (match-string 1 s)))
8567 (format "@%d$%d"
8568 (string-to-number (match-string 2 s))
8569 (org-letters-to-number (match-string 1 s))))
8570 t t s)))))
8571 s))
8572
8573(defun org-table-convert-refs-to-an (s)
8574 "Convert spreadsheet references from to @7$28 to AB7.
8575Works for single references, but also for entire formulas and even the
8576full TBLFM line."
8577 (while (string-match "@\\([0-9]+\\)$\\([0-9]+\\)" s)
8578 (setq s (replace-match
8579 (format "%s%d"
8580 (org-number-to-letters
8581 (string-to-number (match-string 2 s)))
8582 (string-to-number (match-string 1 s)))
8583 t t s)))
8584 (while (string-match "\\(^\\|[^0-9a-zA-Z]\\)\\$\\([0-9]+\\)" s)
8585 (setq s (replace-match (concat "\\1"
8586 (org-number-to-letters
8587 (string-to-number (match-string 2 s))) "&")
8588 t nil s)))
8589 s)
8590
8591(defun org-letters-to-number (s)
8592 "Convert a base 26 number represented by letters into an integer.
8593For example: AB -> 28."
8594 (let ((n 0))
8595 (setq s (upcase s))
8596 (while (> (length s) 0)
8597 (setq n (+ (* n 26) (string-to-char s) (- ?A) 1)
8598 s (substring s 1)))
8599 n))
8600
8601(defun org-number-to-letters (n)
8602 "Convert an integer into a base 26 number represented by letters.
8603For example: 28 -> AB."
8604 (let ((s ""))
8605 (while (> n 0)
8606 (setq s (concat (char-to-string (+ (mod (1- n) 26) ?A)) s)
8607 n (/ (1- n) 26)))
8608 s))
8609
8610(defun org-table-fedit-convert-buffer (function)
8611 "Convert all references in this buffer, using FUNTION."
8612 (let ((line (org-current-line)))
8613 (goto-char (point-min))
8614 (while (not (eobp))
8615 (insert (funcall function (buffer-substring (point) (point-at-eol))))
8616 (delete-region (point) (point-at-eol))
8617 (or (eobp) (forward-char 1)))
8618 (goto-line line)))
8619
8620(defun org-table-fedit-toggle-ref-type ()
8621 "Convert all references in the buffer from B3 to @3$2 and back."
8622 (interactive)
8623 (org-set-local 'org-table-buffer-is-an (not org-table-buffer-is-an))
8624 (org-table-fedit-convert-buffer
8625 (if org-table-buffer-is-an
8626 'org-table-convert-refs-to-an 'org-table-convert-refs-to-rc))
8627 (message "Reference type switched to %s"
8628 (if org-table-buffer-is-an "A1 etc" "@row$column")))
8629
8630(defun org-table-fedit-ref-up ()
8631 "Shift the reference at point one row/hline up."
8632 (interactive)
8633 (org-table-fedit-shift-reference 'up))
8634(defun org-table-fedit-ref-down ()
8635 "Shift the reference at point one row/hline down."
8636 (interactive)
8637 (org-table-fedit-shift-reference 'down))
8638(defun org-table-fedit-ref-left ()
8639 "Shift the reference at point one field to the left."
8640 (interactive)
8641 (org-table-fedit-shift-reference 'left))
8642(defun org-table-fedit-ref-right ()
8643 "Shift the reference at point one field to the right."
8644 (interactive)
8645 (org-table-fedit-shift-reference 'right))
8646
8647(defun org-table-fedit-shift-reference (dir)
8648 (cond
8649 ((org-at-regexp-p "\\(\\<[a-zA-Z]\\)&")
8650 (if (memq dir '(left right))
8651 (org-rematch-and-replace 1 (eq dir 'left))
8652 (error "Cannot shift reference in this direction")))
8653 ((org-at-regexp-p "\\(\\<[a-zA-Z]\\{1,2\\}\\)\\([0-9]+\\)")
8654 ;; A B3-like reference
8655 (if (memq dir '(up down))
8656 (org-rematch-and-replace 2 (eq dir 'up))
8657 (org-rematch-and-replace 1 (eq dir 'left))))
8658 ((org-at-regexp-p
8659 "\\(@\\|\\.\\.\\)\\([-+]?\\(I+\\>\\|[0-9]+\\)\\)\\(\\$\\([-+]?[0-9]+\\)\\)?")
8660 ;; An internal reference
8661 (if (memq dir '(up down))
8662 (org-rematch-and-replace 2 (eq dir 'up) (match-end 3))
8663 (org-rematch-and-replace 5 (eq dir 'left))))))
8664
8665(defun org-rematch-and-replace (n &optional decr hline)
8666 "Re-match the group N, and replace it with the shifted refrence."
8667 (or (match-end n) (error "Cannot shift reference in this direction"))
8668 (goto-char (match-beginning n))
8669 (and (looking-at (regexp-quote (match-string n)))
8670 (replace-match (org-shift-refpart (match-string 0) decr hline)
8671 t t)))
8672
8673(defun org-shift-refpart (ref &optional decr hline)
8674 "Shift a refrence part REF.
8675If DECR is set, decrease the references row/column, else increase.
8676If HLINE is set, this may be a hline reference, it certainly is not
8677a translation reference."
8678 (save-match-data
8679 (let* ((sign (string-match "^[-+]" ref)) n)
8680
8681 (if sign (setq sign (substring ref 0 1) ref (substring ref 1)))
8682 (cond
8683 ((and hline (string-match "^I+" ref))
8684 (setq n (string-to-number (concat sign (number-to-string (length ref)))))
8685 (setq n (+ n (if decr -1 1)))
8686 (if (= n 0) (setq n (+ n (if decr -1 1))))
8687 (if sign
8688 (setq sign (if (< n 0) "-" "+") n (abs n))
8689 (setq n (max 1 n)))
8690 (concat sign (make-string n ?I)))
8691
8692 ((string-match "^[0-9]+" ref)
8693 (setq n (string-to-number (concat sign ref)))
8694 (setq n (+ n (if decr -1 1)))
8695 (if sign
8696 (concat (if (< n 0) "-" "+") (number-to-string (abs n)))
8697 (number-to-string (max 1 n))))
8698
8699 ((string-match "^[a-zA-Z]+" ref)
8700 (org-number-to-letters
8701 (max 1 (+ (org-letters-to-number ref) (if decr -1 1)))))
8702
8703 (t (error "Cannot shift reference"))))))
8704
8705(defun org-table-fedit-toggle-coordinates ()
8706 "Toggle the display of coordinates in the refrenced table."
8707 (interactive)
8708 (let ((pos (marker-position org-pos)))
8709 (with-current-buffer (marker-buffer org-pos)
8710 (save-excursion
8711 (goto-char pos)
8712 (org-table-toggle-coordinate-overlays)))))
8713
8714(defun org-table-fedit-finish (&optional arg)
7987 "Parse the buffer for formula definitions and install them. 8715 "Parse the buffer for formula definitions and install them.
7988With prefix ARG, apply the new formulas to the table." 8716With prefix ARG, apply the new formulas to the table."
7989 (interactive "P") 8717 (interactive "P")
7990 (org-table-remove-rectangle-highlight) 8718 (org-table-remove-rectangle-highlight)
8719 (if org-table-use-standard-references
8720 (progn
8721 (org-table-fedit-convert-buffer 'org-table-convert-refs-to-rc)
8722 (setq org-table-buffer-is-an nil)))
7991 (let ((pos org-pos) eql var form) 8723 (let ((pos org-pos) eql var form)
7992 (setq org-pos nil)
7993 (goto-char (point-min)) 8724 (goto-char (point-min))
7994 (while (re-search-forward 8725 (while (re-search-forward
7995 "^\\(@[0-9]+\\$[0-9]+\\|\\$\\([a-zA-Z0-9]+\\)\\) *= *\\(.*\\(\n[ \t]+.*$\\)*\\)" 8726 "^\\(@[0-9]+\\$[0-9]+\\|\\$\\([a-zA-Z0-9]+\\)\\) *= *\\(.*\\(\n[ \t]+.*$\\)*\\)"
@@ -7997,9 +8728,13 @@ With prefix ARG, apply the new formulas to the table."
7997 (setq var (if (match-end 2) (match-string 2) (match-string 1)) 8728 (setq var (if (match-end 2) (match-string 2) (match-string 1))
7998 form (match-string 3)) 8729 form (match-string 3))
7999 (setq form (org-trim form)) 8730 (setq form (org-trim form))
8000 (while (string-match "[ \t]*\n[ \t]*" form) 8731 (when (not (equal form ""))
8001 (setq form (replace-match " " t t form))) 8732 (while (string-match "[ \t]*\n[ \t]*" form)
8002 (push (cons var form) eql)) 8733 (setq form (replace-match " " t t form)))
8734 (when (assoc var eql)
8735 (error "Double formulas for %s" var))
8736 (push (cons var form) eql)))
8737 (setq org-pos nil)
8003 (set-window-configuration org-window-configuration) 8738 (set-window-configuration org-window-configuration)
8004 (select-window (get-buffer-window (marker-buffer pos))) 8739 (select-window (get-buffer-window (marker-buffer pos)))
8005 (goto-char pos) 8740 (goto-char pos)
@@ -8012,7 +8747,7 @@ With prefix ARG, apply the new formulas to the table."
8012 (org-table-recalculate 'all) 8747 (org-table-recalculate 'all)
8013 (message "New formulas installed - press C-u C-c C-c to apply.")))) 8748 (message "New formulas installed - press C-u C-c C-c to apply."))))
8014 8749
8015(defun org-abort-edit-formulas () 8750(defun org-table-fedit-abort ()
8016 "Abort editing formulas, without installing the changes." 8751 "Abort editing formulas, without installing the changes."
8017 (interactive) 8752 (interactive)
8018 (org-table-remove-rectangle-highlight) 8753 (org-table-remove-rectangle-highlight)
@@ -8023,7 +8758,7 @@ With prefix ARG, apply the new formulas to the table."
8023 (move-marker pos nil) 8758 (move-marker pos nil)
8024 (message "Formula editing aborted without installing changes"))) 8759 (message "Formula editing aborted without installing changes")))
8025 8760
8026(defun org-edit-formula-lisp-indent () 8761(defun org-table-fedit-lisp-indent ()
8027 "Pretty-print and re-indent Lisp expressions in the Formula Editor." 8762 "Pretty-print and re-indent Lisp expressions in the Formula Editor."
8028 (interactive) 8763 (interactive)
8029 (let ((pos (point)) beg end ind) 8764 (let ((pos (point)) beg end ind)
@@ -8064,7 +8799,7 @@ With prefix ARG, apply the new formulas to the table."
8064 8799
8065(defvar org-show-positions nil) 8800(defvar org-show-positions nil)
8066 8801
8067(defun org-show-reference (&optional local) 8802(defun org-table-show-reference (&optional local)
8068 "Show the location/value of the $ expression at point." 8803 "Show the location/value of the $ expression at point."
8069 (interactive) 8804 (interactive)
8070 (org-table-remove-rectangle-highlight) 8805 (org-table-remove-rectangle-highlight)
@@ -8077,12 +8812,18 @@ With prefix ARG, apply the new formulas to the table."
8077 var name e what match dest) 8812 var name e what match dest)
8078 (if local (org-table-get-specials)) 8813 (if local (org-table-get-specials))
8079 (setq what (cond 8814 (setq what (cond
8080 ((org-at-regexp-p org-table-range-regexp2) 'range) 8815 ((or (org-at-regexp-p org-table-range-regexp2)
8816 (org-at-regexp-p org-table-translate-regexp)
8817 (org-at-regexp-p org-table-range-regexp))
8818 (setq match
8819 (save-match-data
8820 (org-table-convert-refs-to-rc (match-string 0))))
8821 'range)
8081 ((org-at-regexp-p "\\$[a-zA-Z][a-zA-Z0-9]*") 'name) 8822 ((org-at-regexp-p "\\$[a-zA-Z][a-zA-Z0-9]*") 'name)
8082 ((org-at-regexp-p "\\$[0-9]+") 'column) 8823 ((org-at-regexp-p "\\$[0-9]+") 'column)
8083 ((not local) nil) 8824 ((not local) nil)
8084 (t (error "No reference at point"))) 8825 (t (error "No reference at point")))
8085 match (and what (match-string 0))) 8826 match (and what (or match (match-string 0))))
8086 (when (and match (not (equal (match-beginning 0) (point-at-bol)))) 8827 (when (and match (not (equal (match-beginning 0) (point-at-bol))))
8087 (org-table-add-rectangle-overlay (match-beginning 0) (match-end 0) 8828 (org-table-add-rectangle-overlay (match-beginning 0) (match-end 0)
8088 'secondary-selection)) 8829 'secondary-selection))
@@ -8094,9 +8835,13 @@ With prefix ARG, apply the new formulas to the table."
8094 (setq match (org-table-formula-substitute-names match))) 8835 (setq match (org-table-formula-substitute-names match)))
8095 (unless local 8836 (unless local
8096 (save-excursion 8837 (save-excursion
8838 (end-of-line 1)
8839 (re-search-backward "^\\S-" nil t)
8097 (beginning-of-line 1) 8840 (beginning-of-line 1)
8098 (when (looking-at "\\(\\$[0-9a-zA-Z]+\\|@[0-9]+\\$[0-9]+\\)=") 8841 (when (looking-at "\\(\\$[0-9a-zA-Z]+\\|@[0-9]+\\$[0-9]+\\|[a-zA-Z]+\\([0-9]+\\|&\\)\\) *=")
8099 (setq dest (match-string 1)) 8842 (setq dest
8843 (save-match-data
8844 (org-table-convert-refs-to-rc (match-string 1))))
8100 (org-table-add-rectangle-overlay 8845 (org-table-add-rectangle-overlay
8101 (match-beginning 1) (match-end 1) face2)))) 8846 (match-beginning 1) (match-end 1) face2))))
8102 (if (and (markerp pos) (marker-buffer pos)) 8847 (if (and (markerp pos) (marker-buffer pos))
@@ -8165,18 +8910,20 @@ With prefix ARG, apply the new formulas to the table."
8165 (message "Constant: $%s=%s in `org-table-formula-constants'." 8910 (message "Constant: $%s=%s in `org-table-formula-constants'."
8166 var (cdr e))) 8911 var (cdr e)))
8167 ((setq e (and (fboundp 'constants-get) (constants-get var))) 8912 ((setq e (and (fboundp 'constants-get) (constants-get var)))
8168 (message "Constant: $%s=%s, retrieved from `constants.el'." var e)) 8913 (message "Constant: $%s=%s, from `constants.el'%s."
8914 var e (format " (%s units)" constants-unit-system)))
8169 (t (error "Undefined name $%s" var))))) 8915 (t (error "Undefined name $%s" var)))))
8170 (goto-char pos) 8916 (goto-char pos)
8171 (when org-show-positions 8917 (when (and org-show-positions
8918 (not (memq this-command '(org-table-fedit-scroll
8919 org-table-fedit-scroll-down))))
8172 (push pos org-show-positions) 8920 (push pos org-show-positions)
8921 (push org-table-current-begin-pos org-show-positions)
8173 (let ((min (apply 'min org-show-positions)) 8922 (let ((min (apply 'min org-show-positions))
8174 (max (apply 'max org-show-positions))) 8923 (max (apply 'max org-show-positions)))
8175 (when (or (not (pos-visible-in-window-p min)) 8924 (goto-char min) (recenter 0)
8176 (not (pos-visible-in-window-p max))) 8925 (goto-char max)
8177 (goto-char min) 8926 (or (pos-visible-in-window-p max) (recenter -1))))
8178 (set-window-start (selected-window) (point-at-bol))
8179 (goto-char pos))))
8180 (select-window win)))) 8927 (select-window win))))
8181 8928
8182(defun org-table-force-dataline () 8929(defun org-table-force-dataline ()
@@ -8193,27 +8940,17 @@ With prefix ARG, apply the new formulas to the table."
8193 ((or p1 p2) (goto-char (or p1 p2))) 8940 ((or p1 p2) (goto-char (or p1 p2)))
8194 (t (error "No table dataline around here")))))) 8941 (t (error "No table dataline around here"))))))
8195 8942
8196(defun org-table-edit-line-up () 8943(defun org-table-fedit-line-up ()
8197 "Move cursor one line up in the window showing the table." 8944 "Move cursor one line up in the window showing the table."
8198 (interactive) 8945 (interactive)
8199 (org-table-edit-move 'previous-line)) 8946 (org-table-fedit-move 'previous-line))
8200 8947
8201(defun org-table-edit-line-down () 8948(defun org-table-fedit-line-down ()
8202 "Move cursor one line down in the window showing the table." 8949 "Move cursor one line down in the window showing the table."
8203 (interactive) 8950 (interactive)
8204 (org-table-edit-move 'next-line)) 8951 (org-table-fedit-move 'next-line))
8205 8952
8206(defun org-table-edit-backward-field () 8953(defun org-table-fedit-move (command)
8207 "Move cursor one field backward in the window showing the table."
8208 (interactive)
8209 (org-table-edit-move 'org-table-previous-field))
8210
8211(defun org-table-edit-next-field ()
8212 "Move cursor one field forward in the window showing the table."
8213 (interactive)
8214 (org-table-edit-move 'org-table-next-field))
8215
8216(defun org-table-edit-move (command)
8217 "Move the cursor in the window shoinw the table. 8954 "Move the cursor in the window shoinw the table.
8218Use COMMAND to do the motion, repeat if necessary to end up in a data line." 8955Use COMMAND to do the motion, repeat if necessary to end up in a data line."
8219 (let ((org-table-allow-automatic-line-recalculation nil) 8956 (let ((org-table-allow-automatic-line-recalculation nil)
@@ -8228,17 +8965,17 @@ Use COMMAND to do the motion, repeat if necessary to end up in a data line."
8228 (move-marker pos (point)) 8965 (move-marker pos (point))
8229 (select-window win))) 8966 (select-window win)))
8230 8967
8231(defun org-table-edit-scroll (N) 8968(defun org-table-fedit-scroll (N)
8232 (interactive "p") 8969 (interactive "p")
8233 (let ((other-window-scroll-buffer (marker-buffer org-pos))) 8970 (let ((other-window-scroll-buffer (marker-buffer org-pos)))
8234 (scroll-other-window N))) 8971 (scroll-other-window N)))
8235 8972
8236(defun org-table-edit-scroll-down (N) 8973(defun org-table-fedit-scroll-down (N)
8237 (interactive "p") 8974 (interactive "p")
8238 (org-table-edit-scroll (- N))) 8975 (org-table-fedit-scroll (- N)))
8239 8976
8240(defvar org-table-rectangle-overlays nil) 8977(defvar org-table-rectangle-overlays nil)
8241 8978
8242(defun org-table-add-rectangle-overlay (beg end &optional face) 8979(defun org-table-add-rectangle-overlay (beg end &optional face)
8243 "Add a new overlay." 8980 "Add a new overlay."
8244 (let ((ov (org-make-overlay beg end))) 8981 (let ((ov (org-make-overlay beg end)))
@@ -8290,7 +9027,7 @@ Use COMMAND to do the motion, repeat if necessary to end up in a data line."
8290 (mapc 'org-delete-overlay org-table-coordinate-overlays) 9027 (mapc 'org-delete-overlay org-table-coordinate-overlays)
8291 (setq org-table-coordinate-overlays nil) 9028 (setq org-table-coordinate-overlays nil)
8292 (save-excursion 9029 (save-excursion
8293 (let ((id 0) (ih 0) hline eol str ic ov beg) 9030 (let ((id 0) (ih 0) hline eol s1 s2 str ic ov beg)
8294 (goto-char (org-table-begin)) 9031 (goto-char (org-table-begin))
8295 (while (org-at-table-p) 9032 (while (org-at-table-p)
8296 (setq eol (point-at-eol)) 9033 (setq eol (point-at-eol))
@@ -8299,15 +9036,18 @@ Use COMMAND to do the motion, repeat if necessary to end up in a data line."
8299 (setq hline (looking-at org-table-hline-regexp)) 9036 (setq hline (looking-at org-table-hline-regexp))
8300 (setq str (if hline (format "I*%-2d" (setq ih (1+ ih))) 9037 (setq str (if hline (format "I*%-2d" (setq ih (1+ ih)))
8301 (format "%4d" (setq id (1+ id))))) 9038 (format "%4d" (setq id (1+ id)))))
8302 (org-overlay-before-string ov str 'org-formula 'evaporate) 9039 (org-overlay-before-string ov str 'org-special-keyword 'evaporate)
8303 (when hline 9040 (when hline
8304 (setq ic 0) 9041 (setq ic 0)
8305 (while (re-search-forward "[+|]-+" eol t) 9042 (while (re-search-forward "[+|]\\(-+\\)" eol t)
8306 (setq beg (1+ (match-beginning 0)) 9043 (setq beg (1+ (match-beginning 0))
8307 str (concat "$" (int-to-string (setq ic (1+ ic))))) 9044 ic (1+ ic)
9045 s1 (concat "$" (int-to-string ic))
9046 s2 (org-number-to-letters ic)
9047 str (if (eq org-table-use-standard-references t) s2 s1))
8308 (setq ov (org-make-overlay beg (+ beg (length str)))) 9048 (setq ov (org-make-overlay beg (+ beg (length str))))
8309 (push ov org-table-coordinate-overlays) 9049 (push ov org-table-coordinate-overlays)
8310 (org-overlay-display ov str 'org-formula 'evaporate))) 9050 (org-overlay-display ov str 'org-special-keyword 'evaporate)))
8311 (beginning-of-line 2))))) 9051 (beginning-of-line 2)))))
8312 9052
8313(defun org-table-toggle-coordinate-overlays () 9053(defun org-table-toggle-coordinate-overlays ()
@@ -8492,7 +9232,7 @@ to execute outside of tables."
8492 '("\C-c}" org-table-toggle-coordinate-overlays) 9232 '("\C-c}" org-table-toggle-coordinate-overlays)
8493 '("\C-c{" org-table-toggle-formula-debugger) 9233 '("\C-c{" org-table-toggle-formula-debugger)
8494 '("\C-m" org-table-next-row) 9234 '("\C-m" org-table-next-row)
8495 (list (org-key 'S-return) 'org-table-copy-down) 9235 '([(shift return)] org-table-copy-down)
8496 '("\C-c\C-q" org-table-wrap-region) 9236 '("\C-c\C-q" org-table-wrap-region)
8497 '("\C-c?" org-table-field-info) 9237 '("\C-c?" org-table-field-info)
8498 '("\C-c " org-table-blank-field) 9238 '("\C-c " org-table-blank-field)
@@ -8507,34 +9247,34 @@ to execute outside of tables."
8507 elt key fun cmd) 9247 elt key fun cmd)
8508 (while (setq elt (pop bindings)) 9248 (while (setq elt (pop bindings))
8509 (setq nfunc (1+ nfunc)) 9249 (setq nfunc (1+ nfunc))
8510 (setq key (car elt) 9250 (setq key (org-key (car elt))
8511 fun (nth 1 elt) 9251 fun (nth 1 elt)
8512 cmd (orgtbl-make-binding fun nfunc key)) 9252 cmd (orgtbl-make-binding fun nfunc key))
8513 (define-key orgtbl-mode-map key cmd)) 9253 (org-defkey orgtbl-mode-map key cmd))
8514 9254
8515 ;; Special treatment needed for TAB and RET 9255 ;; Special treatment needed for TAB and RET
8516 (define-key orgtbl-mode-map [(return)] 9256 (org-defkey orgtbl-mode-map [(return)]
8517 (orgtbl-make-binding 'orgtbl-ret 100 [(return)] "\C-m")) 9257 (orgtbl-make-binding 'orgtbl-ret 100 [(return)] "\C-m"))
8518 (define-key orgtbl-mode-map "\C-m" 9258 (org-defkey orgtbl-mode-map "\C-m"
8519 (orgtbl-make-binding 'orgtbl-ret 101 "\C-m" [(return)])) 9259 (orgtbl-make-binding 'orgtbl-ret 101 "\C-m" [(return)]))
8520 9260
8521 (define-key orgtbl-mode-map [(tab)] 9261 (org-defkey orgtbl-mode-map [(tab)]
8522 (orgtbl-make-binding 'orgtbl-tab 102 [(tab)] "\C-i")) 9262 (orgtbl-make-binding 'orgtbl-tab 102 [(tab)] "\C-i"))
8523 (define-key orgtbl-mode-map "\C-i" 9263 (org-defkey orgtbl-mode-map "\C-i"
8524 (orgtbl-make-binding 'orgtbl-tab 103 "\C-i" [(tab)])) 9264 (orgtbl-make-binding 'orgtbl-tab 103 "\C-i" [(tab)]))
8525 9265
8526 (define-key orgtbl-mode-map [(shift tab)] 9266 (org-defkey orgtbl-mode-map [(shift tab)]
8527 (orgtbl-make-binding 'org-table-previous-field 104 9267 (orgtbl-make-binding 'org-table-previous-field 104
8528 [(shift tab)] [(tab)] "\C-i")) 9268 [(shift tab)] [(tab)] "\C-i"))
8529 9269
8530 (define-key orgtbl-mode-map "\M-\C-m" 9270 (org-defkey orgtbl-mode-map "\M-\C-m"
8531 (orgtbl-make-binding 'org-table-wrap-region 105 9271 (orgtbl-make-binding 'org-table-wrap-region 105
8532 "\M-\C-m" [(meta return)])) 9272 "\M-\C-m" [(meta return)]))
8533 (define-key orgtbl-mode-map [(meta return)] 9273 (org-defkey orgtbl-mode-map [(meta return)]
8534 (orgtbl-make-binding 'org-table-wrap-region 106 9274 (orgtbl-make-binding 'org-table-wrap-region 106
8535 [(meta return)] "\M-\C-m")) 9275 [(meta return)] "\M-\C-m"))
8536 9276
8537 (define-key orgtbl-mode-map "\C-c\C-c" 'orgtbl-ctrl-c-ctrl-c) 9277 (org-defkey orgtbl-mode-map "\C-c\C-c" 'orgtbl-ctrl-c-ctrl-c)
8538 (when orgtbl-optimized 9278 (when orgtbl-optimized
8539 ;; If the user wants maximum table support, we need to hijack 9279 ;; If the user wants maximum table support, we need to hijack
8540 ;; some standard editing functions 9280 ;; some standard editing functions
@@ -8542,7 +9282,7 @@ to execute outside of tables."
8542 'self-insert-command 'orgtbl-self-insert-command 9282 'self-insert-command 'orgtbl-self-insert-command
8543 'delete-char 'org-delete-char 9283 'delete-char 'org-delete-char
8544 'delete-backward-char 'org-delete-backward-char) 9284 'delete-backward-char 'org-delete-backward-char)
8545 (define-key orgtbl-mode-map "|" 'org-force-self-insert)) 9285 (org-defkey orgtbl-mode-map "|" 'org-force-self-insert))
8546 (easy-menu-define orgtbl-mode-menu orgtbl-mode-map "OrgTbl menu" 9286 (easy-menu-define orgtbl-mode-menu orgtbl-mode-map "OrgTbl menu"
8547 '("OrgTbl" 9287 '("OrgTbl"
8548 ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p) :keys "C-c C-c"] 9288 ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p) :keys "C-c C-c"]
@@ -8678,7 +9418,31 @@ overwritten, and the table is not marked as requiring realignment."
8678(defvar orgtbl-exp-regexp "^\\([-+]?[0-9][0-9.]*\\)[eE]\\([-+]?[0-9]+\\)$" 9418(defvar orgtbl-exp-regexp "^\\([-+]?[0-9][0-9.]*\\)[eE]\\([-+]?[0-9]+\\)$"
8679 "Regula expression matching exponentials as produced by calc.") 9419 "Regula expression matching exponentials as produced by calc.")
8680 9420
8681(defvar org-table-clean-did-remove-column-1 nil) 9421(defvar org-table-clean-did-remove-column nil)
9422
9423(defun orgtbl-export (table target)
9424 (let ((func (intern (concat "orgtbl-to-" (symbol-name target))))
9425 (lines (org-split-string table "[ \t]*\n[ \t]*"))
9426 org-table-last-alignment org-table-last-column-widths
9427 maxcol column)
9428 (if (not (fboundp func))
9429 (error "Cannot export orgtbl table to %s" target))
9430 (setq lines (org-table-clean-before-export lines))
9431 (setq table
9432 (mapcar
9433 (lambda (x)
9434 (if (string-match org-table-hline-regexp x)
9435 'hline
9436 (org-split-string (org-trim x) "\\s-*|\\s-*")))
9437 lines))
9438 (setq maxcol (apply 'max (mapcar (lambda (x) (if (listp x) (length x) 0))
9439 table)))
9440 (loop for i from (1- maxcol) downto 0 do
9441 (setq column (mapcar (lambda (x) (if (listp x) (nth i x) nil)) table))
9442 (setq column (delq nil column))
9443 (push (apply 'max (mapcar 'string-width column)) org-table-last-column-widths)
9444 (push (> (/ (apply '+ (mapcar (lambda (x) (if (string-match org-table-number-regexp x) 1 0)) column)) maxcol) org-table-number-fraction) org-table-last-alignment))
9445 (funcall func table nil)))
8682 9446
8683(defun orgtbl-send-table (&optional maybe) 9447(defun orgtbl-send-table (&optional maybe)
8684 "Send a tranformed version of this table to the receiver position. 9448 "Send a tranformed version of this table to the receiver position.
@@ -8706,7 +9470,7 @@ this table."
8706 (org-table-begin) (org-table-end))) 9470 (org-table-begin) (org-table-end)))
8707 (lines (nthcdr (or skip 0) (org-split-string txt "[ \t]*\n[ \t]*"))) 9471 (lines (nthcdr (or skip 0) (org-split-string txt "[ \t]*\n[ \t]*")))
8708 (lines (org-table-clean-before-export lines)) 9472 (lines (org-table-clean-before-export lines))
8709 (i0 (if org-table-clean-did-remove-column-1 2 1)) 9473 (i0 (if org-table-clean-did-remove-column 2 1))
8710 (table (mapcar 9474 (table (mapcar
8711 (lambda (x) 9475 (lambda (x)
8712 (if (string-match org-table-hline-regexp x) 9476 (if (string-match org-table-hline-regexp x)
@@ -8722,7 +9486,7 @@ this table."
8722 (org-table-last-column-widths 9486 (org-table-last-column-widths
8723 (org-remove-by-index (funcall fun org-table-last-column-widths) 9487 (org-remove-by-index (funcall fun org-table-last-column-widths)
8724 skipcols i0))) 9488 skipcols i0)))
8725 9489
8726 (unless (fboundp transform) 9490 (unless (fboundp transform)
8727 (error "No such transformation function %s" transform)) 9491 (error "No such transformation function %s" transform))
8728 (setq txt (funcall transform table params)) 9492 (setq txt (funcall transform table params))
@@ -8754,7 +9518,7 @@ First element has index 0, or I0 if given."
8754 (setq i0 (1+ i0)) 9518 (setq i0 (1+ i0))
8755 (if (memq i0 indices) :rm x)) 9519 (if (memq i0 indices) :rm x))
8756 list)))) 9520 list))))
8757 9521
8758(defun orgtbl-toggle-comment () 9522(defun orgtbl-toggle-comment ()
8759 "Comment or uncomment the orgtbl at point." 9523 "Comment or uncomment the orgtbl at point."
8760 (interactive) 9524 (interactive)
@@ -8850,7 +9614,7 @@ directly by `orgtbl-send-table'. See manual."
8850 (splicep (plist-get p :splice)) 9614 (splicep (plist-get p :splice))
8851 (hline (plist-get p :hline)) 9615 (hline (plist-get p :hline))
8852 rtn line i fm efm lfmt h) 9616 rtn line i fm efm lfmt h)
8853 9617
8854 ;; Do we have a header? 9618 ;; Do we have a header?
8855 (if (and (not splicep) (listp (car table)) (memq 'hline table)) 9619 (if (and (not splicep) (listp (car table)) (memq 'hline table))
8856 (setq h t)) 9620 (setq h t))
@@ -8858,7 +9622,7 @@ directly by `orgtbl-send-table'. See manual."
8858 ;; Put header 9622 ;; Put header
8859 (unless splicep 9623 (unless splicep
8860 (push (or (plist-get p :tstart) "ERROR: no :tstart") rtn)) 9624 (push (or (plist-get p :tstart) "ERROR: no :tstart") rtn))
8861 9625
8862 ;; Now loop over all lines 9626 ;; Now loop over all lines
8863 (while (setq line (pop table)) 9627 (while (setq line (pop table))
8864 (if (eq line 'hline) 9628 (if (eq line 'hline)
@@ -8886,10 +9650,10 @@ directly by `orgtbl-send-table'. See manual."
8886 (mapconcat 'identity line (org-get-param p h i :sep :hsep)) 9650 (mapconcat 'identity line (org-get-param p h i :sep :hsep))
8887 (org-get-param p h i :lend :hlend)) 9651 (org-get-param p h i :lend :hlend))
8888 rtn)))) 9652 rtn))))
8889 9653
8890 (unless splicep 9654 (unless splicep
8891 (push (or (plist-get p :tend) "ERROR: no :tend") rtn)) 9655 (push (or (plist-get p :tend) "ERROR: no :tend") rtn))
8892 9656
8893 (mapconcat 'identity (nreverse rtn) "\n"))) 9657 (mapconcat 'identity (nreverse rtn) "\n")))
8894 9658
8895(defun orgtbl-to-latex (table params) 9659(defun orgtbl-to-latex (table params)
@@ -9041,7 +9805,7 @@ For file links, arg negates `org-context-in-file-links'."
9041 (setq cpltxt (concat "bbdb:" (or name company)) 9805 (setq cpltxt (concat "bbdb:" (or name company))
9042 link (org-make-link cpltxt)) 9806 link (org-make-link cpltxt))
9043 (org-store-link-props :type "bbdb" :name name :company company))) 9807 (org-store-link-props :type "bbdb" :name name :company company)))
9044 9808
9045 ((eq major-mode 'Info-mode) 9809 ((eq major-mode 'Info-mode)
9046 (setq link (org-make-link "info:" 9810 (setq link (org-make-link "info:"
9047 (file-name-nondirectory Info-current-file) 9811 (file-name-nondirectory Info-current-file)
@@ -9219,7 +9983,7 @@ For file links, arg negates `org-context-in-file-links'."
9219 (if (string-match "::\\'" cpltxt) 9983 (if (string-match "::\\'" cpltxt)
9220 (setq cpltxt (substring cpltxt 0 -2))) 9984 (setq cpltxt (substring cpltxt 0 -2)))
9221 (setq link (org-make-link cpltxt))) 9985 (setq link (org-make-link cpltxt)))
9222 9986
9223 (buffer-file-name 9987 (buffer-file-name
9224 ;; Just link to this file here. 9988 ;; Just link to this file here.
9225 (setq cpltxt (concat "file:" 9989 (setq cpltxt (concat "file:"
@@ -9430,7 +10194,8 @@ is in the current directory or below.
9430With three \\[universal-argument] prefixes, negate the meaning of 10194With three \\[universal-argument] prefixes, negate the meaning of
9431`org-keep-stored-link-after-insertion'." 10195`org-keep-stored-link-after-insertion'."
9432 (interactive "P") 10196 (interactive "P")
9433 (let ((region (if (org-region-active-p) 10197 (let ((wcf (current-window-configuration))
10198 (region (if (org-region-active-p)
9434 (prog1 (buffer-substring (region-beginning) (region-end)) 10199 (prog1 (buffer-substring (region-beginning) (region-end))
9435 (delete-region (region-beginning) (region-end))))) 10200 (delete-region (region-beginning) (region-end)))))
9436 tmphist ; byte-compile incorrectly complains about this 10201 tmphist ; byte-compile incorrectly complains about this
@@ -9469,13 +10234,31 @@ With three \\[universal-argument] prefixes, negate the meaning of
9469 (t (setq link (org-make-link "file:" file)))))) 10234 (t (setq link (org-make-link "file:" file))))))
9470 (t 10235 (t
9471 ;; Read link, with completion for stored links. 10236 ;; Read link, with completion for stored links.
9472 ;; Fake a link history 10237 (with-output-to-temp-buffer "*Org Links*"
10238 (princ "Insert a link. Use TAB to complete valid link prefixes.\n")
10239 (when org-stored-links
10240 (princ "\nStored links ar available with <up>/<down> (most recent with RET):\n\n")
10241 (princ (mapconcat 'car (reverse org-stored-links) "\n"))))
10242 (let ((cw (selected-window)))
10243 (select-window (get-buffer-window "*Org Links*"))
10244 (shrink-window-if-larger-than-buffer)
10245 (setq truncate-lines t)
10246 (select-window cw))
10247 ;; Fake a link history, containing the stored links.
9473 (setq tmphist (append (mapcar 'car org-stored-links) 10248 (setq tmphist (append (mapcar 'car org-stored-links)
9474 org-insert-link-history)) 10249 org-insert-link-history))
9475 (setq link (org-completing-read 10250 (unwind-protect
9476 "Link: " org-stored-links nil nil nil 10251 (setq link (org-completing-read
9477 'tmphist 10252 "Link: "
9478 (or (car (car org-stored-links))))) 10253 (append
10254 (mapcar (lambda (x) (concat (car x) ":"))
10255 (append org-link-abbrev-alist-local org-link-abbrev-alist))
10256 (mapcar (lambda (x) (concat x ":")) org-link-types))
10257 nil nil nil
10258 'tmphist
10259 (or (car (car org-stored-links)))))
10260 (set-window-configuration wcf)
10261 (kill-buffer "*Org Links*"))
9479 (setq entry (assoc link org-stored-links)) 10262 (setq entry (assoc link org-stored-links))
9480 (or entry (push link org-insert-link-history)) 10263 (or entry (push link org-insert-link-history))
9481 (if (funcall (if (equal complete-file '(64)) 'not 'identity) 10264 (if (funcall (if (equal complete-file '(64)) 'not 'identity)
@@ -9531,7 +10314,7 @@ With three \\[universal-argument] prefixes, negate the meaning of
9531(defun org-completing-read (&rest args) 10314(defun org-completing-read (&rest args)
9532 (let ((minibuffer-local-completion-map 10315 (let ((minibuffer-local-completion-map
9533 (copy-keymap minibuffer-local-completion-map))) 10316 (copy-keymap minibuffer-local-completion-map)))
9534 (define-key minibuffer-local-completion-map " " 'self-insert-command) 10317 (org-defkey minibuffer-local-completion-map " " 'self-insert-command)
9535 (apply 'completing-read args))) 10318 (apply 'completing-read args)))
9536 10319
9537;;; Opening/following a link 10320;;; Opening/following a link
@@ -9637,7 +10420,7 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
9637 (setq type (match-string 1) path (match-string 2)) 10420 (setq type (match-string 1) path (match-string 2))
9638 (throw 'match t))) 10421 (throw 'match t)))
9639 (save-excursion 10422 (save-excursion
9640 (when (org-in-regexp "\\(:[A-Za-z_@0-9:]+\\):[ \t\r\n]") 10423 (when (org-in-regexp "\\(:[A-Za-z_@0-9:]+\\):[ \t]*$")
9641 (setq type "tags" 10424 (setq type "tags"
9642 path (match-string 1)) 10425 path (match-string 1))
9643 (while (string-match ":" path) 10426 (while (string-match ":" path)
@@ -9830,6 +10613,10 @@ If the current buffer is in `dired-mode', grep will be used to search
9830in all files. If AVOID-POS is given, ignore matches near that position." 10613in all files. If AVOID-POS is given, ignore matches near that position."
9831 (let ((case-fold-search t) 10614 (let ((case-fold-search t)
9832 (s0 (mapconcat 'identity (org-split-string s "[ \t\r\n]+") " ")) 10615 (s0 (mapconcat 'identity (org-split-string s "[ \t\r\n]+") " "))
10616 (markers (concat "\\(?:" (mapconcat (lambda (x) (regexp-quote (car x)))
10617 (append '((" ") ("\t") ("\n"))
10618 org-emphasis-alist)
10619 "\\|") "\\)"))
9833 (pos (point)) 10620 (pos (point))
9834 (pre "") (post "") 10621 (pre "") (post "")
9835 words re0 re1 re2 re3 re4 re5 re2a reall) 10622 words re0 re1 re2 re3 re4 re5 re2a reall)
@@ -9866,7 +10653,8 @@ in all files. If AVOID-POS is given, ignore matches near that position."
9866 ;; Make a series of regular expressions to find a match 10653 ;; Make a series of regular expressions to find a match
9867 (setq words (org-split-string s "[ \n\r\t]+") 10654 (setq words (org-split-string s "[ \n\r\t]+")
9868 re0 (concat "\\(<<" (regexp-quote s0) ">>\\)") 10655 re0 (concat "\\(<<" (regexp-quote s0) ">>\\)")
9869 re2 (concat "[ \t\r\n]\\(" (mapconcat 'downcase words "[ \t]+") "\\)[ \t\r\n]") 10656 re2 (concat markers "\\(" (mapconcat 'downcase words "[ \t]+")
10657 "\\)" markers)
9870 re2a (concat "[ \t\r\n]\\(" (mapconcat 'downcase words "[ \t\r\n]+") "\\)[ \t\r\n]") 10658 re2a (concat "[ \t\r\n]\\(" (mapconcat 'downcase words "[ \t\r\n]+") "\\)[ \t\r\n]")
9871 re4 (concat "[^a-zA-Z_]\\(" (mapconcat 'downcase words "[^a-zA-Z_\r\n]+") "\\)[^a-zA-Z_]") 10659 re4 (concat "[^a-zA-Z_]\\(" (mapconcat 'downcase words "[^a-zA-Z_\r\n]+") "\\)[^a-zA-Z_]")
9872 re1 (concat pre re2 post) 10660 re1 (concat pre re2 post)
@@ -9908,16 +10696,18 @@ enclose the position of `org-open-link-marker'."
9908 (let ((m org-open-link-marker)) 10696 (let ((m org-open-link-marker))
9909 (catch 'exit 10697 (catch 'exit
9910 (while (apply 're-search-forward args) 10698 (while (apply 're-search-forward args)
9911 (goto-char (match-end group)) 10699 (unless (get-text-property (match-end group) 'intangible) ; Emacs 21
9912 (if (and (or (not (eq (marker-buffer m) (current-buffer))) 10700 (goto-char (match-end group))
9913 (> (match-beginning 0) (marker-position m)) 10701 (if (and (or (not (eq (marker-buffer m) (current-buffer)))
9914 (< (match-end 0) (marker-position m))) 10702 (> (match-beginning 0) (marker-position m))
9915 (save-match-data 10703 (< (match-end 0) (marker-position m)))
9916 (or (not (org-in-regexp org-bracket-link-analytic-regexp 1)) 10704 (save-match-data
9917 (not (match-end 4)) ; no description 10705 (or (not (org-in-regexp
9918 (and (<= (match-beginning 4) (point)) 10706 org-bracket-link-analytic-regexp 1))
9919 (>= (match-end 4) (point)))))) 10707 (not (match-end 4)) ; no description
9920 (throw 'exit (point))))))) 10708 (and (<= (match-beginning 4) (point))
10709 (>= (match-end 4) (point))))))
10710 (throw 'exit (point))))))))
9921 10711
9922(defun org-get-buffer-for-internal-link (buffer) 10712(defun org-get-buffer-for-internal-link (buffer)
9923 "Return a buffer to be used for displaying the link target of internal links." 10713 "Return a buffer to be used for displaying the link target of internal links."
@@ -10065,7 +10855,7 @@ onto the ring."
10065 (funcall (cdr (assq 'gnus org-link-frame-setup))) 10855 (funcall (cdr (assq 'gnus org-link-frame-setup)))
10066 (if gnus-other-frame-object (select-frame gnus-other-frame-object)) 10856 (if gnus-other-frame-object (select-frame gnus-other-frame-object))
10067 (cond ((and group article) 10857 (cond ((and group article)
10068 (gnus-group-read-group 0 nil group) 10858 (gnus-group-read-group 1 nil group)
10069 (gnus-summary-goto-article (string-to-number article) nil t)) 10859 (gnus-summary-goto-article (string-to-number article) nil t))
10070 (group (gnus-group-jump-to-group group)))) 10860 (group (gnus-group-jump-to-group group))))
10071 10861
@@ -10346,7 +11136,7 @@ If the file does not exist, an error is thrown."
10346 (if (stringp command) 11136 (if (stringp command)
10347 (setq cmd command) 11137 (setq cmd command)
10348 (setq cmd 'emacs)))) 11138 (setq cmd 'emacs))))
10349 (if (and (not (eq cmd 'emacs)) ; Emacs has not problems with non-ex files 11139 (if (and (not (eq cmd 'emacs)) ; Emacs has no problems with non-ex files
10350 (not (file-exists-p file)) 11140 (not (file-exists-p file))
10351 (not org-open-non-existing-files)) 11141 (not org-open-non-existing-files))
10352 (error "No such file: %s" file)) 11142 (error "No such file: %s" file))
@@ -10380,10 +11170,6 @@ If the file does not exist, an error is thrown."
10380 org-file-apps-defaults-windowsnt) 11170 org-file-apps-defaults-windowsnt)
10381 (t org-file-apps-defaults-gnu))) 11171 (t org-file-apps-defaults-gnu)))
10382 11172
10383(defun org-expand-file-name (path)
10384 "Replace special path abbreviations and expand the file name."
10385 (expand-file-name path))
10386
10387(defvar ange-ftp-name-format) ; to silence the XEmacs compiler. 11173(defvar ange-ftp-name-format) ; to silence the XEmacs compiler.
10388(defun org-file-remote-p (file) 11174(defun org-file-remote-p (file)
10389 "Test whether FILE specifies a location on a remote system. 11175 "Test whether FILE specifies a location on a remote system.
@@ -10569,7 +11355,7 @@ See also the variable `org-reverse-note-order'."
10569 (replace-match "")) 11355 (replace-match ""))
10570 (catch 'quit 11356 (catch 'quit
10571 (let* ((txt (buffer-substring (point-min) (point-max))) 11357 (let* ((txt (buffer-substring (point-min) (point-max)))
10572 (fastp current-prefix-arg) 11358 (fastp (equal current-prefix-arg '(4)))
10573 (file (if fastp org-default-notes-file (org-get-org-file))) 11359 (file (if fastp org-default-notes-file (org-get-org-file)))
10574 (heading org-remember-default-headline) 11360 (heading org-remember-default-headline)
10575 (visiting (org-find-base-buffer-visiting file)) 11361 (visiting (org-find-base-buffer-visiting file))
@@ -10577,6 +11363,7 @@ See also the variable `org-reverse-note-order'."
10577 (org-startup-align-all-tables nil) 11363 (org-startup-align-all-tables nil)
10578 (org-goto-start-pos 1) 11364 (org-goto-start-pos 1)
10579 spos level indent reversed) 11365 spos level indent reversed)
11366 (setq current-prefix-arg nil)
10580 ;; Modify text so that it becomes a nice subtree which can be inserted 11367 ;; Modify text so that it becomes a nice subtree which can be inserted
10581 ;; into an org tree. 11368 ;; into an org tree.
10582 (let* ((lines (split-string txt "\n")) 11369 (let* ((lines (split-string txt "\n"))
@@ -10597,13 +11384,13 @@ See also the variable `org-reverse-note-order'."
10597 ;; Find the file 11384 ;; Find the file
10598 (if (not visiting) (find-file-noselect file)) 11385 (if (not visiting) (find-file-noselect file))
10599 (with-current-buffer (or visiting (get-file-buffer file)) 11386 (with-current-buffer (or visiting (get-file-buffer file))
10600 (save-excursion (and (goto-char (point-min))
10601 (not (re-search-forward "^\\* " nil t))
10602 (insert "\n* Notes\n")))
10603 (setq reversed (org-notes-order-reversed-p))
10604 (save-excursion 11387 (save-excursion
10605 (save-restriction 11388 (save-restriction
10606 (widen) 11389 (widen)
11390 (and (goto-char (point-min))
11391 (not (re-search-forward "^\\* " nil t))
11392 (insert "\n* Notes\n"))
11393 (setq reversed (org-notes-order-reversed-p))
10607 11394
10608 ;; Find the default location 11395 ;; Find the default location
10609 (when (and heading (stringp heading) (string-match "\\S-" heading)) 11396 (when (and heading (stringp heading) (string-match "\\S-" heading))
@@ -10619,7 +11406,7 @@ See also the variable `org-reverse-note-order'."
10619 org-goto-start-pos 11406 org-goto-start-pos
10620 (org-get-location (current-buffer) org-remember-help))) 11407 (org-get-location (current-buffer) org-remember-help)))
10621 (if (not spos) (throw 'quit nil)) ; return nil to show we did 11408 (if (not spos) (throw 'quit nil)) ; return nil to show we did
10622 ; not handle this note 11409 ; not handle this note
10623 (goto-char spos) 11410 (goto-char spos)
10624 (cond ((and (bobp) (not reversed)) 11411 (cond ((and (bobp) (not reversed))
10625 ;; Put it at the end, one level below level 1 11412 ;; Put it at the end, one level below level 1
@@ -10636,12 +11423,12 @@ See also the variable `org-reverse-note-order'."
10636 (re-search-forward "^\\*" nil t) 11423 (re-search-forward "^\\*" nil t)
10637 (beginning-of-line 1) 11424 (beginning-of-line 1)
10638 (org-paste-subtree 1 txt))) 11425 (org-paste-subtree 1 txt)))
10639 ((and (org-on-heading-p nil) (not current-prefix-arg)) 11426 ((and (org-on-heading-p t) (not current-prefix-arg))
10640 ;; Put it below this entry, at the beg/end of the subtree 11427 ;; Put it below this entry, at the beg/end of the subtree
10641 (org-back-to-heading t) 11428 (org-back-to-heading t)
10642 (setq level (funcall outline-level)) 11429 (setq level (funcall outline-level))
10643 (if reversed 11430 (if reversed
10644 (outline-end-of-heading) 11431 (outline-next-heading)
10645 (org-end-of-subtree t)) 11432 (org-end-of-subtree t))
10646 (if (not (bolp)) (newline)) 11433 (if (not (bolp)) (newline))
10647 (beginning-of-line 1) 11434 (beginning-of-line 1)
@@ -10649,7 +11436,9 @@ See also the variable `org-reverse-note-order'."
10649 (t 11436 (t
10650 ;; Put it right there, with automatic level determined by 11437 ;; Put it right there, with automatic level determined by
10651 ;; org-paste-subtree or from prefix arg 11438 ;; org-paste-subtree or from prefix arg
10652 (org-paste-subtree current-prefix-arg txt))) 11439 (org-paste-subtree
11440 (if (numberp current-prefix-arg) current-prefix-arg)
11441 txt)))
10653 (when remember-save-after-remembering 11442 (when remember-save-after-remembering
10654 (save-buffer) 11443 (save-buffer)
10655 (if (not visiting) (kill-buffer (current-buffer))))))))) 11444 (if (not visiting) (kill-buffer (current-buffer)))))))))
@@ -10838,7 +11627,7 @@ At all other locations, this simply calls `ispell-complete-word'."
10838 ((string-match "\\`\\*+[ \t]*\\'" 11627 ((string-match "\\`\\*+[ \t]*\\'"
10839 (buffer-substring (point-at-bol) beg)) 11628 (buffer-substring (point-at-bol) beg))
10840 (setq type :todo) 11629 (setq type :todo)
10841 (mapcar 'list org-todo-keywords)) 11630 (mapcar 'list org-todo-keywords-1))
10842 (searchhead 11631 (searchhead
10843 (setq type :searchhead) 11632 (setq type :searchhead)
10844 (save-excursion 11633 (save-excursion
@@ -10926,6 +11715,8 @@ For calling through lisp, arg is also interpreted in the following way:
10926'none -> empty state 11715'none -> empty state
10927\"\"(empty string) -> switch to empty state 11716\"\"(empty string) -> switch to empty state
10928'done -> switch to DONE 11717'done -> switch to DONE
11718'nextset -> switch to the next set of keywords
11719'previousset -> switch to the previous set of keywords
10929\"WAITING\" -> switch to the specified keyword, but only if it 11720\"WAITING\" -> switch to the specified keyword, but only if it
10930 really is a member of `org-todo-keywords'." 11721 really is a member of `org-todo-keywords'."
10931 (interactive "P") 11722 (interactive "P")
@@ -10935,52 +11726,76 @@ For calling through lisp, arg is also interpreted in the following way:
10935 (or (looking-at (concat " +" org-todo-regexp " *")) 11726 (or (looking-at (concat " +" org-todo-regexp " *"))
10936 (looking-at " *")) 11727 (looking-at " *"))
10937 (let* ((this (match-string 1)) 11728 (let* ((this (match-string 1))
11729 (head (org-get-todo-sequence-head this))
11730 (ass (assoc head org-todo-kwd-alist))
11731 (interpret (nth 1 ass))
11732 (done-word (nth 3 ass))
11733 (final-done-word (nth 4 ass))
10938 (last-state (or this "")) 11734 (last-state (or this ""))
10939 (completion-ignore-case t) 11735 (completion-ignore-case t)
10940 (member (member this org-todo-keywords)) 11736 (member (member this org-todo-keywords-1))
10941 (tail (cdr member)) 11737 (tail (cdr member))
10942 (state (cond 11738 (state (cond
10943 ((equal arg '(4)) 11739 ((equal arg '(4))
10944 ;; Read a state with completion 11740 ;; Read a state with completion
10945 (completing-read "State: " (mapcar (lambda(x) (list x)) 11741 (completing-read "State: " (mapcar (lambda(x) (list x))
10946 org-todo-keywords) 11742 org-todo-keywords-1)
10947 nil t)) 11743 nil t))
10948 ((eq arg 'right) 11744 ((eq arg 'right)
10949 (if this 11745 (if this
10950 (if tail (car tail) nil) 11746 (if tail (car tail) nil)
10951 (car org-todo-keywords))) 11747 (car org-todo-keywords-1)))
10952 ((eq arg 'left) 11748 ((eq arg 'left)
10953 (if (equal member org-todo-keywords) 11749 (if (equal member org-todo-keywords-1)
10954 nil 11750 nil
10955 (if this 11751 (if this
10956 (nth (- (length org-todo-keywords) (length tail) 2) 11752 (nth (- (length org-todo-keywords-1) (length tail) 2)
10957 org-todo-keywords) 11753 org-todo-keywords-1)
10958 org-done-string))) 11754 (org-last org-todo-keywords-1))))
10959 (arg 11755 (arg
10960 ;; user requests a specific state 11756 ;; user or caller requests a specific state
10961 (cond 11757 (cond
10962 ((equal arg "") nil) 11758 ((equal arg "") nil)
10963 ((eq arg 'none) nil) 11759 ((eq arg 'none) nil)
10964 ((eq arg 'done) (org-last org-todo-keywords)) 11760 ((eq arg 'done) (or done-word (car org-done-keywords)))
10965 ((car (member arg org-todo-keywords))) 11761 ((eq arg 'nextset)
11762 (or (car (cdr (member head org-todo-heads)))
11763 (car org-todo-heads)))
11764 ((eq arg 'previousset)
11765 (let ((org-todo-heads (reverse org-todo-heads)))
11766 (or (car (cdr (member head org-todo-heads)))
11767 (car org-todo-heads))))
11768 ((car (member arg org-todo-keywords-1)))
10966 ((nth (1- (prefix-numeric-value arg)) 11769 ((nth (1- (prefix-numeric-value arg))
10967 org-todo-keywords)))) 11770 org-todo-keywords-1))))
10968 ((null member) (car org-todo-keywords)) 11771 ((null member) (or head (car org-todo-keywords-1)))
11772 ((equal this final-done-word) nil) ;; -> make empty
10969 ((null tail) nil) ;; -> first entry 11773 ((null tail) nil) ;; -> first entry
10970 ((eq org-todo-interpretation 'sequence) 11774 ((eq interpret 'sequence)
10971 (car tail)) 11775 (car tail))
10972 ((memq org-todo-interpretation '(type priority)) 11776 ((memq interpret '(type priority))
10973 (if (eq this-command last-command) 11777 (if (eq this-command last-command)
10974 (car tail) 11778 (car tail)
10975 (if (> (length tail) 0) org-done-string nil))) 11779 (if (> (length tail) 0)
11780 (or done-word (car org-done-keywords))
11781 nil)))
10976 (t nil))) 11782 (t nil)))
10977 (next (if state (concat " " state " ") " ")) 11783 (next (if state (concat " " state " ") " "))
10978 dostates) 11784 dostates)
10979 (replace-match next t t) 11785 (replace-match next t t)
11786 (unless head
11787 (setq head (org-get-todo-sequence-head state)
11788 ass (assoc head org-todo-kwd-alist)
11789 interpret (nth 1 ass)
11790 done-word (nth 3 ass)
11791 final-done-word (nth 4 ass)))
11792 (when (memq arg '(nextset previousset))
11793 (message "Keyword set: %s"
11794 (mapconcat 'identity (assoc state org-todo-sets) " ")))
10980 (setq org-last-todo-state-is-todo 11795 (setq org-last-todo-state-is-todo
10981 (not (equal state org-done-string))) 11796 (not (member state org-done-keywords)))
10982 (when org-log-done 11797 (when (and org-log-done (not (memq arg '(nextset previousset))))
10983 (setq dostates (and (eq org-todo-interpretation 'sequence) 11798 (setq dostates (and (eq interpret 'sequence)
10984 (listp org-log-done) (memq 'state org-log-done))) 11799 (listp org-log-done) (memq 'state org-log-done)))
10985 (cond 11800 (cond
10986 ((and state (not this)) 11801 ((and state (not this))
@@ -10988,7 +11803,7 @@ For calling through lisp, arg is also interpreted in the following way:
10988 (and dostates (org-add-log-maybe 'state state 'findpos))) 11803 (and dostates (org-add-log-maybe 'state state 'findpos)))
10989 ((and state dostates) 11804 ((and state dostates)
10990 (org-add-log-maybe 'state state 'findpos)) 11805 (org-add-log-maybe 'state state 'findpos))
10991 ((equal state org-done-string) 11806 ((member state org-done-keywords)
10992 ;; Planning info calls the note-setting command. 11807 ;; Planning info calls the note-setting command.
10993 (org-add-planning-info 'closed (org-current-time) 11808 (org-add-planning-info 'closed (org-current-time)
10994 (if (org-get-repeat) nil 'scheduled)) 11809 (if (org-get-repeat) nil 'scheduled))
@@ -10996,8 +11811,10 @@ For calling through lisp, arg is also interpreted in the following way:
10996 ;; Fixup tag positioning 11811 ;; Fixup tag positioning
10997 (and org-auto-align-tags (org-set-tags nil t)) 11812 (and org-auto-align-tags (org-set-tags nil t))
10998 (run-hooks 'org-after-todo-state-change-hook) 11813 (run-hooks 'org-after-todo-state-change-hook)
10999 (and (equal state org-done-string) (org-auto-repeat-maybe)) 11814 (and (member state org-done-keywords) (org-auto-repeat-maybe))
11000 )) 11815 (if (and arg (not (member state org-done-keywords)))
11816 (setq head (org-get-todo-sequence-head state)))
11817 (put-text-property (point-at-bol) (point-at-eol) 'org-todo-head head)))
11001 ;; Fixup cursor location if close to the keyword 11818 ;; Fixup cursor location if close to the keyword
11002 (if (and (outline-on-heading-p) 11819 (if (and (outline-on-heading-p)
11003 (not (bolp)) 11820 (not (bolp))
@@ -11008,8 +11825,24 @@ For calling through lisp, arg is also interpreted in the following way:
11008 (goto-char (or (match-end 2) (match-end 1))) 11825 (goto-char (or (match-end 2) (match-end 1)))
11009 (just-one-space)))) 11826 (just-one-space))))
11010 11827
11828(defun org-get-todo-sequence-head (kwd)
11829 "Return the head of the TODO sequence to which KWD belongs.
11830If KWD is not set, check if there is a text property remembering the
11831right sequence."
11832 (let (p)
11833 (cond
11834 ((not kwd)
11835 (or (get-text-property (point-at-bol) 'org-todo-head)
11836 (progn
11837 (setq p (next-single-property-change (point-at-bol) 'org-todo-head
11838 nil (point-at-eol)))
11839 (get-text-property p 'org-todo-head))))
11840 ((not (member kwd org-todo-keywords-1))
11841 (car org-todo-keywords-1))
11842 (t (nth 2 (assoc kwd org-todo-kwd-alist))))))
11843
11011(defun org-get-repeat () 11844(defun org-get-repeat ()
11012 "Return the REPEAT statement of this entry." 11845 "Check if tere is a deadline/schedule with repeater in this entry."
11013 (save-match-data 11846 (save-match-data
11014 (save-excursion 11847 (save-excursion
11015 (org-back-to-heading t) 11848 (org-back-to-heading t)
@@ -11020,24 +11853,29 @@ For calling through lisp, arg is also interpreted in the following way:
11020(defvar org-last-changed-timestamp) 11853(defvar org-last-changed-timestamp)
11021(defvar org-log-post-message) 11854(defvar org-log-post-message)
11022(defun org-auto-repeat-maybe () 11855(defun org-auto-repeat-maybe ()
11023 "Check if the current headline contains a REPEAT key. 11856 "Check if the current headline contains a repeated deadline/schedule.
11024If yes, set TODO state back to what it was and change any SCHEDULED 11857If yes, set TODO state back to what it was and change the base date
11025or DEADLINE times the new date. 11858of repeating deadline/scheduled time stamps to new date.
11026This function should be run in the `org-after-todo-state-change-hook'." 11859This function should be run in the `org-after-todo-state-change-hook'."
11027 ;; last-state is dynamically scoped into this function 11860 ;; last-state is dynamically scoped into this function
11028 (let ((repeat (org-get-repeat)) 11861 (let* ((repeat (org-get-repeat))
11029 (whata '(("d" . day) ("m" . month) ("y" . year))) 11862 (aa (assoc last-state org-todo-kwd-alist))
11030 (msg "Entry repeats: ") 11863 (interpret (nth 1 aa))
11031 (org-log-done) 11864 (head (nth 2 aa))
11032 re type n what start) 11865 (done-word (nth 3 aa))
11866 (whata '(("d" . day) ("m" . month) ("y" . year)))
11867 (msg "Entry repeats: ")
11868 (org-log-done)
11869 re type n what ts)
11033 (when repeat 11870 (when repeat
11034 (org-todo (if (eq 'org-todo-interpretation 'type) 11871 (org-todo (if (eq interpret 'type) last-state head))
11035 last-state 11872 (when (and org-log-repeat
11036 (car org-todo-keywords))) 11873 (not (memq 'org-add-log-note
11037 (unless (memq 'org-add-log-note (default-value 'post-command-hook)) 11874 (default-value 'post-command-hook))))
11038 ;; Make sure a note is taken 11875 ;; Make sure a note is taken
11039 (let ((org-log-done '(done))) 11876 (let ((org-log-done '(done)))
11040 (org-add-log-maybe 'done org-done-string 'findpos))) 11877 (org-add-log-maybe 'done (or done-word (car org-done-keywords))
11878 'findpos)))
11041 (org-back-to-heading t) 11879 (org-back-to-heading t)
11042 (org-add-planning-info nil nil 'closed) 11880 (org-add-planning-info nil nil 'closed)
11043 (setq re (concat "\\(" org-scheduled-time-regexp "\\)\\|\\(" 11881 (setq re (concat "\\(" org-scheduled-time-regexp "\\)\\|\\("
@@ -11045,11 +11883,10 @@ This function should be run in the `org-after-todo-state-change-hook'."
11045 (while (re-search-forward 11883 (while (re-search-forward
11046 re (save-excursion (outline-next-heading) (point)) t) 11884 re (save-excursion (outline-next-heading) (point)) t)
11047 (setq type (if (match-end 1) org-scheduled-string org-deadline-string) 11885 (setq type (if (match-end 1) org-scheduled-string org-deadline-string)
11048 start 0) 11886 ts (match-string (if (match-end 2) 2 4)))
11049 (while (string-match "\\([-+]?[0-9]+\\)\\([dwmy]\\)" repeat start) 11887 (when (string-match "\\([-+]?[0-9]+\\)\\([dwmy]\\)" ts)
11050 (setq start (match-end 0) 11888 (setq n (string-to-number (match-string 1 ts))
11051 n (string-to-number (match-string 1 repeat)) 11889 what (match-string 2 ts))
11052 what (match-string 2 repeat))
11053 (if (equal what "w") (setq n (* n 7) what "d")) 11890 (if (equal what "w") (setq n (* n 7) what "d"))
11054 (org-timestamp-change n (cdr (assoc what whata)))) 11891 (org-timestamp-change n (cdr (assoc what whata))))
11055 (setq msg (concat msg type org-last-changed-timestamp " "))) 11892 (setq msg (concat msg type org-last-changed-timestamp " ")))
@@ -11062,15 +11899,20 @@ The tree will show the lines where the regexp matches, and all higher
11062headlines above the match. 11899headlines above the match.
11063With \\[universal-argument] prefix, also show the DONE entries. 11900With \\[universal-argument] prefix, also show the DONE entries.
11064With a numeric prefix N, construct a sparse tree for the Nth element 11901With a numeric prefix N, construct a sparse tree for the Nth element
11065of `org-todo-keywords'." 11902of `org-todo-keywords-1'."
11066 (interactive "P") 11903 (interactive "P")
11067 (let ((case-fold-search nil) 11904 (let ((case-fold-search nil)
11068 (kwd-re 11905 (kwd-re
11069 (cond ((null arg) org-not-done-regexp) 11906 (cond ((null arg) org-not-done-regexp)
11070 ((equal arg '(4)) org-todo-regexp) 11907 ((equal arg '(4))
11071 ((<= (prefix-numeric-value arg) (length org-todo-keywords)) 11908 (let ((kwd (completing-read "Keyword (or KWD1|KWD2|...): "
11909 (mapcar 'list org-todo-keywords-1))))
11910 (concat "\\("
11911 (mapconcat 'identity (org-split-string kwd "|") "\\|")
11912 "\\)\\>")))
11913 ((<= (prefix-numeric-value arg) (length org-todo-keywords-1))
11072 (regexp-quote (nth (1- (prefix-numeric-value arg)) 11914 (regexp-quote (nth (1- (prefix-numeric-value arg))
11073 org-todo-keywords))) 11915 org-todo-keywords-1)))
11074 (t (error "Invalid prefix argument: %s" arg))))) 11916 (t (error "Invalid prefix argument: %s" arg)))))
11075 (message "%d TODO entries found" 11917 (message "%d TODO entries found"
11076 (org-occur (concat "^" outline-regexp " +" kwd-re ))))) 11918 (org-occur (concat "^" outline-regexp " +" kwd-re )))))
@@ -11143,9 +11985,11 @@ be removed."
11143 ((eq what 'deadline) org-deadline-string) 11985 ((eq what 'deadline) org-deadline-string)
11144 ((eq what 'closed) org-closed-string)) 11986 ((eq what 'closed) org-closed-string))
11145 " ") 11987 " ")
11146 (org-insert-time-stamp time 11988 (org-insert-time-stamp
11147 (or org-time-was-given (eq what 'closed)) 11989 time
11148 (eq what 'closed)) 11990 (or org-time-was-given
11991 (and (eq what 'closed) org-log-done-with-time))
11992 (eq what 'closed))
11149 (end-of-line 1)) 11993 (end-of-line 1))
11150 (goto-char (point-min)) 11994 (goto-char (point-min))
11151 (widen) 11995 (widen)
@@ -11163,6 +12007,7 @@ be removed."
11163The auto-repeater uses this.") 12007The auto-repeater uses this.")
11164 12008
11165(defun org-add-log-maybe (&optional purpose state findpos) 12009(defun org-add-log-maybe (&optional purpose state findpos)
12010 "Set up the post command hook to take a note."
11166 (save-excursion 12011 (save-excursion
11167 (when (and (listp org-log-done) 12012 (when (and (listp org-log-done)
11168 (memq purpose org-log-done)) 12013 (memq purpose org-log-done))
@@ -11221,17 +12066,18 @@ The auto-repeater uses this.")
11221 ""))))) 12066 "")))))
11222 (if lines (setq note (concat note " \\\\"))) 12067 (if lines (setq note (concat note " \\\\")))
11223 (push note lines)) 12068 (push note lines))
11224 (save-excursion 12069 (when lines
11225 (set-buffer (marker-buffer org-log-note-marker))
11226 (save-excursion 12070 (save-excursion
11227 (goto-char org-log-note-marker) 12071 (set-buffer (marker-buffer org-log-note-marker))
11228 (move-marker org-log-note-marker nil) 12072 (save-excursion
11229 (end-of-line 1) 12073 (goto-char org-log-note-marker)
11230 (if (not (bolp)) (insert "\n")) (indent-relative nil) 12074 (move-marker org-log-note-marker nil)
11231 (setq ind (concat (buffer-substring (point-at-bol) (point)) " ")) 12075 (end-of-line 1)
11232 (insert " - " (pop lines)) 12076 (if (not (bolp)) (insert "\n")) (indent-relative nil)
11233 (while lines 12077 (setq ind (concat (buffer-substring (point-at-bol) (point)) " "))
11234 (insert "\n" ind (pop lines)))))) 12078 (insert " - " (pop lines))
12079 (while lines
12080 (insert "\n" ind (pop lines)))))))
11235 (set-window-configuration org-log-note-window-configuration) 12081 (set-window-configuration org-log-note-window-configuration)
11236 (with-current-buffer (marker-buffer org-log-note-return-to) 12082 (with-current-buffer (marker-buffer org-log-note-return-to)
11237 (goto-char org-log-note-return-to)) 12083 (goto-char org-log-note-return-to))
@@ -11264,7 +12110,8 @@ that the match should indeed be shown."
11264 (when (or (not callback) 12110 (when (or (not callback)
11265 (save-match-data (funcall callback))) 12111 (save-match-data (funcall callback)))
11266 (setq cnt (1+ cnt)) 12112 (setq cnt (1+ cnt))
11267 (org-highlight-new-match (match-beginning 0) (match-end 0)) 12113 (when org-highlight-sparse-tree-matches
12114 (org-highlight-new-match (match-beginning 0) (match-end 0)))
11268 (org-show-context 'occur-tree)))) 12115 (org-show-context 'occur-tree))))
11269 (when org-remove-highlights-with-change 12116 (when org-remove-highlights-with-change
11270 (org-add-hook 'before-change-functions 'org-remove-occur-highlights 12117 (org-add-hook 'before-change-functions 'org-remove-occur-highlights
@@ -11342,7 +12189,7 @@ from the `before-change-functions' in the current buffer."
11342 12189
11343;;;; Priorities 12190;;;; Priorities
11344 12191
11345(defvar org-priority-regexp ".*?\\(\\[#\\([A-Z]\\)\\] ?\\)" 12192(defvar org-priority-regexp ".*?\\(\\[#\\([A-Z0-9]\\)\\] ?\\)"
11346 "Regular expression matching the priority indicator.") 12193 "Regular expression matching the priority indicator.")
11347 12194
11348(defvar org-remove-priority-next-time nil) 12195(defvar org-remove-priority-next-time nil)
@@ -11371,18 +12218,18 @@ ACTION can be set, up, or down."
11371 (setq current org-default-priority)) 12218 (setq current org-default-priority))
11372 (cond 12219 (cond
11373 ((eq action 'set) 12220 ((eq action 'set)
11374 (message "Priority A-%c, SPC to remove: " org-lowest-priority) 12221 (message "Priority %c-%c, SPC to remove: " org-highest-priority org-lowest-priority)
11375 (setq new (read-char-exclusive)) 12222 (setq new (read-char-exclusive))
11376 (cond ((equal new ?\ ) (setq remove t)) 12223 (cond ((equal new ?\ ) (setq remove t))
11377 ((or (< (upcase new) ?A) (> (upcase new) org-lowest-priority)) 12224 ((or (< (upcase new) org-highest-priority) (> (upcase new) org-lowest-priority))
11378 (error "Priority must be between `%c' and `%c'" 12225 (error "Priority must be between `%c' and `%c'"
11379 ?A org-lowest-priority)))) 12226 org-highest-priority org-lowest-priority))))
11380 ((eq action 'up) 12227 ((eq action 'up)
11381 (setq new (1- current))) 12228 (setq new (1- current)))
11382 ((eq action 'down) 12229 ((eq action 'down)
11383 (setq new (1+ current))) 12230 (setq new (1+ current)))
11384 (t (error "Invalid action"))) 12231 (t (error "Invalid action")))
11385 (setq new (min (max ?A (upcase new)) org-lowest-priority)) 12232 (setq new (min (max org-highest-priority (upcase new)) org-lowest-priority))
11386 (setq news (format "%c" new)) 12233 (setq news (format "%c" new))
11387 (if have 12234 (if have
11388 (if remove 12235 (if remove
@@ -11419,15 +12266,14 @@ evaluated, testing if a given set of tags qualifies a headline for
11419inclusion. When TODO-ONLY is non-nil, only lines with a TODO keyword 12266inclusion. When TODO-ONLY is non-nil, only lines with a TODO keyword
11420are included in the output." 12267are included in the output."
11421 (let* ((re (concat "[\n\r]" outline-regexp " *\\(\\<\\(" 12268 (let* ((re (concat "[\n\r]" outline-regexp " *\\(\\<\\("
11422 (mapconcat 'regexp-quote 12269 (mapconcat 'regexp-quote org-todo-keywords-1 "\\|")
11423 (nreverse (cdr (reverse org-todo-keywords)))
11424 "\\|")
11425 "\\>\\)\\)? *\\(.*?\\)\\(:[A-Za-z_@0-9:]+:\\)?[ \t]*$")) 12270 "\\>\\)\\)? *\\(.*?\\)\\(:[A-Za-z_@0-9:]+:\\)?[ \t]*$"))
11426 (props (list 'face nil 12271 (props (list 'face nil
11427 'done-face 'org-done 12272 'done-face 'org-done
11428 'undone-face nil 12273 'undone-face nil
11429 'mouse-face 'highlight 12274 'mouse-face 'highlight
11430 'org-not-done-regexp org-not-done-regexp 12275 'org-not-done-regexp org-not-done-regexp
12276 'org-todo-regexp org-todo-regexp
11431 'keymap org-agenda-keymap 12277 'keymap org-agenda-keymap
11432 'help-echo 12278 'help-echo
11433 (format "mouse-2 or RET jump to org file %s" 12279 (format "mouse-2 or RET jump to org file %s"
@@ -11435,7 +12281,7 @@ are included in the output."
11435 (case-fold-search nil) 12281 (case-fold-search nil)
11436 lspos 12282 lspos
11437 tags tags-list tags-alist (llast 0) rtn level category i txt 12283 tags tags-list tags-alist (llast 0) rtn level category i txt
11438 todo marker entry) 12284 todo marker entry priority)
11439 (save-excursion 12285 (save-excursion
11440 (goto-char (point-min)) 12286 (goto-char (point-min))
11441 (when (eq action 'sparse-tree) (org-overview)) 12287 (when (eq action 'sparse-tree) (org-overview))
@@ -11462,7 +12308,7 @@ are included in the output."
11462 (if org-use-tag-inheritance 12308 (if org-use-tag-inheritance
11463 (apply 'append (mapcar 'cdr tags-alist)) 12309 (apply 'append (mapcar 'cdr tags-alist))
11464 tags)) 12310 tags))
11465 (when (and (or (not todo-only) todo) 12311 (when (and (or (not todo-only) (member todo org-not-done-keywords))
11466 (eval matcher) 12312 (eval matcher)
11467 (or (not org-agenda-skip-archived-trees) 12313 (or (not org-agenda-skip-archived-trees)
11468 (not (member org-archive-tag tags-list)))) 12314 (not (member org-archive-tag tags-list))))
@@ -11477,11 +12323,13 @@ are included in the output."
11477 (if org-tags-match-list-sublevels 12323 (if org-tags-match-list-sublevels
11478 (make-string (1- level) ?.) "") 12324 (make-string (1- level) ?.) "")
11479 (org-get-heading)) 12325 (org-get-heading))
11480 category tags-list)) 12326 category tags-list)
12327 priority (org-get-priority txt))
11481 (goto-char lspos) 12328 (goto-char lspos)
11482 (setq marker (org-agenda-new-marker)) 12329 (setq marker (org-agenda-new-marker))
11483 (org-add-props txt props 12330 (org-add-props txt props
11484 'org-marker marker 'org-hd-marker marker 'org-category category) 12331 'org-marker marker 'org-hd-marker marker 'org-category category
12332 'priority priority 'type "tagsmatch")
11485 (push txt rtn)) 12333 (push txt rtn))
11486 ;; if we are to skip sublevels, jump to end of subtree 12334 ;; if we are to skip sublevels, jump to end of subtree
11487 (or org-tags-match-list-sublevels (org-end-of-subtree t)))))) 12335 (or org-tags-match-list-sublevels (org-end-of-subtree t))))))
@@ -11610,7 +12458,7 @@ With prefix ARG, realign all tags in headings in the current buffer."
11610 (if arg 12458 (if arg
11611 (save-excursion 12459 (save-excursion
11612 (goto-char (point-min)) 12460 (goto-char (point-min))
11613 (let (buffer-invisibility-spec) ; Emacs 21 compatibility 12461 (let ((buffer-invisibility-spec (org-inhibit-invisibility)))
11614 (while (re-search-forward re nil t) 12462 (while (re-search-forward re nil t)
11615 (org-set-tags nil t) 12463 (org-set-tags nil t)
11616 (end-of-line 1))) 12464 (end-of-line 1)))
@@ -11637,11 +12485,12 @@ With prefix ARG, realign all tags in headings in the current buffer."
11637 (while (string-match "[-+&]+" tags) 12485 (while (string-match "[-+&]+" tags)
11638 ;; No boolean logic, just a list 12486 ;; No boolean logic, just a list
11639 (setq tags (replace-match ":" t t tags)))) 12487 (setq tags (replace-match ":" t t tags))))
12488
11640 (if (string-match "\\`[\t ]*\\'" tags) 12489 (if (string-match "\\`[\t ]*\\'" tags)
11641 (setq tags "") 12490 (setq tags "")
11642 (unless (string-match ":$" tags) (setq tags (concat tags ":"))) 12491 (unless (string-match ":$" tags) (setq tags (concat tags ":")))
11643 (unless (string-match "^:" tags) (setq tags (concat ":" tags)))) 12492 (unless (string-match "^:" tags) (setq tags (concat ":" tags))))
11644 12493
11645 ;; Insert new tags at the correct column 12494 ;; Insert new tags at the correct column
11646 (beginning-of-line 1) 12495 (beginning-of-line 1)
11647 (if (re-search-forward 12496 (if (re-search-forward
@@ -11728,7 +12577,7 @@ Returns the new tags string, or nil to not change the current settings."
11728 (fwidth (+ maxlen 3 1 3)) 12577 (fwidth (+ maxlen 3 1 3))
11729 (ncol (/ (- (window-width) 4) fwidth)) 12578 (ncol (/ (- (window-width) 4) fwidth))
11730 (i-face 'org-done) 12579 (i-face 'org-done)
11731 (c-face 'org-tag) 12580 (c-face 'org-todo)
11732 tg cnt e c char c1 c2 ntable tbl rtn 12581 tg cnt e c char c1 c2 ntable tbl rtn
11733 ov-start ov-end ov-prefix 12582 ov-start ov-end ov-prefix
11734 (exit-after-next org-fast-tag-selection-single-key) 12583 (exit-after-next org-fast-tag-selection-single-key)
@@ -12014,9 +12863,9 @@ used to insert the time stamp into the buffer to include the time."
12014 (timestr (format-time-string 12863 (timestr (format-time-string
12015 (if with-time "%Y-%m-%d %H:%M" "%Y-%m-%d") default-time)) 12864 (if with-time "%Y-%m-%d %H:%M" "%Y-%m-%d") default-time))
12016 (prompt (concat (if prompt (concat prompt " ") "") 12865 (prompt (concat (if prompt (concat prompt " ") "")
12017 (format "YYYY-MM-DD [%s]: " timestr))) 12866 (format "Date and/or time (default [%s]): " timestr)))
12018 ans (org-ans0 "") org-ans1 org-ans2 (deltadays 0) 12867 ans (org-ans0 "") org-ans1 org-ans2 (deltadays 0)
12019 second minute hour day month year tl wday wday1) 12868 second minute hour day month year tl wday wday1 pm)
12020 12869
12021 (cond 12870 (cond
12022 (from-string (setq ans from-string)) 12871 (from-string (setq ans from-string))
@@ -12027,44 +12876,43 @@ used to insert the time stamp into the buffer to include the time."
12027 (calendar-forward-day (- (time-to-days default-time) 12876 (calendar-forward-day (- (time-to-days default-time)
12028 (calendar-absolute-from-gregorian 12877 (calendar-absolute-from-gregorian
12029 (calendar-current-date)))) 12878 (calendar-current-date))))
12030 (org-eval-in-calendar nil) 12879 (org-eval-in-calendar nil t)
12031 (let* ((old-map (current-local-map)) 12880 (let* ((old-map (current-local-map))
12032 (map (copy-keymap calendar-mode-map)) 12881 (map (copy-keymap calendar-mode-map))
12033 (minibuffer-local-map (copy-keymap minibuffer-local-map))) 12882 (minibuffer-local-map (copy-keymap minibuffer-local-map)))
12034 (define-key map (kbd "RET") 'org-calendar-select) 12883 (org-defkey map (kbd "RET") 'org-calendar-select)
12035 (define-key map (if (featurep 'xemacs) [button1] [mouse-1]) 12884 (org-defkey map (if (featurep 'xemacs) [button1] [mouse-1])
12036 'org-calendar-select-mouse) 12885 'org-calendar-select-mouse)
12037 (define-key map (if (featurep 'xemacs) [button2] [mouse-2]) 12886 (org-defkey map (if (featurep 'xemacs) [button2] [mouse-2])
12038 'org-calendar-select-mouse) 12887 'org-calendar-select-mouse)
12039 (define-key minibuffer-local-map [(meta shift left)] 12888 (org-defkey minibuffer-local-map [(meta shift left)]
12040 (lambda () (interactive) 12889 (lambda () (interactive)
12041 (org-eval-in-calendar '(calendar-backward-month 1)))) 12890 (org-eval-in-calendar '(calendar-backward-month 1))))
12042 (define-key minibuffer-local-map [(meta shift right)] 12891 (org-defkey minibuffer-local-map [(meta shift right)]
12043 (lambda () (interactive) 12892 (lambda () (interactive)
12044 (org-eval-in-calendar '(calendar-forward-month 1)))) 12893 (org-eval-in-calendar '(calendar-forward-month 1))))
12045 (define-key minibuffer-local-map [(shift up)] 12894 (org-defkey minibuffer-local-map [(shift up)]
12046 (lambda () (interactive) 12895 (lambda () (interactive)
12047 (org-eval-in-calendar '(calendar-backward-week 1)))) 12896 (org-eval-in-calendar '(calendar-backward-week 1))))
12048 (define-key minibuffer-local-map [(shift down)] 12897 (org-defkey minibuffer-local-map [(shift down)]
12049 (lambda () (interactive) 12898 (lambda () (interactive)
12050 (org-eval-in-calendar '(calendar-forward-week 1)))) 12899 (org-eval-in-calendar '(calendar-forward-week 1))))
12051 (define-key minibuffer-local-map [(shift left)] 12900 (org-defkey minibuffer-local-map [(shift left)]
12052 (lambda () (interactive) 12901 (lambda () (interactive)
12053 (org-eval-in-calendar '(calendar-backward-day 1)))) 12902 (org-eval-in-calendar '(calendar-backward-day 1))))
12054 (define-key minibuffer-local-map [(shift right)] 12903 (org-defkey minibuffer-local-map [(shift right)]
12055 (lambda () (interactive) 12904 (lambda () (interactive)
12056 (org-eval-in-calendar '(calendar-forward-day 1)))) 12905 (org-eval-in-calendar '(calendar-forward-day 1))))
12057 (define-key minibuffer-local-map ">" 12906 (org-defkey minibuffer-local-map ">"
12058 (lambda () (interactive) 12907 (lambda () (interactive)
12059 (org-eval-in-calendar '(scroll-calendar-left 1)))) 12908 (org-eval-in-calendar '(scroll-calendar-left 1))))
12060 (define-key minibuffer-local-map "<" 12909 (org-defkey minibuffer-local-map "<"
12061 (lambda () (interactive) 12910 (lambda () (interactive)
12062 (org-eval-in-calendar '(scroll-calendar-right 1)))) 12911 (org-eval-in-calendar '(scroll-calendar-right 1))))
12063 (unwind-protect 12912 (unwind-protect
12064 (progn 12913 (progn
12065 (use-local-map map) 12914 (use-local-map map)
12066 (setq org-ans0 (read-string prompt "" nil nil)) 12915 (setq org-ans0 (read-string prompt "" nil nil))
12067; (if (not (string-match "\\S-" org-ans0)) (setq org-ans0 nil))
12068 ;; org-ans0: from prompt 12916 ;; org-ans0: from prompt
12069 ;; org-ans1: from mouse click 12917 ;; org-ans1: from mouse click
12070 ;; org-ans2: from calendar motion 12918 ;; org-ans2: from calendar motion
@@ -12077,17 +12925,30 @@ used to insert the time stamp into the buffer to include the time."
12077 (if (string-match "^[ \t]*[-+][0-9]+[ \t]*$" org-ans0) 12925 (if (string-match "^[ \t]*[-+][0-9]+[ \t]*$" org-ans0)
12078 (setq deltadays (string-to-number ans) ans "")) 12926 (setq deltadays (string-to-number ans) ans ""))
12079 12927
12080 (if (string-match 12928 ;; Help matching ISO dates with single digit month ot day, like 2006-8-11.
12081 "^ *\\(\\([0-9]+\\)-\\)?\\([0-1]?[0-9]\\)-\\([0-3]?[0-9]\\)\\([^-0-9]\\|$\\)" ans) 12929 (when (string-match
12082 (progn 12930 "^ *\\(\\([0-9]+\\)-\\)?\\([0-1]?[0-9]\\)-\\([0-3]?[0-9]\\)\\([^-0-9]\\|$\\)" ans)
12083 (setq year (if (match-end 2) 12931 (setq year (if (match-end 2)
12084 (string-to-number (match-string 2 ans)) 12932 (string-to-number (match-string 2 ans))
12085 (string-to-number (format-time-string "%Y"))) 12933 (string-to-number (format-time-string "%Y")))
12086 month (string-to-number (match-string 3 ans)) 12934 month (string-to-number (match-string 3 ans))
12087 day (string-to-number (match-string 4 ans))) 12935 day (string-to-number (match-string 4 ans)))
12088 (if (< year 100) (setq year (+ 2000 year))) 12936 (if (< year 100) (setq year (+ 2000 year)))
12089 (setq ans (replace-match (format "%04d-%02d-%02d\\5" year month day) 12937 (setq ans (replace-match (format "%04d-%02d-%02d\\5" year month day)
12090 t nil ans)))) 12938 t nil ans)))
12939 ;; Help matching am/pm times, because `parse-time-string' does not do that.
12940 ;; If there is a time with am/pm, and *no* time without it, we convert
12941 ;; convert so that matching will be successful.
12942 (when (and (not (string-match "[012]?[0-9]:[0-9][0-9]\\([ \t\n]\\|$\\)" ans))
12943 (string-match "\\([012]?[0-9]\\)\\(:\\([0-5][0-9]\\)\\)?\\(am\\|AM\\|pm\\|PM\\)\\>" ans))
12944 (setq hour (string-to-number (match-string 1 ans))
12945 minute (if (match-end 3) (string-to-number (match-string 3 ans)) 0)
12946 pm (equal ?p (string-to-char (downcase (match-string 4 ans)))))
12947 (if (and (= hour 12) (not pm))
12948 (setq hour 0)
12949 (if (and pm (< hour 12)) (setq hour (+ 12 hour))))
12950 (setq ans (replace-match (format "%02d:%02d" hour minute) t t ans)))
12951
12091 (setq tl (parse-time-string ans) 12952 (setq tl (parse-time-string ans)
12092 year (or (nth 5 tl) (string-to-number (format-time-string "%Y" ct))) 12953 year (or (nth 5 tl) (string-to-number (format-time-string "%Y" ct)))
12093 month (or (nth 4 tl) (string-to-number (format-time-string "%m" ct))) 12954 month (or (nth 4 tl) (string-to-number (format-time-string "%m" ct)))
@@ -12113,18 +12974,28 @@ used to insert the time stamp into the buffer to include the time."
12113 (format "%04d-%02d-%02d %02d:%02d" year month day hour minute) 12974 (format "%04d-%02d-%02d %02d:%02d" year month day hour minute)
12114 (format "%04d-%02d-%02d" year month day))))) 12975 (format "%04d-%02d-%02d" year month day)))))
12115 12976
12116(defun org-eval-in-calendar (form) 12977(defun org-eval-in-calendar (form &optional keepdate)
12117 "Eval FORM in the calendar window and return to current window. 12978 "Eval FORM in the calendar window and return to current window.
12118Also, store the cursor date in variable org-ans2." 12979Also, store the cursor date in variable org-ans2."
12119 (let ((sw (selected-window))) 12980 (let ((sw (selected-window)))
12120 (select-window (get-buffer-window "*Calendar*")) 12981 (select-window (get-buffer-window "*Calendar*"))
12121 (eval form) 12982 (eval form)
12122 (when (calendar-cursor-to-date) 12983 (when (and (not keepdate) (calendar-cursor-to-date))
12123 (let* ((date (calendar-cursor-to-date)) 12984 (let* ((date (calendar-cursor-to-date))
12124 (time (encode-time 0 0 0 (nth 1 date) (nth 0 date) (nth 2 date)))) 12985 (time (encode-time 0 0 0 (nth 1 date) (nth 0 date) (nth 2 date))))
12125 (setq org-ans2 (format-time-string "%Y-%m-%d" time)))) 12986 (setq org-ans2 (format-time-string "%Y-%m-%d" time))))
12126 (org-move-overlay org-date-ovl (1- (point)) (1+ (point)) (current-buffer)) 12987 (org-move-overlay org-date-ovl (1- (point)) (1+ (point)) (current-buffer))
12127 (select-window sw))) 12988 (select-window sw)
12989 ;; Update the prompt to show new default date
12990 (save-excursion
12991 (goto-char (point-min))
12992 (when (and org-ans2
12993 (re-search-forward "\\[[-0-9]+\\]" nil t)
12994 (get-text-property (match-end 0) 'field))
12995 (let ((inhibit-read-only t))
12996 (replace-match (concat "[" org-ans2 "]") t t)
12997 (add-text-properties (point-min) (1+ (match-end 0))
12998 (text-properties-at (1+ (point-min)))))))))
12128 12999
12129(defun org-calendar-select () 13000(defun org-calendar-select ()
12130 "Return to `org-read-date' with the date currently selected. 13001 "Return to `org-read-date' with the date currently selected.
@@ -12136,7 +13007,7 @@ This is used by `org-read-date' in a temporary keymap for the calendar buffer."
12136 (setq org-ans1 (format-time-string "%Y-%m-%d" time))) 13007 (setq org-ans1 (format-time-string "%Y-%m-%d" time)))
12137 (if (active-minibuffer-window) (exit-minibuffer)))) 13008 (if (active-minibuffer-window) (exit-minibuffer))))
12138 13009
12139(defun org-insert-time-stamp (time &optional with-hm inactive pre post) 13010(defun org-insert-time-stamp (time &optional with-hm inactive pre post extra)
12140 "Insert a date stamp for the date given by the internal TIME. 13011 "Insert a date stamp for the date given by the internal TIME.
12141WITH-HM means, use the stamp format that includes the time of the day. 13012WITH-HM means, use the stamp format that includes the time of the day.
12142INACTIVE means use square brackets instead of angular ones, so that the 13013INACTIVE means use square brackets instead of angular ones, so that the
@@ -12149,6 +13020,10 @@ The command returns the inserted time stamp."
12149 (if inactive (setq fmt (concat "[" (substring fmt 1 -1) "]"))) 13020 (if inactive (setq fmt (concat "[" (substring fmt 1 -1) "]")))
12150 (insert (or pre "")) 13021 (insert (or pre ""))
12151 (insert (setq stamp (format-time-string fmt time))) 13022 (insert (setq stamp (format-time-string fmt time)))
13023 (when extra
13024 (backward-char 1)
13025 (insert extra)
13026 (forward-char 1))
12152 (insert (or post "")) 13027 (insert (or post ""))
12153 stamp)) 13028 stamp))
12154 13029
@@ -12175,17 +13050,22 @@ The command returns the inserted time stamp."
12175 13050
12176(defun org-display-custom-time (beg end) 13051(defun org-display-custom-time (beg end)
12177 "Overlay modified time stamp format over timestamp between BED and END." 13052 "Overlay modified time stamp format over timestamp between BED and END."
12178 (let* ((t1 (save-match-data 13053 (let* ((ts (buffer-substring beg end))
12179 (org-parse-time-string (buffer-substring beg end) t))) 13054 t1 w1 with-hm tf time str w2 (off 0))
12180 (w1 (- end beg)) 13055 (save-match-data
12181 (with-hm (and (nth 1 t1) (nth 2 t1))) 13056 (setq t1 (org-parse-time-string ts t))
12182 (tf (funcall (if with-hm 'cdr 'car) org-time-stamp-custom-formats)) 13057 (if (string-match " \\+[0-9]+[dwmy]\\'" ts)
12183 (time (org-fix-decoded-time t1)) 13058 (setq off (- (match-end 0) (match-beginning 0)))))
12184 (str (org-add-props 13059 (setq end (- end off))
13060 (setq w1 (- end beg)
13061 with-hm (and (nth 1 t1) (nth 2 t1))
13062 tf (funcall (if with-hm 'cdr 'car) org-time-stamp-custom-formats)
13063 time (org-fix-decoded-time t1)
13064 str (org-add-props
12185 (format-time-string 13065 (format-time-string
12186 (substring tf 1 -1) (apply 'encode-time time)) 13066 (substring tf 1 -1) (apply 'encode-time time))
12187 nil 'mouse-face 'highlight)) 13067 nil 'mouse-face 'highlight)
12188 (w2 (length str))) 13068 w2 (length str))
12189 (if (not (= w2 w1)) 13069 (if (not (= w2 w1))
12190 (add-text-properties (1+ beg) (+ 2 beg) 13070 (add-text-properties (1+ beg) (+ 2 beg)
12191 (list 'org-dwidth t 'org-dwidth-n (- w1 w2)))) 13071 (list 'org-dwidth t 'org-dwidth-n (- w1 w2))))
@@ -12349,6 +13229,133 @@ days in order to avoid rounding problems."
12349(defun org-time-string-to-time (s) 13229(defun org-time-string-to-time (s)
12350 (apply 'encode-time (org-parse-time-string s))) 13230 (apply 'encode-time (org-parse-time-string s)))
12351 13231
13232(defun org-time-string-to-absolute (s &optional daynr)
13233 "Convert a time stamp to an absolute day number.
13234If there is a specifyer for a cyclic time stamp, get the closest date to
13235DATE."
13236 (cond
13237 ((and daynr (string-match "\\`%%\\((.*)\\)" s))
13238 (if (org-diary-sexp-entry (match-string 1 s) "" date)
13239 daynr
13240 (+ daynr 1000)))
13241 ((and daynr (string-match "\\+[0-9]+[dwmy]" s))
13242 (org-closest-date s (if (and (boundp 'daynr) (integerp daynr)) daynr
13243 (time-to-days (current-time))) (match-string 0 s)))
13244 (t (time-to-days (apply 'encode-time (org-parse-time-string s))))))
13245
13246(defun org-calendar-holiday ()
13247 "List of holidays, for Diary display in Org-mode."
13248 (let ((hl (check-calendar-holidays date)))
13249 (if hl (mapconcat 'identity hl "; "))))
13250
13251(defun org-diary-sexp-entry (sexp entry date)
13252 "Process a SEXP diary ENTRY for DATE."
13253 (let ((result (if calendar-debug-sexp
13254 (let ((stack-trace-on-error t))
13255 (eval (car (read-from-string sexp))))
13256 (condition-case nil
13257 (eval (car (read-from-string sexp)))
13258 (error
13259 (beep)
13260 (message "Bad sexp at line %d in %s: %s"
13261 (org-current-line)
13262 (buffer-file-name) sexp)
13263 (sleep-for 2))))))
13264 (cond ((stringp result) result)
13265 ((and (consp result)
13266 (stringp (cdr result))) (cdr result))
13267 (result entry)
13268 (t nil))))
13269
13270(defun org-diary-to-ical-string (frombuf)
13271 "FIXME"
13272 (let* ((tmpdir (if (featurep 'xemacs)
13273 (temp-directory)
13274 temporary-file-directory))
13275 (tmpfile (make-temp-name
13276 (expand-file-name "orgics" tmpdir)))
13277 buf rtn b e)
13278 (save-excursion
13279 (set-buffer frombuf)
13280 (icalendar-export-region (point-min) (point-max) tmpfile)
13281 (setq buf (find-buffer-visiting tmpfile))
13282 (set-buffer buf)
13283 (goto-char (point-min))
13284 (if (re-search-forward "^BEGIN:VEVENT" nil t)
13285 (setq b (match-beginning 0)))
13286 (goto-char (point-max))
13287 (if (re-search-backward "^END:VEVENT" nil t)
13288 (setq e (match-end 0)))
13289 (setq rtn (if (and b e) (concat (buffer-substring b e) "\n") "")))
13290 (kill-buffer buf)
13291 (kill-buffer frombuf)
13292 (delete-file tmpfile)
13293 rtn))
13294
13295(defun org-closest-date (start current change)
13296 "Find the date closest to CURRENT that is consistent with START and CHANGE."
13297 ;; Make the proper lists from the dates
13298 (catch 'exit
13299 (let ((a1 '(("d" . day) ("w" . week) ("m" . month) ("y" . year)))
13300 dn dw sday cday n1 n2
13301 d m y y1 y2 date1 date2 nmonths nm ny m2)
13302
13303 (setq start (org-date-to-gregorian start)
13304 current (org-date-to-gregorian current)
13305 sday (calendar-absolute-from-gregorian start)
13306 cday (calendar-absolute-from-gregorian current))
13307
13308 (if (<= cday sday) (throw 'exit sday))
13309
13310 (if (string-match "\\(\\+[0-9]+\\)\\([dwmy]\\)" change)
13311 (setq dn (string-to-number (match-string 1 change))
13312 dw (cdr (assoc (match-string 2 change) a1)))
13313 (error "Invalid change specifyer: %s" change))
13314 (if (eq dw 'week) (setq dw 'day dn (* 7 dn)))
13315 (cond
13316 ((eq dw 'day)
13317 (setq n1 (+ sday (* dn (floor (/ (- cday sday) dn))))
13318 n2 (+ n1 dn)))
13319 ((eq dw 'year)
13320 (setq d (nth 1 start) m (car start) y1 (nth 2 start) y2 (nth 2 current))
13321 (setq y1 (+ (* (floor (/ (- y2 y1) dn)) dn) y1))
13322 (setq date1 (list m d y1)
13323 n1 (calendar-absolute-from-gregorian date1)
13324 date2 (list m d (+ y1 (* (if (< n1 cday) 1 -1) dn)))
13325 n2 (calendar-absolute-from-gregorian date2)))
13326 ((eq dw 'month)
13327 ;; approx number of month between the tow dates
13328 (setq nmonths (floor (/ (- cday sday) 30.436875)))
13329 ;; How often does dn fit in there?
13330 (setq d (nth 1 start) m (car start) y (nth 2 start)
13331 nm (* dn (max 0 (1- (floor (/ nmonths dn)))))
13332 m (+ m nm)
13333 ny (floor (/ m 12))
13334 y (+ y ny)
13335 m (- m (* ny 12)))
13336 (while (> m 12) (setq m (- m 12) y (1+ y)))
13337 (setq n1 (calendar-absolute-from-gregorian (list m d y)))
13338 (setq m2 (+ m dn) y2 y)
13339 (if (> m2 12) (setq y2 (1+ y2) m2 (- m2 12)))
13340 (setq n2 (calendar-absolute-from-gregorian (list m2 d y2)))
13341 (while (< n2 cday)
13342 (setq n1 n2 m m2 y y2)
13343 (setq m2 (+ m dn) y2 y)
13344 (if (> m2 12) (setq y2 (1+ y2) m2 (- m2 12)))
13345 (setq n2 (calendar-absolute-from-gregorian (list m2 d y2))))))
13346
13347 (if (> (abs (- cday n1)) (abs (- cday n2))) n2 n1))))
13348
13349(defun org-date-to-gregorian (date)
13350 "Turn any specification of DATE into a gregorian date for the calendar."
13351 (cond ((integerp date) (calendar-gregorian-from-absolute date))
13352 ((and (listp date) (= (length date) 3)) date)
13353 ((stringp date)
13354 (setq date (org-parse-time-string date))
13355 (list (nth 4 date) (nth 3 date) (nth 5 date)))
13356 ((listp date)
13357 (list (nth 4 date) (nth 3 date) (nth 5 date)))))
13358
12352(defun org-parse-time-string (s &optional nodefault) 13359(defun org-parse-time-string (s &optional nodefault)
12353 "Parse the standard Org-mode time string. 13360 "Parse the standard Org-mode time string.
12354This should be a lot faster than the normal `parse-time-string'. 13361This should be a lot faster than the normal `parse-time-string'.
@@ -12436,6 +13443,7 @@ in the timestamp determines what will be changed."
12436 (let ((pos (point)) 13443 (let ((pos (point))
12437 with-hm inactive 13444 with-hm inactive
12438 org-ts-what 13445 org-ts-what
13446 extra
12439 ts time time0) 13447 ts time time0)
12440 (if (not (org-at-timestamp-p t)) 13448 (if (not (org-at-timestamp-p t))
12441 (error "Not at a timestamp")) 13449 (error "Not at a timestamp"))
@@ -12445,12 +13453,13 @@ in the timestamp determines what will be changed."
12445 (not (get-text-property (1- (point)) 'display))) 13453 (not (get-text-property (1- (point)) 'display)))
12446 (setq org-ts-what 'day)) 13454 (setq org-ts-what 'day))
12447 (setq org-ts-what (or what org-ts-what) 13455 (setq org-ts-what (or what org-ts-what)
12448 with-hm (<= (abs (- (cdr org-ts-lengths)
12449 (- (match-end 0) (match-beginning 0))))
12450 1)
12451 inactive (= (char-after (match-beginning 0)) ?\[) 13456 inactive (= (char-after (match-beginning 0)) ?\[)
12452 ts (match-string 0)) 13457 ts (match-string 0))
12453 (replace-match "") 13458 (replace-match "")
13459 (if (string-match " \\+[0-9]+[dwmy]" ts)
13460 (setq extra (match-string 0 ts)))
13461 (if (string-match "^.\\{10\\}.*?[0-9]+:[0-9][0-9]" ts)
13462 (setq with-hm t))
12454 (setq time0 (org-parse-time-string ts)) 13463 (setq time0 (org-parse-time-string ts))
12455 (setq time 13464 (setq time
12456 (apply 'encode-time 13465 (apply 'encode-time
@@ -12476,7 +13485,7 @@ in the timestamp determines what will be changed."
12476 (setcar (nthcdr 2 time0) (or (nth 1 time0) 0)) 13485 (setcar (nthcdr 2 time0) (or (nth 1 time0) 0))
12477 (setq time (apply 'encode-time time0)))) 13486 (setq time (apply 'encode-time time0))))
12478 (setq org-last-changed-timestamp 13487 (setq org-last-changed-timestamp
12479 (org-insert-time-stamp time with-hm inactive)) 13488 (org-insert-time-stamp time with-hm inactive nil nil extra))
12480 (org-clock-update-time-maybe) 13489 (org-clock-update-time-maybe)
12481 (goto-char pos) 13490 (goto-char pos)
12482 ;; Try to recenter the calendar window, if any 13491 ;; Try to recenter the calendar window, if any
@@ -12525,8 +13534,27 @@ If there is already a time stamp at the cursor position, update it."
12525 13534
12526;;; The clock for measuring work time. 13535;;; The clock for measuring work time.
12527 13536
13537(defvar org-mode-line-string "")
13538(put 'org-mode-line-string 'risky-local-variable t)
13539
13540(defvar org-mode-line-timer nil)
13541(defvar org-clock-heading "")
13542(defvar org-clock-start-time "")
13543
13544(defun org-update-mode-line ()
13545 (let* ((delta (- (time-to-seconds (current-time))
13546 (time-to-seconds org-clock-start-time)))
13547 (h (floor delta 3600))
13548 (m (floor (- delta (* 3600 h)) 60)))
13549 (setq org-mode-line-string
13550 (propertize (format "-[%d:%02d (%s)]" h m org-clock-heading)
13551 'help-echo "Org-mode clock is running"))
13552 (force-mode-line-update)))
13553
12528(defvar org-clock-marker (make-marker) 13554(defvar org-clock-marker (make-marker)
12529 "Marker recording the last clock-in.") 13555 "Marker recording the last clock-in.")
13556(defvar org-clock-mode-line-entry nil
13557 "Information for the modeline about the running clock.")
12530 13558
12531(defun org-clock-in () 13559(defun org-clock-in ()
12532 "Start the clock on the current item. 13560 "Start the clock on the current item.
@@ -12536,6 +13564,10 @@ If necessary, clock-out of the currently active clock."
12536 (let (ts) 13564 (let (ts)
12537 (save-excursion 13565 (save-excursion
12538 (org-back-to-heading t) 13566 (org-back-to-heading t)
13567 (if (looking-at org-todo-line-regexp)
13568 (setq org-clock-heading (match-string 3))
13569 (setq org-clock-heading "???"))
13570 (setq org-clock-heading (propertize org-clock-heading 'face nil))
12539 (beginning-of-line 2) 13571 (beginning-of-line 2)
12540 (when (and (looking-at (concat "[ \t]*" org-keyword-time-regexp)) 13572 (when (and (looking-at (concat "[ \t]*" org-keyword-time-regexp))
12541 (not (equal (match-string 1) org-clock-string))) 13573 (not (equal (match-string 1) org-clock-string)))
@@ -12545,8 +13577,15 @@ If necessary, clock-out of the currently active clock."
12545 (insert "\n") (backward-char 1) 13577 (insert "\n") (backward-char 1)
12546 (indent-relative) 13578 (indent-relative)
12547 (insert org-clock-string " ") 13579 (insert org-clock-string " ")
13580 (setq org-clock-start-time (current-time))
12548 (setq ts (org-insert-time-stamp (current-time) 'with-hm 'inactive)) 13581 (setq ts (org-insert-time-stamp (current-time) 'with-hm 'inactive))
12549 (move-marker org-clock-marker (point) (buffer-base-buffer)) 13582 (move-marker org-clock-marker (point) (buffer-base-buffer))
13583 (or global-mode-string (setq global-mode-string '("")))
13584 (or (memq 'org-mode-line-string global-mode-string)
13585 (setq global-mode-string
13586 (append global-mode-string '(org-mode-line-string))))
13587 (org-update-mode-line)
13588 (setq org-mode-line-timer (run-with-timer 60 60 'org-update-mode-line))
12550 (message "Clock started at %s" ts)))) 13589 (message "Clock started at %s" ts))))
12551 13590
12552(defun org-clock-out (&optional fail-quietly) 13591(defun org-clock-out (&optional fail-quietly)
@@ -12577,6 +13616,12 @@ If there is no running clock, throw an error, unless FAIL-QUIETLY is set."
12577 (insert " => " (format "%2d:%02d" h m)) 13616 (insert " => " (format "%2d:%02d" h m))
12578 (move-marker org-clock-marker nil) 13617 (move-marker org-clock-marker nil)
12579 (org-add-log-maybe 'clock-out) 13618 (org-add-log-maybe 'clock-out)
13619 (when org-mode-line-timer
13620 (cancel-timer org-mode-line-timer)
13621 (setq org-mode-line-timer nil))
13622 (setq global-mode-string
13623 (delq 'org-mode-line-string global-mode-string))
13624 (force-mode-line-update)
12580 (message "Clock stopped at %s after HH:MM = %d:%02d" te h m))))) 13625 (message "Clock stopped at %s after HH:MM = %d:%02d" te h m)))))
12581 13626
12582(defun org-clock-cancel () 13627(defun org-clock-cancel ()
@@ -12704,7 +13749,7 @@ from the `before-change-functions' in the current buffer."
12704(defun org-clock-out-if-current () 13749(defun org-clock-out-if-current ()
12705 "Clock out if the current entry contains the running clock. 13750 "Clock out if the current entry contains the running clock.
12706This is used to stop the clock after a TODO entry is marked DONE." 13751This is used to stop the clock after a TODO entry is marked DONE."
12707 (when (and (equal state org-done-string) 13752 (when (and (member state org-done-keywords)
12708 (equal (marker-buffer org-clock-marker) (current-buffer)) 13753 (equal (marker-buffer org-clock-marker) (current-buffer))
12709 (< (point) org-clock-marker) 13754 (< (point) org-clock-marker)
12710 (> (save-excursion (outline-next-heading) (point)) 13755 (> (save-excursion (outline-next-heading) (point))
@@ -12984,86 +14029,89 @@ The following commands are available:
12984 14029
12985(substitute-key-definition 'undo 'org-agenda-undo 14030(substitute-key-definition 'undo 'org-agenda-undo
12986 org-agenda-mode-map global-map) 14031 org-agenda-mode-map global-map)
12987(define-key org-agenda-mode-map "\C-i" 'org-agenda-goto) 14032(org-defkey org-agenda-mode-map "\C-i" 'org-agenda-goto)
12988(define-key org-agenda-mode-map [(tab)] 'org-agenda-goto) 14033(org-defkey org-agenda-mode-map [(tab)] 'org-agenda-goto)
12989(define-key org-agenda-mode-map "\C-m" 'org-agenda-switch-to) 14034(org-defkey org-agenda-mode-map "\C-m" 'org-agenda-switch-to)
12990(define-key org-agenda-mode-map "\C-k" 'org-agenda-kill) 14035(org-defkey org-agenda-mode-map "\C-k" 'org-agenda-kill)
12991(define-key org-agenda-mode-map "\C-c$" 'org-agenda-archive) 14036(org-defkey org-agenda-mode-map "\C-c$" 'org-agenda-archive)
12992(define-key org-agenda-mode-map "\C-c\C-x\C-s" 'org-agenda-archive) 14037(org-defkey org-agenda-mode-map "\C-c\C-x\C-s" 'org-agenda-archive)
12993(define-key org-agenda-mode-map "$" 'org-agenda-archive) 14038(org-defkey org-agenda-mode-map "$" 'org-agenda-archive)
12994(define-key org-agenda-mode-map "\C-c\C-o" 'org-agenda-open-link) 14039(org-defkey org-agenda-mode-map "\C-c\C-o" 'org-agenda-open-link)
12995(define-key org-agenda-mode-map " " 'org-agenda-show) 14040(org-defkey org-agenda-mode-map " " 'org-agenda-show)
12996(define-key org-agenda-mode-map "\C-c\C-t" 'org-agenda-todo) 14041(org-defkey org-agenda-mode-map "\C-c\C-t" 'org-agenda-todo)
12997(define-key org-agenda-mode-map "\C-c\C-xb" 'org-agenda-tree-to-indirect-buffer) 14042(org-defkey org-agenda-mode-map [(control shift right)] 'org-agenda-todo-nextset)
12998(define-key org-agenda-mode-map "b" 'org-agenda-tree-to-indirect-buffer) 14043(org-defkey org-agenda-mode-map [(control shift left)] 'org-agenda-todo-previousset)
12999(define-key org-agenda-mode-map "o" 'delete-other-windows) 14044(org-defkey org-agenda-mode-map "\C-c\C-xb" 'org-agenda-tree-to-indirect-buffer)
13000(define-key org-agenda-mode-map "L" 'org-agenda-recenter) 14045(org-defkey org-agenda-mode-map "b" 'org-agenda-tree-to-indirect-buffer)
13001(define-key org-agenda-mode-map "t" 'org-agenda-todo) 14046(org-defkey org-agenda-mode-map "o" 'delete-other-windows)
13002(define-key org-agenda-mode-map "a" 'org-agenda-toggle-archive-tag) 14047(org-defkey org-agenda-mode-map "L" 'org-agenda-recenter)
13003(define-key org-agenda-mode-map ":" 'org-agenda-set-tags) 14048(org-defkey org-agenda-mode-map "t" 'org-agenda-todo)
13004(define-key org-agenda-mode-map "." 'org-agenda-goto-today) 14049(org-defkey org-agenda-mode-map "a" 'org-agenda-toggle-archive-tag)
13005(define-key org-agenda-mode-map "d" 'org-agenda-day-view) 14050(org-defkey org-agenda-mode-map ":" 'org-agenda-set-tags)
13006(define-key org-agenda-mode-map "w" 'org-agenda-week-view) 14051(org-defkey org-agenda-mode-map "." 'org-agenda-goto-today)
13007(define-key org-agenda-mode-map (org-key 'S-right) 'org-agenda-date-later) 14052(org-defkey org-agenda-mode-map "d" 'org-agenda-day-view)
13008(define-key org-agenda-mode-map (org-key 'S-left) 'org-agenda-date-earlier) 14053(org-defkey org-agenda-mode-map "w" 'org-agenda-week-view)
13009(define-key org-agenda-mode-map [?\C-c ?\C-x (right)] 'org-agenda-date-later) 14054(org-defkey org-agenda-mode-map [(shift right)] 'org-agenda-date-later)
13010(define-key org-agenda-mode-map [?\C-c ?\C-x (left)] 'org-agenda-date-earlier) 14055(org-defkey org-agenda-mode-map [(shift left)] 'org-agenda-date-earlier)
13011 14056(org-defkey org-agenda-mode-map [?\C-c ?\C-x (right)] 'org-agenda-date-later)
13012(define-key org-agenda-mode-map ">" 'org-agenda-date-prompt) 14057(org-defkey org-agenda-mode-map [?\C-c ?\C-x (left)] 'org-agenda-date-earlier)
13013(define-key org-agenda-mode-map "\C-c\C-s" 'org-agenda-schedule) 14058
13014(define-key org-agenda-mode-map "\C-c\C-d" 'org-agenda-deadline) 14059(org-defkey org-agenda-mode-map ">" 'org-agenda-date-prompt)
14060(org-defkey org-agenda-mode-map "\C-c\C-s" 'org-agenda-schedule)
14061(org-defkey org-agenda-mode-map "\C-c\C-d" 'org-agenda-deadline)
13015(let ((l '(1 2 3 4 5 6 7 8 9 0))) 14062(let ((l '(1 2 3 4 5 6 7 8 9 0)))
13016 (while l (define-key org-agenda-mode-map 14063 (while l (org-defkey org-agenda-mode-map
13017 (int-to-string (pop l)) 'digit-argument))) 14064 (int-to-string (pop l)) 'digit-argument)))
13018 14065
13019(define-key org-agenda-mode-map "f" 'org-agenda-follow-mode) 14066(org-defkey org-agenda-mode-map "f" 'org-agenda-follow-mode)
13020(define-key org-agenda-mode-map "l" 'org-agenda-log-mode) 14067(org-defkey org-agenda-mode-map "l" 'org-agenda-log-mode)
13021(define-key org-agenda-mode-map "D" 'org-agenda-toggle-diary) 14068(org-defkey org-agenda-mode-map "D" 'org-agenda-toggle-diary)
13022(define-key org-agenda-mode-map "g" 'org-agenda-toggle-time-grid) 14069(org-defkey org-agenda-mode-map "g" 'org-agenda-toggle-time-grid)
13023(define-key org-agenda-mode-map "r" 'org-agenda-redo) 14070(org-defkey org-agenda-mode-map "r" 'org-agenda-redo)
13024(define-key org-agenda-mode-map "q" 'org-agenda-quit) 14071(org-defkey org-agenda-mode-map "q" 'org-agenda-quit)
13025(define-key org-agenda-mode-map "x" 'org-agenda-exit) 14072(org-defkey org-agenda-mode-map "x" 'org-agenda-exit)
13026(define-key org-agenda-mode-map "s" 'org-save-all-org-buffers) 14073(org-defkey org-agenda-mode-map "\C-x\C-w" 'org-write-agenda)
13027(define-key org-agenda-mode-map "P" 'org-agenda-show-priority) 14074(org-defkey org-agenda-mode-map "s" 'org-save-all-org-buffers)
13028(define-key org-agenda-mode-map "T" 'org-agenda-show-tags) 14075(org-defkey org-agenda-mode-map "P" 'org-agenda-show-priority)
13029(define-key org-agenda-mode-map "n" 'next-line) 14076(org-defkey org-agenda-mode-map "T" 'org-agenda-show-tags)
13030(define-key org-agenda-mode-map "p" 'previous-line) 14077(org-defkey org-agenda-mode-map "n" 'next-line)
13031(define-key org-agenda-mode-map "\C-n" 'org-agenda-next-date-line) 14078(org-defkey org-agenda-mode-map "p" 'previous-line)
13032(define-key org-agenda-mode-map "\C-p" 'org-agenda-previous-date-line) 14079(org-defkey org-agenda-mode-map "\C-n" 'org-agenda-next-date-line)
13033(define-key org-agenda-mode-map "," 'org-agenda-priority) 14080(org-defkey org-agenda-mode-map "\C-p" 'org-agenda-previous-date-line)
13034(define-key org-agenda-mode-map "\C-c," 'org-agenda-priority) 14081(org-defkey org-agenda-mode-map "," 'org-agenda-priority)
13035(define-key org-agenda-mode-map "i" 'org-agenda-diary-entry) 14082(org-defkey org-agenda-mode-map "\C-c," 'org-agenda-priority)
13036(define-key org-agenda-mode-map "c" 'org-agenda-goto-calendar) 14083(org-defkey org-agenda-mode-map "i" 'org-agenda-diary-entry)
14084(org-defkey org-agenda-mode-map "c" 'org-agenda-goto-calendar)
13037(eval-after-load "calendar" 14085(eval-after-load "calendar"
13038 '(define-key calendar-mode-map org-calendar-to-agenda-key 14086 '(org-defkey calendar-mode-map org-calendar-to-agenda-key
13039 'org-calendar-goto-agenda)) 14087 'org-calendar-goto-agenda))
13040(define-key org-agenda-mode-map "C" 'org-agenda-convert-date) 14088(org-defkey org-agenda-mode-map "C" 'org-agenda-convert-date)
13041(define-key org-agenda-mode-map "m" 'org-agenda-phases-of-moon) 14089(org-defkey org-agenda-mode-map "m" 'org-agenda-phases-of-moon)
13042(define-key org-agenda-mode-map "M" 'org-agenda-phases-of-moon) 14090(org-defkey org-agenda-mode-map "M" 'org-agenda-phases-of-moon)
13043(define-key org-agenda-mode-map "S" 'org-agenda-sunrise-sunset) 14091(org-defkey org-agenda-mode-map "S" 'org-agenda-sunrise-sunset)
13044(define-key org-agenda-mode-map "h" 'org-agenda-holidays) 14092(org-defkey org-agenda-mode-map "h" 'org-agenda-holidays)
13045(define-key org-agenda-mode-map "H" 'org-agenda-holidays) 14093(org-defkey org-agenda-mode-map "H" 'org-agenda-holidays)
13046(define-key org-agenda-mode-map "+" 'org-agenda-priority-up) 14094(org-defkey org-agenda-mode-map "I" 'org-agenda-clock-in)
13047(define-key org-agenda-mode-map "I" 'org-agenda-clock-in) 14095(org-defkey org-agenda-mode-map "O" 'org-agenda-clock-out)
13048(define-key org-agenda-mode-map "O" 'org-agenda-clock-out) 14096(org-defkey org-agenda-mode-map "X" 'org-agenda-clock-cancel)
13049(define-key org-agenda-mode-map "X" 'org-agenda-clock-cancel) 14097(org-defkey org-agenda-mode-map "+" 'org-agenda-priority-up)
13050(define-key org-agenda-mode-map "-" 'org-agenda-priority-down) 14098(org-defkey org-agenda-mode-map "-" 'org-agenda-priority-down)
13051(define-key org-agenda-mode-map (org-key 'S-up) 'org-agenda-priority-up) 14099(org-defkey org-agenda-mode-map [(shift up)] 'org-agenda-priority-up)
13052(define-key org-agenda-mode-map (org-key 'S-down) 'org-agenda-priority-down) 14100(org-defkey org-agenda-mode-map [(shift down)] 'org-agenda-priority-down)
13053(define-key org-agenda-mode-map [?\C-c ?\C-x (up)] 'org-agenda-priority-up) 14101(org-defkey org-agenda-mode-map [?\C-c ?\C-x (up)] 'org-agenda-priority-up)
13054(define-key org-agenda-mode-map [?\C-c ?\C-x (down)] 'org-agenda-priority-down) 14102(org-defkey org-agenda-mode-map [?\C-c ?\C-x (down)] 'org-agenda-priority-down)
13055(define-key org-agenda-mode-map [(right)] 'org-agenda-later) 14103(org-defkey org-agenda-mode-map [(right)] 'org-agenda-later)
13056(define-key org-agenda-mode-map [(left)] 'org-agenda-earlier) 14104(org-defkey org-agenda-mode-map [(left)] 'org-agenda-earlier)
13057(define-key org-agenda-mode-map "\C-c\C-x\C-c" 'org-export-icalendar-combine-agenda-files) 14105(org-defkey org-agenda-mode-map "\C-c\C-x\C-c" 'org-export-icalendar-combine-agenda-files)
13058(defvar org-agenda-keymap (copy-keymap org-agenda-mode-map) 14106(defvar org-agenda-keymap (copy-keymap org-agenda-mode-map)
13059 "Local keymap for agenda entries from Org-mode.") 14107 "Local keymap for agenda entries from Org-mode.")
13060 14108
13061(define-key org-agenda-keymap 14109(org-defkey org-agenda-keymap
13062 (if (featurep 'xemacs) [(button2)] [(mouse-2)]) 'org-agenda-goto-mouse) 14110 (if (featurep 'xemacs) [(button2)] [(mouse-2)]) 'org-agenda-goto-mouse)
13063(define-key org-agenda-keymap 14111(org-defkey org-agenda-keymap
13064 (if (featurep 'xemacs) [(button3)] [(mouse-3)]) 'org-agenda-show-mouse) 14112 (if (featurep 'xemacs) [(button3)] [(mouse-3)]) 'org-agenda-show-mouse)
13065(when org-agenda-mouse-1-follows-link 14113(when org-agenda-mouse-1-follows-link
13066 (define-key org-agenda-keymap [follow-link] 'mouse-face)) 14114 (org-defkey org-agenda-keymap [follow-link] 'mouse-face))
13067(easy-menu-define org-agenda-menu org-agenda-mode-map "Agenda menu" 14115(easy-menu-define org-agenda-menu org-agenda-mode-map "Agenda menu"
13068 '("Agenda" 14116 '("Agenda"
13069 ("Agenda Files") 14117 ("Agenda Files")
@@ -13120,6 +14168,7 @@ The following commands are available:
13120 :style toggle :selected org-agenda-include-diary :active (org-agenda-check-type nil 'agenda)] 14168 :style toggle :selected org-agenda-include-diary :active (org-agenda-check-type nil 'agenda)]
13121 ["Use Time Grid" org-agenda-toggle-time-grid 14169 ["Use Time Grid" org-agenda-toggle-time-grid
13122 :style toggle :selected org-agenda-use-time-grid :active (org-agenda-check-type nil 'agenda)]) 14170 :style toggle :selected org-agenda-use-time-grid :active (org-agenda-check-type nil 'agenda)])
14171 ["Write view to file" org-write-agenda t]
13123 ["Rebuild buffer" org-agenda-redo t] 14172 ["Rebuild buffer" org-agenda-redo t]
13124 ["Save all Org-mode Buffers" org-save-all-org-buffers t] 14173 ["Save all Org-mode Buffers" org-save-all-org-buffers t]
13125 "--" 14174 "--"
@@ -13146,6 +14195,11 @@ The following commands are available:
13146 `(unless (get-text-property (point) 'org-protected) 14195 `(unless (get-text-property (point) 'org-protected)
13147 ,@body)) 14196 ,@body))
13148 14197
14198(defmacro org-unmodified (&rest body)
14199 "Execute body without changing buffer-modified-p."
14200 `(set-buffer-modified-p
14201 (prog1 (buffer-modified-p) ,@body)))
14202
13149(defmacro org-with-remote-undo (_buffer &rest _body) 14203(defmacro org-with-remote-undo (_buffer &rest _body)
13150 "Execute BODY while recording undo information in two buffers." 14204 "Execute BODY while recording undo information in two buffers."
13151 (declare (indent 1) (debug t)) 14205 (declare (indent 1) (debug t))
@@ -13230,7 +14284,8 @@ T Call `org-todo-list' to display the global todo list, select only
13230m Call `org-tags-view' to display headlines with tags matching 14284m Call `org-tags-view' to display headlines with tags matching
13231 a condition (the user is prompted for the condition). 14285 a condition (the user is prompted for the condition).
13232M Like `m', but select only TODO entries, no ordinary headlines. 14286M Like `m', but select only TODO entries, no ordinary headlines.
13233l Create a timeeline for the current buffer. 14287l Create a timeline for the current buffer.
14288e Export views to associated files.
13234 14289
13235More commands can be added by configuring the variable 14290More commands can be added by configuring the variable
13236`org-agenda-custom-commands'. In particular, specific tags and TODO keyword 14291`org-agenda-custom-commands'. In particular, specific tags and TODO keyword
@@ -13261,7 +14316,7 @@ next use of \\[org-agenda]) restricted to the current file."
13261 (let ((header 14316 (let ((header
13262"Press key for an agenda command: 14317"Press key for an agenda command:
13263-------------------------------- C Configure custom agenda commands 14318-------------------------------- C Configure custom agenda commands
13264a Agenda for current week or day 14319a Agenda for current week or day e Export agenda views
13265t List of all TODO entries T Entries with special TODO kwd 14320t List of all TODO entries T Entries with special TODO kwd
13266m Match a TAGS query M Like m, but only TODO entries 14321m Match a TAGS query M Like m, but only TODO entries
13267L Timeline for current buffer # List stuck projects (!=configure) 14322L Timeline for current buffer # List stuck projects (!=configure)
@@ -13279,6 +14334,9 @@ L Timeline for current buffer # List stuck projects (!=configure)
13279 '(face bold)) 14334 '(face bold))
13280 (cond 14335 (cond
13281 ((stringp type) type) 14336 ((stringp type) type)
14337 ((eq type 'agenda) "Agenda for current week or day")
14338 ((eq type 'alltodo) "List of all TODO entries")
14339 ((eq type 'stuck) "List of stuck projects")
13282 ((eq type 'todo) "TODO keyword") 14340 ((eq type 'todo) "TODO keyword")
13283 ((eq type 'tags) "Tags query") 14341 ((eq type 'tags) "Tags query")
13284 ((eq type 'tags-todo) "Tags (TODO)") 14342 ((eq type 'tags-todo) "Tags (TODO)")
@@ -13333,6 +14391,13 @@ L Timeline for current buffer # List stuck projects (!=configure)
13333 (setq type (nth 1 entry) match (nth 2 entry) lprops (nth 3 entry) 14391 (setq type (nth 1 entry) match (nth 2 entry) lprops (nth 3 entry)
13334 lprops (nth 3 entry)) 14392 lprops (nth 3 entry))
13335 (cond 14393 (cond
14394 ((eq type 'agenda)
14395 (org-let lprops '(org-agenda-list current-prefix-arg)))
14396 ((eq type 'alltodo)
14397 (org-let lprops '(org-todo-list current-prefix-arg)))
14398 ((eq type 'stuck)
14399 (org-let lprops '(org-agenda-list-stuck-projects
14400 current-prefix-arg)))
13336 ((eq type 'tags) 14401 ((eq type 'tags)
13337 (org-let lprops '(org-tags-view current-prefix-arg match))) 14402 (org-let lprops '(org-tags-view current-prefix-arg match)))
13338 ((eq type 'tags-todo) 14403 ((eq type 'tags-todo)
@@ -13353,13 +14418,14 @@ L Timeline for current buffer # List stuck projects (!=configure)
13353 ((fboundp type) 14418 ((fboundp type)
13354 (org-let lprops '(funcall type match))) 14419 (org-let lprops '(funcall type match)))
13355 (t (error "Invalid custom agenda command type %s" type)))) 14420 (t (error "Invalid custom agenda command type %s" type))))
13356 (org-run-agenda-series (cddr entry)))) 14421 (org-run-agenda-series (nth 1 entry) (cddr entry))))
13357 ((equal c ?C) (customize-variable 'org-agenda-custom-commands)) 14422 ((equal c ?C) (customize-variable 'org-agenda-custom-commands))
13358 ((equal c ?a) (call-interactively 'org-agenda-list)) 14423 ((equal c ?a) (call-interactively 'org-agenda-list))
13359 ((equal c ?t) (call-interactively 'org-todo-list)) 14424 ((equal c ?t) (call-interactively 'org-todo-list))
13360 ((equal c ?T) (org-call-with-arg 'org-todo-list (or arg '(4)))) 14425 ((equal c ?T) (org-call-with-arg 'org-todo-list (or arg '(4))))
13361 ((equal c ?m) (call-interactively 'org-tags-view)) 14426 ((equal c ?m) (call-interactively 'org-tags-view))
13362 ((equal c ?M) (org-call-with-arg 'org-tags-view (or arg '(4)))) 14427 ((equal c ?M) (org-call-with-arg 'org-tags-view (or arg '(4))))
14428 ((equal c ?e) (call-interactively 'org-store-agenda-views))
13363 ((equal c ?L) 14429 ((equal c ?L)
13364 (unless restrict-ok 14430 (unless restrict-ok
13365 (error "This is not an Org-mode file")) 14431 (error "This is not an Org-mode file"))
@@ -13368,10 +14434,10 @@ L Timeline for current buffer # List stuck projects (!=configure)
13368 ((equal c ?!) (customize-variable 'org-stuck-projects)) 14434 ((equal c ?!) (customize-variable 'org-stuck-projects))
13369 (t (error "Invalid key")))))) 14435 (t (error "Invalid key"))))))
13370 14436
13371(defun org-run-agenda-series (series) 14437(defun org-run-agenda-series (name series)
13372 (org-prepare-agenda) 14438 (org-prepare-agenda name)
13373 (let* ((org-agenda-multi t) 14439 (let* ((org-agenda-multi t)
13374 (redo (list 'org-run-agenda-series (list 'quote series))) 14440 (redo (list 'org-run-agenda-series name (list 'quote series)))
13375 (cmds (car series)) 14441 (cmds (car series))
13376 (gprops (nth 1 series)) 14442 (gprops (nth 1 series))
13377 match ;; The byte compiler incorrectly complains about this. Keep it! 14443 match ;; The byte compiler incorrectly complains about this. Keep it!
@@ -13380,11 +14446,14 @@ L Timeline for current buffer # List stuck projects (!=configure)
13380 (setq type (car cmd) match (nth 1 cmd) lprops (nth 2 cmd)) 14446 (setq type (car cmd) match (nth 1 cmd) lprops (nth 2 cmd))
13381 (cond 14447 (cond
13382 ((eq type 'agenda) 14448 ((eq type 'agenda)
13383 (call-interactively 'org-agenda-list)) 14449 (org-let2 gprops lprops
14450 '(call-interactively 'org-agenda-list)))
13384 ((eq type 'alltodo) 14451 ((eq type 'alltodo)
13385 (call-interactively 'org-todo-list)) 14452 (org-let2 gprops lprops
14453 '(call-interactively 'org-todo-list)))
13386 ((eq type 'stuck) 14454 ((eq type 'stuck)
13387 (call-interactively 'org-agenda-list-stuck-projects)) 14455 (org-let2 gprops lprops
14456 '(call-interactively 'org-agenda-list-stuck-projects)))
13388 ((eq type 'tags) 14457 ((eq type 'tags)
13389 (org-let2 gprops lprops 14458 (org-let2 gprops lprops
13390 '(org-tags-view current-prefix-arg match))) 14459 '(org-tags-view current-prefix-arg match)))
@@ -13405,17 +14474,208 @@ L Timeline for current buffer # List stuck projects (!=configure)
13405 14474
13406;;;###autoload 14475;;;###autoload
13407(defmacro org-batch-agenda (cmd-key &rest parameters) 14476(defmacro org-batch-agenda (cmd-key &rest parameters)
13408 "Run an agenda command in batch mode, send result to STDOUT. 14477 "Run an agenda command in batch mode and send the result to STDOUT.
13409CMD-KEY is a string that is also a key in `org-agenda-custom-commands'. 14478If CMD-KEY is a string of length 1, it is used as a key in
14479`org-agenda-custom-commands' and triggers this command. If it is a
14480longer string it is used as a tags/todo match string.
13410Paramters are alternating variable names and values that will be bound 14481Paramters are alternating variable names and values that will be bound
13411before running the agenda command." 14482before running the agenda command."
13412 (let (pars) 14483 (let (pars)
13413 (while parameters 14484 (while parameters
13414 (push (list (pop parameters) (if parameters (pop parameters))) pars)) 14485 (push (list (pop parameters) (if parameters (pop parameters))) pars))
13415 (flet ((read-char-exclusive () (string-to-char cmd-key))) 14486 (if (> (length cmd-key) 1)
13416 (eval (list 'let (nreverse pars) '(org-agenda nil)))) 14487 (eval (list 'let (nreverse pars)
14488 (list 'org-tags-view nil cmd-key)))
14489 (flet ((read-char-exclusive () (string-to-char cmd-key)))
14490 (eval (list 'let (nreverse pars) '(org-agenda nil)))))
14491 (set-buffer "*Org Agenda*")
14492 (princ (org-encode-for-stdout (buffer-string)))))
14493
14494(defun org-encode-for-stdout (string)
14495 (if (fboundp 'encode-coding-string)
14496 (encode-coding-string string buffer-file-coding-system)
14497 string))
14498
14499(defvar org-agenda-info nil)
14500
14501;;;###autoload
14502(defmacro org-batch-agenda-csv (cmd-key &rest parameters)
14503 "Run an agenda command in batch mode and send the result to STDOUT.
14504If CMD-KEY is a string of length 1, it is used as a key in
14505`org-agenda-custom-commands' and triggers this command. If it is a
14506longer string it is used as a tags/todo match string.
14507Paramters are alternating variable names and values that will be bound
14508before running the agenda command.
14509
14510The output gives a line for each selected agenda item. Each
14511item is a list of comma-separated values, like this:
14512
14513category,head,type,todo,tags,date,time,extra,priority-l,priority-n
14514
14515category The category of the item
14516head The headline, without TODO kwd, TAGS and PRIORITY
14517type The type of the agenda entry, can be
14518 todo selected in TODO match
14519 tagsmatch selected in tags match
14520 diary imported from diary
14521 deadline a deadline on given date
14522 scheduled scheduled on given date
14523 timestamp entry has timestamp on given date
14524 closed entry was closed on given date
14525 upcoming-deadline warning about deadline
14526 past-scheduled forwarded scheduled item
14527 block entry has date block including g. date
14528todo The todo keyword, if any
14529tags All tags including inherited ones, separated by colons
14530date The relevant date, like 2007-2-14
14531time The time, like 15:00-16:50
14532extra Sting with extra planning info
14533priority-l The priority letter if any was given
14534priority-n The computed numerical priority"
14535
14536 (let (pars)
14537 (while parameters
14538 (push (list (pop parameters) (if parameters (pop parameters))) pars))
14539 (push (list 'org-agenda-remove-tags t) pars)
14540 (if (> (length cmd-key) 1)
14541 (eval (list 'let (nreverse pars)
14542 (list 'org-tags-view nil cmd-key)))
14543 (flet ((read-char-exclusive () (string-to-char cmd-key)))
14544 (eval (list 'let (nreverse pars) '(org-agenda nil)))))
13417 (set-buffer "*Org Agenda*") 14545 (set-buffer "*Org Agenda*")
13418 (princ (buffer-string)))) 14546 (let* ((lines (org-split-string (buffer-string) "\n"))
14547 line)
14548 (while (setq line (pop lines))
14549 (catch 'next
14550 (if (not (get-text-property 0 'org-category line)) (throw 'next nil))
14551 (setq org-agenda-info
14552 (org-fix-agenda-info (text-properties-at 0 line)))
14553 (princ
14554 (org-encode-for-stdout
14555 (mapconcat 'org-agenda-export-csv-mapper
14556 '(org-category txt type todo tags date time-of-day extra
14557 priority-letter priority)
14558 ",")))
14559 (princ "\n"))))))
14560
14561(defun org-fix-agenda-info (props)
14562 "FIXME"
14563 (let (tmp re)
14564 (when (setq tmp (plist-get props 'tags))
14565 (setq props (plist-put props 'tags (mapconcat 'identity tmp ":"))))
14566 (when (setq tmp (plist-get props 'date))
14567 (if (integerp tmp) (setq tmp (calendar-gregorian-from-absolute tmp)))
14568 (let ((calendar-date-display-form '(year "-" month "-" day)))
14569 '((format "%4d, %9s %2s, %4s" dayname monthname day year))
14570
14571 (setq tmp (calendar-date-string tmp)))
14572 (setq props (plist-put props 'date tmp)))
14573 (when (setq tmp (plist-get props 'day))
14574 (if (integerp tmp) (setq tmp (calendar-gregorian-from-absolute tmp)))
14575 (let ((calendar-date-display-form '(year "-" month "-" day)))
14576 (setq tmp (calendar-date-string tmp)))
14577 (setq props (plist-put props 'day tmp)))
14578 (when (setq tmp (plist-get props 'txt))
14579 (when (string-match "\\[#\\([A-Z0-9]\\)\\] ?" tmp)
14580 (plist-put props 'priority-letter (match-string 1 tmp))
14581 (setq tmp (replace-match "" t t tmp)))
14582 (when (and (setq re (plist-get props 'org-todo-regexp))
14583 (setq re (concat "\\`\\.*" re " ?"))
14584 (string-match re tmp))
14585 (plist-put props 'todo (match-string 1 tmp))
14586 (setq tmp (replace-match "" t t tmp)))
14587 (plist-put props 'txt tmp)))
14588 props)
14589
14590(defun org-agenda-export-csv-mapper (prop)
14591 (let ((res (plist-get org-agenda-info prop)))
14592 (setq res
14593 (cond
14594 ((not res) "")
14595 ((stringp res) res)
14596 (t (prin1-to-string res))))
14597 (while (string-match "," res)
14598 (setq res (replace-match ";" t t res)))
14599 (org-trim res)))
14600
14601
14602;;;###autoload
14603(defun org-store-agenda-views (&rest parameters)
14604 (interactive)
14605 (eval (list 'org-batch-store-agenda-views)))
14606
14607(defvar org-agenda-buffer-name)
14608
14609;; FIXME, why is this a macro?????
14610;;;###autoload
14611(defmacro org-batch-store-agenda-views (&rest parameters)
14612 "Run all custom agenda commands that have a file argument."
14613 (let ((cmds org-agenda-custom-commands)
14614 (dir (default-directory))
14615 pars cmd thiscmdkey files opts)
14616 (while parameters
14617 (push (list (pop parameters) (if parameters (pop parameters))) pars))
14618 (setq pars (reverse pars))
14619 (save-window-excursion
14620 (while cmds
14621 (setq cmd (pop cmds)
14622 thiscmdkey (car cmd)
14623 opts (nth 3 cmd)
14624 files (org-last cmd))
14625 (if (stringp files) (setq files (list files)))
14626 (when files
14627 (flet ((read-char-exclusive () (string-to-char thiscmdkey)))
14628 (eval (list 'let (append org-agenda-exporter-settings opts pars)
14629 '(org-agenda nil))))
14630 (set-buffer "*Org Agenda*")
14631 (while files
14632 (eval (list 'let (append org-agenda-exporter-settings opts pars)
14633 (list 'org-write-agenda
14634 (expand-file-name (pop files) dir) t)))))
14635 (kill-buffer org-agenda-buffer-name)))))
14636
14637(defun org-write-agenda (file &optional nosettings)
14638 "Write the current buffer (an agenda view) as a file.
14639Depending on the extension of the file name, plain text (.txt),
14640HTML (.html or .htm) or Postscript (.ps) is produced.
14641If NOSETTINGS is given, do not scope the settings of
14642`org-agenda-exporter-settings' into the export commands. This is used when
14643the settings have already been scoped and we do not wish to overrule other,
14644higher priority settings."
14645 (interactive "FWrite agenda to file: ")
14646 (if (not (file-writable-p file))
14647 (error "Cannot write agenda to file %s" file))
14648 (cond
14649 ((string-match "\\.html?\\'" file) (require 'htmlize))
14650 ((string-match "\\.ps\\'" file) (require 'ps-print)))
14651 (org-let (if nosettings nil org-agenda-exporter-settings)
14652 '(save-excursion
14653 (save-window-excursion
14654 (cond
14655 ((string-match "\\.html?\\'" file)
14656 (set-buffer (htmlize-buffer (current-buffer)))
14657
14658 (when (and org-agenda-export-html-style
14659 (string-match "<style>" org-agenda-export-html-style))
14660 ;; replace <style> section with org-agenda-export-html-style
14661 (goto-char (point-min))
14662 (kill-region (- (search-forward "<style") 6)
14663 (search-forward "</style>"))
14664 (insert org-agenda-export-html-style))
14665 (write-file file)
14666 (kill-buffer (current-buffer))
14667 (message "HTML written to %s" file))
14668 ((string-match "\\.ps\\'" file)
14669 (ps-print-buffer-with-faces file)
14670 (message "Postscript written to %s" file))
14671 (t
14672 (let ((bs (buffer-string)))
14673 (find-file file)
14674 (insert bs)
14675 (save-buffer 0)
14676 (kill-buffer (current-buffer))
14677 (message "Plain text written to %s" file))))))
14678 (set-buffer org-agenda-buffer-name)))
13419 14679
13420(defmacro org-no-read-only (&rest body) 14680(defmacro org-no-read-only (&rest body)
13421 "Inhibit read-only for BODY." 14681 "Inhibit read-only for BODY."
@@ -13508,13 +14768,6 @@ If the current buffer does not, find the first agenda file."
13508 (find-file (car fs))) 14768 (find-file (car fs)))
13509 (if (buffer-base-buffer) (switch-to-buffer (buffer-base-buffer))))) 14769 (if (buffer-base-buffer) (switch-to-buffer (buffer-base-buffer)))))
13510 14770
13511(defun org-agenda-file-to-end ()
13512 "Move/add the current file to the end of the agenda file list.
13513If the file is not present in the list, it is appended to the list. If it is
13514present, it is moved there."
13515 (interactive)
13516 (org-agenda-file-to-front 'to-end))
13517
13518(defun org-agenda-file-to-front (&optional to-end) 14771(defun org-agenda-file-to-front (&optional to-end)
13519 "Move/add the current file to the top of the agenda file list. 14772 "Move/add the current file to the top of the agenda file list.
13520If the file is not present in the list, it is added to the front. If it is 14773If the file is not present in the list, it is added to the front. If it is
@@ -13578,7 +14831,10 @@ Optional argument FILE means, use this file instead of the current."
13578(defvar org-agenda-multi nil) ; dynammically scoped 14831(defvar org-agenda-multi nil) ; dynammically scoped
13579(defvar org-agenda-buffer-name "*Org Agenda*") 14832(defvar org-agenda-buffer-name "*Org Agenda*")
13580(defvar org-pre-agenda-window-conf nil) 14833(defvar org-pre-agenda-window-conf nil)
13581(defun org-prepare-agenda () 14834(defvar org-agenda-name nil)
14835(defun org-prepare-agenda (&optional name)
14836 (setq org-todo-keywords-for-agenda nil)
14837 (setq org-done-keywords-for-agenda nil)
13582 (if org-agenda-multi 14838 (if org-agenda-multi
13583 (progn 14839 (progn
13584 (setq buffer-read-only nil) 14840 (setq buffer-read-only nil)
@@ -13588,6 +14844,10 @@ Optional argument FILE means, use this file instead of the current."
13588 (narrow-to-region (point) (point-max))) 14844 (narrow-to-region (point) (point-max)))
13589 (org-agenda-maybe-reset-markers 'force) 14845 (org-agenda-maybe-reset-markers 'force)
13590 (org-prepare-agenda-buffers (org-agenda-files)) 14846 (org-prepare-agenda-buffers (org-agenda-files))
14847 (setq org-todo-keywords-for-agenda
14848 (org-uniquify org-todo-keywords-for-agenda))
14849 (setq org-done-keywords-for-agenda
14850 (org-uniquify org-done-keywords-for-agenda))
13591 (let* ((abuf (get-buffer-create org-agenda-buffer-name)) 14851 (let* ((abuf (get-buffer-create org-agenda-buffer-name))
13592 (awin (get-buffer-window abuf))) 14852 (awin (get-buffer-window abuf)))
13593 (cond 14853 (cond
@@ -13605,7 +14865,9 @@ Optional argument FILE means, use this file instead of the current."
13605 (switch-to-buffer-other-window abuf)))) 14865 (switch-to-buffer-other-window abuf))))
13606 (setq buffer-read-only nil) 14866 (setq buffer-read-only nil)
13607 (erase-buffer) 14867 (erase-buffer)
13608 (org-agenda-mode)) 14868 (org-agenda-mode)
14869 (and name (not org-agenda-name)
14870 (org-set-local 'org-agenda-name name)))
13609 (setq buffer-read-only nil)) 14871 (setq buffer-read-only nil))
13610 14872
13611(defun org-finalize-agenda () 14873(defun org-finalize-agenda ()
@@ -13617,7 +14879,9 @@ Optional argument FILE means, use this file instead of the current."
13617 (goto-char (point-min)) 14879 (goto-char (point-min))
13618 (while (org-activate-bracket-links (point-max)) 14880 (while (org-activate-bracket-links (point-max))
13619 (add-text-properties (match-beginning 0) (match-end 0) 14881 (add-text-properties (match-beginning 0) (match-end 0)
13620 '(face org-link)))) 14882 '(face org-link)))
14883 (unless org-agenda-with-colors
14884 (remove-text-properties (point-min) (point-max) '(face nil))))
13621 (run-hooks 'org-finalize-agenda-hook)))) 14885 (run-hooks 'org-finalize-agenda-hook))))
13622 14886
13623(defun org-prepare-agenda-buffers (files) 14887(defun org-prepare-agenda-buffers (files)
@@ -13635,6 +14899,10 @@ Optional argument FILE means, use this file instead of the current."
13635 (set-buffer (org-get-agenda-file-buffer file)) 14899 (set-buffer (org-get-agenda-file-buffer file))
13636 (widen) 14900 (widen)
13637 (setq bmp (buffer-modified-p)) 14901 (setq bmp (buffer-modified-p))
14902 (setq org-todo-keywords-for-agenda
14903 (append org-todo-keywords-for-agenda org-todo-keywords-1))
14904 (setq org-done-keywords-for-agenda
14905 (append org-done-keywords-for-agenda org-done-keywords))
13638 (save-excursion 14906 (save-excursion
13639 (remove-text-properties (point-min) (point-max) pall) 14907 (remove-text-properties (point-min) (point-max) pall)
13640 (when org-agenda-skip-archived-trees 14908 (when org-agenda-skip-archived-trees
@@ -13648,7 +14916,7 @@ Optional argument FILE means, use this file instead of the current."
13648 (add-text-properties 14916 (add-text-properties
13649 (match-beginning 0) (org-end-of-subtree t) pc))) 14917 (match-beginning 0) (org-end-of-subtree t) pc)))
13650 (set-buffer-modified-p bmp)))))) 14918 (set-buffer-modified-p bmp))))))
13651 14919
13652(defvar org-agenda-skip-function nil 14920(defvar org-agenda-skip-function nil
13653 "Function to be called at each match during agenda construction. 14921 "Function to be called at each match during agenda construction.
13654If this function return nil, the current match should not be skipped. 14922If this function return nil, the current match should not be skipped.
@@ -13733,9 +15001,13 @@ When a buffer is unmodified, it is just killed. When modified, it is saved
13733 "Get the table of categories and positions in current buffer." 15001 "Get the table of categories and positions in current buffer."
13734 (let (tbl) 15002 (let (tbl)
13735 (save-excursion 15003 (save-excursion
13736 (goto-char (point-min)) 15004 (save-restriction
13737 (while (re-search-forward "\\(^\\|\r\\)#\\+CATEGORY:[ \t]*\\(.*\\)" nil t) 15005 (widen)
13738 (push (cons (point) (org-trim (match-string 2))) tbl))) 15006 (goto-char (point-min))
15007 (while (re-search-forward "^#\\+CATEGORY:[ \t]*\\(.*\\)"
15008 nil t)
15009 (push (cons (match-beginning 1)
15010 (org-trim (match-string 1))) tbl))))
13739 tbl)) 15011 tbl))
13740 15012
13741(defun org-get-category (&optional pos) 15013(defun org-get-category (&optional pos)
@@ -13792,16 +15064,18 @@ dates."
13792 (setq day-numbers (delq nil (mapcar (lambda(x) 15064 (setq day-numbers (delq nil (mapcar (lambda(x)
13793 (if (>= x today) x nil)) 15065 (if (>= x today) x nil))
13794 day-numbers)))) 15066 day-numbers))))
13795 (org-prepare-agenda) 15067 (org-prepare-agenda (concat "Timeline "
15068 (file-name-nondirectory buffer-file-name)))
13796 (if doclosed (push :closed args)) 15069 (if doclosed (push :closed args))
13797 (push :timestamp args) 15070 (push :timestamp args)
15071 (push :sexp args)
13798 (if dotodo (push :todo args)) 15072 (if dotodo (push :todo args))
13799 (while (setq d (pop day-numbers)) 15073 (while (setq d (pop day-numbers))
13800 (if (and (listp d) (eq (car d) :omitted)) 15074 (if (and (listp d) (eq (car d) :omitted))
13801 (progn 15075 (progn
13802 (setq s (point)) 15076 (setq s (point))
13803 (insert (format "\n[... %d empty days omitted]\n\n" (cdr d))) 15077 (insert (format "\n[... %d empty days omitted]\n\n" (cdr d)))
13804 (put-text-property s (1- (point)) 'face 'org-level-3)) 15078 (put-text-property s (1- (point)) 'face 'org-agenda-structure))
13805 (if (listp d) (setq d (car d) emptyp t) (setq emptyp nil)) 15079 (if (listp d) (setq d (car d) emptyp t) (setq emptyp nil))
13806 (if (and (>= d today) 15080 (if (and (>= d today)
13807 dopast 15081 dopast
@@ -13824,7 +15098,7 @@ dates."
13824; (insert (format-time-string org-agenda-date-format 15098; (insert (format-time-string org-agenda-date-format
13825; (calendar-time-from-absolute d 0)) 15099; (calendar-time-from-absolute d 0))
13826; "\n") 15100; "\n")
13827 (put-text-property s (1- (point)) 'face 'org-level-3) 15101 (put-text-property s (1- (point)) 'face 'org-agenda-structure)
13828 (put-text-property s (1- (point)) 'org-date-line t) 15102 (put-text-property s (1- (point)) 'org-date-line t)
13829 (if (equal d today) 15103 (if (equal d today)
13830 (put-text-property s (1- (point)) 'org-today t)) 15104 (put-text-property s (1- (point)) 'org-today t))
@@ -13936,7 +15210,7 @@ NDAYS defaults to `org-agenda-ndays'."
13936 (push (1+ (car day-numbers)) day-numbers) 15210 (push (1+ (car day-numbers)) day-numbers)
13937 (setq ndays (1- ndays))) 15211 (setq ndays (1- ndays)))
13938 (setq day-numbers (nreverse day-numbers)) 15212 (setq day-numbers (nreverse day-numbers))
13939 (org-prepare-agenda) 15213 (org-prepare-agenda "Day/Week")
13940 (org-set-local 'org-starting-day (car day-numbers)) 15214 (org-set-local 'org-starting-day (car day-numbers))
13941 (org-set-local 'org-include-all-loc include-all) 15215 (org-set-local 'org-include-all-loc include-all)
13942 (when (and (or include-all org-agenda-include-all-todo) 15216 (when (and (or include-all org-agenda-include-all-todo)
@@ -13953,11 +15227,12 @@ NDAYS defaults to `org-agenda-ndays'."
13953 (when rtnall 15227 (when rtnall
13954 (insert "ALL CURRENTLY OPEN TODO ITEMS:\n") 15228 (insert "ALL CURRENTLY OPEN TODO ITEMS:\n")
13955 (add-text-properties (point-min) (1- (point)) 15229 (add-text-properties (point-min) (1- (point))
13956 (list 'face 'org-level-3)) 15230 (list 'face 'org-agenda-structure))
13957 (insert (org-finalize-agenda-entries rtnall) "\n"))) 15231 (insert (org-finalize-agenda-entries rtnall) "\n")))
13958 (setq s (point)) 15232 (setq s (point))
13959 (insert (if (= nd 7) "Week-" "Day-") "agenda:\n") 15233 (insert (if (= nd 7) "Week-" "Day-") "agenda:\n")
13960 (add-text-properties s (1- (point)) (list 'face 'org-level-3)) 15234 (add-text-properties s (1- (point)) (list 'face 'org-agenda-structure
15235 'org-date-line t))
13961 (while (setq d (pop day-numbers)) 15236 (while (setq d (pop day-numbers))
13962 (setq date (calendar-gregorian-from-absolute d) 15237 (setq date (calendar-gregorian-from-absolute d)
13963 s (point)) 15238 s (point))
@@ -13974,10 +15249,10 @@ NDAYS defaults to `org-agenda-ndays'."
13974 (if org-agenda-show-log 15249 (if org-agenda-show-log
13975 (setq rtn (org-agenda-get-day-entries 15250 (setq rtn (org-agenda-get-day-entries
13976 file date 15251 file date
13977 :deadline :scheduled :timestamp :closed)) 15252 :deadline :scheduled :timestamp :sexp :closed))
13978 (setq rtn (org-agenda-get-day-entries 15253 (setq rtn (org-agenda-get-day-entries
13979 file date 15254 file date
13980 :deadline :scheduled :timestamp))) 15255 :deadline :scheduled :sexp :timestamp)))
13981 (setq rtnall (append rtnall rtn)))) 15256 (setq rtnall (append rtnall rtn))))
13982 (if org-agenda-include-diary 15257 (if org-agenda-include-diary
13983 (progn 15258 (progn
@@ -13994,7 +15269,7 @@ NDAYS defaults to `org-agenda-ndays'."
13994; FIXME: this gives a timezone problem 15269; FIXME: this gives a timezone problem
13995; (insert (format-time-string org-agenda-date-format 15270; (insert (format-time-string org-agenda-date-format
13996; (calendar-time-from-absolute d 0)) "\n") 15271; (calendar-time-from-absolute d 0)) "\n")
13997 (put-text-property s (1- (point)) 'face 'org-level-3) 15272 (put-text-property s (1- (point)) 'face 'org-agenda-structure)
13998 (put-text-property s (1- (point)) 'org-date-line t) 15273 (put-text-property s (1- (point)) 'org-date-line t)
13999 (if todayp (put-text-property s (1- (point)) 'org-today t)) 15274 (if todayp (put-text-property s (1- (point)) 'org-today t))
14000 (if rtnall (insert 15275 (if rtnall (insert
@@ -14030,28 +15305,28 @@ NDAYS defaults to `org-agenda-ndays'."
14030The prefix arg can be used to select a specific TODO keyword and limit 15305The prefix arg can be used to select a specific TODO keyword and limit
14031the list to these. When using \\[universal-argument], you will be prompted 15306the list to these. When using \\[universal-argument], you will be prompted
14032for a keyword. A numeric prefix directly selects the Nth keyword in 15307for a keyword. A numeric prefix directly selects the Nth keyword in
14033`org-todo-keywords'." 15308`org-todo-keywords-1'."
14034 (interactive "P") 15309 (interactive "P")
14035 (require 'calendar) 15310 (require 'calendar)
14036 (org-compile-prefix-format 'todo) 15311 (org-compile-prefix-format 'todo)
14037 (org-set-sorting-strategy 'todo) 15312 (org-set-sorting-strategy 'todo)
15313 (org-prepare-agenda "TODO")
14038 (let* ((today (time-to-days (current-time))) 15314 (let* ((today (time-to-days (current-time)))
14039 (date (calendar-gregorian-from-absolute today)) 15315 (date (calendar-gregorian-from-absolute today))
14040 (kwds org-todo-keywords) 15316 (kwds org-todo-keywords-for-agenda)
14041 (completion-ignore-case t) 15317 (completion-ignore-case t)
14042 (org-select-this-todo-keyword 15318 (org-select-this-todo-keyword
14043 (if (stringp arg) arg 15319 (if (stringp arg) arg
14044 (and arg (integerp arg) (> arg 0) 15320 (and arg (integerp arg) (> arg 0)
14045 (nth (1- arg) org-todo-keywords)))) 15321 (nth (1- arg) kwds))))
14046 rtn rtnall files file pos) 15322 rtn rtnall files file pos)
14047 (when (equal arg '(4)) 15323 (when (equal arg '(4))
14048 (setq org-select-this-todo-keyword 15324 (setq org-select-this-todo-keyword
14049 (completing-read "Keyword: " (mapcar 'list org-todo-keywords) 15325 (completing-read "Keyword (or KWD1|K2D2|...): "
14050 nil t))) 15326 (mapcar 'list kwds) nil nil)))
14051 (and (equal 0 arg) (setq org-select-this-todo-keyword nil)) 15327 (and (equal 0 arg) (setq org-select-this-todo-keyword nil))
14052 (org-prepare-agenda)
14053 (org-set-local 'org-last-arg arg) 15328 (org-set-local 'org-last-arg arg)
14054 (org-set-local 'org-todo-keywords kwds) 15329;FIXME (org-set-local 'org-todo-keywords-for-agenda kwds)
14055 (setq org-agenda-redo-command 15330 (setq org-agenda-redo-command
14056 '(org-todo-list (or current-prefix-arg org-last-arg))) 15331 '(org-todo-list (or current-prefix-arg org-last-arg)))
14057 (setq files (org-agenda-files) 15332 (setq files (org-agenda-files)
@@ -14063,23 +15338,25 @@ for a keyword. A numeric prefix directly selects the Nth keyword in
14063 (setq rtnall (append rtnall rtn)))) 15338 (setq rtnall (append rtnall rtn))))
14064 (if org-agenda-overriding-header 15339 (if org-agenda-overriding-header
14065 (insert (org-add-props (copy-sequence org-agenda-overriding-header) 15340 (insert (org-add-props (copy-sequence org-agenda-overriding-header)
14066 nil 'face 'org-level-3) "\n") 15341 nil 'face 'org-agenda-structure) "\n")
14067 (insert "Global list of TODO items of type: ") 15342 (insert "Global list of TODO items of type: ")
14068 (add-text-properties (point-min) (1- (point)) 15343 (add-text-properties (point-min) (1- (point))
14069 (list 'face 'org-level-3)) 15344 (list 'face 'org-agenda-structure))
14070 (setq pos (point)) 15345 (setq pos (point))
14071 (insert (or org-select-this-todo-keyword "ALL") "\n") 15346 (insert (or org-select-this-todo-keyword "ALL") "\n")
14072 (add-text-properties pos (1- (point)) (list 'face 'org-warning)) 15347 (add-text-properties pos (1- (point)) (list 'face 'org-warning))
14073 (setq pos (point)) 15348 (setq pos (point))
14074 (unless org-agenda-multi 15349 (unless org-agenda-multi
14075 (insert 15350 (insert "Available with `N r': (0)ALL")
14076 "Available with `N r': (0)ALL " 15351 (let ((n 0) s)
14077 (let ((n 0)) 15352 (mapc (lambda (x)
14078 (mapconcat (lambda (x) 15353 (setq s (format "(%d)%s" (setq n (1+ n)) x))
14079 (format "(%d)%s" (setq n (1+ n)) x)) 15354 (if (> (+ (current-column) (string-width s) 1) (frame-width))
14080 org-todo-keywords " ")) 15355 (insert "\n "))
14081 "\n")) 15356 (insert " " s))
14082 (add-text-properties pos (1- (point)) (list 'face 'org-level-3))) 15357 kwds))
15358 (insert "\n"))
15359 (add-text-properties pos (1- (point)) (list 'face 'org-agenda-structure)))
14083 (when rtnall 15360 (when rtnall
14084 (insert (org-finalize-agenda-entries rtnall) "\n")) 15361 (insert (org-finalize-agenda-entries rtnall) "\n"))
14085 (goto-char (point-min)) 15362 (goto-char (point-min))
@@ -14104,7 +15381,7 @@ The prefix arg TODO-ONLY limits the search to TODO entries."
14104 buffer) 15381 buffer)
14105 (setq matcher (org-make-tags-matcher match) 15382 (setq matcher (org-make-tags-matcher match)
14106 match (car matcher) matcher (cdr matcher)) 15383 match (car matcher) matcher (cdr matcher))
14107 (org-prepare-agenda) 15384 (org-prepare-agenda (concat "TAGS " match))
14108 (setq org-agenda-redo-command 15385 (setq org-agenda-redo-command
14109 (list 'org-tags-view (list 'quote todo-only) 15386 (list 'org-tags-view (list 'quote todo-only)
14110 (list 'if 'current-prefix-arg nil match))) 15387 (list 'if 'current-prefix-arg nil match)))
@@ -14135,17 +15412,17 @@ The prefix arg TODO-ONLY limits the search to TODO entries."
14135 (setq rtnall (append rtnall rtn)))))))) 15412 (setq rtnall (append rtnall rtn))))))))
14136 (if org-agenda-overriding-header 15413 (if org-agenda-overriding-header
14137 (insert (org-add-props (copy-sequence org-agenda-overriding-header) 15414 (insert (org-add-props (copy-sequence org-agenda-overriding-header)
14138 nil 'face 'org-level-3) "\n") 15415 nil 'face 'org-agenda-structure) "\n")
14139 (insert "Headlines with TAGS match: ") 15416 (insert "Headlines with TAGS match: ")
14140 (add-text-properties (point-min) (1- (point)) 15417 (add-text-properties (point-min) (1- (point))
14141 (list 'face 'org-level-3)) 15418 (list 'face 'org-agenda-structure))
14142 (setq pos (point)) 15419 (setq pos (point))
14143 (insert match "\n") 15420 (insert match "\n")
14144 (add-text-properties pos (1- (point)) (list 'face 'org-warning)) 15421 (add-text-properties pos (1- (point)) (list 'face 'org-warning))
14145 (setq pos (point)) 15422 (setq pos (point))
14146 (unless org-agenda-multi 15423 (unless org-agenda-multi
14147 (insert "Press `C-u r' to search again with new search string\n")) 15424 (insert "Press `C-u r' to search again with new search string\n"))
14148 (add-text-properties pos (1- (point)) (list 'face 'org-level-3))) 15425 (add-text-properties pos (1- (point)) (list 'face 'org-agenda-structure)))
14149 (when rtnall 15426 (when rtnall
14150 (insert (org-finalize-agenda-entries rtnall) "\n")) 15427 (insert (org-finalize-agenda-entries rtnall) "\n"))
14151 (goto-char (point-min)) 15428 (goto-char (point-min))
@@ -14187,21 +15464,34 @@ MATCH is being ignored."
14187 (org-agenda-overriding-header "List of stuck projects: ") 15464 (org-agenda-overriding-header "List of stuck projects: ")
14188 (matcher (nth 0 org-stuck-projects)) 15465 (matcher (nth 0 org-stuck-projects))
14189 (todo (nth 1 org-stuck-projects)) 15466 (todo (nth 1 org-stuck-projects))
14190 (tags (nth 2 org-stuck-projects)) 15467 (todo-wds (if (member "*" todo)
15468 (progn
15469 (org-prepare-agenda-buffers (org-agenda-files))
15470 (org-delete-all
15471 org-done-keywords-for-agenda
15472 (copy-sequence org-todo-keywords-for-agenda)))
15473 todo))
14191 (todo-re (concat "^\\*+[ \t]+\\(" 15474 (todo-re (concat "^\\*+[ \t]+\\("
14192 (mapconcat 'identity todo "\\|") 15475 (mapconcat 'identity todo-wds "\\|")
14193 "\\)\\>")) 15476 "\\)\\>"))
14194 (tags-re (concat "^\\*+.*:\\(" 15477 (tags (nth 2 org-stuck-projects))
14195 (mapconcat 'identity tags "\\|") 15478 (tags-re (if (member "*" tags)
14196 "\\):[a-zA-Z0-9_@:]*[ \t]*$"))) 15479 "^\\*+.*:[a-zA-Z0-9_@]+:[ \t]*$"
14197 15480 (concat "^\\*+.*:\\("
15481 (mapconcat 'identity tags "\\|")
15482 "\\):[a-zA-Z0-9_@:]*[ \t]*$")))
15483 (gen-re (nth 3 org-stuck-projects))
15484 (re-list
15485 (delq nil
15486 (list
15487 (if todo todo-re)
15488 (if tags tags-re)
15489 (and gen-re (stringp gen-re) (string-match "\\S-" gen-re)
15490 gen-re)))))
14198 (setq org-agenda-skip-regexp 15491 (setq org-agenda-skip-regexp
14199 (cond 15492 (if re-list
14200 ((and todo tags) 15493 (mapconcat 'identity re-list "\\|")
14201 (concat todo-re "\\|" tags-re)) 15494 (error "No information how to identify unstuck projects")))
14202 (todo todo-re)
14203 (tags tags-re)
14204 (t (error "No information how to identify unstuck projects"))))
14205 (org-tags-view nil matcher) 15495 (org-tags-view nil matcher)
14206 (with-current-buffer org-agenda-buffer-name 15496 (with-current-buffer org-agenda-buffer-name
14207 (setq org-agenda-redo-command 15497 (setq org-agenda-redo-command
@@ -14247,7 +15537,8 @@ MATCH is being ignored."
14247 (lambda (x) 15537 (lambda (x)
14248 (setq x (org-format-agenda-item "" x "Diary" nil 'time)) 15538 (setq x (org-format-agenda-item "" x "Diary" nil 'time))
14249 ;; Extend the text properties to the beginning of the line 15539 ;; Extend the text properties to the beginning of the line
14250 (org-add-props x (text-properties-at (1- (length x)) x))) 15540 (org-add-props x (text-properties-at (1- (length x)) x)
15541 'type "diary" 'date date))
14251 entries))))) 15542 entries)))))
14252 15543
14253(defun org-agenda-cleanup-fancy-diary () 15544(defun org-agenda-cleanup-fancy-diary ()
@@ -14316,6 +15607,8 @@ items should be listed. The following arguments are allowed:
14316 date range matching the selected date. Deadlines will 15607 date range matching the selected date. Deadlines will
14317 also be listed, on the expiration day. 15608 also be listed, on the expiration day.
14318 15609
15610 :sexp FIXME
15611
14319 :deadline List any deadlines past due, or due within 15612 :deadline List any deadlines past due, or due within
14320 `org-deadline-warning-days'. The listing occurs only 15613 `org-deadline-warning-days'. The listing occurs only
14321 in the diary for *today*, not at any other date. If 15614 in the diary for *today*, not at any other date. If
@@ -14340,10 +15633,10 @@ all files listed in `org-agenda-files' will be checked automatically:
14340 &%%(org-diary) 15633 &%%(org-diary)
14341 15634
14342If you don't give any arguments (as in the example above), the default 15635If you don't give any arguments (as in the example above), the default
14343arguments (:deadline :scheduled :timestamp) are used. So the example above may 15636arguments (:deadline :scheduled :timestamp :sexp) are used.
14344also be written as 15637So the example above may also be written as
14345 15638
14346 &%%(org-diary :deadline :timestamp :scheduled) 15639 &%%(org-diary :deadline :timestamp :sexp :scheduled)
14347 15640
14348The function expects the lisp variables `entry' and `date' to be provided 15641The function expects the lisp variables `entry' and `date' to be provided
14349by the caller, because this is how the calendar works. Don't use this 15642by the caller, because this is how the calendar works. Don't use this
@@ -14351,11 +15644,12 @@ function from a program - use `org-agenda-get-day-entries' instead."
14351 (org-agenda-maybe-reset-markers) 15644 (org-agenda-maybe-reset-markers)
14352 (org-compile-prefix-format 'agenda) 15645 (org-compile-prefix-format 'agenda)
14353 (org-set-sorting-strategy 'agenda) 15646 (org-set-sorting-strategy 'agenda)
14354 (setq args (or args '(:deadline :scheduled :timestamp))) 15647 (setq args (or args '(:deadline :scheduled :timestamp :sexp)))
14355 (let* ((files (if (and entry (stringp entry) (string-match "\\S-" entry)) 15648 (let* ((files (if (and entry (stringp entry) (string-match "\\S-" entry))
14356 (list entry) 15649 (list entry)
14357 (org-agenda-files t))) 15650 (org-agenda-files t)))
14358 file rtn results) 15651 file rtn results)
15652 (org-prepare-agenda-buffers files)
14359 ;; If this is called during org-agenda, don't return any entries to 15653 ;; If this is called during org-agenda, don't return any entries to
14360 ;; the calendar. Org Agenda will list these entries itself. 15654 ;; the calendar. Org Agenda will list these entries itself.
14361 (if org-disable-agenda-to-diary (setq files nil)) 15655 (if org-disable-agenda-to-diary (setq files nil))
@@ -14373,7 +15667,7 @@ FILE is the path to a file to be checked for entries. DATE is date like
14373the one returned by `calendar-current-date'. ARGS are symbols indicating 15667the one returned by `calendar-current-date'. ARGS are symbols indicating
14374which kind of entries should be extracted. For details about these, see 15668which kind of entries should be extracted. For details about these, see
14375the documentation of `org-diary'." 15669the documentation of `org-diary'."
14376 (setq args (or args '(:deadline :scheduled :timestamp))) 15670 (setq args (or args '(:deadline :scheduled :timestamp :sexp)))
14377 (let* ((org-startup-folded nil) 15671 (let* ((org-startup-folded nil)
14378 (org-startup-align-all-tables nil) 15672 (org-startup-align-all-tables nil)
14379 (buffer (if (file-exists-p file) 15673 (buffer (if (file-exists-p file)
@@ -14406,6 +15700,9 @@ the documentation of `org-diary'."
14406 (setq results (append results rtn)) 15700 (setq results (append results rtn))
14407 (setq rtn (org-agenda-get-timestamps)) 15701 (setq rtn (org-agenda-get-timestamps))
14408 (setq results (append results rtn))) 15702 (setq results (append results rtn)))
15703 ((eq arg :sexp)
15704 (setq rtn (org-agenda-get-sexps))
15705 (setq results (append results rtn)))
14409 ((eq arg :scheduled) 15706 ((eq arg :scheduled)
14410 (setq rtn (org-agenda-get-scheduled)) 15707 (setq rtn (org-agenda-get-scheduled))
14411 (setq results (append results rtn))) 15708 (setq results (append results rtn)))
@@ -14447,15 +15744,20 @@ the documentation of `org-diary'."
14447 (let* ((props (list 'face nil 15744 (let* ((props (list 'face nil
14448 'done-face 'org-done 15745 'done-face 'org-done
14449 'org-not-done-regexp org-not-done-regexp 15746 'org-not-done-regexp org-not-done-regexp
15747 'org-todo-regexp org-todo-regexp
14450 'mouse-face 'highlight 15748 'mouse-face 'highlight
14451 'keymap org-agenda-keymap 15749 'keymap org-agenda-keymap
14452 'help-echo 15750 'help-echo
14453 (format "mouse-2 or RET jump to org file %s" 15751 (format "mouse-2 or RET jump to org file %s"
14454 (abbreviate-file-name buffer-file-name)))) 15752 (abbreviate-file-name buffer-file-name))))
15753 ;; FIXME: get rid of the \n at some point but watch out
14455 (regexp (concat "[\n\r]\\*+ *\\(" 15754 (regexp (concat "[\n\r]\\*+ *\\("
14456 (if org-select-this-todo-keyword 15755 (if org-select-this-todo-keyword
14457 (concat "\\<\\(" org-select-this-todo-keyword 15756 (if (equal org-select-this-todo-keyword "*")
14458 "\\)\\>") 15757 org-todo-regexp
15758 (concat "\\<\\("
15759 (mapconcat 'identity (org-split-string org-select-this-todo-keyword "|") "\\|")
15760 "\\)\\>"))
14459 org-not-done-regexp) 15761 org-not-done-regexp)
14460 "[^\n\r]*\\)")) 15762 "[^\n\r]*\\)"))
14461 marker priority category tags 15763 marker priority category tags
@@ -14481,16 +15783,11 @@ the documentation of `org-diary'."
14481 category (org-get-category) 15783 category (org-get-category)
14482 tags (org-get-tags-at (point)) 15784 tags (org-get-tags-at (point))
14483 txt (org-format-agenda-item "" (match-string 1) category tags) 15785 txt (org-format-agenda-item "" (match-string 1) category tags)
14484 priority 15786 priority (1+ (org-get-priority txt)))
14485 (+ (org-get-priority txt)
14486 (if org-todo-kwd-priority-p
14487 (- org-todo-kwd-max-priority -2
14488 (length
14489 (member (match-string 2) org-todo-keywords)))
14490 1)))
14491 (org-add-props txt props 15787 (org-add-props txt props
14492 'org-marker marker 'org-hd-marker marker 15788 'org-marker marker 'org-hd-marker marker
14493 'priority priority 'org-category category) 15789 'priority priority 'org-category category
15790 'type "todo")
14494 (push txt ee) 15791 (push txt ee)
14495 (if org-agenda-todo-list-sublevels 15792 (if org-agenda-todo-list-sublevels
14496 (goto-char (match-end 1)) 15793 (goto-char (match-end 1))
@@ -14504,38 +15801,61 @@ the documentation of `org-diary'."
14504 "Return the date stamp information for agenda display." 15801 "Return the date stamp information for agenda display."
14505 (let* ((props (list 'face nil 15802 (let* ((props (list 'face nil
14506 'org-not-done-regexp org-not-done-regexp 15803 'org-not-done-regexp org-not-done-regexp
15804 'org-todo-regexp org-todo-regexp
14507 'mouse-face 'highlight 15805 'mouse-face 'highlight
14508 'keymap org-agenda-keymap 15806 'keymap org-agenda-keymap
14509 'help-echo 15807 'help-echo
14510 (format "mouse-2 or RET jump to org file %s" 15808 (format "mouse-2 or RET jump to org file %s"
14511 (abbreviate-file-name buffer-file-name)))) 15809 (abbreviate-file-name buffer-file-name))))
14512 (regexp (regexp-quote 15810;???? (regexp (regexp-quote
14513 (substring 15811; (substring
14514 (format-time-string 15812; (format-time-string
14515 (car org-time-stamp-formats) 15813; (car org-time-stamp-formats)
14516 (apply 'encode-time ; DATE bound by calendar 15814; (apply 'encode-time ; DATE bound by calendar
14517 (list 0 0 0 (nth 1 date) (car date) (nth 2 date)))) 15815; (list 0 0 0 (nth 1 date) (car date) (nth 2 date))))
14518 0 11))) 15816; 0 11)))
15817 (d1 (calendar-absolute-from-gregorian date))
15818 (regexp
15819 (concat
15820 (regexp-quote
15821 (substring
15822 (format-time-string
15823 (car org-time-stamp-formats)
15824 (apply 'encode-time ; DATE bound by calendar
15825 (list 0 0 0 (nth 1 date) (car date) (nth 2 date))))
15826 0 11))
15827 "\\|\\(<[0-9]+-[0-9]+-[0-9]+[^>\n]+?\\+[0-9]+[dwmy]>\\)"
15828 "\\|\\(<%%\\(([^>\n]+)\\)>\\)"))
14519 marker hdmarker deadlinep scheduledp donep tmp priority category 15829 marker hdmarker deadlinep scheduledp donep tmp priority category
14520 ee txt timestr tags) 15830 ee txt timestr tags b0 b3 e3)
14521 (goto-char (point-min)) 15831 (goto-char (point-min))
14522 (while (re-search-forward regexp nil t) 15832 (while (re-search-forward regexp nil t)
15833 (setq b0 (match-beginning 0)
15834 b3 (match-beginning 3) e3 (match-end 3))
14523 (catch :skip 15835 (catch :skip
14524 (and (save-match-data (org-at-date-range-p)) (throw :skip nil)) 15836 (and (org-at-date-range-p) (throw :skip nil))
14525 (org-agenda-skip) 15837 (org-agenda-skip)
14526 (setq marker (org-agenda-new-marker (match-beginning 0)) 15838 (if (and (match-end 1)
14527 category (org-get-category (match-beginning 0)) 15839 (not (= d1 (org-time-string-to-absolute (match-string 1) d1))))
15840 (throw :skip nil))
15841 (if (and e3
15842 (not (org-diary-sexp-entry (buffer-substring b3 e3) "" date)))
15843 (throw :skip nil))
15844 (setq marker (org-agenda-new-marker b0)
15845 category (org-get-category b0)
14528 tmp (buffer-substring (max (point-min) 15846 tmp (buffer-substring (max (point-min)
14529 (- (match-beginning 0) 15847 (- b0 org-ds-keyword-length))
14530 org-ds-keyword-length)) 15848 b0)
14531 (match-beginning 0)) 15849 timestr (if b3 "" (buffer-substring b0 (point-at-eol)))
14532 timestr (buffer-substring (match-beginning 0) (point-at-eol))
14533 deadlinep (string-match org-deadline-regexp tmp) 15850 deadlinep (string-match org-deadline-regexp tmp)
14534 scheduledp (string-match org-scheduled-regexp tmp) 15851 scheduledp (string-match org-scheduled-regexp tmp)
14535 donep (org-entry-is-done-p)) 15852 donep (org-entry-is-done-p))
14536 (and org-agenda-skip-scheduled-if-done 15853 (and org-agenda-skip-scheduled-if-done
14537 scheduledp donep 15854 scheduledp donep
14538 (throw :skip t)) 15855 (throw :skip t))
15856 (and org-agenda-skip-deadline-if-done
15857 deadlinep donep
15858 (throw :skip t))
14539 (if (string-match ">" timestr) 15859 (if (string-match ">" timestr)
14540 ;; substring should only run to end of time stamp 15860 ;; substring should only run to end of time stamp
14541 (setq timestr (substring timestr 0 (match-end 0)))) 15861 (setq timestr (substring timestr 0 (match-end 0))))
@@ -14558,22 +15878,68 @@ the documentation of `org-diary'."
14558 (if deadlinep 15878 (if deadlinep
14559 (org-add-props txt nil 15879 (org-add-props txt nil
14560 'face (if donep 'org-done 'org-warning) 15880 'face (if donep 'org-done 'org-warning)
15881 'type "deadline" 'date date
14561 'undone-face 'org-warning 'done-face 'org-done 15882 'undone-face 'org-warning 'done-face 'org-done
14562 'org-category category 'priority (+ 100 priority)) 15883 'org-category category 'priority (+ 100 priority))
14563 (if scheduledp 15884 (if scheduledp
14564 (org-add-props txt nil 15885 (org-add-props txt nil
14565 'face 'org-scheduled-today 15886 'face 'org-scheduled-today
15887 'type "scheduled" 'date date
14566 'undone-face 'org-scheduled-today 'done-face 'org-done 15888 'undone-face 'org-scheduled-today 'done-face 'org-done
14567 'org-category category 'priority (+ 99 priority)) 15889 'org-category category 'priority (+ 99 priority))
14568 (org-add-props txt nil 'priority priority 'org-category category))) 15890 (org-add-props txt nil 'priority priority
15891 'org-category category 'date date
15892 'type "timestamp")))
14569 (push txt ee)) 15893 (push txt ee))
14570 (outline-next-heading))) 15894 (outline-next-heading)))
14571 (nreverse ee))) 15895 (nreverse ee)))
14572 15896
15897(defun org-agenda-get-sexps ()
15898 "Return the sexp information for agenda display."
15899 (require 'diary-lib)
15900 (let* ((props (list 'face nil
15901 'mouse-face 'highlight
15902 'keymap org-agenda-keymap
15903 'help-echo
15904 (format "mouse-2 or RET jump to org file %s"
15905 (abbreviate-file-name buffer-file-name))))
15906 (regexp "^&?%%(")
15907 marker category ee txt tags entry result beg b sexp sexp-entry)
15908 (goto-char (point-min))
15909 (while (re-search-forward regexp nil t)
15910 (catch :skip
15911 (org-agenda-skip)
15912 (setq beg (match-beginning 0))
15913 (goto-char (1- (match-end 0)))
15914 (setq b (point))
15915 (forward-sexp 1)
15916 (setq sexp (buffer-substring b (point)))
15917 (setq sexp-entry (if (looking-at "[ \t]*\\(\\S-.*\\)")
15918 (org-trim (match-string 1))
15919 ""))
15920 (setq result (org-diary-sexp-entry sexp sexp-entry date))
15921 (when result
15922 (setq marker (org-agenda-new-marker beg)
15923 category (org-get-category beg))
15924
15925 (if (string-match "\\S-" result)
15926 (setq txt result)
15927 (setq txt "SEXP entry returned empty string"))
15928
15929 (setq txt (org-format-agenda-item
15930 "" txt category tags 'time))
15931 (org-add-props txt props 'org-marker marker)
15932 (org-add-props txt nil
15933 'org-category category 'date date
15934 'type "sexp")
15935 (push txt ee))))
15936 (nreverse ee)))
15937
14573(defun org-agenda-get-closed () 15938(defun org-agenda-get-closed ()
14574 "Return the logged TODO entries for agenda display." 15939 "Return the logged TODO entries for agenda display."
14575 (let* ((props (list 'mouse-face 'highlight 15940 (let* ((props (list 'mouse-face 'highlight
14576 'org-not-done-regexp org-not-done-regexp 15941 'org-not-done-regexp org-not-done-regexp
15942 'org-todo-regexp org-todo-regexp
14577 'keymap org-agenda-keymap 15943 'keymap org-agenda-keymap
14578 'help-echo 15944 'help-echo
14579 (format "mouse-2 or RET jump to org file %s" 15945 (format "mouse-2 or RET jump to org file %s"
@@ -14617,6 +15983,7 @@ the documentation of `org-diary'."
14617 (org-add-props txt props 15983 (org-add-props txt props
14618 'org-marker marker 'org-hd-marker hdmarker 'face 'org-done 15984 'org-marker marker 'org-hd-marker hdmarker 'face 'org-done
14619 'priority priority 'org-category category 15985 'priority priority 'org-category category
15986 'type "closed" 'date date
14620 'undone-face 'org-warning 'done-face 'org-done) 15987 'undone-face 'org-warning 'done-face 'org-done)
14621 (push txt ee)) 15988 (push txt ee))
14622 (outline-next-heading))) 15989 (outline-next-heading)))
@@ -14627,6 +15994,7 @@ the documentation of `org-diary'."
14627 (let* ((wdays org-deadline-warning-days) 15994 (let* ((wdays org-deadline-warning-days)
14628 (props (list 'mouse-face 'highlight 15995 (props (list 'mouse-face 'highlight
14629 'org-not-done-regexp org-not-done-regexp 15996 'org-not-done-regexp org-not-done-regexp
15997 'org-todo-regexp org-todo-regexp
14630 'keymap org-agenda-keymap 15998 'keymap org-agenda-keymap
14631 'help-echo 15999 'help-echo
14632 (format "mouse-2 or RET jump to org file %s" 16000 (format "mouse-2 or RET jump to org file %s"
@@ -14641,8 +16009,9 @@ the documentation of `org-diary'."
14641 (catch :skip 16009 (catch :skip
14642 (org-agenda-skip) 16010 (org-agenda-skip)
14643 (setq pos (1- (match-beginning 1)) 16011 (setq pos (1- (match-beginning 1))
14644 d2 (time-to-days 16012;??? d2 (time-to-days
14645 (org-time-string-to-time (match-string 1))) 16013;??? (org-time-string-to-time (match-string 1)))
16014 d2 (org-time-string-to-absolute (match-string 1) d1)
14646 diff (- d2 d1)) 16015 diff (- d2 d1))
14647 ;; When to show a deadline in the calendar: 16016 ;; When to show a deadline in the calendar:
14648 ;; If the expiration is within wdays warning time. 16017 ;; If the expiration is within wdays warning time.
@@ -14673,6 +16042,7 @@ the documentation of `org-diary'."
14673 'org-hd-marker (org-agenda-new-marker pos1) 16042 'org-hd-marker (org-agenda-new-marker pos1)
14674 'priority (+ (- 10 diff) (org-get-priority txt)) 16043 'priority (+ (- 10 diff) (org-get-priority txt))
14675 'org-category category 16044 'org-category category
16045 'type "upcoming-deadline" 'date d2
14676 'face face 'undone-face face 'done-face 'org-done) 16046 'face face 'undone-face face 'done-face 'org-done)
14677 (push txt ee)))))) 16047 (push txt ee))))))
14678 ee)) 16048 ee))
@@ -14681,6 +16051,7 @@ the documentation of `org-diary'."
14681 "Return the scheduled information for agenda display." 16051 "Return the scheduled information for agenda display."
14682 (let* ((props (list 'face 'org-scheduled-previously 16052 (let* ((props (list 'face 'org-scheduled-previously
14683 'org-not-done-regexp org-not-done-regexp 16053 'org-not-done-regexp org-not-done-regexp
16054 'org-todo-regexp org-todo-regexp
14684 'undone-face 'org-scheduled-previously 16055 'undone-face 'org-scheduled-previously
14685 'done-face 'org-done 16056 'done-face 'org-done
14686 'mouse-face 'highlight 16057 'mouse-face 'highlight
@@ -14698,8 +16069,9 @@ the documentation of `org-diary'."
14698 (catch :skip 16069 (catch :skip
14699 (org-agenda-skip) 16070 (org-agenda-skip)
14700 (setq pos (1- (match-beginning 1)) 16071 (setq pos (1- (match-beginning 1))
14701 d2 (time-to-days 16072 d2 (org-time-string-to-absolute (match-string 1) d1)
14702 (org-time-string-to-time (match-string 1))) 16073;??? d2 (time-to-days
16074;??? (org-time-string-to-time (match-string 1)))
14703 diff (- d2 d1)) 16075 diff (- d2 d1))
14704 ;; When to show a scheduled item in the calendar: 16076 ;; When to show a scheduled item in the calendar:
14705 ;; If it is on or past the date. 16077 ;; If it is on or past the date.
@@ -14724,6 +16096,7 @@ the documentation of `org-diary'."
14724 (org-add-props txt props 16096 (org-add-props txt props
14725 'org-marker (org-agenda-new-marker pos) 16097 'org-marker (org-agenda-new-marker pos)
14726 'org-hd-marker (org-agenda-new-marker pos1) 16098 'org-hd-marker (org-agenda-new-marker pos1)
16099 'type "past-scheduled" 'date d2
14727 'priority (+ (- 5 diff) (org-get-priority txt)) 16100 'priority (+ (- 5 diff) (org-get-priority txt))
14728 'org-category category) 16101 'org-category category)
14729 (push txt ee)))))) 16102 (push txt ee))))))
@@ -14733,6 +16106,7 @@ the documentation of `org-diary'."
14733 "Return the date-range information for agenda display." 16106 "Return the date-range information for agenda display."
14734 (let* ((props (list 'face nil 16107 (let* ((props (list 'face nil
14735 'org-not-done-regexp org-not-done-regexp 16108 'org-not-done-regexp org-not-done-regexp
16109 'org-todo-regexp org-todo-regexp
14736 'mouse-face 'highlight 16110 'mouse-face 'highlight
14737 'keymap org-agenda-keymap 16111 'keymap org-agenda-keymap
14738 'help-echo 16112 'help-echo
@@ -14771,6 +16145,7 @@ the documentation of `org-diary'."
14771 (setq txt org-agenda-no-heading-message)) 16145 (setq txt org-agenda-no-heading-message))
14772 (org-add-props txt props 16146 (org-add-props txt props
14773 'org-marker marker 'org-hd-marker hdmarker 16147 'org-marker marker 'org-hd-marker hdmarker
16148 'type "block" 'date date
14774 'priority (org-get-priority txt) 'org-category category) 16149 'priority (org-get-priority txt) 'org-category category)
14775 (push txt ee))) 16150 (push txt ee)))
14776 (goto-char pos))) 16151 (goto-char pos)))
@@ -14865,8 +16240,8 @@ only the correctly processes TXT should be returned - this is used by
14865 16240
14866 (when (string-match "\\([ \t]+\\)\\(:[a-zA-Z_@0-9:]+:\\)[ \t]*$" txt) 16241 (when (string-match "\\([ \t]+\\)\\(:[a-zA-Z_@0-9:]+:\\)[ \t]*$" txt)
14867 ;; Tags are in the string 16242 ;; Tags are in the string
14868 (if (or (eq org-agenda-remove-tags-when-in-prefix t) 16243 (if (or (eq org-agenda-remove-tags t)
14869 (and org-agenda-remove-tags-when-in-prefix 16244 (and org-agenda-remove-tags
14870 org-prefix-has-tag)) 16245 org-prefix-has-tag))
14871 (setq txt (replace-match "" t t txt)) 16246 (setq txt (replace-match "" t t txt))
14872 (setq txt (replace-match 16247 (setq txt (replace-match
@@ -14891,9 +16266,12 @@ only the correctly processes TXT should be returned - this is used by
14891 'org-category (downcase category) 'tags tags 16266 'org-category (downcase category) 'tags tags
14892 'prefix-length (- (length rtn) (length txt)) 16267 'prefix-length (- (length rtn) (length txt))
14893 'time-of-day time-of-day 16268 'time-of-day time-of-day
16269 'txt txt
16270 'time time
16271 'extra extra
14894 'dotime dotime)))) 16272 'dotime dotime))))
14895 16273
14896(defvar org-agenda-sorting-strategy) 16274(defvar org-agenda-sorting-strategy) ;; FIXME: can be removed?
14897(defvar org-agenda-sorting-strategy-selected nil) 16275(defvar org-agenda-sorting-strategy-selected nil)
14898 16276
14899(defun org-agenda-add-time-grid-maybe (list ndays todayp) 16277(defun org-agenda-add-time-grid-maybe (list ndays todayp)
@@ -15243,6 +16621,7 @@ With prefix ARG, go back that many times `org-agenda-ndays'."
15243 "Detach overlay INDEX." 16621 "Detach overlay INDEX."
15244 (funcall (if (featurep 'xemacs) 'detach-extent 'delete-overlay) org-hl)) 16622 (funcall (if (featurep 'xemacs) 'detach-extent 'delete-overlay) org-hl))
15245 16623
16624;; FIXME this is currently not used.
15246(defun org-highlight-until-next-command (beg end &optional buffer) 16625(defun org-highlight-until-next-command (beg end &optional buffer)
15247 (org-highlight beg end buffer) 16626 (org-highlight beg end buffer)
15248 (add-hook 'pre-command-hook 'org-unhighlight-once)) 16627 (add-hook 'pre-command-hook 'org-unhighlight-once))
@@ -15350,12 +16729,13 @@ and by additional input from the age of a schedules or deadline entry."
15350 (org-agenda-error))) 16729 (org-agenda-error)))
15351 (buffer (marker-buffer marker)) 16730 (buffer (marker-buffer marker))
15352 (pos (marker-position marker)) 16731 (pos (marker-position marker))
16732 (type (get-text-property (point) 'type))
15353 dbeg dend (n 0) conf) 16733 dbeg dend (n 0) conf)
15354 (org-with-remote-undo buffer 16734 (org-with-remote-undo buffer
15355 (with-current-buffer buffer 16735 (with-current-buffer buffer
15356 (save-excursion 16736 (save-excursion
15357 (goto-char pos) 16737 (goto-char pos)
15358 (if (org-mode-p) 16738 (if (and (org-mode-p) (not (member type '("sexp"))))
15359 (setq dbeg (progn (org-back-to-heading t) (point)) 16739 (setq dbeg (progn (org-back-to-heading t) (point))
15360 dend (org-end-of-subtree t)) 16740 dend (org-end-of-subtree t))
15361 (setq dbeg (point-at-bol) 16741 (setq dbeg (point-at-bol)
@@ -15502,6 +16882,16 @@ dedicated frame)."
15502 "Marker pointing to the headline that last changed its TODO state 16882 "Marker pointing to the headline that last changed its TODO state
15503by a remote command from the agenda.") 16883by a remote command from the agenda.")
15504 16884
16885(defun org-agenda-todo-nextset ()
16886 "Switch TODO entry to next sequence."
16887 (interactive)
16888 (org-agenda-todo 'nextset))
16889
16890(defun org-agenda-todo-previousset ()
16891 "Switch TODO entry to previous sequence."
16892 (interactive)
16893 (org-agenda-todo 'previousset))
16894
15505(defun org-agenda-todo (&optional arg) 16895(defun org-agenda-todo (&optional arg)
15506 "Cycle TODO state of line at point, also in Org-mode file. 16896 "Cycle TODO state of line at point, also in Org-mode file.
15507This changes the line at point, all other lines in the agenda referring to 16897This changes the line at point, all other lines in the agenda referring to
@@ -15656,7 +17046,7 @@ the tags of the current headline come last."
15656 (org-up-heading-all 1)) 17046 (org-up-heading-all 1))
15657 (error nil)))) 17047 (error nil))))
15658 tags))) 17048 tags)))
15659 17049
15660;; FIXME: should fix the tags property of the agenda line. 17050;; FIXME: should fix the tags property of the agenda line.
15661(defun org-agenda-set-tags () 17051(defun org-agenda-set-tags ()
15662 "Set tags for the current headline." 17052 "Set tags for the current headline."
@@ -15673,10 +17063,12 @@ the tags of the current headline come last."
15673 (with-current-buffer buffer 17063 (with-current-buffer buffer
15674 (widen) 17064 (widen)
15675 (goto-char pos) 17065 (goto-char pos)
15676 (org-show-context 'agenda) 17066 (save-excursion
17067 (org-show-context 'agenda))
15677 (save-excursion 17068 (save-excursion
15678 (and (outline-next-heading) 17069 (and (outline-next-heading)
15679 (org-flag-heading nil))) ; show the next heading 17070 (org-flag-heading nil))) ; show the next heading
17071 (goto-char pos)
15680 (call-interactively 'org-set-tags) 17072 (call-interactively 'org-set-tags)
15681 (end-of-line 1) 17073 (end-of-line 1)
15682 (setq newhead (org-get-heading))) 17074 (setq newhead (org-get-heading)))
@@ -15992,11 +17384,11 @@ This is a command that has to be installed in `calendar-mode-map'."
15992(defvar org-cdlatex-mode-map (make-sparse-keymap) 17384(defvar org-cdlatex-mode-map (make-sparse-keymap)
15993 "Keymap for the minor `org-cdlatex-mode'.") 17385 "Keymap for the minor `org-cdlatex-mode'.")
15994 17386
15995(define-key org-cdlatex-mode-map "_" 'org-cdlatex-underscore-caret) 17387(org-defkey org-cdlatex-mode-map "_" 'org-cdlatex-underscore-caret)
15996(define-key org-cdlatex-mode-map "^" 'org-cdlatex-underscore-caret) 17388(org-defkey org-cdlatex-mode-map "^" 'org-cdlatex-underscore-caret)
15997(define-key org-cdlatex-mode-map "`" 'cdlatex-math-symbol) 17389(org-defkey org-cdlatex-mode-map "`" 'cdlatex-math-symbol)
15998(define-key org-cdlatex-mode-map "'" 'org-cdlatex-math-modify) 17390(org-defkey org-cdlatex-mode-map "'" 'org-cdlatex-math-modify)
15999(define-key org-cdlatex-mode-map "\C-c{" 'cdlatex-environment) 17391(org-defkey org-cdlatex-mode-map "\C-c{" 'cdlatex-environment)
16000 17392
16001(defvar org-cdlatex-texmathp-advice-is-done nil 17393(defvar org-cdlatex-texmathp-advice-is-done nil
16002 "Flag remembering if we have applied the advice to texmathp already.") 17394 "Flag remembering if we have applied the advice to texmathp already.")
@@ -16064,7 +17456,7 @@ looks only before point, not after."
16064 (while (string-match re str start) 17456 (while (string-match re str start)
16065 (cond 17457 (cond
16066 ((= (match-end 0) (length str)) 17458 ((= (match-end 0) (length str))
16067 (throw 'exit (cons "$" (+ lim (match-beginning 0))))) 17459 (throw 'exit (cons "$" (+ lim (match-beginning 0) 1))))
16068 ((= (match-end 0) (- (length str) 5)) 17460 ((= (match-end 0) (- (length str) 5))
16069 (throw 'exit nil)) 17461 (throw 'exit nil))
16070 (t (setq start (match-end 0)))))) 17462 (t (setq start (match-end 0))))))
@@ -16156,11 +17548,12 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
16156 "Creating images for entry...%s")))) 17548 "Creating images for entry...%s"))))
16157 (message msg "") 17549 (message msg "")
16158 (narrow-to-region beg end) 17550 (narrow-to-region beg end)
17551 (goto-char beg)
16159 (org-format-latex 17552 (org-format-latex
16160 (concat "ltxpng/" (file-name-sans-extension 17553 (concat "ltxpng/" (file-name-sans-extension
16161 (file-name-nondirectory 17554 (file-name-nondirectory
16162 buffer-file-name))) 17555 buffer-file-name)))
16163 default-directory 'overlays msg at) 17556 default-directory 'overlays msg at 'forbuffer)
16164 (message msg "done. Use `C-c C-c' to remove images."))))) 17557 (message msg "done. Use `C-c C-c' to remove images.")))))
16165 17558
16166(defvar org-latex-regexps 17559(defvar org-latex-regexps
@@ -16173,7 +17566,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
16173 ("$$" "\\$\\$[^\000]*?\\$\\$" 0 t)) 17566 ("$$" "\\$\\$[^\000]*?\\$\\$" 0 t))
16174 "Regular expressions for matching embedded LaTeX.") 17567 "Regular expressions for matching embedded LaTeX.")
16175 17568
16176(defun org-format-latex (prefix &optional dir overlays msg at) 17569(defun org-format-latex (prefix &optional dir overlays msg at forbuffer)
16177 "Replace LaTeX fragments with links to an image, and produce images." 17570 "Replace LaTeX fragments with links to an image, and produce images."
16178 (if (and overlays (fboundp 'clear-image-cache)) (clear-image-cache)) 17571 (if (and overlays (fboundp 'clear-image-cache)) (clear-image-cache))
16179 (let* ((prefixnodir (file-name-nondirectory prefix)) 17572 (let* ((prefixnodir (file-name-nondirectory prefix))
@@ -16210,7 +17603,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
16210 (setq checkdir t) 17603 (setq checkdir t)
16211 (or (file-directory-p todir) (make-directory todir))) 17604 (or (file-directory-p todir) (make-directory todir)))
16212 (org-create-formula-image 17605 (org-create-formula-image
16213 txt movefile opt) 17606 txt movefile opt forbuffer)
16214 (if overlays 17607 (if overlays
16215 (progn 17608 (progn
16216 (setq ov (org-make-overlay beg end)) 17609 (setq ov (org-make-overlay beg end))
@@ -16229,31 +17622,27 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
16229 (insert link)))))))) 17622 (insert link))))))))
16230 17623
16231;; This function borrows from Ganesh Swami's latex2png.el 17624;; This function borrows from Ganesh Swami's latex2png.el
16232(defun org-create-formula-image (string tofile options) 17625(defun org-create-formula-image (string tofile options buffer)
16233 (let* ((tmpdir (if (featurep 'xemacs) 17626 (let* ((tmpdir (if (featurep 'xemacs)
16234 (temp-directory) 17627 (temp-directory)
16235 temporary-file-directory)) 17628 temporary-file-directory))
16236 (texfilebase (make-temp-name 17629 (texfilebase (make-temp-name
16237 (expand-file-name "orgtex" tmpdir))) 17630 (expand-file-name "orgtex" tmpdir)))
16238
16239;(texfilebase (make-temp-file "orgtex"))
16240; (dummy (delete-file texfilebase))
16241 (texfile (concat texfilebase ".tex")) 17631 (texfile (concat texfilebase ".tex"))
16242 (dvifile (concat texfilebase ".dvi")) 17632 (dvifile (concat texfilebase ".dvi"))
16243 (pngfile (concat texfilebase ".png")) 17633 (pngfile (concat texfilebase ".png"))
16244 (scale (number-to-string (* 1000 (or (plist-get options :scale) 1.0)))) 17634 (fnh (face-attribute 'default :height nil))
16245 (fg (or (plist-get options :foreground) "Black")) 17635 (scale (or (plist-get options (if buffer :scale :html-scale)) 1.0))
16246 (bg (or (plist-get options :background) "Transparent"))) 17636 (dpi (number-to-string (* scale (floor (* 0.9 (if buffer fnh 140.))))))
17637 (fg (or (plist-get options (if buffer :foreground :html-foreground))
17638 "Black"))
17639 (bg (or (plist-get options (if buffer :background :html-background))
17640 "Transparent")))
17641 (if (eq fg 'default) (setq fg (org-dvipng-color :foreground)))
17642 (if (eq bg 'default) (setq bg (org-dvipng-color :background)))
16247 (with-temp-file texfile 17643 (with-temp-file texfile
16248 (insert "\\documentclass{article} 17644 (insert org-format-latex-header
16249\\usepackage{fullpage} 17645 "\n\\begin{document}\n" string "\n\\end{document}\n"))
16250\\usepackage{amssymb}
16251\\usepackage[usenames]{color}
16252\\usepackage{amsmath}
16253\\usepackage{latexsym}
16254\\usepackage[mathscr]{eucal}
16255\\pagestyle{empty}
16256\\begin{document}\n" string "\n\\end{document}\n"))
16257 (let ((dir default-directory)) 17646 (let ((dir default-directory))
16258 (condition-case nil 17647 (condition-case nil
16259 (progn 17648 (progn
@@ -16265,7 +17654,9 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
16265 (progn (message "Failed to create dvi file from %s" texfile) nil) 17654 (progn (message "Failed to create dvi file from %s" texfile) nil)
16266 (call-process "dvipng" nil nil nil 17655 (call-process "dvipng" nil nil nil
16267 "-E" "-fg" fg "-bg" bg 17656 "-E" "-fg" fg "-bg" bg
16268 "-x" scale "-y" scale "-T" "tight" 17657 "-D" dpi
17658 ;;"-x" scale "-y" scale
17659 "-T" "tight"
16269 "-o" pngfile 17660 "-o" pngfile
16270 dvifile) 17661 dvifile)
16271 (if (not (file-exists-p pngfile)) 17662 (if (not (file-exists-p pngfile))
@@ -16276,6 +17667,16 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
16276 (delete-file (concat texfilebase e))) 17667 (delete-file (concat texfilebase e)))
16277 pngfile)))) 17668 pngfile))))
16278 17669
17670(defun org-dvipng-color (attr)
17671 "Return an rgb color specification for dvipng."
17672 (apply 'format "rgb %s %s %s"
17673 (mapcar 'org-normalize-color
17674 (color-values (face-attribute 'default attr nil)))))
17675
17676(defun org-normalize-color (value)
17677 "Return string to be used as color value for an RGB component."
17678 (format "%g" (/ value 65535.0)))
17679
16279;;;; Exporting 17680;;;; Exporting
16280 17681
16281;;; Variables, constants, and parameter plists 17682;;; Variables, constants, and parameter plists
@@ -16300,16 +17701,19 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
16300 (:headline-levels . org-export-headline-levels) 17701 (:headline-levels . org-export-headline-levels)
16301 (:section-numbers . org-export-with-section-numbers) 17702 (:section-numbers . org-export-with-section-numbers)
16302 (:table-of-contents . org-export-with-toc) 17703 (:table-of-contents . org-export-with-toc)
17704 (:preserve-breaks . org-export-preserve-breaks)
16303 (:archived-trees . org-export-with-archived-trees) 17705 (:archived-trees . org-export-with-archived-trees)
16304 (:emphasize . org-export-with-emphasize) 17706 (:emphasize . org-export-with-emphasize)
16305 (:sub-superscript . org-export-with-sub-superscripts) 17707 (:sub-superscript . org-export-with-sub-superscripts)
16306 (:TeX-macros . org-export-with-TeX-macros) 17708 (:TeX-macros . org-export-with-TeX-macros)
16307 (:LaTeX-fragments . org-export-with-LaTeX-fragments) 17709 (:LaTeX-fragments . org-export-with-LaTeX-fragments)
17710 (:skip-before-1st-heading . org-export-skip-text-before-1st-heading)
16308 (:fixed-width . org-export-with-fixed-width) 17711 (:fixed-width . org-export-with-fixed-width)
16309 (:timestamps . org-export-with-timestamps) 17712 (:timestamps . org-export-with-timestamps)
16310 (:tables . org-export-with-tables) 17713 (:tables . org-export-with-tables)
16311 (:table-auto-headline . org-export-highlight-first-table-line) 17714 (:table-auto-headline . org-export-highlight-first-table-line)
16312 (:style . org-export-html-style) 17715 (:style . org-export-html-style)
17716 (:agenda-style . org-agenda-export-html-style) ;; FIXME: Does this work????
16313 (:convert-org-links . org-export-html-link-org-files-as-html) 17717 (:convert-org-links . org-export-html-link-org-files-as-html)
16314 (:inline-images . org-export-html-inline-images) 17718 (:inline-images . org-export-html-inline-images)
16315 (:expand-quoted-html . org-export-html-expand) 17719 (:expand-quoted-html . org-export-html-expand)
@@ -16359,7 +17763,8 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
16359 ("^" . :sub-superscript) 17763 ("^" . :sub-superscript)
16360 ("*" . :emphasize) 17764 ("*" . :emphasize)
16361 ("TeX" . :TeX-macros) 17765 ("TeX" . :TeX-macros)
16362 ("LaTeX" . :LaTeX-fragments))) 17766 ("LaTeX" . :LaTeX-fragments)
17767 ("skip" . :skip-before-1st-heading)))
16363 o) 17768 o)
16364 (while (setq o (pop op)) 17769 (while (setq o (pop op))
16365 (if (string-match (concat (regexp-quote (car o)) 17770 (if (string-match (concat (regexp-quote (car o))
@@ -16377,19 +17782,11 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
16377 val))) 17782 val)))
16378 dir)) 17783 dir))
16379 17784
16380(defun org-export-find-first-heading-line (list)
16381 "Remove all lines from LIST which are before the first headline."
16382 (let ((orig-list list)
16383 (re (concat "^" outline-regexp)))
16384 (while (and list
16385 (not (string-match re (car list))))
16386 (pop list))
16387 (or list orig-list)))
16388
16389(defun org-skip-comments (lines) 17785(defun org-skip-comments (lines)
16390 "Skip lines starting with \"#\" and subtrees starting with COMMENT." 17786 "Skip lines starting with \"#\" and subtrees starting with COMMENT."
16391 (let ((re1 (concat "^\\(\\*+\\)[ \t]+" org-comment-string)) 17787 (let ((re1 (concat "^\\(\\*+\\)[ \t]+" org-comment-string))
16392 (re2 "^\\(\\*+\\)[ \t\n\r]") 17788 (re2 "^\\(\\*+\\)[ \t\n\r]")
17789 (case-fold-search nil)
16393 rtn line level) 17790 rtn line level)
16394 (while (setq line (pop lines)) 17791 (while (setq line (pop lines))
16395 (cond 17792 (cond
@@ -16420,6 +17817,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
16420 17817
16421\[a] export as ASCII 17818\[a] export as ASCII
16422\[h] export as HTML 17819\[h] export as HTML
17820\[H] export as HTML to temporary buffer
16423\[b] export as HTML and browse immediately 17821\[b] export as HTML and browse immediately
16424\[x] export as XOXO 17822\[x] export as XOXO
16425 17823
@@ -16437,6 +17835,8 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
16437 (?a . org-export-as-ascii) 17835 (?a . org-export-as-ascii)
16438 (?h . org-export-as-html) 17836 (?h . org-export-as-html)
16439 (?b . org-export-as-html-and-open) 17837 (?b . org-export-as-html-and-open)
17838 (?H . org-export-as-html-to-buffer)
17839 (?R . org-export-region-as-html)
16440 (?x . org-export-as-xoxo) 17840 (?x . org-export-as-xoxo)
16441 (?i . org-export-icalendar-this-file) 17841 (?i . org-export-icalendar-this-file)
16442 (?I . org-export-icalendar-all-agenda-files) 17842 (?I . org-export-icalendar-all-agenda-files)
@@ -16465,6 +17865,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
16465 ("curren") 17865 ("curren")
16466 ("yen") 17866 ("yen")
16467 ("brvbar") 17867 ("brvbar")
17868 ("vert" . "&#124;")
16468 ("sect") 17869 ("sect")
16469 ("uml") 17870 ("uml")
16470 ("copy") 17871 ("copy")
@@ -16766,26 +18167,44 @@ translations. There is currently no way for users to extend this.")
16766 (re-angle-link (concat "\\([^[]\\)" org-angle-link-re)) 18167 (re-angle-link (concat "\\([^[]\\)" org-angle-link-re))
16767 (re-archive (concat ":" org-archive-tag ":")) 18168 (re-archive (concat ":" org-archive-tag ":"))
16768 (re-quote (concat "^\\*+[ \t]+" org-quote-string "\\>")) 18169 (re-quote (concat "^\\*+[ \t]+" org-quote-string "\\>"))
16769 (htmlp (memq :for-html parameters)) 18170 (htmlp (plist-get parameters :for-html))
16770 (outline-regexp "\\*+") 18171 (outline-regexp "\\*+")
16771 rtn) 18172 a b
18173 rtn p)
16772 (save-excursion 18174 (save-excursion
16773 (set-buffer (get-buffer-create " org-mode-tmp")) 18175 (set-buffer (get-buffer-create " org-mode-tmp"))
16774 (erase-buffer) 18176 (erase-buffer)
16775 (insert string) 18177 (insert string)
18178 ;; Remove license-to-kill stuff
18179 (while (setq p (text-property-any (point-min) (point-max)
18180 :org-license-to-kill t))
18181 (delete-region p (next-single-property-change p :org-license-to-kill)))
18182
16776 (let ((org-inhibit-startup t)) (org-mode)) 18183 (let ((org-inhibit-startup t)) (org-mode))
16777 (untabify (point-min) (point-max)) 18184 (untabify (point-min) (point-max))
16778 18185
18186 ;; Get the correct stuff before the first headline
18187 (when (plist-get parameters :skip-before-1st-heading)
18188 (goto-char (point-min))
18189 (when (re-search-forward "^\\*+[ \t]" nil t)
18190 (delete-region (point-min) (match-beginning 0))
18191 (goto-char (point-min))
18192 (insert "\n")))
18193 (when (plist-get parameters :add-text)
18194 (goto-char (point-min))
18195 (insert (plist-get parameters :add-text) "\n"))
18196
16779 ;; Get rid of archived trees 18197 ;; Get rid of archived trees
16780 (when (not (eq org-export-with-archived-trees t)) 18198 (when (not (eq org-export-with-archived-trees t))
16781 (goto-char (point-min)) 18199 (goto-char (point-min))
16782 (while (re-search-forward re-archive nil t) 18200 (while (re-search-forward re-archive nil t)
16783 (if (not (org-on-heading-p)) 18201 (if (not (org-on-heading-p t))
16784 (org-end-of-subtree t) 18202 (org-end-of-subtree t)
16785 (beginning-of-line 1) 18203 (beginning-of-line 1)
16786 (delete-region 18204 (setq a (if org-export-with-archived-trees
16787 (if org-export-with-archived-trees (1+ (point-at-eol)) (point)) 18205 (1+ (point-at-eol)) (point))
16788 (org-end-of-subtree t))))) 18206 b (org-end-of-subtree t))
18207 (if (> b a) (delete-region a b)))))
16789 18208
16790 ;; Protect stuff from HTML processing 18209 ;; Protect stuff from HTML processing
16791 (goto-char (point-min)) 18210 (goto-char (point-min))
@@ -16796,12 +18215,12 @@ translations. There is currently no way for users to extend this.")
16796 (goto-char (point-min)) 18215 (goto-char (point-min))
16797 (while (re-search-forward "^#\\+HTML:[ \t]*\\(.*\\)" nil t) 18216 (while (re-search-forward "^#\\+HTML:[ \t]*\\(.*\\)" nil t)
16798 (replace-match "\\1" t) 18217 (replace-match "\\1" t)
16799 (add-text-properties 18218 (add-text-properties
16800 (point-at-bol) (min (1+ (point-at-eol)) (point-max)) 18219 (point-at-bol) (min (1+ (point-at-eol)) (point-max))
16801 '(org-protected t)))) 18220 '(org-protected t))))
16802 (goto-char (point-min)) 18221 (goto-char (point-min))
16803 (while (re-search-forward 18222 (while (re-search-forward
16804 "^#\\+BEGIN_HTML\\>.*\\(\n.*\\)*?\n#\\+END_HTML\\>.*\n?" nil t) 18223 "^#\\+BEGIN_HTML\\>.*\\(\\(\n.*\\)*?\n\\)#\\+END_HTML\\>.*\n?" nil t)
16805 (if htmlp 18224 (if htmlp
16806 (add-text-properties (match-beginning 1) (1+ (match-end 1)) 18225 (add-text-properties (match-beginning 1) (1+ (match-end 1))
16807 '(org-protected t)) 18226 '(org-protected t))
@@ -16839,7 +18258,7 @@ translations. There is currently no way for users to extend this.")
16839 (goto-char (match-beginning 0)))) 18258 (goto-char (match-beginning 0))))
16840 18259
16841 ;; Convert LaTeX fragments to images 18260 ;; Convert LaTeX fragments to images
16842 (when (memq :LaTeX-fragments parameters) 18261 (when (plist-get parameters :LaTeX-fragments)
16843 (org-format-latex 18262 (org-format-latex
16844 (concat "ltxpng/" (file-name-sans-extension 18263 (concat "ltxpng/" (file-name-sans-extension
16845 (file-name-nondirectory 18264 (file-name-nondirectory
@@ -16851,6 +18270,7 @@ translations. There is currently no way for users to extend this.")
16851 ;; Expand link abbreviations 18270 ;; Expand link abbreviations
16852 (goto-char (point-min)) 18271 (goto-char (point-min))
16853 (while (re-search-forward re-plain-link nil t) 18272 (while (re-search-forward re-plain-link nil t)
18273 (goto-char (1- (match-end 0)))
16854 (org-if-unprotected 18274 (org-if-unprotected
16855 (replace-match 18275 (replace-match
16856 (concat 18276 (concat
@@ -16858,6 +18278,7 @@ translations. There is currently no way for users to extend this.")
16858 t t))) 18278 t t)))
16859 (goto-char (point-min)) 18279 (goto-char (point-min))
16860 (while (re-search-forward re-angle-link nil t) 18280 (while (re-search-forward re-angle-link nil t)
18281 (goto-char (1- (match-end 0)))
16861 (org-if-unprotected 18282 (org-if-unprotected
16862 (replace-match 18283 (replace-match
16863 (concat 18284 (concat
@@ -16877,17 +18298,35 @@ translations. There is currently no way for users to extend this.")
16877 t t))) 18298 t t)))
16878 18299
16879 ;; Find multiline emphasis and put them into single line 18300 ;; Find multiline emphasis and put them into single line
16880 (when (memq :emph-multiline parameters) 18301 (when (plist-get parameters :emph-multiline)
16881 (goto-char (point-min)) 18302 (goto-char (point-min))
16882 (while (re-search-forward org-emph-re nil t) 18303 (while (re-search-forward org-emph-re nil t)
16883 (org-if-unprotected 18304 (if (not (= (char-after (match-beginning 3))
16884 (subst-char-in-region (match-beginning 0) (match-end 0) ?\n ?\ t) 18305 (char-after (match-beginning 4))))
16885 (goto-char (1- (match-end 0)))))) 18306 (org-if-unprotected
18307 (subst-char-in-region (match-beginning 0) (match-end 0)
18308 ?\n ?\ t)
18309 (goto-char (1- (match-end 0))))
18310 (goto-char (1+ (match-beginning 0))))))
16886 18311
16887 (setq rtn (buffer-string))) 18312 (setq rtn (buffer-string)))
16888 (kill-buffer " org-mode-tmp") 18313 (kill-buffer " org-mode-tmp")
16889 rtn)) 18314 rtn))
16890 18315
18316(defun org-export-grab-title-from-buffer ()
18317 "Get a title for the current document, from looking at the buffer."
18318 (let (buffer-read-only)
18319 (save-excursion
18320 (goto-char (point-min))
18321 (let ((end (save-excursion (outline-next-heading) (point))))
18322 (when (re-search-forward "^[ \t]*[^# \t\r\n].*\n" end t)
18323 ;; Mark the line so that it will not be exported as normal text.
18324 (org-unmodified
18325 (add-text-properties (match-beginning 0) (match-end 0)
18326 (list :org-license-to-kill t)))
18327 ;; Return the title string
18328 (org-trim (match-string 0)))))))
18329
16891(defun org-solidify-link-text (s &optional alist) 18330(defun org-solidify-link-text (s &optional alist)
16892 "Take link text and make a safe target out of it." 18331 "Take link text and make a safe target out of it."
16893 (save-match-data 18332 (save-match-data
@@ -16959,16 +18398,7 @@ underlined headlines. The default is 3."
16959 (setq-default org-todo-line-regexp org-todo-line-regexp) 18398 (setq-default org-todo-line-regexp org-todo-line-regexp)
16960 (let* ((opt-plist (org-combine-plists (org-default-export-plist) 18399 (let* ((opt-plist (org-combine-plists (org-default-export-plist)
16961 (org-infile-export-plist))) 18400 (org-infile-export-plist)))
16962 (region
16963 (buffer-substring
16964 (if (org-region-active-p) (region-beginning) (point-min))
16965 (if (org-region-active-p) (region-end) (point-max))))
16966 (custom-times org-display-custom-times) 18401 (custom-times org-display-custom-times)
16967 (lines (org-export-find-first-heading-line
16968 (org-skip-comments
16969 (org-split-string
16970 (org-cleaned-string-for-export region)
16971 "[\r\n]"))))
16972 (org-ascii-current-indentation '(0 . 0)) 18402 (org-ascii-current-indentation '(0 . 0))
16973 (level 0) line txt 18403 (level 0) line txt
16974 (umax nil) 18404 (umax nil)
@@ -16986,15 +18416,36 @@ underlined headlines. The default is 3."
16986 (time (format-time-string "%X" (org-current-time))) 18416 (time (format-time-string "%X" (org-current-time)))
16987 (author (plist-get opt-plist :author)) 18417 (author (plist-get opt-plist :author))
16988 (title (or (plist-get opt-plist :title) 18418 (title (or (plist-get opt-plist :title)
18419 (and (not
18420 (plist-get opt-plist :skip-before-1st-heading))
18421 (org-export-grab-title-from-buffer))
16989 (file-name-sans-extension 18422 (file-name-sans-extension
16990 (file-name-nondirectory buffer-file-name)))) 18423 (file-name-nondirectory buffer-file-name))))
16991 (email (plist-get opt-plist :email)) 18424 (email (plist-get opt-plist :email))
16992 (language (plist-get opt-plist :language)) 18425 (language (plist-get opt-plist :language))
16993 (quote-re0 (concat "^[ \t]*" org-quote-string "\\>")) 18426 (quote-re0 (concat "^[ \t]*" org-quote-string "\\>"))
16994; (quote-re (concat "^\\(\\*+\\)\\([ \t]*" org-quote-string "\\>\\)")) 18427; (quote-re (concat "^\\(\\*+\\)\\([ \t]*" org-quote-string "\\>\\)"))
16995 (text nil)
16996 (todo nil) 18428 (todo nil)
16997 (lang-words nil)) 18429 (lang-words nil)
18430 (region
18431 (buffer-substring
18432 (if (org-region-active-p) (region-beginning) (point-min))
18433 (if (org-region-active-p) (region-end) (point-max))))
18434 (lines (org-skip-comments
18435 (org-split-string
18436 (org-cleaned-string-for-export
18437 region
18438 :skip-before-1st-heading
18439 (plist-get opt-plist :skip-before-1st-heading)
18440 :add-text (plist-get opt-plist :text))
18441 "[\r\n]")))
18442 thetoc have-headings first-heading-pos
18443 table-open table-buffer)
18444
18445 (let (buffer-read-only)
18446 (org-unmodified
18447 (remove-text-properties (point-min) (point-max)
18448 '(:org-license-to-kill t))))
16998 18449
16999 (setq org-last-level 1) 18450 (setq org-last-level 1)
17000 (org-init-section-numbers) 18451 (org-init-section-numbers)
@@ -17028,27 +18479,27 @@ underlined headlines. The default is 3."
17028 "\n"))) 18479 "\n")))
17029 (if (and date time) 18480 (if (and date time)
17030 (insert (concat (nth 2 lang-words) ": " date " " time "\n"))) 18481 (insert (concat (nth 2 lang-words) ": " date " " time "\n")))
17031 (if text (insert (concat (org-html-expand-for-ascii text) "\n\n")))
17032 18482
17033 (insert "\n\n") 18483 (insert "\n\n")
17034 18484
17035 (if org-export-with-toc 18485 (if org-export-with-toc
17036 (progn 18486 (progn
17037 (insert (nth 3 lang-words) "\n" 18487 (push (concat (nth 3 lang-words) "\n") thetoc)
17038 (make-string (length (nth 3 lang-words)) ?=) "\n") 18488 (push (concat (make-string (length (nth 3 lang-words)) ?=) "\n") thetoc)
17039 (mapcar '(lambda (line) 18489 (mapcar '(lambda (line)
17040 (if (string-match org-todo-line-regexp 18490 (if (string-match org-todo-line-regexp
17041 line) 18491 line)
17042 ;; This is a headline 18492 ;; This is a headline
17043 (progn 18493 (progn
18494 (setq have-headings t)
17044 (setq level (- (match-end 1) (match-beginning 1)) 18495 (setq level (- (match-end 1) (match-beginning 1))
17045 level (org-tr-level level) 18496 level (org-tr-level level)
17046 txt (match-string 3 line) 18497 txt (match-string 3 line)
17047 todo 18498 todo
17048 (or (and org-export-mark-todo-in-toc 18499 (or (and org-export-mark-todo-in-toc
17049 (match-beginning 2) 18500 (match-beginning 2)
17050 (not (equal (match-string 2 line) 18501 (not (member (match-string 2 line)
17051 org-done-string))) 18502 org-done-keywords)))
17052 ; TODO, not DONE 18503 ; TODO, not DONE
17053 (and org-export-mark-todo-in-toc 18504 (and org-export-mark-todo-in-toc
17054 (= level umax-toc) 18505 (= level umax-toc)
@@ -17067,12 +18518,15 @@ underlined headlines. The default is 3."
17067 " " txt))) 18518 " " txt)))
17068 (if (<= level umax-toc) 18519 (if (<= level umax-toc)
17069 (progn 18520 (progn
17070 (insert 18521 (push
17071 (make-string (* (1- level) 4) ?\ ) 18522 (concat
17072 (format (if todo "%s (*)\n" "%s\n") txt)) 18523 (make-string (* (1- level) 4) ?\ )
18524 (format (if todo "%s (*)\n" "%s\n") txt))
18525 thetoc)
17073 (setq org-last-level level)) 18526 (setq org-last-level level))
17074 )))) 18527 ))))
17075 lines))) 18528 lines)
18529 (setq thetoc (if have-headings (nreverse thetoc) nil))))
17076 18530
17077 (org-init-section-numbers) 18531 (org-init-section-numbers)
17078 (while (setq line (pop lines)) 18532 (while (setq line (pop lines))
@@ -17091,12 +18545,44 @@ underlined headlines. The default is 3."
17091 (cond 18545 (cond
17092 ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line) 18546 ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line)
17093 ;; a Headline 18547 ;; a Headline
18548 (setq first-heading-pos (or first-heading-pos (point)))
17094 (setq level (org-tr-level (- (match-end 1) (match-beginning 1))) 18549 (setq level (org-tr-level (- (match-end 1) (match-beginning 1)))
17095 txt (match-string 2 line)) 18550 txt (match-string 2 line))
17096 (org-ascii-level-start level txt umax lines)) 18551 (org-ascii-level-start level txt umax lines))
18552
18553 ((and org-export-with-tables
18554 (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)" line))
18555 (if (not table-open)
18556 ;; New table starts
18557 (setq table-open t table-buffer nil))
18558 ;; Accumulate lines
18559 (setq table-buffer (cons line table-buffer))
18560 (when (or (not lines)
18561 (not (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)"
18562 (car lines))))
18563 (setq table-open nil
18564 table-buffer (nreverse table-buffer))
18565 (insert (mapconcat
18566 (lambda (x)
18567 (org-fix-indentation x org-ascii-current-indentation))
18568 (org-format-table-ascii table-buffer)
18569 "\n") "\n")))
17097 (t 18570 (t
17098 (insert (org-fix-indentation line org-ascii-current-indentation) "\n")))) 18571 (insert (org-fix-indentation line org-ascii-current-indentation) "\n"))))
17099 (normal-mode) 18572 (normal-mode)
18573
18574 ;; insert the table of contents
18575 (when thetoc
18576 (goto-char (point-min))
18577 (if (re-search-forward "^[ \t]*\\[TABLE-OF-CONTENTS\\][ \t]*$" nil t)
18578 (progn
18579 (goto-char (match-beginning 0))
18580 (replace-match ""))
18581 (goto-char first-heading-pos))
18582 (mapc 'insert thetoc)
18583 (or (looking-at "[ \t]*\n[ \t]*\n")
18584 (insert "\n\n")))
18585
17100 (save-buffer) 18586 (save-buffer)
17101 ;; remove display and invisible chars 18587 ;; remove display and invisible chars
17102 (let (beg end) 18588 (let (beg end)
@@ -17124,8 +18610,8 @@ underlined headlines. The default is 3."
17124 (progn 18610 (progn
17125 (setq lv (- (match-end 1) (match-beginning 1)) 18611 (setq lv (- (match-end 1) (match-beginning 1))
17126 todo (and (match-beginning 2) 18612 todo (and (match-beginning 2)
17127 (not (equal (match-string 2 line) 18613 (not (member (match-string 2 line)
17128 org-done-string)))) 18614 org-done-keywords))))
17129 ; TODO, not DONE 18615 ; TODO, not DONE
17130 (if (<= lv level) (throw 'exit nil)) 18616 (if (<= lv level) (throw 'exit nil))
17131 (if todo (throw 'exit t)))))))) 18617 (if todo (throw 'exit t))))))))
@@ -17187,7 +18673,7 @@ continue to use it. The prefix arg ARG is passed through to the exporting
17187command." 18673command."
17188 (interactive 18674 (interactive
17189 (list (progn 18675 (list (progn
17190 (message "Export visible: [a]SCII [h]tml [b]rowse HTML [x]OXO [ ]keep buffer") 18676 (message "Export visible: [a]SCII [h]tml [b]rowse HTML [H/R]uffer with HTML [x]OXO [ ]keep buffer")
17191 (read-char-exclusive)) 18677 (read-char-exclusive))
17192 current-prefix-arg)) 18678 current-prefix-arg))
17193 (if (not (member type '(?a ?\C-a ?b ?\C-b ?h ?x ?\ ))) 18679 (if (not (member type '(?a ?\C-a ?b ?\C-b ?h ?x ?\ )))
@@ -17198,6 +18684,8 @@ command."
17198 (?b . org-export-as-html-and-open) 18684 (?b . org-export-as-html-and-open)
17199 (?\C-b . org-export-as-html-and-open) 18685 (?\C-b . org-export-as-html-and-open)
17200 (?h . org-export-as-html) 18686 (?h . org-export-as-html)
18687 (?H . org-export-as-html-to-buffer)
18688 (?R . org-export-region-as-html)
17201 (?x . org-export-as-xoxo))))) 18689 (?x . org-export-as-xoxo)))))
17202 (keepp (equal type ?\ )) 18690 (keepp (equal type ?\ ))
17203 (file buffer-file-name) 18691 (file buffer-file-name)
@@ -17253,10 +18741,11 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
17253#+EMAIL: %s 18741#+EMAIL: %s
17254#+LANGUAGE: %s 18742#+LANGUAGE: %s
17255#+TEXT: Some descriptive text to be emitted. Several lines OK. 18743#+TEXT: Some descriptive text to be emitted. Several lines OK.
17256#+OPTIONS: H:%d num:%s toc:%s \\n:%s @:%s ::%s |:%s ^:%s *:%s TeX:%s LaTeX:%s 18744#+OPTIONS: H:%d num:%s toc:%s \\n:%s @:%s ::%s |:%s ^:%s *:%s TeX:%s LaTeX:%s skip:%s
17257#+CATEGORY: %s 18745#+CATEGORY: %s
17258#+SEQ_TODO: %s 18746#+SEQ_TODO: %s
17259#+TYP_TODO: %s 18747#+TYP_TODO: %s
18748#+PRIORITIES: %c %c %c
17260#+STARTUP: %s %s %s %s %s 18749#+STARTUP: %s %s %s %s %s
17261#+TAGS: %s 18750#+TAGS: %s
17262#+ARCHIVE: %s 18751#+ARCHIVE: %s
@@ -17274,13 +18763,11 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
17274 org-export-with-emphasize 18763 org-export-with-emphasize
17275 org-export-with-TeX-macros 18764 org-export-with-TeX-macros
17276 org-export-with-LaTeX-fragments 18765 org-export-with-LaTeX-fragments
18766 org-export-skip-text-before-1st-heading
17277 (file-name-nondirectory buffer-file-name) 18767 (file-name-nondirectory buffer-file-name)
17278 (if (equal org-todo-interpretation 'sequence) 18768 "TODO FEEDBACK VERIFY DONE"
17279 (mapconcat 'identity org-todo-keywords " ") 18769 "Me Jason Marie DONE"
17280 "TODO FEEDBACK VERIFY DONE") 18770 org-highest-priority org-lowest-priority org-default-priority
17281 (if (equal org-todo-interpretation 'type)
17282 (mapconcat 'identity org-todo-keywords " ")
17283 "Me Jason Marie DONE")
17284 (cdr (assoc org-startup-folded 18771 (cdr (assoc org-startup-folded
17285 '((nil . "showall") (t . "overview") (content . "content")))) 18772 '((nil . "showall") (t . "overview") (content . "content"))))
17286 (if org-odd-levels-only "odd" "oddeven") 18773 (if org-odd-levels-only "odd" "oddeven")
@@ -17372,19 +18859,96 @@ emacs --batch
17372 --visit=MyFile --funcall org-export-as-html-batch" 18859 --visit=MyFile --funcall org-export-as-html-batch"
17373 (org-export-as-html org-export-headline-levels 'hidden)) 18860 (org-export-as-html org-export-headline-levels 'hidden))
17374 18861
17375(defun org-export-as-html (arg &optional hidden ext-plist) 18862(defun org-export-as-html-to-buffer (arg)
18863 "Call `org-exort-as-html` with output to a temporary buffer.
18864No file is created. The prefix ARG is passed through to `org-export-as-html'."
18865 (interactive "P")
18866 (org-export-as-html arg nil nil "*Org HTML Export*")
18867 (switch-to-buffer-other-window "*Org HTML Export*"))
18868
18869(defun org-replace-region-by-html (beg end)
18870 "Assume the current region has org-mode syntax, and convert it to HTML.
18871This can be used in any buffer. For example, you could write an
18872itemized list in org-mode syntax in an HTML buffer and then use this
18873command to convert it."
18874 (interactive "r")
18875 (let (reg html buf)
18876 (if (org-mode-p)
18877 (setq html (org-export-region-as-html
18878 beg end t 'string))
18879 (setq reg (buffer-substring beg end)
18880 buf (get-buffer-create "*Org tmp*"))
18881 (save-excursion
18882 (set-buffer buf)
18883 (erase-buffer)
18884 (insert reg)
18885 (org-mode)
18886 (setq html (org-export-region-as-html
18887 (point-min) (point-max) t 'string)))
18888 (kill-buffer buf))
18889 (delete-region beg end)
18890 (insert html)))
18891
18892(defun org-export-region-as-html (beg end &optional body-only buffer)
18893 "Convert region from BEG to END in org-mode buffer to HTML.
18894If prefix arg BODY-ONLY is set, omit file header, footer, and table of
18895contents, and only produce the region of converted text, useful for
18896cut-and-paste operations.
18897If BUFFER is a buffer or a string, use/create that buffer as a target
18898of the converted HTML. If BUFFER is the symbol `string', return the
18899produced HTML as a string and leave not buffer behind. For example,
18900a Lisp program could call this function in the following way:
18901
18902 (setq html (org-export-region-as-html beg end t 'string))
18903
18904When called interactively, the output buffer is selected, and shown
18905in a window. A non-interactive call will only retunr the buffer."
18906 (interactive "r\nP")
18907 (when (interactive-p)
18908 (setq buffer "*Org HTML EXPORT*"))
18909 (let ((transient-mark-mode t) (zmacs-regions t)
18910 rtn)
18911 (goto-char end)
18912 (set-mark (point)) ;; to activate the region
18913 (goto-char beg)
18914 (setq rtn (org-export-as-html
18915 nil nil nil
18916 buffer body-only))
18917 (if (fboundp 'deactivate-mark) (deactivate-mark))
18918 (if (and (interactive-p) (bufferp rtn))
18919 (switch-to-buffer-other-window rtn)
18920 rtn)))
18921
18922(defun org-export-as-html (arg &optional hidden ext-plist
18923 to-buffer body-only)
17376 "Export the outline as a pretty HTML file. 18924 "Export the outline as a pretty HTML file.
17377If there is an active region, export only the region. 18925If there is an active region, export only the region. The prefix
17378The prefix ARG specifies how many levels of the outline should become 18926ARG specifies how many levels of the outline should become
17379headlines. The default is 3. Lower levels will become bulleted lists. 18927headlines. The default is 3. Lower levels will become bulleted
17380When HIDDEN is non-nil, don't display the HTML buffer. 18928lists. When HIDDEN is non-nil, don't display the HTML buffer.
17381EXT-PLIST is a property list with external parameters overriding 18929EXT-PLIST is a property list with external parameters overriding
17382org-mode's default settings, but still inferior to file-local settings." 18930org-mode's default settings, but still inferior to file-local
18931settings. When TO-BUFFER is non-nil, create a buffer with that
18932name and export to that buffer. If TO-BUFFER is the symbol `string',
18933don't leave any buffer behind but just return the resulting HTML as
18934a string. When BODY-ONLY is set, don't produce the file header and footer,
18935simply return the content of <body>...</body>, without even
18936the body tags themselves."
17383 (interactive "P") 18937 (interactive "P")
18938
18939 ;; Make sure we have a file name when we need it.
18940 (when (and (not (or to-buffer body-only))
18941 (not buffer-file-name))
18942 (if (buffer-base-buffer)
18943 (org-set-local 'buffer-file-name
18944 (with-current-buffer (buffer-base-buffer)
18945 buffer-file-name))
18946 (error "Need a file name to be able to export.")))
18947
17384 (message "Exporting...") 18948 (message "Exporting...")
17385 (setq-default org-todo-line-regexp org-todo-line-regexp) 18949 (setq-default org-todo-line-regexp org-todo-line-regexp)
17386 (setq-default org-deadline-line-regexp org-deadline-line-regexp) 18950 (setq-default org-deadline-line-regexp org-deadline-line-regexp)
17387 (setq-default org-done-string org-done-string) 18951 (setq-default org-done-keywords org-done-keywords)
17388 (setq-default org-maybe-keyword-time-regexp org-maybe-keyword-time-regexp) 18952 (setq-default org-maybe-keyword-time-regexp org-maybe-keyword-time-regexp)
17389 (let* ((opt-plist (org-combine-plists (org-default-export-plist) 18953 (let* ((opt-plist (org-combine-plists (org-default-export-plist)
17390 ext-plist 18954 ext-plist
@@ -17392,42 +18956,42 @@ org-mode's default settings, but still inferior to file-local settings."
17392 18956
17393 (style (plist-get opt-plist :style)) 18957 (style (plist-get opt-plist :style))
17394 (link-validate (plist-get opt-plist :link-validation-function)) 18958 (link-validate (plist-get opt-plist :link-validation-function))
17395 valid 18959 valid thetoc have-headings first-heading-pos
17396 (odd org-odd-levels-only) 18960 (odd org-odd-levels-only)
17397 (region-p (org-region-active-p)) 18961 (region-p (org-region-active-p))
17398 (region
17399 (buffer-substring
17400 (if region-p (region-beginning) (point-min))
17401 (if region-p (region-end) (point-max))))
17402 ;; The following two are dynamically scoped into other 18962 ;; The following two are dynamically scoped into other
17403 ;; routines below. 18963 ;; routines below.
17404 (org-current-export-dir (org-export-directory :html opt-plist)) 18964 (org-current-export-dir (org-export-directory :html opt-plist))
17405 (org-current-export-file buffer-file-name) 18965 (org-current-export-file buffer-file-name)
17406 (all_lines
17407 (org-skip-comments (org-split-string
17408 (org-cleaned-string-for-export
17409 region :emph-multiline :for-html
17410 (if (plist-get opt-plist :LaTeX-fragments)
17411 :LaTeX-fragments))
17412 "[\r\n]")))
17413 (lines (org-export-find-first-heading-line all_lines))
17414 (level 0) (line "") (origline "") txt todo 18966 (level 0) (line "") (origline "") txt todo
17415 (umax nil) 18967 (umax nil)
17416 (umax-toc nil) 18968 (umax-toc nil)
17417 (filename (concat (file-name-as-directory 18969 (filename (if to-buffer nil
17418 (org-export-directory :html opt-plist)) 18970 (concat (file-name-as-directory
17419 (file-name-sans-extension 18971 (org-export-directory :html opt-plist))
17420 (file-name-nondirectory buffer-file-name)) 18972 (file-name-sans-extension
17421 ".html")) 18973 (file-name-nondirectory buffer-file-name))
17422 (current-dir (file-name-directory buffer-file-name)) 18974 ".html")))
17423 (buffer (find-file-noselect filename)) 18975 (current-dir (if buffer-file-name
18976 (file-name-directory buffer-file-name)
18977 default-directory))
18978 (buffer (if to-buffer
18979 (cond
18980 ((eq to-buffer 'string) (get-buffer-create "*Org HTML Export*"))
18981 (t (get-buffer-create to-buffer)))
18982 (find-file-noselect filename)))
17424 (org-levels-open (make-vector org-level-max nil)) 18983 (org-levels-open (make-vector org-level-max nil))
17425 (date (format-time-string "%Y/%m/%d" (current-time))) 18984 (date (format-time-string "%Y/%m/%d" (current-time)))
17426 (time (format-time-string "%X" (org-current-time))) 18985 (time (format-time-string "%X" (org-current-time)))
17427 (author (plist-get opt-plist :author)) 18986 (author (plist-get opt-plist :author))
17428 (title (or (plist-get opt-plist :title) 18987 (title (or (plist-get opt-plist :title)
17429 (file-name-sans-extension 18988 (and (not
17430 (file-name-nondirectory buffer-file-name)))) 18989 (plist-get opt-plist :skip-before-1st-heading))
18990 (org-export-grab-title-from-buffer))
18991 (and buffer-file-name
18992 (file-name-sans-extension
18993 (file-name-nondirectory buffer-file-name)))
18994 "UNTITLED"))
17431 (quote-re0 (concat "^[ \t]*" org-quote-string "\\>")) 18995 (quote-re0 (concat "^[ \t]*" org-quote-string "\\>"))
17432 (quote-re (concat "^\\(\\*+\\)\\([ \t]*" org-quote-string "\\>\\)")) 18996 (quote-re (concat "^\\(\\*+\\)\\([ \t]*" org-quote-string "\\>\\)"))
17433 (inquote nil) 18997 (inquote nil)
@@ -17438,7 +19002,6 @@ org-mode's default settings, but still inferior to file-local settings."
17438 (llt org-plain-list-ordered-item-terminator) 19002 (llt org-plain-list-ordered-item-terminator)
17439 (email (plist-get opt-plist :email)) 19003 (email (plist-get opt-plist :email))
17440 (language (plist-get opt-plist :language)) 19004 (language (plist-get opt-plist :language))
17441 (text (plist-get opt-plist :text))
17442 (lang-words nil) 19005 (lang-words nil)
17443 (target-alist nil) tg 19006 (target-alist nil) tg
17444 (head-count 0) cnt 19007 (head-count 0) cnt
@@ -17450,11 +19013,34 @@ org-mode's default settings, but still inferior to file-local settings."
17450 (charset (and coding-system 19013 (charset (and coding-system
17451 (fboundp 'coding-system-get) 19014 (fboundp 'coding-system-get)
17452 (coding-system-get coding-system 'mime-charset))) 19015 (coding-system-get coding-system 'mime-charset)))
19016 (region
19017 (buffer-substring
19018 (if region-p (region-beginning) (point-min))
19019 (if region-p (region-end) (point-max))))
19020 (lines
19021 (org-skip-comments (org-split-string
19022 (org-cleaned-string-for-export
19023 region
19024 :emph-multiline t
19025 :for-html t
19026 :skip-before-1st-heading
19027 (plist-get opt-plist :skip-before-1st-heading)
19028 :add-text
19029 (plist-get opt-plist :text)
19030 :LaTeX-fragments
19031 (plist-get opt-plist :LaTeX-fragments))
19032 "[\r\n]")))
17453 table-open type 19033 table-open type
17454 table-buffer table-orig-buffer 19034 table-buffer table-orig-buffer
17455 ind start-is-num starter 19035 ind start-is-num starter didclose
17456 rpl path desc descp desc1 desc2 link 19036 rpl path desc descp desc1 desc2 link
17457 ) 19037 )
19038
19039 (let (buffer-read-only)
19040 (org-unmodified
19041 (remove-text-properties (point-min) (point-max)
19042 '(:org-license-to-kill t))))
19043
17458 (message "Exporting...") 19044 (message "Exporting...")
17459 19045
17460 (setq org-last-level 1) 19046 (setq org-last-level 1)
@@ -17465,9 +19051,7 @@ org-mode's default settings, but still inferior to file-local settings."
17465 (assoc "en" org-export-language-setup))) 19051 (assoc "en" org-export-language-setup)))
17466 19052
17467 ;; Switch to the output buffer 19053 ;; Switch to the output buffer
17468 (if (or hidden t) 19054 (set-buffer buffer)
17469 (set-buffer buffer)
17470 (switch-to-buffer-other-window buffer))
17471 (erase-buffer) 19055 (erase-buffer)
17472 (fundamental-mode) 19056 (fundamental-mode)
17473 (let ((case-fold-search nil) 19057 (let ((case-fold-search nil)
@@ -17483,10 +19067,10 @@ org-mode's default settings, but still inferior to file-local settings."
17483 (setq umax-toc (if (integerp org-export-with-toc) 19067 (setq umax-toc (if (integerp org-export-with-toc)
17484 (min org-export-with-toc umax) 19068 (min org-export-with-toc umax)
17485 umax)) 19069 umax))
17486 19070 (unless body-only
17487 ;; File header 19071 ;; File header
17488 (insert (format 19072 (insert (format
17489 "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" 19073 "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"
17490 \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"> 19074 \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
17491<html xmlns=\"http://www.w3.org/1999/xhtml\" 19075<html xmlns=\"http://www.w3.org/1999/xhtml\"
17492lang=\"%s\" xml:lang=\"%s\"> 19076lang=\"%s\" xml:lang=\"%s\">
@@ -17499,94 +19083,96 @@ lang=\"%s\" xml:lang=\"%s\">
17499%s 19083%s
17500</head><body> 19084</head><body>
17501" 19085"
17502 language language (org-html-expand title) (or charset "iso-8859-1") 19086 language language (org-html-expand title)
17503 date time author style)) 19087 (or charset "iso-8859-1") date time author style))
17504 19088
19089 (insert (or (plist-get opt-plist :preamble) ""))
17505 19090
17506 (insert (or (plist-get opt-plist :preamble) "")) 19091 (when (plist-get opt-plist :auto-preamble)
19092 (if title (insert (format org-export-html-title-format
19093 (org-html-expand title))))))
17507 19094
17508 (when (plist-get opt-plist :auto-preamble) 19095 (if (and org-export-with-toc (not body-only))
17509 (if title (insert (format org-export-html-title-format
17510 (org-html-expand title))))
17511 (if text (insert "<p>\n" (org-html-expand text) "</p>")))
17512
17513 (if org-export-with-toc
17514 (progn 19096 (progn
17515 (insert (format "<h%d>%s</h%d>\n" 19097 (push (format "<h%d>%s</h%d>\n"
17516 org-export-html-toplevel-hlevel 19098 org-export-html-toplevel-hlevel
17517 (nth 3 lang-words) 19099 (nth 3 lang-words)
17518 org-export-html-toplevel-hlevel)) 19100 org-export-html-toplevel-hlevel)
17519 (insert "<ul>\n<li>") 19101 thetoc)
19102 (push "<ul>\n<li>" thetoc)
17520 (setq lines 19103 (setq lines
17521 (mapcar '(lambda (line) 19104 (mapcar '(lambda (line)
17522 (if (string-match org-todo-line-regexp line) 19105 (if (string-match org-todo-line-regexp line)
17523 ;; This is a headline 19106 ;; This is a headline
17524 (progn 19107 (progn
17525 (setq level (- (match-end 1) (match-beginning 1)) 19108 (setq have-headings t)
17526 level (org-tr-level level) 19109 (setq level (- (match-end 1) (match-beginning 1))
17527 txt (save-match-data 19110 level (org-tr-level level)
17528 (org-html-expand 19111 txt (save-match-data
17529 (org-export-cleanup-toc-line 19112 (org-html-expand
17530 (match-string 3 line)))) 19113 (org-export-cleanup-toc-line
17531 todo 19114 (match-string 3 line))))
17532 (or (and org-export-mark-todo-in-toc 19115 todo
17533 (match-beginning 2) 19116 (or (and org-export-mark-todo-in-toc
17534 (not (equal (match-string 2 line) 19117 (match-beginning 2)
17535 org-done-string))) 19118 (not (member (match-string 2 line)
19119 org-done-keywords)))
17536 ; TODO, not DONE 19120 ; TODO, not DONE
17537 (and org-export-mark-todo-in-toc 19121 (and org-export-mark-todo-in-toc
17538 (= level umax-toc) 19122 (= level umax-toc)
17539 (org-search-todo-below 19123 (org-search-todo-below
17540 line lines level)))) 19124 line lines level))))
17541 (if (and (memq org-export-with-tags '(not-in-toc nil)) 19125 (if (and (memq org-export-with-tags '(not-in-toc nil))
17542 (string-match "[ \t]+:[a-zA-Z0-9_@:]+:[ \t]*$" txt)) 19126 (string-match "[ \t]+:[a-zA-Z0-9_@:]+:[ \t]*$" txt))
17543 (setq txt (replace-match "" t t txt))) 19127 (setq txt (replace-match "" t t txt)))
17544 (if (string-match quote-re0 txt) 19128 (if (string-match quote-re0 txt)
17545 (setq txt (replace-match "" t t txt))) 19129 (setq txt (replace-match "" t t txt)))
17546 (if org-export-with-section-numbers 19130 (if org-export-with-section-numbers
17547 (setq txt (concat (org-section-number level) 19131 (setq txt (concat (org-section-number level)
17548 " " txt))) 19132 " " txt)))
17549 (if (<= level umax-toc) 19133 (if (<= level (max umax umax-toc))
17550 (progn 19134 (setq head-count (+ head-count 1)))
17551 (setq head-count (+ head-count 1)) 19135 (if (<= level umax-toc)
17552 (if (> level org-last-level) 19136 (progn
17553 (progn 19137 (if (> level org-last-level)
17554 (setq cnt (- level org-last-level)) 19138 (progn
17555 (while (>= (setq cnt (1- cnt)) 0) 19139 (setq cnt (- level org-last-level))
17556 (insert "\n<ul>\n<li>")) 19140 (while (>= (setq cnt (1- cnt)) 0)
17557 (insert "\n"))) 19141 (push "\n<ul>\n<li>" thetoc))
17558 (if (< level org-last-level) 19142 (push "\n" thetoc)))
17559 (progn 19143 (if (< level org-last-level)
17560 (setq cnt (- org-last-level level)) 19144 (progn
17561 (while (>= (setq cnt (1- cnt)) 0) 19145 (setq cnt (- org-last-level level))
17562 (insert "</li>\n</ul>")) 19146 (while (>= (setq cnt (1- cnt)) 0)
17563 (insert "\n"))) 19147 (push "</li>\n</ul>" thetoc))
17564 ;; Check for targets 19148 (push "\n" thetoc)))
17565 (while (string-match org-target-regexp line) 19149 ;; Check for targets
17566 (setq tg (match-string 1 line) 19150 (while (string-match org-target-regexp line)
17567 line (replace-match 19151 (setq tg (match-string 1 line)
17568 (concat "@<span class=\"target\">" tg "@</span> ") 19152 line (replace-match
17569 t t line)) 19153 (concat "@<span class=\"target\">" tg "@</span> ")
17570 (push (cons (org-solidify-link-text tg) 19154 t t line))
17571 (format "sec-%d" head-count)) 19155 (push (cons (org-solidify-link-text tg)
17572 target-alist)) 19156 (format "sec-%d" head-count))
17573 (while (string-match "&lt;\\(&lt;\\)+\\|&gt;\\(&gt;\\)+" txt) 19157 target-alist))
17574 (setq txt (replace-match "" t t txt))) 19158 (while (string-match "&lt;\\(&lt;\\)+\\|&gt;\\(&gt;\\)+" txt)
17575 (insert 19159 (setq txt (replace-match "" t t txt)))
17576 (format 19160 (push
17577 (if todo 19161 (format
17578 "</li>\n<li><a href=\"#sec-%d\"><span class=\"todo\">%s</span></a>" 19162 (if todo
17579 "</li>\n<li><a href=\"#sec-%d\">%s</a>") 19163 "</li>\n<li><a href=\"#sec-%d\"><span class=\"todo\">%s</span></a>"
17580 head-count txt)) 19164 "</li>\n<li><a href=\"#sec-%d\">%s</a>")
17581 19165 head-count txt) thetoc)
17582 (setq org-last-level level)) 19166
17583 ))) 19167 (setq org-last-level level))
17584 line) 19168 )))
17585 lines)) 19169 line)
19170 lines))
17586 (while (> org-last-level 0) 19171 (while (> org-last-level 0)
17587 (setq org-last-level (1- org-last-level)) 19172 (setq org-last-level (1- org-last-level))
17588 (insert "</li>\n</ul>\n")) 19173 (push "</li>\n</ul>\n" thetoc))
17589 )) 19174 (setq thetoc (if have-headings (nreverse thetoc) nil))))
19175
17590 (setq head-count 0) 19176 (setq head-count 0)
17591 (org-init-section-numbers) 19177 (org-init-section-numbers)
17592 19178
@@ -17618,7 +19204,16 @@ lang=\"%s\" xml:lang=\"%s\">
17618 19204
17619 ;; Protected HTML 19205 ;; Protected HTML
17620 (when (get-text-property 0 'org-protected line) 19206 (when (get-text-property 0 'org-protected line)
17621 (insert line "\n") 19207 (let (par)
19208 (when (re-search-backward
19209 "\\(<p>\\)\\([ \t\r\n]*\\)\\=" (- (point) 100) t)
19210 (setq par (match-string 1))
19211 (replace-match "\\2\n"))
19212 (insert line "\n")
19213 (while (and lines
19214 (get-text-property 0 'org-protected (car lines)))
19215 (insert (pop lines) "\n"))
19216 (and par (insert "<p>\n")))
17622 (throw 'nextline nil)) 19217 (throw 'nextline nil))
17623 19218
17624 ;; Horizontal line 19219 ;; Horizontal line
@@ -17676,7 +19271,8 @@ lang=\"%s\" xml:lang=\"%s\">
17676 (setq rpl 19271 (setq rpl
17677 (concat 19272 (concat
17678 "<a href=\"#" 19273 "<a href=\"#"
17679 (org-solidify-link-text path target-alist) 19274 (org-solidify-link-text
19275 (save-match-data (org-link-unescape path)) target-alist)
17680 "\">" desc "</a>"))) 19276 "\">" desc "</a>")))
17681 ((member type '("http" "https")) ; FIXME: need to test this. 19277 ((member type '("http" "https")) ; FIXME: need to test this.
17682 ;; standard URL, just check if we need to inline an image 19278 ;; standard URL, just check if we need to inline an image
@@ -17738,12 +19334,24 @@ lang=\"%s\" xml:lang=\"%s\">
17738 ;; TODO items 19334 ;; TODO items
17739 (if (and (string-match org-todo-line-regexp line) 19335 (if (and (string-match org-todo-line-regexp line)
17740 (match-beginning 2)) 19336 (match-beginning 2))
17741 (if (equal (match-string 2 line) org-done-string) 19337 (if (member (match-string 2 line) org-done-keywords)
17742 (setq line (replace-match 19338 (setq line (replace-match
17743 "<span class=\"done\">\\2</span>" 19339 "<span class=\"done\">\\2</span>"
17744 t nil line 2)) 19340 t nil line 2))
17745 (setq line (replace-match "<span class=\"todo\">\\2</span>" 19341 (setq line
17746 t nil line 2)))) 19342 (concat (substring line 0 (match-beginning 2))
19343 "<span class=\"todo\">" (match-string 2 line)
19344 "</span>" (substring line (match-end 2))))))
19345
19346 ;; Does this contain a reference to a footnote?
19347 (while (string-match "\\([^* \t].*?\\)\\[\\([0-9]+\\)\\]" line)
19348 (let ((n (match-string 2 line)))
19349 (setq line
19350 (replace-match
19351 (format
19352 "%s<sup><a class=\"footref\" name=\"fnr.%s\" href=\"#fn.%s\">%s</a></sup>"
19353 (match-string 1 line) n n n)
19354 t t line))))
17747 19355
17748 (cond 19356 (cond
17749 ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line) 19357 ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line)
@@ -17752,7 +19360,8 @@ lang=\"%s\" xml:lang=\"%s\">
17752 txt (match-string 2 line)) 19360 txt (match-string 2 line))
17753 (if (string-match quote-re0 txt) 19361 (if (string-match quote-re0 txt)
17754 (setq txt (replace-match "" t t txt))) 19362 (setq txt (replace-match "" t t txt)))
17755 (if (<= level umax) (setq head-count (+ head-count 1))) 19363 (if (<= level (max umax umax-toc))
19364 (setq head-count (+ head-count 1)))
17756 (when in-local-list 19365 (when in-local-list
17757 ;; Close any local lists before inserting a new header line 19366 ;; Close any local lists before inserting a new header line
17758 (while local-list-num 19367 (while local-list-num
@@ -17761,6 +19370,7 @@ lang=\"%s\" xml:lang=\"%s\">
17761 (pop local-list-num)) 19370 (pop local-list-num))
17762 (setq local-list-indent nil 19371 (setq local-list-indent nil
17763 in-local-list nil)) 19372 in-local-list nil))
19373 (setq first-heading-pos (or first-heading-pos (point)))
17764 (org-html-level-start level txt umax 19374 (org-html-level-start level txt umax
17765 (and org-export-with-toc (<= level umax)) 19375 (and org-export-with-toc (<= level umax))
17766 head-count) 19376 head-count)
@@ -17801,11 +19411,15 @@ lang=\"%s\" xml:lang=\"%s\">
17801 line (substring line (match-beginning 5))) 19411 line (substring line (match-beginning 5)))
17802 (unless (string-match "[^ \t]" line) 19412 (unless (string-match "[^ \t]" line)
17803 ;; empty line. Pretend indentation is large. 19413 ;; empty line. Pretend indentation is large.
17804 (setq ind (1+ (or (car local-list-indent) 1)))) 19414 (setq ind (if org-empty-line-terminates-plain-lists
19415 0
19416 (1+ (or (car local-list-indent) 1)))))
19417 (setq didclose nil)
17805 (while (and in-local-list 19418 (while (and in-local-list
17806 (or (and (= ind (car local-list-indent)) 19419 (or (and (= ind (car local-list-indent))
17807 (not starter)) 19420 (not starter))
17808 (< ind (car local-list-indent)))) 19421 (< ind (car local-list-indent))))
19422 (setq didclose t)
17809 (org-close-li) 19423 (org-close-li)
17810 (insert (if (car local-list-num) "</ol>\n" "</ul>")) 19424 (insert (if (car local-list-num) "</ol>\n" "</ul>"))
17811 (pop local-list-num) (pop local-list-indent) 19425 (pop local-list-num) (pop local-list-indent)
@@ -17814,7 +19428,7 @@ lang=\"%s\" xml:lang=\"%s\">
17814 ((and starter 19428 ((and starter
17815 (or (not in-local-list) 19429 (or (not in-local-list)
17816 (> ind (car local-list-indent)))) 19430 (> ind (car local-list-indent))))
17817 ;; Start new (level of ) list 19431 ;; Start new (level of) list
17818 (org-close-par-maybe) 19432 (org-close-par-maybe)
17819 (insert (if start-is-num "<ol>\n<li>\n" "<ul>\n<li>\n")) 19433 (insert (if start-is-num "<ol>\n<li>\n" "<ul>\n<li>\n"))
17820 (push start-is-num local-list-num) 19434 (push start-is-num local-list-num)
@@ -17823,7 +19437,10 @@ lang=\"%s\" xml:lang=\"%s\">
17823 (starter 19437 (starter
17824 ;; continue current list 19438 ;; continue current list
17825 (org-close-li) 19439 (org-close-li)
17826 (insert "<li>\n"))) 19440 (insert "<li>\n"))
19441 (didclose
19442 ;; we did close a list, normal text follows: need <p>
19443 (org-open-par)))
17827 (if (string-match "^[ \t]*\\[\\([X ]\\)\\]" line) 19444 (if (string-match "^[ \t]*\\[\\([X ]\\)\\]" line)
17828 (setq line 19445 (setq line
17829 (replace-match 19446 (replace-match
@@ -17837,6 +19454,13 @@ lang=\"%s\" xml:lang=\"%s\">
17837 ;; also start a new paragraph. 19454 ;; also start a new paragraph.
17838 (if (string-match "^ [-+*]-\\|^[ \t]*$" line) (org-open-par)) 19455 (if (string-match "^ [-+*]-\\|^[ \t]*$" line) (org-open-par))
17839 19456
19457 ;; Is this the start of a footnote?
19458 (when (string-match "^[ \t]*\\[\\([0-9]+\\)\\]" line)
19459 (org-close-par-maybe)
19460 (let ((n (match-string 1 line)))
19461 (setq line (replace-match
19462 (format "<p class=\"footnote\"><sup><a class=\"footnum\" name=\"fn.%s\" href=\"#fnr.%s\">%s</a></sup>" n n n) t t line))))
19463
17840 ;; Check if the line break needs to be conserved 19464 ;; Check if the line break needs to be conserved
17841 (cond 19465 (cond
17842 ((string-match "\\\\\\\\[ \t]*$" line) 19466 ((string-match "\\\\\\\\[ \t]*$" line)
@@ -17860,24 +19484,43 @@ lang=\"%s\" xml:lang=\"%s\">
17860 (and org-export-with-toc (<= level umax)) 19484 (and org-export-with-toc (<= level umax))
17861 head-count) 19485 head-count)
17862 19486
17863 (when (plist-get opt-plist :auto-postamble) 19487 (unless body-only
17864 (when author 19488 (when (plist-get opt-plist :auto-postamble)
17865 (insert "<p class=\"author\"> " 19489 (when author
17866 (nth 1 lang-words) ": " author "\n") 19490 (insert "<p class=\"author\"> "
17867 (when email 19491 (nth 1 lang-words) ": " author "\n")
17868 (insert "<a href=\"mailto:" email "\">&lt;" 19492 (when email
17869 email "&gt;</a>\n")) 19493 (insert "<a href=\"mailto:" email "\">&lt;"
17870 (insert "</p>\n")) 19494 email "&gt;</a>\n"))
17871 (when (and date time) 19495 (insert "</p>\n"))
17872 (insert "<p class=\"date\"> " 19496 (when (and date time)
17873 (nth 2 lang-words) ": " 19497 (insert "<p class=\"date\"> "
17874 date " " time "</p>\n"))) 19498 (nth 2 lang-words) ": "
17875 19499 date " " time "</p>\n")))
17876 (if org-export-html-with-timestamp 19500
17877 (insert org-export-html-html-helper-timestamp)) 19501 (if org-export-html-with-timestamp
17878 (insert (or (plist-get opt-plist :postamble) "")) 19502 (insert org-export-html-html-helper-timestamp))
17879 (insert "</body>\n</html>\n") 19503 (insert (or (plist-get opt-plist :postamble) ""))
19504 (insert "</body>\n</html>\n"))
19505
17880 (normal-mode) 19506 (normal-mode)
19507 (if (eq major-mode default-major-mode) (html-mode))
19508
19509 ;; insert the table of contents
19510 (goto-char (point-min))
19511 (when thetoc
19512 (if (or (re-search-forward
19513 "<p>\\s-*\\[TABLE-OF-CONTENTS\\]\\s-*</p>" nil t)
19514 (re-search-forward
19515 "\\[TABLE-OF-CONTENTS\\]" nil t))
19516 (progn
19517 (goto-char (match-beginning 0))
19518 (replace-match ""))
19519 (goto-char first-heading-pos)
19520 (when (looking-at "\\s-*</p>")
19521 (goto-char (match-end 0))
19522 (insert "\n")))
19523 (mapc 'insert thetoc))
17881 ;; remove empty paragraphs and lists 19524 ;; remove empty paragraphs and lists
17882 (goto-char (point-min)) 19525 (goto-char (point-min))
17883 (while (re-search-forward "<p>[ \r\n\t]*</p>" nil t) 19526 (while (re-search-forward "<p>[ \r\n\t]*</p>" nil t)
@@ -17885,13 +19528,62 @@ lang=\"%s\" xml:lang=\"%s\">
17885 (goto-char (point-min)) 19528 (goto-char (point-min))
17886 (while (re-search-forward "<li>[ \r\n\t]*</li>\n?" nil t) 19529 (while (re-search-forward "<li>[ \r\n\t]*</li>\n?" nil t)
17887 (replace-match "")) 19530 (replace-match ""))
17888 (save-buffer) 19531 (or to-buffer (save-buffer))
17889 (goto-char (point-min)) 19532 (goto-char (point-min))
17890 (message "Exporting... done")))) 19533 (message "Exporting... done")
19534 (if (eq to-buffer 'string)
19535 (prog1 (buffer-substring (point-min) (point-max))
19536 (kill-buffer (current-buffer)))
19537 (current-buffer)))))
19538
19539(defvar org-table-colgroup-info nil) ;; FIXME: mode to a better place
19540(defun org-format-table-ascii (lines)
19541 "Format a table for ascii export."
19542 (if (stringp lines)
19543 (setq lines (org-split-string lines "\n")))
19544 (if (not (string-match "^[ \t]*|" (car lines)))
19545 ;; Table made by table.el - test for spanning
19546 lines
19547
19548 ;; A normal org table
19549 ;; Get rid of hlines at beginning and end
19550 (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines)))
19551 (setq lines (nreverse lines))
19552 (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines)))
19553 (setq lines (nreverse lines))
19554 (when org-export-table-remove-special-lines
19555 ;; Check if the table has a marking column. If yes remove the
19556 ;; column and the special lines
19557 (setq lines (org-table-clean-before-export lines)))
19558 ;; Get rid of the vertical lines except for grouping
19559 (let ((vl (org-colgroup-info-to-vline-list org-table-colgroup-info))
19560 rtn line vl1 start)
19561 (while (setq line (pop lines))
19562 (if (string-match org-table-hline-regexp line)
19563 (and (string-match "|\\(.*\\)|" line)
19564 (setq line (replace-match " \\1" t nil line)))
19565 (setq start 0 vl1 vl)
19566 (while (string-match "|" line start)
19567 (setq start (match-end 0))
19568 (or (pop vl1) (setq line (replace-match " " t t line)))))
19569 (push line rtn))
19570 (nreverse rtn))))
19571
19572(defun org-colgroup-info-to-vline-list (info)
19573 (let (vl new last rtn line)
19574 (while info
19575 (setq last new new (pop info))
19576 (if (or (memq last '(:end :startend))
19577 (memq new '(:start :startend)))
19578 (push t vl)
19579 (push nil vl)))
19580 (setq vl (cons nil (nreverse vl)))))
17891 19581
17892 19582
17893(defun org-format-table-html (lines olines) 19583(defun org-format-table-html (lines olines)
17894 "Find out which HTML converter to use and return the HTML code." 19584 "Find out which HTML converter to use and return the HTML code."
19585 (if (stringp lines)
19586 (setq lines (org-split-string lines "\n")))
17895 (if (string-match "^[ \t]*|" (car lines)) 19587 (if (string-match "^[ \t]*|" (car lines))
17896 ;; A normal org table 19588 ;; A normal org table
17897 (org-format-org-table-html lines) 19589 (org-format-org-table-html lines)
@@ -17931,7 +19623,7 @@ lang=\"%s\" xml:lang=\"%s\">
17931 (lambda (x) (string-match "^[ \t]*|-" x)) 19623 (lambda (x) (string-match "^[ \t]*|-" x))
17932 (cdr lines))))) 19624 (cdr lines)))))
17933 (nlines 0) fnum i 19625 (nlines 0) fnum i
17934 tbopen line fields html) 19626 tbopen line fields html gr)
17935 (if splice (setq head nil)) 19627 (if splice (setq head nil))
17936 (unless splice (push (if head "<thead>" "<tbody>") html)) 19628 (unless splice (push (if head "<thead>" "<tbody>") html))
17937 (setq tbopen t) 19629 (setq tbopen t)
@@ -17939,7 +19631,7 @@ lang=\"%s\" xml:lang=\"%s\">
17939 (catch 'next-line 19631 (catch 'next-line
17940 (if (string-match "^[ \t]*|-" line) 19632 (if (string-match "^[ \t]*|-" line)
17941 (progn 19633 (progn
17942 (unless splice 19634 (unless splice
17943 (push (if head "</thead>" "</tbody>") html) 19635 (push (if head "</thead>" "</tbody>") html)
17944 (if lines (push "<tbody>" html) (setq tbopen nil))) 19636 (if lines (push "<tbody>" html) (setq tbopen nil)))
17945 (setq head nil) ;; head ends here, first time around 19637 (setq head nil) ;; head ends here, first time around
@@ -17957,8 +19649,10 @@ lang=\"%s\" xml:lang=\"%s\">
17957 (string-match org-table-number-regexp x)) 19649 (string-match org-table-number-regexp x))
17958 (incf (aref fnum i))) 19650 (incf (aref fnum i)))
17959 (if head 19651 (if head
17960 (concat "<th>" x "</th>") 19652 (concat (car org-export-table-header-tags) x
17961 (concat "<td>" x "</td>"))) 19653 (cdr org-export-table-header-tags))
19654 (concat (car org-export-table-data-tags) x
19655 (cdr org-export-table-data-tags))))
17962 fields "") 19656 fields "")
17963 "</tr>") 19657 "</tr>")
17964 html))) 19658 html)))
@@ -17969,9 +19663,12 @@ lang=\"%s\" xml:lang=\"%s\">
17969 ;; Put in COL tags with the alignment (unfortuntely often ignored...) 19663 ;; Put in COL tags with the alignment (unfortuntely often ignored...)
17970 (push (mapconcat 19664 (push (mapconcat
17971 (lambda (x) 19665 (lambda (x)
17972 (format "<COL align=\"%s\">" 19666 (setq gr (pop org-table-colgroup-info))
19667 (format "%s<COL align=\"%s\">%s"
19668 (if (memq gr '(:start :startend)) "<colgroup>" "")
17973 (if (> (/ (float x) nlines) org-table-number-fraction) 19669 (if (> (/ (float x) nlines) org-table-number-fraction)
17974 "right" "left"))) 19670 "right" "left")
19671 (if (memq gr '(:end :startend)) "</colgroup>" "")))
17975 fnum "") 19672 fnum "")
17976 html) 19673 html)
17977 (push org-export-html-table-tag html)) 19674 (push org-export-html-table-tag html))
@@ -17980,34 +19677,52 @@ lang=\"%s\" xml:lang=\"%s\">
17980(defun org-table-clean-before-export (lines) 19677(defun org-table-clean-before-export (lines)
17981 "Check if the table has a marking column. 19678 "Check if the table has a marking column.
17982If yes remove the column and the special lines." 19679If yes remove the column and the special lines."
19680 (setq org-table-colgroup-info nil)
17983 (if (memq nil 19681 (if (memq nil
17984 (mapcar 19682 (mapcar
17985 (lambda (x) (or (string-match "^[ \t]*|-" x) 19683 (lambda (x) (or (string-match "^[ \t]*|-" x)
17986 (string-match "^[ \t]*| *\\([#!$*_^ /]\\) *|" x))) 19684 (string-match "^[ \t]*| *\\([#!$*_^ /]\\) *|" x)))
17987 lines)) 19685 lines))
17988 (progn 19686 (progn
17989 (setq org-table-clean-did-remove-column-1 nil) 19687 (setq org-table-clean-did-remove-column nil)
17990 lines) 19688 (delq nil
17991 (setq org-table-clean-did-remove-column-1 t) 19689 (mapcar
19690 (lambda (x)
19691 (cond
19692 ((string-match "^[ \t]*| */ *|" x)
19693 (setq org-table-colgroup-info
19694 (mapcar (lambda (x)
19695 (cond ((member x '("<" "&lt;")) :start)
19696 ((member x '(">" "&gt;")) :end)
19697 ((member x '("<>" "&lt;&gt;")) :startend)
19698 (t nil)))
19699 (org-split-string x "[ \t]*|[ \t]*")))
19700 nil)
19701 (t x)))
19702 lines)))
19703 (setq org-table-clean-did-remove-column t)
17992 (delq nil 19704 (delq nil
17993 (mapcar 19705 (mapcar
17994 (lambda (x) (if (string-match "^[ \t]*| *[!_^/] *|" x) 19706 (lambda (x)
17995 nil ; ignore this line 19707 (cond
17996 (and (or (string-match "^[ \t]*|-+\\+" x) 19708 ((string-match "^[ \t]*| */ *|" x)
17997 (string-match "^[ \t]*|[^|]*|" x)) 19709 (setq org-table-colgroup-info
17998 (replace-match "|" t t x)))) 19710 (mapcar (lambda (x)
19711 (cond ((member x '("<" "&lt;")) :start)
19712 ((member x '(">" "&gt;")) :end)
19713 ((member x '("<>" "&lt;&gt;")) :startend)
19714 (t nil)))
19715 (cdr (org-split-string x "[ \t]*|[ \t]*"))))
19716 nil)
19717 ((string-match "^[ \t]*| *[!_^/] *|" x)
19718 nil) ; ignore this line
19719 ((or (string-match "^\\([ \t]*\\)|-+\\+" x)
19720 (string-match "^\\([ \t]*\\)|[^|]*|" x))
19721 ;; remove the first column
19722 (replace-match "\\1|" t nil x))
19723 (t (error "This should not happen"))))
17999 lines)))) 19724 lines))))
18000 19725
18001(defun org-fake-empty-table-line (line)
18002 "Replace everything except \"|\" with spaces."
18003 (let ((i (length line))
18004 (newstr (copy-sequence line)))
18005 (while (> i 0)
18006 (setq i (1- i))
18007 (if (not (eq (aref newstr i) ?|))
18008 (aset newstr i ?\ )))
18009 newstr))
18010
18011(defun org-format-table-table-html (lines) 19726(defun org-format-table-table-html (lines)
18012 "Format a table generated by table.el into HTML. 19727 "Format a table generated by table.el into HTML.
18013This conversion does *not* use `table-generate-source' from table.el. 19728This conversion does *not* use `table-generate-source' from table.el.
@@ -18024,17 +19739,21 @@ But it has the disadvantage, that no cell- or row-spanning is allowed."
18024 (progn 19739 (progn
18025 (if field-buffer 19740 (if field-buffer
18026 (progn 19741 (progn
18027 (setq html (concat 19742 (setq
18028 html 19743 html
18029 "<tr>" 19744 (concat
18030 (mapconcat 19745 html
18031 (lambda (x) 19746 "<tr>"
18032 (if (equal x "") (setq x empty)) 19747 (mapconcat
18033 (if head 19748 (lambda (x)
18034 (concat "<th>" x "</th>\n") 19749 (if (equal x "") (setq x empty))
18035 (concat "<td>" x "</td>\n"))) 19750 (if head
18036 field-buffer "\n") 19751 (concat (car org-export-table-header-tags) x
18037 "</tr>\n")) 19752 (cdr org-export-table-header-tags))
19753 (concat (car org-export-table-data-tags) x
19754 (cdr org-export-table-data-tags))))
19755 field-buffer "\n")
19756 "</tr>\n"))
18038 (setq head nil) 19757 (setq head nil)
18039 (setq field-buffer nil))) 19758 (setq field-buffer nil)))
18040 ;; Ignore this line 19759 ;; Ignore this line
@@ -18115,6 +19834,9 @@ But it has the disadvantage, that Org-mode's HTML conversions cannot be used."
18115 (when org-export-remove-timestamps-from-toc 19834 (when org-export-remove-timestamps-from-toc
18116 (while (string-match org-maybe-keyword-time-regexp s) 19835 (while (string-match org-maybe-keyword-time-regexp s)
18117 (setq s (replace-match "" t t s)))) 19836 (setq s (replace-match "" t t s))))
19837 (while (string-match org-bracket-link-regexp s)
19838 (setq s (replace-match (match-string (if (match-end 3) 3 1) s)
19839 t t s)))
18118 s) 19840 s)
18119 19841
18120(defun org-html-expand (string) 19842(defun org-html-expand (string)
@@ -18179,27 +19901,42 @@ stacked delimiters is N. Escaping delimiters is not possible."
18179 "\\(\\(?:\\*\\|[-+]?[^-+*!@#$%^_ \t\r\n,:\"?<>~;./{}=()]+\\)\\)\\)") 19901 "\\(\\(?:\\*\\|[-+]?[^-+*!@#$%^_ \t\r\n,:\"?<>~;./{}=()]+\\)\\)\\)")
18180 "The regular expression matching a sub- or superscript.") 19902 "The regular expression matching a sub- or superscript.")
18181 19903
19904;(let ((s "a\\_b"))
19905; (and (string-match org-match-substring-regexp s)
19906; (conca t (match-string 1 s) ":::" (match-string 2 s))))
19907
18182(defun org-export-html-convert-sub-super (string) 19908(defun org-export-html-convert-sub-super (string)
18183 "Convert sub- and superscripts in STRING to HTML." 19909 "Convert sub- and superscripts in STRING to HTML."
18184 (let (key c) 19910 (let (key c (s 0) (requireb (eq org-export-with-sub-superscripts '{})))
18185 (while (string-match org-match-substring-regexp string) 19911 (while (string-match org-match-substring-regexp string s)
18186 (setq key (if (string= (match-string 2 string) "_") "sub" "sup")) 19912 (if (and requireb (match-end 8))
18187 (setq c (or (match-string 8 string) 19913 (setq s (match-end 2))
18188 (match-string 6 string) 19914 (setq s (match-end 1)
18189 (match-string 5 string))) 19915 key (if (string= (match-string 2 string) "_") "sub" "sup")
18190 (setq string (replace-match 19916 c (or (match-string 8 string)
18191 (concat (match-string 1 string) 19917 (match-string 6 string)
18192 "<" key ">" c "</" key ">") 19918 (match-string 5 string))
18193 t t string))) 19919 string (replace-match
19920 (concat (match-string 1 string)
19921 "<" key ">" c "</" key ">")
19922 t t string))))
18194 (while (string-match "\\\\\\([_^]\\)" string) 19923 (while (string-match "\\\\\\([_^]\\)" string)
18195 (setq string (replace-match (match-string 1 string) t t string)))) 19924 (setq string (replace-match (match-string 1 string) t t string)))
18196 string) 19925 string))
18197 19926
18198(defun org-export-html-convert-emphasize (string) 19927(defun org-export-html-convert-emphasize (string)
18199 "Apply emphasis." 19928 "Apply emphasis."
18200 (while (string-match org-emph-re string) 19929 (let ((s 0))
18201 (setq string (replace-match (concat "\\1" (nth 2 (assoc (match-string 3 string) org-emphasis-alist)) "\\4" (nth 3 (assoc (match-string 3 string) org-emphasis-alist)) "\\5") t nil string))) 19930 (while (string-match org-emph-re string s)
18202 string) 19931 (if (not (equal
19932 (substring string (match-beginning 3) (1+ (match-beginning 3)))
19933 (substring string (match-beginning 4) (1+ (match-beginning 4)))))
19934 (setq string (replace-match
19935 (concat "\\1" (nth 2 (assoc (match-string 3 string) org-emphasis-alist))
19936 "\\4" (nth 3 (assoc (match-string 3 string) org-emphasis-alist))
19937 "\\5") t nil string))
19938 (setq s (1+ s))))
19939 string))
18203 19940
18204(defvar org-par-open nil) 19941(defvar org-par-open nil)
18205(defun org-open-par () 19942(defun org-open-par ()
@@ -18216,10 +19953,6 @@ stacked delimiters is N. Escaping delimiters is not possible."
18216 "Close <li> if necessary." 19953 "Close <li> if necessary."
18217 (org-close-par-maybe) 19954 (org-close-par-maybe)
18218 (insert "</li>\n")) 19955 (insert "</li>\n"))
18219; (when (save-excursion
18220; (re-search-backward "</?\\(ul\\|ol\\|li\\|[hH][0-9]\\)>" nil t))
18221; (if (member (match-string 0) '("</ul>" "</ol>" "<li>"))
18222; (insert "</li>"))))
18223 19956
18224(defun org-html-level-start (level title umax with-toc head-count) 19957(defun org-html-level-start (level title umax with-toc head-count)
18225 "Insert a new level in HTML export. 19958 "Insert a new level in HTML export.
@@ -18260,7 +19993,7 @@ When TITLE is nil, just close all open levels."
18260 (setq title (concat (org-section-number level) " " title))) 19993 (setq title (concat (org-section-number level) " " title)))
18261 (setq level (+ level org-export-html-toplevel-hlevel -1)) 19994 (setq level (+ level org-export-html-toplevel-hlevel -1))
18262 (if with-toc 19995 (if with-toc
18263 (insert (format "\n<h%d><a name=\"sec-%d\">%s</a></h%d>\n" 19996 (insert (format "\n<h%d id=\"sec-%d\">%s</h%d>\n"
18264 level head-count title level)) 19997 level head-count title level))
18265 (insert (format "\n<h%d>%s</h%d>\n" level title level))) 19998 (insert (format "\n<h%d>%s</h%d>\n" level title level)))
18266 (org-open-par))))) 19999 (org-open-par)))))
@@ -18268,7 +20001,7 @@ When TITLE is nil, just close all open levels."
18268(defun org-html-level-close (&rest args) 20001(defun org-html-level-close (&rest args)
18269 "Terminate one level in HTML export." 20002 "Terminate one level in HTML export."
18270 (org-close-li) 20003 (org-close-li)
18271 (insert "</ul>")) 20004 (insert "</ul>\n"))
18272 20005
18273;;; iCalendar export 20006;;; iCalendar export
18274 20007
@@ -18300,11 +20033,13 @@ The file is stored under the name `org-combined-agenda-icalendar-file'."
18300If COMBINE is non-nil, combine all calendar entries into a single large 20033If COMBINE is non-nil, combine all calendar entries into a single large
18301file and store it under the name `org-combined-agenda-icalendar-file'." 20034file and store it under the name `org-combined-agenda-icalendar-file'."
18302 (save-excursion 20035 (save-excursion
20036 (org-prepare-agenda-buffers files)
18303 (let* ((dir (org-export-directory 20037 (let* ((dir (org-export-directory
18304 :ical (list :publishing-directory 20038 :ical (list :publishing-directory
18305 org-export-publishing-directory))) 20039 org-export-publishing-directory)))
18306 file ical-file ical-buffer category started org-agenda-new-buffers) 20040 file ical-file ical-buffer category started org-agenda-new-buffers)
18307 20041
20042 (and (get-buffer "*ical-tmp*") (kill-buffer "*ical-tmp*"))
18308 (when combine 20043 (when combine
18309 (setq ical-file 20044 (setq ical-file
18310 (if (file-name-absolute-p org-combined-agenda-icalendar-file) 20045 (if (file-name-absolute-p org-combined-agenda-icalendar-file)
@@ -18349,70 +20084,112 @@ the iCalendar file.")
18349(defun org-print-icalendar-entries (&optional combine) 20084(defun org-print-icalendar-entries (&optional combine)
18350 "Print iCalendar entries for the current Org-mode file to `standard-output'. 20085 "Print iCalendar entries for the current Org-mode file to `standard-output'.
18351When COMBINE is non nil, add the category to each line." 20086When COMBINE is non nil, add the category to each line."
18352 (let ((re2 (concat "--?-?\\(" org-ts-regexp "\\)")) 20087 (let ((re1 (concat org-ts-regexp "\\|<%%([^>\n]+>"))
20088 (re2 (concat "--?-?\\(" org-ts-regexp "\\)"))
18353 (org-category-table (org-get-category-table)) 20089 (org-category-table (org-get-category-table))
18354 (dts (org-ical-ts-to-string 20090 (dts (org-ical-ts-to-string
18355 (format-time-string (cdr org-time-stamp-formats) (current-time)) 20091 (format-time-string (cdr org-time-stamp-formats) (current-time))
18356 "DTSTART")) 20092 "DTSTART"))
18357 hd ts ts2 state status (inc t) pos 20093 hd ts ts2 state status (inc t) pos b sexp rrule
18358 scheduledp deadlinep tmp pri category) 20094 scheduledp deadlinep tmp pri category
20095 (sexp-buffer (get-buffer-create "*ical-tmp*")))
18359 (save-excursion 20096 (save-excursion
18360 (goto-char (point-min)) 20097 (goto-char (point-min))
18361 (while (re-search-forward org-ts-regexp nil t) 20098 (while (re-search-forward re1 nil t)
18362 (setq pos (match-beginning 0) 20099 (catch :skip
18363 ts (match-string 0) 20100 (org-agenda-skip)
18364 inc t 20101 (setq pos (match-beginning 0)
18365 hd (org-get-heading) 20102 ts (match-string 0)
18366 category (org-get-category)) 20103 inc t
18367 (if (looking-at re2) 20104 hd (org-get-heading)
18368 (progn 20105 category (org-get-category))
18369 (goto-char (match-end 0)) 20106 (if (looking-at re2)
18370 (setq ts2 (match-string 1) inc nil)) 20107 (progn
18371 (setq ts2 ts 20108 (goto-char (match-end 0))
18372 tmp (buffer-substring (max (point-min) 20109 (setq ts2 (match-string 1) inc nil))
20110 (setq ts2 ts
20111 tmp (buffer-substring (max (point-min)
18373 (- pos org-ds-keyword-length)) 20112 (- pos org-ds-keyword-length))
18374 pos) 20113 pos)
18375 deadlinep (string-match org-deadline-regexp tmp) 20114 deadlinep (string-match org-deadline-regexp tmp)
18376 scheduledp (string-match org-scheduled-regexp tmp) 20115 scheduledp (string-match org-scheduled-regexp tmp)
18377 ;; donep (org-entry-is-done-p) 20116 ;; donep (org-entry-is-done-p)
18378 )) 20117 ))
18379 (if (or (string-match org-tr-regexp hd) 20118 (if (or (string-match org-tr-regexp hd)
18380 (string-match org-ts-regexp hd)) 20119 (string-match org-ts-regexp hd))
18381 (setq hd (replace-match "" t t hd))) 20120 (setq hd (replace-match "" t t hd)))
18382 (if (string-match org-bracket-link-regexp hd) 20121 (if (string-match "\\+\\([0-9]+\\)\\([dwmy]\\)>" ts)
18383 (setq hd (replace-match (if (match-end 3) (match-string 3 hd) 20122 (setq rrule
18384 (match-string 1 hd)) 20123 (concat "\nRRULE:FREQ="
18385 t t hd))) 20124 (cdr (assoc
18386 (if deadlinep (setq hd (concat "DL: " hd))) 20125 (match-string 2 ts)
18387 (if scheduledp (setq hd (concat "S: " hd))) 20126 '(("d" . "DAILY")("w" . "WEEKLY")
18388 (princ (format "BEGIN:VEVENT 20127 ("m" . "MONTHLY")("y" . "YEARLY"))))
18389%s 20128 ";INTERVAL=" (match-string 1 ts)))
20129 (setq rrule ""))
20130 (if (string-match org-bracket-link-regexp hd)
20131 (setq hd (replace-match (if (match-end 3) (match-string 3 hd)
20132 (match-string 1 hd))
20133 t t hd)))
20134 (if deadlinep (setq hd (concat "DL: " hd)))
20135 (if scheduledp (setq hd (concat "S: " hd)))
20136 (if (string-match "\\`<%%" ts)
20137 (with-current-buffer sexp-buffer
20138 (insert (substring ts 1 -1) " " hd "\n"))
20139 (princ (format "BEGIN:VEVENT
18390%s 20140%s
20141%s%s
18391SUMMARY:%s 20142SUMMARY:%s
18392CATEGORIES:%s 20143CATEGORIES:%s
18393END:VEVENT\n" 20144END:VEVENT\n"
18394 (org-ical-ts-to-string ts "DTSTART") 20145 (org-ical-ts-to-string ts "DTSTART")
18395 (org-ical-ts-to-string ts2 "DTEND" inc) 20146 (org-ical-ts-to-string ts2 "DTEND" inc)
18396 hd category))) 20147 rrule hd category)))))
20148
20149 (when (and org-icalendar-include-sexps
20150 (condition-case nil (require 'icalendar) (error nil))
20151 (fboundp 'icalendar-export-region))
20152 ;; Get all the literal sexps
20153 (goto-char (point-min))
20154 (while (re-search-forward "^&?%%(" nil t)
20155 (catch :skip
20156 (org-agenda-skip)
20157 (setq b (match-beginning 0))
20158 (goto-char (1- (match-end 0)))
20159 (forward-sexp 1)
20160 (end-of-line 1)
20161 (setq sexp (buffer-substring b (point)))
20162 (with-current-buffer sexp-buffer
20163 (insert sexp "\n"))
20164 (princ (org-diary-to-ical-string sexp-buffer)))))
20165
18397 (when org-icalendar-include-todo 20166 (when org-icalendar-include-todo
18398 (goto-char (point-min)) 20167 (goto-char (point-min))
18399 (while (re-search-forward org-todo-line-regexp nil t) 20168 (while (re-search-forward org-todo-line-regexp nil t)
18400 (setq state (match-string 2)) 20169 (catch :skip
18401 (setq status (if (equal state org-done-string) 20170 (org-agenda-skip)
18402 "COMPLETED" "NEEDS-ACTION")) 20171 (setq state (match-string 2))
18403 (when (and state 20172 (setq status (if (member state org-done-keywords)
18404 (or (not (equal state org-done-string)) 20173 "COMPLETED" "NEEDS-ACTION"))
18405 (eq org-icalendar-include-todo 'all))) 20174 (when (and state
18406 (setq hd (match-string 3)) 20175 (or (not (member state org-done-keywords))
18407 (if (string-match org-priority-regexp hd) 20176 (eq org-icalendar-include-todo 'all))
18408 (setq pri (string-to-char (match-string 2 hd)) 20177 (not (member org-archive-tag (org-get-tags-at)))
18409 hd (concat (substring hd 0 (match-beginning 1)) 20178 )
18410 (substring hd (match-end 1)))) 20179 (setq hd (match-string 3))
18411 (setq pri org-default-priority)) 20180 (if (string-match org-bracket-link-regexp hd)
18412 (setq pri (floor (1+ (* 8. (/ (float (- org-lowest-priority pri)) 20181 (setq hd (replace-match (if (match-end 3) (match-string 3 hd)
18413 (- org-lowest-priority ?A)))))) 20182 (match-string 1 hd))
18414 20183 t t hd)))
18415 (princ (format "BEGIN:VTODO 20184 (if (string-match org-priority-regexp hd)
20185 (setq pri (string-to-char (match-string 2 hd))
20186 hd (concat (substring hd 0 (match-beginning 1))
20187 (substring hd (match-end 1))))
20188 (setq pri org-default-priority))
20189 (setq pri (floor (1+ (* 8. (/ (float (- org-lowest-priority pri))
20190 (- org-lowest-priority org-highest-priority))))))
20191
20192 (princ (format "BEGIN:VTODO
18416%s 20193%s
18417SUMMARY:%s 20194SUMMARY:%s
18418CATEGORIES:%s 20195CATEGORIES:%s
@@ -18420,7 +20197,7 @@ SEQUENCE:1
18420PRIORITY:%d 20197PRIORITY:%d
18421STATUS:%s 20198STATUS:%s
18422END:VTODO\n" 20199END:VTODO\n"
18423 dts hd category pri status)))))))) 20200 dts hd category pri status)))))))))
18424 20201
18425(defun org-start-icalendar-file (name) 20202(defun org-start-icalendar-file (name)
18426 "Start an iCalendar file by inserting the header." 20203 "Start an iCalendar file by inserting the header."
@@ -18545,47 +20322,44 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
18545 20322
18546;;;; Key bindings 20323;;;; Key bindings
18547 20324
18548;; - Bindings in Org-mode map are currently
18549;; 0123456789abcdefghijklmnopqrstuvwxyz!?@#$%^&-+*/=()_{}[]:;"|,.<>~`'\t the alphabet
18550;; abcd fgh j lmnopqrstuvwxyz!? #$ ^ -+*/= [] ; |,.<>~ '\t necessary bindings
18551;; e (?) useful from outline-mode
18552;; i k @ expendable from outline-mode
18553;; 0123456789 % & ()_{} " ` free
18554
18555;; Make `C-c C-x' a prefix key 20325;; Make `C-c C-x' a prefix key
18556(define-key org-mode-map "\C-c\C-x" (make-sparse-keymap)) 20326(org-defkey org-mode-map "\C-c\C-x" (make-sparse-keymap))
18557 20327
18558;; TAB key with modifiers 20328;; TAB key with modifiers
18559(define-key org-mode-map "\C-i" 'org-cycle) 20329(org-defkey org-mode-map "\C-i" 'org-cycle)
18560(define-key org-mode-map [(tab)] 'org-cycle) 20330(org-defkey org-mode-map [(tab)] 'org-cycle)
18561(define-key org-mode-map [(control tab)] 'org-force-cycle-archived) 20331(org-defkey org-mode-map [(control tab)] 'org-force-cycle-archived)
18562(define-key org-mode-map [(meta tab)] 'org-complete) 20332(org-defkey org-mode-map [(meta tab)] 'org-complete)
18563(define-key org-mode-map "\M-\t" 'org-complete) 20333(org-defkey org-mode-map "\M-\t" 'org-complete)
18564(define-key org-mode-map "\M-\C-i" 'org-complete) 20334(org-defkey org-mode-map "\M-\C-i" 'org-complete)
18565;; The following line is necessary under Suse GNU/Linux 20335;; The following line is necessary under Suse GNU/Linux
18566(unless (featurep 'xemacs) 20336(unless (featurep 'xemacs)
18567 (define-key org-mode-map [S-iso-lefttab] 'org-shifttab)) 20337 (org-defkey org-mode-map [S-iso-lefttab] 'org-shifttab))
18568(define-key org-mode-map [(shift tab)] 'org-shifttab) 20338(org-defkey org-mode-map [(shift tab)] 'org-shifttab)
20339(define-key org-mode-map (kbd "<backtab>") 'org-shifttab)
18569 20340
18570(define-key org-mode-map (org-key 'S-return) 'org-table-copy-down) 20341(org-defkey org-mode-map [(shift return)] 'org-table-copy-down)
18571(define-key org-mode-map [(meta shift return)] 'org-insert-todo-heading) 20342(org-defkey org-mode-map [(meta shift return)] 'org-insert-todo-heading)
18572(define-key org-mode-map [(meta return)] 'org-meta-return) 20343(org-defkey org-mode-map [(meta return)] 'org-meta-return)
18573 20344
18574;; Cursor keys with modifiers 20345;; Cursor keys with modifiers
18575(define-key org-mode-map [(meta left)] 'org-metaleft) 20346(org-defkey org-mode-map [(meta left)] 'org-metaleft)
18576(define-key org-mode-map [(meta right)] 'org-metaright) 20347(org-defkey org-mode-map [(meta right)] 'org-metaright)
18577(define-key org-mode-map [(meta up)] 'org-metaup) 20348(org-defkey org-mode-map [(meta up)] 'org-metaup)
18578(define-key org-mode-map [(meta down)] 'org-metadown) 20349(org-defkey org-mode-map [(meta down)] 'org-metadown)
18579 20350
18580(define-key org-mode-map [(meta shift left)] 'org-shiftmetaleft) 20351(org-defkey org-mode-map [(meta shift left)] 'org-shiftmetaleft)
18581(define-key org-mode-map [(meta shift right)] 'org-shiftmetaright) 20352(org-defkey org-mode-map [(meta shift right)] 'org-shiftmetaright)
18582(define-key org-mode-map [(meta shift up)] 'org-shiftmetaup) 20353(org-defkey org-mode-map [(meta shift up)] 'org-shiftmetaup)
18583(define-key org-mode-map [(meta shift down)] 'org-shiftmetadown) 20354(org-defkey org-mode-map [(meta shift down)] 'org-shiftmetadown)
18584 20355
18585(define-key org-mode-map (org-key 'S-up) 'org-shiftup) 20356(org-defkey org-mode-map [(shift up)] 'org-shiftup)
18586(define-key org-mode-map (org-key 'S-down) 'org-shiftdown) 20357(org-defkey org-mode-map [(shift down)] 'org-shiftdown)
18587(define-key org-mode-map (org-key 'S-left) 'org-shiftleft) 20358(org-defkey org-mode-map [(shift left)] 'org-shiftleft)
18588(define-key org-mode-map (org-key 'S-right) 'org-shiftright) 20359(org-defkey org-mode-map [(shift right)] 'org-shiftright)
20360
20361(org-defkey org-mode-map [(control shift right)] 'org-shiftcontrolright)
20362(org-defkey org-mode-map [(control shift left)] 'org-shiftcontrolleft)
18589 20363
18590;;; Extra keys for tty access. 20364;;; Extra keys for tty access.
18591;; We only set them when really needed because otherwise the 20365;; We only set them when really needed because otherwise the
@@ -18593,102 +20367,105 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
18593 20367
18594(when (or (featurep 'xemacs) ;; because XEmacs supports multi-device stuff 20368(when (or (featurep 'xemacs) ;; because XEmacs supports multi-device stuff
18595 (not window-system)) 20369 (not window-system))
18596 (define-key org-mode-map "\C-c\C-xc" 'org-table-copy-down) 20370 (org-defkey org-mode-map "\C-c\C-xc" 'org-table-copy-down)
18597 (define-key org-mode-map "\C-c\C-xM" 'org-insert-todo-heading) 20371 (org-defkey org-mode-map "\C-c\C-xM" 'org-insert-todo-heading)
18598 (define-key org-mode-map "\C-c\C-xm" 'org-meta-return) 20372 (org-defkey org-mode-map "\C-c\C-xm" 'org-meta-return)
18599 (define-key org-mode-map [?\e (return)] 'org-meta-return) 20373 (org-defkey org-mode-map [?\e (return)] 'org-meta-return)
18600 (define-key org-mode-map [?\e (left)] 'org-metaleft) 20374 (org-defkey org-mode-map [?\e (left)] 'org-metaleft)
18601 (define-key org-mode-map "\C-c\C-xl" 'org-metaleft) 20375 (org-defkey org-mode-map "\C-c\C-xl" 'org-metaleft)
18602 (define-key org-mode-map [?\e (right)] 'org-metaright) 20376 (org-defkey org-mode-map [?\e (right)] 'org-metaright)
18603 (define-key org-mode-map "\C-c\C-xr" 'org-metaright) 20377 (org-defkey org-mode-map "\C-c\C-xr" 'org-metaright)
18604 (define-key org-mode-map [?\e (up)] 'org-metaup) 20378 (org-defkey org-mode-map [?\e (up)] 'org-metaup)
18605 (define-key org-mode-map "\C-c\C-xu" 'org-metaup) 20379 (org-defkey org-mode-map "\C-c\C-xu" 'org-metaup)
18606 (define-key org-mode-map [?\e (down)] 'org-metadown) 20380 (org-defkey org-mode-map [?\e (down)] 'org-metadown)
18607 (define-key org-mode-map "\C-c\C-xd" 'org-metadown) 20381 (org-defkey org-mode-map "\C-c\C-xd" 'org-metadown)
18608 (define-key org-mode-map "\C-c\C-xL" 'org-shiftmetaleft) 20382 (org-defkey org-mode-map "\C-c\C-xL" 'org-shiftmetaleft)
18609 (define-key org-mode-map "\C-c\C-xR" 'org-shiftmetaright) 20383 (org-defkey org-mode-map "\C-c\C-xR" 'org-shiftmetaright)
18610 (define-key org-mode-map "\C-c\C-xU" 'org-shiftmetaup) 20384 (org-defkey org-mode-map "\C-c\C-xU" 'org-shiftmetaup)
18611 (define-key org-mode-map "\C-c\C-xD" 'org-shiftmetadown) 20385 (org-defkey org-mode-map "\C-c\C-xD" 'org-shiftmetadown)
18612 (define-key org-mode-map [?\C-c ?\C-x (up)] 'org-shiftup) 20386 (org-defkey org-mode-map [?\C-c (up)] 'org-shiftup)
18613 (define-key org-mode-map [?\C-c ?\C-x (down)] 'org-shiftdown) 20387 (org-defkey org-mode-map [?\C-c (down)] 'org-shiftdown)
18614 (define-key org-mode-map [?\C-c ?\C-x (left)] 'org-shiftleft) 20388 (org-defkey org-mode-map [?\C-c (left)] 'org-shiftleft)
18615 (define-key org-mode-map [?\C-c ?\C-x (right)] 'org-shiftright)) 20389 (org-defkey org-mode-map [?\C-c (right)] 'org-shiftright)
20390 (org-defkey org-mode-map [?\C-c ?\C-x (right)] 'org-shiftcontrolright)
20391 (org-defkey org-mode-map [?\C-c ?\C-x (left)] 'org-shiftcontrolleft))
18616 20392
18617 ;; All the other keys 20393 ;; All the other keys
18618 20394
18619(define-key org-mode-map "\C-c\C-a" 'show-all) ; in case allout messed up. 20395(org-defkey org-mode-map "\C-c\C-a" 'show-all) ; in case allout messed up.
18620(define-key org-mode-map "\C-c\C-r" 'org-reveal) 20396(org-defkey org-mode-map "\C-c\C-r" 'org-reveal)
18621(define-key org-mode-map "\C-xns" 'org-narrow-to-subtree) 20397(org-defkey org-mode-map "\C-xns" 'org-narrow-to-subtree)
18622(define-key org-mode-map "\C-c$" 'org-archive-subtree) 20398(org-defkey org-mode-map "\C-c$" 'org-archive-subtree)
18623(define-key org-mode-map "\C-c\C-x\C-s" 'org-advertized-archive-subtree) 20399(org-defkey org-mode-map "\C-c\C-x\C-s" 'org-advertized-archive-subtree)
18624(define-key org-mode-map "\C-c\C-x\C-a" 'org-toggle-archive-tag) 20400(org-defkey org-mode-map "\C-c\C-x\C-a" 'org-toggle-archive-tag)
18625(define-key org-mode-map "\C-c\C-xb" 'org-tree-to-indirect-buffer) 20401(org-defkey org-mode-map "\C-c\C-xb" 'org-tree-to-indirect-buffer)
18626(define-key org-mode-map "\C-c\C-j" 'org-goto) 20402(org-defkey org-mode-map "\C-c\C-j" 'org-goto)
18627(define-key org-mode-map "\C-c\C-t" 'org-todo) 20403(org-defkey org-mode-map "\C-c\C-t" 'org-todo)
18628(define-key org-mode-map "\C-c\C-s" 'org-schedule) 20404(org-defkey org-mode-map "\C-c\C-s" 'org-schedule)
18629(define-key org-mode-map "\C-c\C-d" 'org-deadline) 20405(org-defkey org-mode-map "\C-c\C-d" 'org-deadline)
18630(define-key org-mode-map "\C-c;" 'org-toggle-comment) 20406(org-defkey org-mode-map "\C-c;" 'org-toggle-comment)
18631(define-key org-mode-map "\C-c\C-v" 'org-show-todo-tree) 20407(org-defkey org-mode-map "\C-c\C-v" 'org-show-todo-tree)
18632(define-key org-mode-map "\C-c\C-w" 'org-check-deadlines) 20408(org-defkey org-mode-map "\C-c\C-w" 'org-check-deadlines)
18633(define-key org-mode-map "\C-c/" 'org-occur) ; Minor-mode reserved 20409(org-defkey org-mode-map "\C-c/" 'org-occur) ; Minor-mode reserved
18634(define-key org-mode-map "\C-c\\" 'org-tags-sparse-tree) ; Minor-mode res. 20410(org-defkey org-mode-map "\C-c\\" 'org-tags-sparse-tree) ; Minor-mode res.
18635(define-key org-mode-map "\C-c\C-m" 'org-insert-heading) 20411(org-defkey org-mode-map "\C-c\C-m" 'org-ctrl-c-ret)
18636(define-key org-mode-map "\M-\C-m" 'org-insert-heading) 20412(org-defkey org-mode-map "\M-\C-m" 'org-insert-heading)
18637(define-key org-mode-map "\C-c\C-x\C-n" 'org-next-link) 20413(org-defkey org-mode-map "\C-c\C-x\C-n" 'org-next-link)
18638(define-key org-mode-map "\C-c\C-x\C-p" 'org-previous-link) 20414(org-defkey org-mode-map "\C-c\C-x\C-p" 'org-previous-link)
18639(define-key org-mode-map "\C-c\C-l" 'org-insert-link) 20415(org-defkey org-mode-map "\C-c\C-l" 'org-insert-link)
18640(define-key org-mode-map "\C-c\C-o" 'org-open-at-point) 20416(org-defkey org-mode-map "\C-c\C-o" 'org-open-at-point)
18641(define-key org-mode-map "\C-c%" 'org-mark-ring-push) 20417(org-defkey org-mode-map "\C-c%" 'org-mark-ring-push)
18642(define-key org-mode-map "\C-c&" 'org-mark-ring-goto) 20418(org-defkey org-mode-map "\C-c&" 'org-mark-ring-goto)
18643(define-key org-mode-map "\C-c\C-z" 'org-time-stamp) ; Alternative binding 20419(org-defkey org-mode-map "\C-c\C-z" 'org-time-stamp) ; Alternative binding
18644(define-key org-mode-map "\C-c." 'org-time-stamp) ; Minor-mode reserved 20420(org-defkey org-mode-map "\C-c." 'org-time-stamp) ; Minor-mode reserved
18645(define-key org-mode-map "\C-c!" 'org-time-stamp-inactive) ; Minor-mode r. 20421(org-defkey org-mode-map "\C-c!" 'org-time-stamp-inactive) ; Minor-mode r.
18646(define-key org-mode-map "\C-c," 'org-priority) ; Minor-mode reserved 20422(org-defkey org-mode-map "\C-c," 'org-priority) ; Minor-mode reserved
18647(define-key org-mode-map "\C-c\C-y" 'org-evaluate-time-range) 20423(org-defkey org-mode-map "\C-c\C-y" 'org-evaluate-time-range)
18648(define-key org-mode-map "\C-c>" 'org-goto-calendar) 20424(org-defkey org-mode-map "\C-c>" 'org-goto-calendar)
18649(define-key org-mode-map "\C-c<" 'org-date-from-calendar) 20425(org-defkey org-mode-map "\C-c<" 'org-date-from-calendar)
18650(define-key org-mode-map [(control ?,)] 'org-cycle-agenda-files) 20426(org-defkey org-mode-map [(control ?,)] 'org-cycle-agenda-files)
18651(define-key org-mode-map [(control ?\')] 'org-cycle-agenda-files) 20427(org-defkey org-mode-map [(control ?\')] 'org-cycle-agenda-files)
18652(define-key org-mode-map "\C-c[" 'org-agenda-file-to-front) 20428(org-defkey org-mode-map "\C-c[" 'org-agenda-file-to-front)
18653(define-key org-mode-map "\C-c]" 'org-remove-file) 20429(org-defkey org-mode-map "\C-c]" 'org-remove-file)
18654(define-key org-mode-map "\C-c-" 'org-table-insert-hline) 20430(org-defkey org-mode-map "\C-c-" 'org-table-insert-hline)
18655(define-key org-mode-map "\C-c^" 'org-sort) 20431(org-defkey org-mode-map "\C-c^" 'org-sort)
18656(define-key org-mode-map "\C-c\C-c" 'org-ctrl-c-ctrl-c) 20432(org-defkey org-mode-map "\C-c\C-c" 'org-ctrl-c-ctrl-c)
18657(define-key org-mode-map "\C-c#" 'org-update-checkbox-count) 20433(org-defkey org-mode-map "\C-c#" 'org-update-checkbox-count)
18658(define-key org-mode-map "\C-m" 'org-return) 20434(org-defkey org-mode-map "\C-m" 'org-return)
18659(define-key org-mode-map "\C-c?" 'org-table-field-info) 20435(org-defkey org-mode-map "\C-c?" 'org-table-field-info)
18660(define-key org-mode-map "\C-c " 'org-table-blank-field) 20436(org-defkey org-mode-map "\C-c " 'org-table-blank-field)
18661(define-key org-mode-map "\C-c+" 'org-table-sum) 20437(org-defkey org-mode-map "\C-c+" 'org-table-sum)
18662(define-key org-mode-map "\C-c=" 'org-table-eval-formula) 20438(org-defkey org-mode-map "\C-c=" 'org-table-eval-formula)
18663(define-key org-mode-map "\C-c'" 'org-table-edit-formulas) 20439(org-defkey org-mode-map "\C-c'" 'org-table-edit-formulas)
18664(define-key org-mode-map "\C-c`" 'org-table-edit-field) 20440(org-defkey org-mode-map "\C-c`" 'org-table-edit-field)
18665(define-key org-mode-map "\C-c|" 'org-table-create-or-convert-from-region) 20441(org-defkey org-mode-map "\C-c|" 'org-table-create-or-convert-from-region)
18666(define-key org-mode-map "\C-c*" 'org-table-recalculate) 20442(org-defkey org-mode-map "\C-c*" 'org-table-recalculate)
18667(define-key org-mode-map [(control ?#)] 'org-table-rotate-recalc-marks) 20443(org-defkey org-mode-map [(control ?#)] 'org-table-rotate-recalc-marks)
18668(define-key org-mode-map "\C-c~" 'org-table-create-with-table.el) 20444(org-defkey org-mode-map "\C-c~" 'org-table-create-with-table.el)
18669(define-key org-mode-map "\C-c\C-q" 'org-table-wrap-region) 20445(org-defkey org-mode-map "\C-c\C-q" 'org-table-wrap-region)
18670(define-key org-mode-map "\C-c}" 'org-table-toggle-coordinate-overlays) 20446(org-defkey org-mode-map "\C-c}" 'org-table-toggle-coordinate-overlays)
18671(define-key org-mode-map "\C-c{" 'org-table-toggle-formula-debugger) 20447(org-defkey org-mode-map "\C-c{" 'org-table-toggle-formula-debugger)
18672(define-key org-mode-map "\C-c\C-e" 'org-export) 20448(org-defkey org-mode-map "\C-c\C-e" 'org-export)
18673(define-key org-mode-map "\C-c:" 'org-toggle-fixed-width-section) 20449(org-defkey org-mode-map "\C-c:" 'org-toggle-fixed-width-section)
18674 20450(org-defkey org-mode-map "\C-c\C-x\C-f" 'org-emphasize)
18675(define-key org-mode-map "\C-c\C-x\C-k" 'org-cut-special) 20451
18676(define-key org-mode-map "\C-c\C-x\C-w" 'org-cut-special) 20452(org-defkey org-mode-map "\C-c\C-x\C-k" 'org-cut-special)
18677(define-key org-mode-map "\C-c\C-x\M-w" 'org-copy-special) 20453(org-defkey org-mode-map "\C-c\C-x\C-w" 'org-cut-special)
18678(define-key org-mode-map "\C-c\C-x\C-y" 'org-paste-special) 20454(org-defkey org-mode-map "\C-c\C-x\M-w" 'org-copy-special)
18679 20455(org-defkey org-mode-map "\C-c\C-x\C-y" 'org-paste-special)
18680(define-key org-mode-map "\C-c\C-x\C-t" 'org-toggle-time-stamp-overlays) 20456
18681(define-key org-mode-map "\C-c\C-x\C-i" 'org-clock-in) 20457(org-defkey org-mode-map "\C-c\C-x\C-t" 'org-toggle-time-stamp-overlays)
18682(define-key org-mode-map "\C-c\C-x\C-o" 'org-clock-out) 20458(org-defkey org-mode-map "\C-c\C-x\C-i" 'org-clock-in)
18683(define-key org-mode-map "\C-c\C-x\C-x" 'org-clock-cancel) 20459(org-defkey org-mode-map "\C-c\C-x\C-o" 'org-clock-out)
18684(define-key org-mode-map "\C-c\C-x\C-d" 'org-clock-display) 20460(org-defkey org-mode-map "\C-c\C-x\C-x" 'org-clock-cancel)
18685(define-key org-mode-map "\C-c\C-x\C-r" 'org-clock-report) 20461(org-defkey org-mode-map "\C-c\C-x\C-d" 'org-clock-display)
18686(define-key org-mode-map "\C-c\C-x\C-u" 'org-dblock-update) 20462(org-defkey org-mode-map "\C-c\C-x\C-r" 'org-clock-report)
18687(define-key org-mode-map "\C-c\C-x\C-l" 'org-preview-latex-fragment) 20463(org-defkey org-mode-map "\C-c\C-x\C-u" 'org-dblock-update)
18688(define-key org-mode-map "\C-c\C-x\C-b" 'org-toggle-checkbox) 20464(org-defkey org-mode-map "\C-c\C-x\C-l" 'org-preview-latex-fragment)
20465(org-defkey org-mode-map "\C-c\C-x\C-b" 'org-toggle-checkbox)
18689 20466
18690(when (featurep 'xemacs) 20467(when (featurep 'xemacs)
18691 (define-key org-mode-map 'button3 'popup-mode-menu)) 20468 (org-defkey org-mode-map 'button3 'popup-mode-menu))
18692 20469
18693(defsubst org-table-p () (org-at-table-p)) 20470(defsubst org-table-p () (org-at-table-p))
18694 20471
@@ -18779,7 +20556,6 @@ because, in this case the deletion might narrow the column."
18779(put 'org-delete-char 'flyspell-delayed t) 20556(put 'org-delete-char 'flyspell-delayed t)
18780(put 'org-delete-backward-char 'flyspell-delayed t) 20557(put 'org-delete-backward-char 'flyspell-delayed t)
18781 20558
18782
18783;; How to do this: Measure non-white length of current string 20559;; How to do this: Measure non-white length of current string
18784;; If equal to column width, we should realign. 20560;; If equal to column width, we should realign.
18785 20561
@@ -18790,7 +20566,7 @@ COMMANDS is a list of alternating OLDDEF NEWDEF command names."
18790 (while commands 20566 (while commands
18791 (setq old (pop commands) new (pop commands)) 20567 (setq old (pop commands) new (pop commands))
18792 (if (fboundp 'command-remapping) 20568 (if (fboundp 'command-remapping)
18793 (define-key map (vector 'remap old) new) 20569 (org-defkey map (vector 'remap old) new)
18794 (substitute-key-definition old new map global-map))))) 20570 (substitute-key-definition old new map global-map)))))
18795 20571
18796(when (eq org-enable-table-editor 'optimized) 20572(when (eq org-enable-table-editor 'optimized)
@@ -18800,7 +20576,7 @@ COMMANDS is a list of alternating OLDDEF NEWDEF command names."
18800 'self-insert-command 'org-self-insert-command 20576 'self-insert-command 'org-self-insert-command
18801 'delete-char 'org-delete-char 20577 'delete-char 'org-delete-char
18802 'delete-backward-char 'org-delete-backward-char) 20578 'delete-backward-char 'org-delete-backward-char)
18803 (define-key org-mode-map "|" 'org-force-self-insert)) 20579 (org-defkey org-mode-map "|" 'org-force-self-insert))
18804 20580
18805(defun org-shiftcursor-error () 20581(defun org-shiftcursor-error ()
18806 "Throw an error because Shift-Cursor command was applied in wrong context." 20582 "Throw an error because Shift-Cursor command was applied in wrong context."
@@ -18821,7 +20597,8 @@ See the individual commands for more information."
18821 20597
18822(defun org-shiftmetaleft () 20598(defun org-shiftmetaleft ()
18823 "Promote subtree or delete table column. 20599 "Promote subtree or delete table column.
18824Calls `org-promote-subtree' or `org-table-delete-column', depending on context. 20600Calls `org-promote-subtree', `org-outdent-item',
20601or `org-table-delete-column', depending on context.
18825See the individual commands for more information." 20602See the individual commands for more information."
18826 (interactive) 20603 (interactive)
18827 (cond 20604 (cond
@@ -18832,7 +20609,8 @@ See the individual commands for more information."
18832 20609
18833(defun org-shiftmetaright () 20610(defun org-shiftmetaright ()
18834 "Demote subtree or insert table column. 20611 "Demote subtree or insert table column.
18835Calls `org-demote-subtree' or `org-table-insert-column', depending on context. 20612Calls `org-demote-subtree', `org-indent-item',
20613or `org-table-insert-column', depending on context.
18836See the individual commands for more information." 20614See the individual commands for more information."
18837 (interactive) 20615 (interactive)
18838 (cond 20616 (cond
@@ -18916,8 +20694,8 @@ commands for more information."
18916 20694
18917(defun org-shiftup (&optional arg) 20695(defun org-shiftup (&optional arg)
18918 "Increase item in timestamp or increase priority of current headline. 20696 "Increase item in timestamp or increase priority of current headline.
18919Calls `org-timestamp-up' or `org-priority-up', depending on context. 20697Calls `org-timestamp-up' or `org-priority-up', or `org-previous-item',
18920See the individual commands for more information." 20698depending on context. See the individual commands for more information."
18921 (interactive "P") 20699 (interactive "P")
18922 (cond 20700 (cond
18923 ((org-at-timestamp-p t) (call-interactively 'org-timestamp-up)) 20701 ((org-at-timestamp-p t) (call-interactively 'org-timestamp-up))
@@ -18927,8 +20705,8 @@ See the individual commands for more information."
18927 20705
18928(defun org-shiftdown (&optional arg) 20706(defun org-shiftdown (&optional arg)
18929 "Decrease item in timestamp or decrease priority of current headline. 20707 "Decrease item in timestamp or decrease priority of current headline.
18930Calls `org-timestamp-down' or `org-priority-down', depending on context. 20708Calls `org-timestamp-down' or `org-priority-down', or `org-next-item'
18931See the individual commands for more information." 20709depending on context. See the individual commands for more information."
18932 (interactive "P") 20710 (interactive "P")
18933 (cond 20711 (cond
18934 ((org-at-timestamp-p t) (call-interactively 'org-timestamp-down)) 20712 ((org-at-timestamp-p t) (call-interactively 'org-timestamp-down))
@@ -18951,6 +20729,27 @@ See the individual commands for more information."
18951 ((org-on-heading-p) (org-call-with-arg 'org-todo 'left)) 20729 ((org-on-heading-p) (org-call-with-arg 'org-todo 'left))
18952 (t (org-shiftcursor-error)))) 20730 (t (org-shiftcursor-error))))
18953 20731
20732(defun org-shiftcontrolright ()
20733 "Switch to next TODO set."
20734 (interactive)
20735 (cond
20736 ((org-on-heading-p) (org-call-with-arg 'org-todo 'nextset))
20737 (t (org-shiftcursor-error))))
20738
20739(defun org-shiftcontrolleft ()
20740 "Switch to previous TODO set."
20741 (interactive)
20742 (cond
20743 ((org-on-heading-p) (org-call-with-arg 'org-todo 'previousset))
20744 (t (org-shiftcursor-error))))
20745
20746(defun org-ctrl-c-ret ()
20747 "Call `org-table-hline-and-move' or `org-insert-heading' dep. on context."
20748 (interactive)
20749 (cond
20750 ((org-at-table-p) (call-interactively 'org-table-hline-and-move))
20751 (t (call-interactively 'org-insert-heading))))
20752
18954(defun org-copy-special () 20753(defun org-copy-special ()
18955 "Copy region in table or copy current subtree. 20754 "Copy region in table or copy current subtree.
18956Calls `org-table-copy' or `org-copy-subtree', depending on context. 20755Calls `org-table-copy' or `org-copy-subtree', depending on context.
@@ -19159,7 +20958,11 @@ See the individual commands for more information."
19159 ["Next Same Level" outline-forward-same-level t] 20958 ["Next Same Level" outline-forward-same-level t]
19160 ["Previous Same Level" outline-backward-same-level t] 20959 ["Previous Same Level" outline-backward-same-level t]
19161 "--" 20960 "--"
19162 ["Jump" org-goto t]) 20961 ["Jump" org-goto t]
20962 "--"
20963 ["C-a finds headline start"
20964 (setq org-special-ctrl-a (not org-special-ctrl-a))
20965 :style toggle :selected org-special-ctrl-a])
19163 ("Edit Structure" 20966 ("Edit Structure"
19164 ["Move Subtree Up" org-shiftmetaup (not (org-at-table-p))] 20967 ["Move Subtree Up" org-shiftmetaup (not (org-at-table-p))]
19165 ["Move Subtree Down" org-shiftmetadown (not (org-at-table-p))] 20968 ["Move Subtree Down" org-shiftmetadown (not (org-at-table-p))]
@@ -19177,6 +20980,8 @@ See the individual commands for more information."
19177 "--" 20980 "--"
19178 ["Convert to odd levels" org-convert-to-odd-levels t] 20981 ["Convert to odd levels" org-convert-to-odd-levels t]
19179 ["Convert to odd/even levels" org-convert-to-oddeven-levels t]) 20982 ["Convert to odd/even levels" org-convert-to-oddeven-levels t])
20983 ("Editing"
20984 ["Emphasis..." org-emphasize t])
19180 ("Archive" 20985 ("Archive"
19181 ["Toggle ARCHIVE tag" org-toggle-archive-tag t] 20986 ["Toggle ARCHIVE tag" org-toggle-archive-tag t]
19182; ["Check and Tag Children" (org-toggle-archive-tag (4)) 20987; ["Check and Tag Children" (org-toggle-archive-tag (4))
@@ -19202,7 +21007,9 @@ See the individual commands for more information."
19202 ("Select keyword" 21007 ("Select keyword"
19203 ["Next keyword" org-shiftright (org-on-heading-p)] 21008 ["Next keyword" org-shiftright (org-on-heading-p)]
19204 ["Previous keyword" org-shiftleft (org-on-heading-p)] 21009 ["Previous keyword" org-shiftleft (org-on-heading-p)]
19205 ["Complete Keyword" org-complete (assq :todo-keyword (org-context))]) 21010 ["Complete Keyword" org-complete (assq :todo-keyword (org-context))]
21011 ["Next keyword set" org-shiftcontrolright (and (> (length org-todo-sets) 1) (org-on-heading-p))]
21012 ["Previous keyword set" org-shiftcontrolright (and (> (length org-todo-sets) 1) (org-on-heading-p))])
19206 ["Show TODO Tree" org-show-todo-tree t] 21013 ["Show TODO Tree" org-show-todo-tree t]
19207 ["Global TODO list" org-todo-list t] 21014 ["Global TODO list" org-todo-list t]
19208 "--" 21015 "--"
@@ -19210,6 +21017,7 @@ See the individual commands for more information."
19210 ["Priority Up" org-shiftup t] 21017 ["Priority Up" org-shiftup t]
19211 ["Priority Down" org-shiftdown t] 21018 ["Priority Down" org-shiftdown t]
19212 "--" 21019 "--"
21020 ;; FIXME: why is this still here????
19213; ["Insert Checkbox" org-insert-todo-heading (org-in-item-p)] 21021; ["Insert Checkbox" org-insert-todo-heading (org-in-item-p)]
19214; ["Toggle Checkbox" org-ctrl-c-ctrl-c (org-at-item-checkbox-p)] 21022; ["Toggle Checkbox" org-ctrl-c-ctrl-c (org-at-item-checkbox-p)]
19215; ["Insert [n/m] cookie" (progn (insert "[/]") (org-update-checkbox-count)) 21023; ["Insert [n/m] cookie" (progn (insert "[/]") (org-update-checkbox-count))
@@ -19245,7 +21053,7 @@ See the individual commands for more information."
19245 ["Record DONE time" 21053 ["Record DONE time"
19246 (progn (setq org-log-done (not org-log-done)) 21054 (progn (setq org-log-done (not org-log-done))
19247 (message "Switching to %s will %s record a timestamp" 21055 (message "Switching to %s will %s record a timestamp"
19248 org-done-string 21056 (car org-done-keywords)
19249 (if org-log-done "automatically" "not"))) 21057 (if org-log-done "automatically" "not")))
19250 :style toggle :selected org-log-done]) 21058 :style toggle :selected org-log-done])
19251 "--" 21059 "--"
@@ -19297,15 +21105,6 @@ See the individual commands for more information."
19297 ["Refresh setup" org-mode-restart t] 21105 ["Refresh setup" org-mode-restart t]
19298 )) 21106 ))
19299 21107
19300(defun org-toggle-log-option (type)
19301 (if (not (listp org-log-done)) (setq org-log-done nil))
19302 (if (memq type org-log-done)
19303 (setq org-log-done (delq type org-log-done))
19304 (add-to-list 'org-log-done type)))
19305
19306(defun org-check-log-option (type)
19307 (and (listp org-log-done) (memq type org-log-done)))
19308
19309(defun org-info (&optional node) 21108(defun org-info (&optional node)
19310 "Read documentation for Org-mode in the info system. 21109 "Read documentation for Org-mode in the info system.
19311With optional NODE, go directly to that node." 21110With optional NODE, go directly to that node."
@@ -19394,7 +21193,7 @@ and :keyword."
19394 (p (point)) clist o) 21193 (p (point)) clist o)
19395 ;; First the large context 21194 ;; First the large context
19396 (cond 21195 (cond
19397 ((org-on-heading-p) 21196 ((org-on-heading-p t)
19398 (push (list :headline (point-at-bol) (point-at-eol)) clist) 21197 (push (list :headline (point-at-bol) (point-at-eol)) clist)
19399 (when (progn 21198 (when (progn
19400 (beginning-of-line 1) 21199 (beginning-of-line 1)
@@ -19404,7 +21203,7 @@ and :keyword."
19404 (push (org-point-in-group p 4 :tags) clist)) 21203 (push (org-point-in-group p 4 :tags) clist))
19405 (goto-char p) 21204 (goto-char p)
19406 (skip-chars-backward "^[\n\r \t") (or (eobp) (backward-char 1)) 21205 (skip-chars-backward "^[\n\r \t") (or (eobp) (backward-char 1))
19407 (if (looking-at "\\[#[A-Z]\\]") 21206 (if (looking-at "\\[#[A-Z0-9]\\]")
19408 (push (org-point-in-group p 0 :priority) clist))) 21207 (push (org-point-in-group p 0 :priority) clist)))
19409 21208
19410 ((org-at-item-p) 21209 ((org-at-item-p)
@@ -19459,6 +21258,7 @@ and :keyword."
19459 (setq clist (nreverse (delq nil clist))) 21258 (setq clist (nreverse (delq nil clist)))
19460 clist)) 21259 clist))
19461 21260
21261;; FIXME Compare with at-regexp-p
19462(defun org-in-regexp (re &optional nlines visually) 21262(defun org-in-regexp (re &optional nlines visually)
19463 "Check if point is inside a match of regexp. 21263 "Check if point is inside a match of regexp.
19464Normally only the current line is checked, but you can include NLINES extra 21264Normally only the current line is checked, but you can include NLINES extra
@@ -19472,10 +21272,34 @@ really on, so that the block visually is on the match."
19472 (save-excursion 21272 (save-excursion
19473 (beginning-of-line (- 1 (or nlines 0))) 21273 (beginning-of-line (- 1 (or nlines 0)))
19474 (while (re-search-forward re eol t) 21274 (while (re-search-forward re eol t)
19475 (if (and (<= (match-beginning 0) pos) 21275 (if (and (<= (match-beginning 0) pos)
19476 (>= (+ inc (match-end 0)) pos)) 21276 (>= (+ inc (match-end 0)) pos))
19477 (throw 'exit (cons (match-beginning 0) (match-end 0))))))))) 21277 (throw 'exit (cons (match-beginning 0) (match-end 0)))))))))
19478 21278
21279(defun org-at-regexp-p (regexp)
21280 "Is point inside a match of REGEXP in the current line?"
21281 (catch 'exit
21282 (save-excursion
21283 (let ((pos (point)) (end (point-at-eol)))
21284 (beginning-of-line 1)
21285 (while (re-search-forward regexp end t)
21286 (if (and (<= (match-beginning 0) pos)
21287 (>= (match-end 0) pos))
21288 (throw 'exit t)))
21289 nil))))
21290
21291(defun org-uniquify (list)
21292 "Remove duplicate elements from LIST."
21293 (let (res)
21294 (mapc (lambda (x) (add-to-list 'res x 'append)) list)
21295 res))
21296
21297(defun org-delete-all (elts list)
21298 "Remove all elements in ELTS from LIST."
21299 (while elts
21300 (setq list (delete (pop elts) list)))
21301 list)
21302
19479(defun org-point-in-group (point group &optional context) 21303(defun org-point-in-group (point group &optional context)
19480 "Check if POINT is in match-group GROUP. 21304 "Check if POINT is in match-group GROUP.
19481If CONTEXT is non-nil, return a list with CONTEXT and the boundaries of the 21305If CONTEXT is non-nil, return a list with CONTEXT and the boundaries of the
@@ -19535,7 +21359,7 @@ The sequences in STRING may contain normal field width and padding information,
19535for example \"%-5s\". Replacements happen in the sequence given by TABLE, 21359for example \"%-5s\". Replacements happen in the sequence given by TABLE,
19536so values can contain further %-escapes if they are define later in TABLE." 21360so values can contain further %-escapes if they are define later in TABLE."
19537 (let ((case-fold-search nil) 21361 (let ((case-fold-search nil)
19538 e re rpl) 21362 e re rpl)
19539 (while (setq e (pop table)) 21363 (while (setq e (pop table))
19540 (setq re (concat "%-?[0-9.]*" (substring (car e) 1))) 21364 (setq re (concat "%-?[0-9.]*" (substring (car e) 1)))
19541 (while (string-match re string) 21365 (while (string-match re string)
@@ -19555,27 +21379,49 @@ Counting starts at 1."
19555 (setq c (1+ c))) 21379 (setq c (1+ c)))
19556 (nreverse rtn))) 21380 (nreverse rtn)))
19557 21381
19558(defun org-at-regexp-p (regexp)
19559 "Is point inside a match of REGEXP in the current line?"
19560 (catch 'exit
19561 (save-excursion
19562 (let ((pos (point)) (end (point-at-eol)))
19563 (beginning-of-line 1)
19564 (while (re-search-forward regexp end t)
19565 (if (and (<= (match-beginning 0) pos)
19566 (>= (match-end 0) pos))
19567 (throw 'exit t)))
19568 nil))))
19569
19570(defun org-find-base-buffer-visiting (file) 21382(defun org-find-base-buffer-visiting (file)
19571 "Like `find-buffer-visiting' but alway return the base buffer and 21383 "Like `find-buffer-visiting' but alway return the base buffer and
19572not an indirect buffer" 21384not an indirect buffer"
19573 (let ((buf (find-buffer-visiting file))) 21385 (let ((buf (find-buffer-visiting file)))
19574 (or (buffer-base-buffer buf) buf))) 21386 (or (buffer-base-buffer buf) buf)))
19575 21387
21388(defun org-image-file-name-regexp ()
21389 "Return regexp matching the file names of images."
21390 (if (fboundp 'image-file-name-regexp)
21391 (image-file-name-regexp)
21392 (let ((image-file-name-extensions
21393 '("png" "jpeg" "jpg" "gif" "tiff" "tif"
21394 "xbm" "xpm" "pbm" "pgm" "ppm")))
21395 (concat "\\."
21396 (regexp-opt (nconc (mapcar 'upcase
21397 image-file-name-extensions)
21398 image-file-name-extensions)
21399 t)
21400 "\\'"))))
21401
21402(defun org-file-image-p (file)
21403 "Return non-nil if FILE is an image."
21404 (save-match-data
21405 (string-match (org-image-file-name-regexp) file)))
21406
19576;;; Paragraph filling stuff. 21407;;; Paragraph filling stuff.
19577;; We want this to be just right, so use the full arsenal. 21408;; We want this to be just right, so use the full arsenal.
19578;; FIXME: configure filladapt for XEmacs 21409
21410(defun org-indent-line-function ()
21411 "Indent line like previous, but further if previous was headline or item."
21412 (interactive)
21413 (let ((column (save-excursion
21414 (beginning-of-line)
21415 (if (looking-at "#") 0
21416 (skip-chars-backward "\n \t")
21417 (beginning-of-line)
21418 (if (or (looking-at "\\*+[ \t]+")
21419 (looking-at "[ \t]*\\([-+*][ \t]+\\|[0-9]+[.)][ \t]+\\)"))
21420 (progn (goto-char (match-end 0)) (current-column))
21421 (current-indentation))))))
21422 (if (<= (current-column) (current-indentation))
21423 (indent-line-to column)
21424 (save-excursion (indent-line-to column)))))
19579 21425
19580(defun org-set-autofill-regexps () 21426(defun org-set-autofill-regexps ()
19581 (interactive) 21427 (interactive)
@@ -19584,6 +21430,7 @@ not an indirect buffer"
19584 ;; fill the headline as well. 21430 ;; fill the headline as well.
19585 (org-set-local 'comment-start-skip "^#+[ \t]*") 21431 (org-set-local 'comment-start-skip "^#+[ \t]*")
19586 (org-set-local 'paragraph-separate "\f\\|\\*\\|[ ]*$\\|[ \t]*[:|]") 21432 (org-set-local 'paragraph-separate "\f\\|\\*\\|[ ]*$\\|[ \t]*[:|]")
21433;; FIXME!!!!!!! (org-set-local 'paragraph-separate "\f\\|[ ]*$")
19587 ;; The paragraph starter includes hand-formatted lists. 21434 ;; The paragraph starter includes hand-formatted lists.
19588 (org-set-local 'paragraph-start 21435 (org-set-local 'paragraph-start
19589 "\f\\|[ ]*$\\|\\([*\f]+\\)\\|[ \t]*\\([-+*][ \t]+\\|[0-9]+[.)][ \t]+\\)\\|[ \t]*[:|]") 21436 "\f\\|[ ]*$\\|\\([*\f]+\\)\\|[ \t]*\\([-+*][ \t]+\\|[0-9]+[.)][ \t]+\\)\\|[ \t]*[:|]")
@@ -19627,30 +21474,12 @@ In particular, this makes sure hanging paragraphs for hand-formatted lists
19627work correctly." 21474work correctly."
19628 (cond ((looking-at "#[ \t]+") 21475 (cond ((looking-at "#[ \t]+")
19629 (match-string 0)) 21476 (match-string 0))
19630 ((looking-at " *\\([-*+] \\|[0-9]+[.)] \\)?") 21477 ((looking-at "[ \t]*\\([-*+] \\|[0-9]+[.)] \\)?")
19631 (make-string (- (match-end 0) (match-beginning 0)) ?\ )) 21478 (save-excursion
21479 (goto-char (match-end 0))
21480 (make-string (current-column) ?\ )))
19632 (t nil))) 21481 (t nil)))
19633 21482
19634
19635(defun org-image-file-name-regexp ()
19636 "Return regexp matching the file names of images."
19637 (if (fboundp 'image-file-name-regexp)
19638 (image-file-name-regexp)
19639 (let ((image-file-name-extensions
19640 '("png" "jpeg" "jpg" "gif" "tiff" "tif"
19641 "xbm" "xpm" "pbm" "pgm" "ppm")))
19642 (concat "\\."
19643 (regexp-opt (nconc (mapcar 'upcase
19644 image-file-name-extensions)
19645 image-file-name-extensions)
19646 t)
19647 "\\'"))))
19648
19649(defun org-file-image-p (file)
19650 "Return non-nil if FILE is an image."
19651 (save-match-data
19652 (string-match (org-image-file-name-regexp) file)))
19653
19654;;;; Functions extending outline functionality 21483;;;; Functions extending outline functionality
19655 21484
19656;; C-a should go to the beginning of a *visible* line, also in the 21485;; C-a should go to the beginning of a *visible* line, also in the
@@ -19659,15 +21488,22 @@ work correctly."
19659 "Go to the beginning of the current line. If that is invisible, continue 21488 "Go to the beginning of the current line. If that is invisible, continue
19660to a visible line beginning. This makes the function of C-a more intuitive." 21489to a visible line beginning. This makes the function of C-a more intuitive."
19661 (interactive) 21490 (interactive)
19662 (beginning-of-line 1) 21491 (let ((pos (point)))
19663 (if (bobp) 21492 (beginning-of-line 1)
19664 nil 21493 (if (bobp)
19665 (backward-char 1) 21494 nil
19666 (if (org-invisible-p) 21495 (backward-char 1)
19667 (while (and (not (bobp)) (org-invisible-p)) 21496 (if (org-invisible-p)
19668 (backward-char 1) 21497 (while (and (not (bobp)) (org-invisible-p))
19669 (beginning-of-line 1)) 21498 (backward-char 1)
19670 (forward-char 1)))) 21499 (beginning-of-line 1))
21500 (forward-char 1)))
21501 (when (and org-special-ctrl-a (looking-at org-todo-line-regexp)
21502 (= (char-after (match-end 1)) ?\ ))
21503 (goto-char
21504 (cond ((> pos (match-beginning 3)) (match-beginning 3))
21505 ((= pos (point)) (match-beginning 3))
21506 (t (point)))))))
19671 21507
19672(define-key org-mode-map "\C-a" 'org-beginning-of-line) 21508(define-key org-mode-map "\C-a" 'org-beginning-of-line)
19673 21509
@@ -19689,6 +21525,9 @@ to a visible line beginning. This makes the function of C-a more intuitive."
19689 21525
19690(defalias 'org-back-to-heading 'outline-back-to-heading) 21526(defalias 'org-back-to-heading 'outline-back-to-heading)
19691(defalias 'org-on-heading-p 'outline-on-heading-p) 21527(defalias 'org-on-heading-p 'outline-on-heading-p)
21528(defalias 'org-at-heading-p 'outline-on-heading-p)
21529(defun org-at-heading-or-item-p ()
21530 (or (org-on-heading-p) (org-at-item-p)))
19692 21531
19693(defun org-on-target-p () 21532(defun org-on-target-p ()
19694 (or (org-in-regexp org-radio-target-regexp) 21533 (or (org-in-regexp org-radio-target-regexp)
@@ -19751,7 +21590,7 @@ When ENTRY is non-nil, show the entire entry."
19751 (save-excursion (outline-end-of-heading) (point)) 21590 (save-excursion (outline-end-of-heading) (point))
19752 flag)))) 21591 flag))))
19753 21592
19754(defun org-end-of-subtree (&optional invisible-OK) 21593(defun org-end-of-subtree (&optional invisible-OK to-heading)
19755 ;; This is an exact copy of the original function, but it uses 21594 ;; This is an exact copy of the original function, but it uses
19756 ;; `org-back-to-heading', to make it work also in invisible 21595 ;; `org-back-to-heading', to make it work also in invisible
19757 ;; trees. And is uses an invisible-OK argument. 21596 ;; trees. And is uses an invisible-OK argument.
@@ -19763,13 +21602,14 @@ When ENTRY is non-nil, show the entire entry."
19763 (or first (> (funcall outline-level) level))) 21602 (or first (> (funcall outline-level) level)))
19764 (setq first nil) 21603 (setq first nil)
19765 (outline-next-heading)) 21604 (outline-next-heading))
19766 (if (memq (preceding-char) '(?\n ?\^M)) 21605 (unless to-heading
19767 (progn 21606 (if (memq (preceding-char) '(?\n ?\^M))
19768 ;; Go to end of line before heading 21607 (progn
19769 (forward-char -1) 21608 ;; Go to end of line before heading
19770 (if (memq (preceding-char) '(?\n ?\^M)) 21609 (forward-char -1)
19771 ;; leave blank line before heading 21610 (if (memq (preceding-char) '(?\n ?\^M))
19772 (forward-char -1))))) 21611 ;; leave blank line before heading
21612 (forward-char -1))))))
19773 (point)) 21613 (point))
19774 21614
19775(defun org-show-subtree () 21615(defun org-show-subtree ()
@@ -19824,7 +21664,13 @@ Show the heading too, if it is currently invisible."
19824 (remove-hook 'post-command-hook 'org-isearch-post-command 'local) 21664 (remove-hook 'post-command-hook 'org-isearch-post-command 'local)
19825 (org-show-context 'isearch)) 21665 (org-show-context 'isearch))
19826 21666
19827;;;; Repair problems with some other packages 21667
21668;;;; Address problems with some other packages
21669
21670;; Make flyspell not check words in links, to not mess up our keymap
21671(defun org-mode-flyspell-verify ()
21672 "Don't let flyspell put overlays at active buttons."
21673 (not (get-text-property (point) 'keymap)))
19828 21674
19829;; Make `bookmark-jump' show the jump location if it was hidden. 21675;; Make `bookmark-jump' show the jump location if it was hidden.
19830(eval-after-load "bookmark" 21676(eval-after-load "bookmark"
@@ -19850,6 +21696,26 @@ Show the heading too, if it is currently invisible."
19850 21696
19851;;;; Experimental code 21697;;;; Experimental code
19852 21698
21699(defun org-closed-in-range ()
21700 "Sparse tree of items closed in a certain time range.
21701Still experimental, may disappear in the furture."
21702 (interactive)
21703 ;; Get the time interval from the user.
21704 (let* ((time1 (time-to-seconds
21705 (org-read-date nil 'to-time nil "Starting date: ")))
21706 (time2 (time-to-seconds
21707 (org-read-date nil 'to-time nil "End date:")))
21708 ;; callback function
21709 (callback (lambda ()
21710 (let ((time
21711 (time-to-seconds
21712 (apply 'encode-time
21713 (org-parse-time-string
21714 (match-string 1))))))
21715 ;; check if time in interval
21716 (and (>= time time1) (<= time time2))))))
21717 ;; make tree, check each match with the callback
21718 (org-occur "CLOSED: +\\[\\(.*?\\)\\]" nil callback)))
19853 21719
19854;;;; Finish up 21720;;;; Finish up
19855 21721
diff --git a/lisp/tutorial.el b/lisp/tutorial.el
index 4856d178056..384b9b8415c 100644
--- a/lisp/tutorial.el
+++ b/lisp/tutorial.el
@@ -155,9 +155,9 @@ options:
155 " RET instead.")) 155 " RET instead."))
156 (insert "\n\nWith your current key bindings" 156 (insert "\n\nWith your current key bindings"
157 " you can use " 157 " you can use "
158 (if (string-equal "the menus" where) 158 (if (string-match "^the .*menus?$" where)
159 "" 159 ""
160 "the key ") 160 "the key")
161 where 161 where
162 " to get the function `" 162 " to get the function `"
163 (format "%s" db) 163 (format "%s" db)
@@ -406,7 +406,7 @@ where
406 WHERE is a text describing the key sequences to which DEF-FUN is 406 WHERE is a text describing the key sequences to which DEF-FUN is
407 bound now (or, if it is remapped, a key sequence 407 bound now (or, if it is remapped, a key sequence
408 for the function it is remapped to) 408 for the function it is remapped to)
409 REMARK is a list with info about rebinding. It has either of 409 REMARK is a list with info about rebinding. It has either of
410 these formats: 410 these formats:
411 411
412 \(TEXT cua-mode) 412 \(TEXT cua-mode)
@@ -434,14 +434,26 @@ where
434 (key-fun (if (eq def-fun 'ESC-prefix) 434 (key-fun (if (eq def-fun 'ESC-prefix)
435 (lookup-key global-map [27]) 435 (lookup-key global-map [27])
436 (key-binding key))) 436 (key-binding key)))
437 (where (where-is-internal (if rem-fun rem-fun def-fun)))) 437 (where (where-is-internal (if rem-fun rem-fun def-fun)))
438 cwhere)
438 (if where 439 (if where
439 (progn 440 (progn
440 (setq where (key-description (car where))) 441 (setq cwhere (car where)
442 where (key-description cwhere))
441 (when (and (< 10 (length where)) 443 (when (and (< 10 (length where))
442 (string= (substring where 0 (length "<menu-bar>")) 444 (string= (substring where 0 (length "<menu-bar>"))
443 "<menu-bar>")) 445 "<menu-bar>"))
444 (setq where "the menus"))) 446 (setq where
447 (if (and (vectorp cwhere)
448 (setq cwhere (elt cwhere 1))
449 (setq cwhere
450 (cadr
451 (assoc cwhere
452 (lookup-key global-map
453 [menu-bar]))))
454 (stringp cwhere))
455 (format "the `%s' menu" cwhere)
456 "the menus"))))
445 (setq where "")) 457 (setq where ""))
446 (setq remark nil) 458 (setq remark nil)
447 (unless 459 (unless
@@ -915,7 +927,7 @@ See `get-lang-string' for more information.")
915In certain places Emacs can replace a string shown to the user with 927In certain places Emacs can replace a string shown to the user with
916a language specific string. This function retrieves such strings. 928a language specific string. This function retrieves such strings.
917 929
918LANG is the language specification. It should be one of those 930LANG is the language specification. It should be one of those
919strings that can be returned by `read-language-name'. STRINGID 931strings that can be returned by `read-language-name'. STRINGID
920is a symbol that specifies the string to retrieve. 932is a symbol that specifies the string to retrieve.
921 933
diff --git a/lisp/version.el b/lisp/version.el
index dda64ccb4f1..aa543e0d516 100644
--- a/lisp/version.el
+++ b/lisp/version.el
@@ -27,6 +27,9 @@
27 27
28;;; Code: 28;;; Code:
29 29
30(defconst emacs-copyright "Copyright (C) 2007 Free Software Foundation, Inc."
31 "Short copyright string for this version of Emacs.")
32
30(defconst emacs-version "23.0.51" "\ 33(defconst emacs-version "23.0.51" "\
31Version numbers of this version of Emacs.") 34Version numbers of this version of Emacs.")
32 35
diff --git a/lispintro/ChangeLog b/lispintro/ChangeLog
index 7000f1fca19..2e08725df69 100644
--- a/lispintro/ChangeLog
+++ b/lispintro/ChangeLog
@@ -1,3 +1,7 @@
12007-06-02 Chong Yidong <cyd@stupidchicken.com>
2
3 * Version 22.1 released.
4
12007-01-30 Robert J. Chassell <bob@rattlesnake.com> 52007-01-30 Robert J. Chassell <bob@rattlesnake.com>
2 6
3 * emacs-lisp-intro.texi (else): Rephrase message of first 7 * emacs-lisp-intro.texi (else): Rephrase message of first
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index a9d931d3140..7802c74f054 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,9 +1,31 @@
12007-06-03 Nick Roberts <nickrob@snap.net.nz>
2
3 * commands.texi (Click Events): Describe width and height when
4 object is nil.
5
12007-05-30 Nick Roberts <nickrob@snap.net.nz> 62007-05-30 Nick Roberts <nickrob@snap.net.nz>
2 7
3 * commands.texi (Click Events): Layout more logically. Describe 8 * commands.texi (Click Events): Layout more logically. Describe
4 width and height. 9 width and height.
5 (Drag Events, Motion Events): Update to new format for position. 10 (Drag Events, Motion Events): Update to new format for position.
6 11
122007-06-02 Richard Stallman <rms@gnu.org>
13
14 * frames.texi (Color Parameters): Add xref to (emacs)Standard Faces.
15
162007-06-02 Chong Yidong <cyd@stupidchicken.com>
17
18 * Version 22.1 released.
19
202007-06-01 Stefan Monnier <monnier@iro.umontreal.ca>
21
22 * text.texi (Special Properties): Correct meaning of fontified
23 face.
24
252007-05-30 Richard Stallman <rms@gnu.org>
26
27 * text.texi (Special Properties): Add link to Adjusting Point.
28
72007-05-12 Richard Stallman <rms@gnu.org> 292007-05-12 Richard Stallman <rms@gnu.org>
8 30
9 * text.texi (Margins): indent-to-left-margin is not the default. 31 * text.texi (Margins): indent-to-left-margin is not the default.
diff --git a/lispref/commands.texi b/lispref/commands.texi
index 10f4555e1f0..fabe38f9428 100644
--- a/lispref/commands.texi
+++ b/lispref/commands.texi
@@ -1225,7 +1225,7 @@ input stream. @xref{Key Sequence Input}.
1225 1225
1226 1226
1227@item @var{x}, @var{y} 1227@item @var{x}, @var{y}
1228These are the pixel-denominated coordinates of the click, relative to 1228These are the pixel coordinates of the click, relative to
1229the top left corner of @var{window}, which is @code{(0 . 0)}. 1229the top left corner of @var{window}, which is @code{(0 . 0)}.
1230For the mode or header line, @var{y} does not have meaningful data. 1230For the mode or header line, @var{y} does not have meaningful data.
1231For the vertical line, @var{x} does not have meaningful data. 1231For the vertical line, @var{x} does not have meaningful data.
@@ -1266,13 +1266,14 @@ This is the image object on which the click occurred. It is either
1266an image object as returned by @code{find-image} if click was in an image. 1266an image object as returned by @code{find-image} if click was in an image.
1267 1267
1268@item @var{dx}, @var{dy} 1268@item @var{dx}, @var{dy}
1269These are the pixel-denominated coordinates of the click, relative to 1269These are the pixel coordinates of the click, relative to
1270the top left corner of @var{object}, which is @code{(0 . 0)}. If 1270the top left corner of @var{object}, which is @code{(0 . 0)}. If
1271@var{object} is @code{nil}, the coordinates are relative to the top 1271@var{object} is @code{nil}, the coordinates are relative to the top
1272left corner of the character glyph clicked on. 1272left corner of the character glyph clicked on.
1273 1273
1274@item @var{width}, @var{height} 1274@item @var{width}, @var{height}
1275These are the pixel-denominated width and height of @var{object}. 1275These are the pixel width and height of @var{object} or, if this is
1276@code{nil}, those of the character glyph clicked on.
1276@end table 1277@end table
1277 1278
1278@sp 1 1279@sp 1
diff --git a/lispref/display.texi b/lispref/display.texi
index acf927b449f..f644a02c2eb 100644
--- a/lispref/display.texi
+++ b/lispref/display.texi
@@ -2505,8 +2505,9 @@ makes @code{modeline} an alias for the @code{mode-line} face.
2505@cindex automatic face assignment 2505@cindex automatic face assignment
2506@cindex faces, automatic choice 2506@cindex faces, automatic choice
2507 2507
2508 This hook is used for automatically assigning faces to text in the 2508 This hook is used for automatically assigning facesto text in the
2509buffer. It is part of the implementation of Font-Lock mode. 2509buffer. It is part of the implementation of Jit-Lock mode, used by
2510Font-Lock.
2510 2511
2511@defvar fontification-functions 2512@defvar fontification-functions
2512This variable holds a list of functions that are called by Emacs 2513This variable holds a list of functions that are called by Emacs
diff --git a/lispref/elisp.texi b/lispref/elisp.texi
index acc963d96fd..accfe05c27d 100644
--- a/lispref/elisp.texi
+++ b/lispref/elisp.texi
@@ -7,7 +7,7 @@
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.990 10@set EMACSVER 22.1.50
11 11
12@dircategory Emacs 12@dircategory Emacs
13@direntry 13@direntry
diff --git a/lispref/frames.texi b/lispref/frames.texi
index 527f27385f3..b8a0d4749e2 100644
--- a/lispref/frames.texi
+++ b/lispref/frames.texi
@@ -706,6 +706,7 @@ results for LCD color displays.
706 706
707These frame parameters are semi-obsolete in that they are automatically 707These frame parameters are semi-obsolete in that they are automatically
708equivalent to particular face attributes of particular faces. 708equivalent to particular face attributes of particular faces.
709@xref{Standard Faces,,, emacs, The Emacs Manual}.
709 710
710@table @code 711@table @code
711@item font 712@item font
diff --git a/lispref/text.texi b/lispref/text.texi
index 8fb155d2109..f05a0cd696a 100644
--- a/lispref/text.texi
+++ b/lispref/text.texi
@@ -2951,6 +2951,11 @@ meanings. The following sections list a few additional special property
2951names that control filling and property inheritance. All other names 2951names that control filling and property inheritance. All other names
2952have no standard meaning, and you can use them as you like. 2952have no standard meaning, and you can use them as you like.
2953 2953
2954 Note: the properties @code{composition}, @code{display},
2955@code{invisible} and @code{intangible} can also cause point to move to
2956an acceptable place, after each Emacs command. @xref{Adjusting
2957Point}.
2958
2954@table @code 2959@table @code
2955@cindex property category of text character 2960@cindex property category of text character
2956@kindex category @r{(text property)} 2961@kindex category @r{(text property)}
@@ -3019,24 +3024,11 @@ that all text between the character and where the mouse is have the same
3019 3024
3020@item fontified 3025@item fontified
3021@kindex fontified @r{(text property)} 3026@kindex fontified @r{(text property)}
3022This property says whether the character has a face assigned to it by font 3027This property says whether the text is ready for display. If
3023locking. The display engine tests it to decide whether a buffer 3028@code{nil}, Emacs's redisplay routine calls the functions in
3024portion needs refontifying before display. @xref{Auto Faces}. It 3029@code{fontification-functions} (@pxref{Auto Faces}) to prepare this
3025takes one of three values: 3030part of the buffer before it is displayed. It is used internally by
3026 3031the ``just in time'' font locking code.
3027@table @asis
3028@item @code{nil}
3029Font locking is disabled, or the character's @code{face} property, if
3030any, is invalid.
3031
3032@item @code{defer}
3033This value is only used when ``just in time'' font locking is enabled
3034and it means that the character's @code{face} property is invalid and
3035needs deferred fontification.
3036
3037@item @code{t}
3038The character's @code{face} property, or absence of one, is valid.
3039@end table
3040 3032
3041@item display 3033@item display
3042This property activates various features that change the 3034This property activates various features that change the
@@ -3138,6 +3130,10 @@ If you try to move point forward into the group, point actually moves to
3138the end of the group. If you try to move point backward into the group, 3130the end of the group. If you try to move point backward into the group,
3139point actually moves to the start of the group. 3131point actually moves to the start of the group.
3140 3132
3133If consecutive characters have unequal non-@code{nil}
3134@code{intangible} properties, they belong to separate groups; each
3135group is separately treated as described above.
3136
3141When the variable @code{inhibit-point-motion-hooks} is non-@code{nil}, 3137When the variable @code{inhibit-point-motion-hooks} is non-@code{nil},
3142the @code{intangible} property is ignored. 3138the @code{intangible} property is ignored.
3143 3139
diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog
index 5396754d142..f6764e87e17 100644
--- a/lwlib/ChangeLog
+++ b/lwlib/ChangeLog
@@ -1,3 +1,7 @@
12007-06-02 Chong Yidong <cyd@stupidchicken.com>
2
3 * Version 22.1 released.
4
12007-02-28 Glenn Morris <rgm@gnu.org> 52007-02-28 Glenn Morris <rgm@gnu.org>
2 6
3 * Makefile.in (distclean): Delete Makefile. 7 * Makefile.in (distclean): Delete Makefile.
diff --git a/mac/ChangeLog b/mac/ChangeLog
index 5ce1044bc23..5413a1f04bb 100644
--- a/mac/ChangeLog
+++ b/mac/ChangeLog
@@ -1,3 +1,7 @@
12007-06-02 Chong Yidong <cyd@stupidchicken.com>
2
3 * Version 22.1 released.
4
12007-05-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 52007-05-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2 6
3 * INSTALL: Add note about moving self-contained application bundle 7 * INSTALL: Add note about moving self-contained application bundle
diff --git a/man/ChangeLog b/man/ChangeLog
index d6ebb72db4b..e216f6ab7c3 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,10 +1,33 @@
12007-05-28 Michael Albinus <michael.albinus@gmx.de> 12007-06-06 Andreas Seltenreich <andreas@gate450.dyndns.org>
2
3 * gnus.texi (Misc Group Stuff, Summary Buffer)
4 (Server Commands, Article Keymap): Fix typo. s/function/command/.
5
62007-06-07 Alan Mackenzie <acm@muc.de>
7
8 * display.texi (Optional Mode Line): Document the new form of
9 line+column numbers, "(561,2)".
10
112007-06-06 Juanma Barranquero <lekktu@gmail.com>
12
13 * cc-mode.texi (Comment Commands, Getting Started, Style Variables):
14 * gnus.texi (Article Buttons, Mail Source Customization)
15 (Sending or Not Sending, Customizing NNDiary):
16 * maintaining.texi (Create Tags Table):
17 * message.texi (Message Headers):
18 * mh-e.texi (HTML): Fix typos.
19
202007-06-07 Michael Albinus <michael.albinus@gmx.de>
2 21
3 Sync with Tramp 2.0.56. 22 Sync with Tramp 2.0.56.
4 23
5 * tramp.texi (Frequently Asked Questions): Improve ~/.zshrc 24 * tramp.texi (Frequently Asked Questions): Improve ~/.zshrc
6 settings. Reported by Ted Zlatanov <tzz@lifelogs.com>. 25 settings. Reported by Ted Zlatanov <tzz@lifelogs.com>.
7 26
272007-06-02 Chong Yidong <cyd@stupidchicken.com>
28
29 * Version 22.1 released.
30
82007-05-26 Michael Olson <mwolson@gnu.org> 312007-05-26 Michael Olson <mwolson@gnu.org>
9 32
10 * erc.texi (Modules): Fix references to completion modules. 33 * erc.texi (Modules): Fix references to completion modules.
@@ -15,12 +38,12 @@
15 38
162007-05-09 Didier Verna <didier@xemacs.org> 392007-05-09 Didier Verna <didier@xemacs.org>
17 40
18 * gnus.texi (Email Based Diary): New. Proper documentation for the 41 * gnus.texi (Email Based Diary): New. Proper documentation for the
19 nndiary back end and the gnus-diary library. 42 nndiary back end and the gnus-diary library.
20 43
212007-05-07 Karl Berry <karl@gnu.org> 442007-05-07 Karl Berry <karl@gnu.org>
22 45
23 * emacs.texi (EMACSVER): back to 22. 46 * emacs.texi (EMACSVER): Back to 22.
24 47
252007-05-06 Richard Stallman <rms@gnu.org> 482007-05-06 Richard Stallman <rms@gnu.org>
26 49
@@ -39,9 +62,9 @@
39 62
40 * emacs.texi (EMACSVER) [smallbook]: 22 for printed version. 63 * emacs.texi (EMACSVER) [smallbook]: 22 for printed version.
41 64
42 * .cvsignore (*.pdf): new entry. 65 * .cvsignore (*.pdf): New entry.
43 66
44 * texinfo.tex: update from current version for better pdf generation. 67 * texinfo.tex: Update from current version for better pdf generation.
45 68
46 * emacs.texi (\urlcolor, \linkcolor) [smallbook]: \let to \Black 69 * emacs.texi (\urlcolor, \linkcolor) [smallbook]: \let to \Black
47 for printing. 70 for printing.
@@ -1375,9 +1398,9 @@
1375 * emacs.texi (\hbadness): Set to 6000 so we aren't bothered by 1398 * emacs.texi (\hbadness): Set to 6000 so we aren't bothered by
1376 not-too-underfull hboxes in the TeX output. 1399 not-too-underfull hboxes in the TeX output.
1377 * abbrevs.texi, buffers.texi, building.texi, calendar.texi, 1400 * abbrevs.texi, buffers.texi, building.texi, calendar.texi,
1378 cmdargs.texi, custom.texi, dired.texi, macos.texi, 1401 * cmdargs.texi, custom.texi, dired.texi, macos.texi,
1379 maintaining.texi, misc.texi, mule.texi, programs.texi, rmail.texi, 1402 * maintaining.texi, misc.texi, mule.texi, programs.texi, rmail.texi,
1380 sending.texi, text.texi: fix overfull/underfull boxes. 1403 * sending.texi, text.texi: Fix overfull/underfull boxes.
1381 1404
13822006-07-03 Romain Francoise <romain@orebokech.com> 14052006-07-03 Romain Francoise <romain@orebokech.com>
1383 1406
@@ -1460,7 +1483,7 @@
1460 1483
14612006-06-25 Nick Roberts <nickrob@snap.net.nz> 14842006-06-25 Nick Roberts <nickrob@snap.net.nz>
1462 1485
1463 * frames.texi (XTerm Mouse) Rename to... 1486 * frames.texi (XTerm Mouse): Rename to...
1464 (Text-Only Mouse): ...this. Mention t-mouse-mode. 1487 (Text-Only Mouse): ...this. Mention t-mouse-mode.
1465 1488
1466 * emacs.texi (Top): Use new node name. 1489 * emacs.texi (Top): Use new node name.
@@ -1803,7 +1826,7 @@
18032006-05-06 Eli Zaretskii <eliz@gnu.org> 18262006-05-06 Eli Zaretskii <eliz@gnu.org>
1804 1827
1805 * makefile.w32-in (emacs.dvi): 1828 * makefile.w32-in (emacs.dvi):
1806 * Makefile.in (emacs.dvi): Add xresmini.texi 1829 * Makefile.in (emacs.dvi): Add xresmini.texi.
1807 1830
1808 * xresmini.texi (Table of Resources): Remove xref to non-existent 1831 * xresmini.texi (Table of Resources): Remove xref to non-existent
1809 node "LessTif Resources". 1832 node "LessTif Resources".
@@ -1889,7 +1912,7 @@
1889 Next, and Up links. 1912 Next, and Up links.
1890 1913
1891 * emacs.texi (Top) [ifnottex]: Add menu entries for "Picture Mode" 1914 * emacs.texi (Top) [ifnottex]: Add menu entries for "Picture Mode"
1892 and its sections. @include picture-xtra.texi 1915 and its sections. @include picture-xtra.texi.
1893 1916
1894 * maintaining.texi (Maintaining) [ifnottex]: Add menu entry for 1917 * maintaining.texi (Maintaining) [ifnottex]: Add menu entry for
1895 "Emerge". 1918 "Emerge".
@@ -1944,11 +1967,11 @@
1944 1967
19452006-05-05 Karl Berry <karl@gnu.org> 19682006-05-05 Karl Berry <karl@gnu.org>
1946 1969
1947 * texinfo.tex (\definetextfonsizexi, \definetextfonsizex): new cmds. 1970 * texinfo.tex (\definetextfonsizexi, \definetextfonsizex): New cmds.
1948 (\fonttextsize): new user-level command to change text font size. 1971 (\fonttextsize): New user-level command to change text font size.
1949 * emacs.texi: call @fonttextsize 10, inside @tex to avoid 1972 * emacs.texi: Call @fonttextsize 10, inside @tex to avoid
1950 errors from the current release of makeinfo (4.8). 1973 errors from the current release of makeinfo (4.8).
1951 * help.texi (Library Keywords): change widest word in multitable 1974 * help.texi (Library Keywords): Change widest word in multitable
1952 template from `emulations' to `convenience'. (Not sure if this is 1975 template from `emulations' to `convenience'. (Not sure if this is
1953 related to the font change.) 1976 related to the font change.)
1954 1977
@@ -2148,7 +2171,7 @@
2148 (Inserting Version Control Headers, Customizing VC, General Options) 2171 (Inserting Version Control Headers, Customizing VC, General Options)
2149 (Options for RCS and SCCS, Options specific for CVS): Move all 2172 (Options for RCS and SCCS, Options specific for CVS): Move all
2150 these nodes to emacs-xtra.texi, for brevity. 2173 these nodes to emacs-xtra.texi, for brevity.
2151 * cmdargs.texi, files.texi: change cross-references. 2174 * cmdargs.texi, files.texi: Change cross-references.
2152 2175
21532006-04-11 Reiner Steib <Reiner.Steib@gmx.de> 21762006-04-11 Reiner Steib <Reiner.Steib@gmx.de>
2154 2177
@@ -2179,13 +2202,13 @@
2179 2202
21802006-04-09 Karl Berry <karl@gnu.org> 22032006-04-09 Karl Berry <karl@gnu.org>
2181 2204
2182 * msdog.texi, emacs-xtra.texi: move all the MS-DOS material to 2205 * msdog.texi, emacs-xtra.texi: Move all the MS-DOS material to
2183 emacs-xtra.texi, leaving only MS Windows information. 2206 emacs-xtra.texi, leaving only MS Windows information.
2184 * building.texi, emacs.texi, frames.texi, gnu.texi, macos.texi, 2207 * building.texi, emacs.texi, frames.texi, gnu.texi, macos.texi,
2185 msdog.texi, mule.texi, trouble.texi: change cross-references and 2208 * msdog.texi, mule.texi, trouble.texi: Change cross-references and
2186 node names. 2209 node names.
2187 2210
2188 * emacs.texi: move @summarycontents and @contents to the beginning 2211 * emacs.texi: Move @summarycontents and @contents to the beginning
2189 of the file. 2212 of the file.
2190 2213
21912006-04-07 Reiner Steib <Reiner.Steib@gmx.de> 22142006-04-07 Reiner Steib <Reiner.Steib@gmx.de>
@@ -2264,7 +2287,7 @@
2264 2287
2265 * sending.texi (Mail Sending): pxref to Top needs five args. 2288 * sending.texi (Mail Sending): pxref to Top needs five args.
2266 2289
2267 * texinfo.tex: update to current version (2006-03-21.13). 2290 * texinfo.tex: Update to current version (2006-03-21.13).
2268 2291
22692006-04-02 Bill Wohler <wohler@newt.com> 22922006-04-02 Bill Wohler <wohler@newt.com>
2270 2293
@@ -2913,7 +2936,7 @@
2913 * mark.texi: Minor clarifications. 2936 * mark.texi: Minor clarifications.
2914 (Selective Undo): Node deleted. 2937 (Selective Undo): Node deleted.
2915 2938
2916 * m-x.texi: Minor clarifications 2939 * m-x.texi: Minor clarifications.
2917 2940
2918 * killing.texi: Minor clarifications. 2941 * killing.texi: Minor clarifications.
2919 Refer to "graphical" terminals, rather than window systems. 2942 Refer to "graphical" terminals, rather than window systems.
@@ -3603,7 +3626,7 @@
3603 3626
36042005-11-04 Carsten Dominik <dominik@science.uva.nl> 36272005-11-04 Carsten Dominik <dominik@science.uva.nl>
3605 3628
3606 * org.texi: Version number changed to 3.19 3629 * org.texi: Version number changed to 3.19.
3607 3630
36082005-11-04 Romain Francoise <romain@orebokech.com> 36312005-11-04 Romain Francoise <romain@orebokech.com>
3609 3632
@@ -3802,7 +3825,7 @@
3802 3825
38032005-10-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 38262005-10-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
3804 3827
3805 * cmdargs.texi (Icons X): -nb => -nbi 3828 * cmdargs.texi (Icons X): -nb => -nbi.
3806 3829
38072005-10-10 Chong Yidong <cyd@stupidchicken.com> 38302005-10-10 Chong Yidong <cyd@stupidchicken.com>
3808 3831
@@ -3893,7 +3916,7 @@
3893 3916
38942005-09-23 Carsten Dominik <dominik@science.uva.nl> 39172005-09-23 Carsten Dominik <dominik@science.uva.nl>
3895 3918
3896 * org.texi Version 3.16 3919 * org.texi Version 3.16.
3897 3920
38982005-09-21 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 39212005-09-21 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
3899 3922
@@ -4153,11 +4176,11 @@
4153 4176
41542005-07-19 Carsten Dominik <dominik@science.uva.nl> 41772005-07-19 Carsten Dominik <dominik@science.uva.nl>
4155 4178
4156 * org.texi: Version 3.14 4179 * org.texi: Version 3.14.
4157 4180
41582005-07-04 Carsten Dominik <dominik@science.uva.nl> 41812005-07-04 Carsten Dominik <dominik@science.uva.nl>
4159 4182
4160 * org.texi: Version 3.13 4183 * org.texi: Version 3.13.
4161 4184
41622005-07-19 Juri Linkov <juri@jurta.org> 41852005-07-19 Juri Linkov <juri@jurta.org>
4163 4186
@@ -4261,7 +4284,7 @@
4261 4284
42622005-06-29 Carsten Dominik <dominik@science.uva.nl> 42852005-06-29 Carsten Dominik <dominik@science.uva.nl>
4263 4286
4264 * org.texi: Version 3.12 4287 * org.texi: Version 3.12.
4265 4288
42662005-06-24 Richard M. Stallman <rms@gnu.org> 42892005-06-24 Richard M. Stallman <rms@gnu.org>
4267 4290
@@ -4341,7 +4364,7 @@
4341 4364
43422005-06-13 Carsten Dominik <dominik@science.uva.nl> 43652005-06-13 Carsten Dominik <dominik@science.uva.nl>
4343 4366
4344 * org.texi: Version 3.11 4367 * org.texi: Version 3.11.
4345 4368
43462005-06-12 Jay Belanger <belanger@truman.edu> 43692005-06-12 Jay Belanger <belanger@truman.edu>
4347 4370
@@ -4487,11 +4510,11 @@
4487 4510
44882005-05-20 Carsten Dominik <dominik@science.uva.nl> 45112005-05-20 Carsten Dominik <dominik@science.uva.nl>
4489 4512
4490 * org.texi: Version 3.09 4513 * org.texi: Version 3.09.
4491 4514
44922005-05-18 Carsten Dominik <dominik@science.uva.nl> 45152005-05-18 Carsten Dominik <dominik@science.uva.nl>
4493 4516
4494 * reftex.texi: Version 4.28 4517 * reftex.texi: Version 4.28.
4495 4518
44962005-05-18 Luc Teirlinck <teirllm@auburn.edu> 45192005-05-18 Luc Teirlinck <teirllm@auburn.edu>
4497 4520
@@ -4639,7 +4662,7 @@
4639 4662
46402005-04-25 Chong Yidong <cyd@stupidchicken.com> 46632005-04-25 Chong Yidong <cyd@stupidchicken.com>
4641 4664
4642 * ack.texi (Acknowledgments): Delete info about iso-acc.el 4665 * ack.texi (Acknowledgments): Delete info about iso-acc.el.
4643 4666
4644 * dired.texi (Misc Dired Features): Document 4667 * dired.texi (Misc Dired Features): Document
4645 dired-compare-directories. 4668 dired-compare-directories.
@@ -6199,7 +6222,7 @@
6199 6222
62002004-09-10 Eli Zaretskii <eliz@gnu.org> 62232004-09-10 Eli Zaretskii <eliz@gnu.org>
6201 6224
6202 * Makefile.in (../info/gnus, gnus.dvi): Depend on gnus-faq.texi 6225 * Makefile.in (../info/gnus, gnus.dvi): Depend on gnus-faq.texi.
6203 6226
62042004-09-09 Kim F. Storm <storm@cua.dk> 62272004-09-09 Kim F. Storm <storm@cua.dk>
6205 6228
@@ -7305,7 +7328,7 @@
7305 7328
73062003-02-17 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 73292003-02-17 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
7307 7330
7308 * xresources.texi (GTK names in Emacs): Add emacs-toolbar - GtkToolbar 7331 * xresources.texi (GTK names in Emacs): Add emacs-toolbar - GtkToolbar.
7309 7332
73102003-02-05 Kai Gro,A_(Bjohann <kai.grossjohann@uni-duisburg.de> 73332003-02-05 Kai Gro,A_(Bjohann <kai.grossjohann@uni-duisburg.de>
7311 7334
@@ -7375,8 +7398,8 @@
7375 Also use @ifnottex instead of @ifinfo around the top node, where 7398 Also use @ifnottex instead of @ifinfo around the top node, where
7376 needed for the sake of the HTML output. 7399 needed for the sake of the HTML output.
7377 (The Gnus manual is not fixed since it's not clear to me how it 7400 (The Gnus manual is not fixed since it's not clear to me how it
7378 works; and the Tramp manual already uses @copying, although in an 7401 works; and the Tramp manual already uses @copying, although in an
7379 unusual way. All others were changed.) 7402 unusual way. All others were changed.)
7380 7403
73812002-09-10 Jonathan Yavner <jyavner@engineer.com> 74042002-09-10 Jonathan Yavner <jyavner@engineer.com>
7382 7405
@@ -7501,7 +7524,7 @@
75011999-10-12 Stefan Monnier <monnier@cs.yale.edu> 75241999-10-12 Stefan Monnier <monnier@cs.yale.edu>
7502 7525
7503 * Makefile.in (faq): Use ../info/emacs-faq.info (as specified in the 7526 * Makefile.in (faq): Use ../info/emacs-faq.info (as specified in the
7504 faq.texi file) rather than ../info/faq. 7527 faq.texi file) rather than ../info/faq.
7505 7528
75061999-10-07 Gerd Moellmann <gerd@gnu.org> 75291999-10-07 Gerd Moellmann <gerd@gnu.org>
7507 7530
diff --git a/man/cc-mode.texi b/man/cc-mode.texi
index 217c32ff911..3cb670b3b53 100644
--- a/man/cc-mode.texi
+++ b/man/cc-mode.texi
@@ -236,113 +236,113 @@ functions, classes etc - there are other packages for that.
236@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 236@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
237 237
238@menu 238@menu
239* Introduction:: 239* Introduction::
240* Overview:: 240* Overview::
241* Getting Started:: 241* Getting Started::
242* Commands:: 242* Commands::
243* Font Locking:: 243* Font Locking::
244* Config Basics:: 244* Config Basics::
245* Custom Filling and Breaking:: 245* Custom Filling and Breaking::
246* Custom Auto-newlines:: 246* Custom Auto-newlines::
247* Clean-ups:: 247* Clean-ups::
248* Indentation Engine Basics:: 248* Indentation Engine Basics::
249* Customizing Indentation:: 249* Customizing Indentation::
250* Custom Macros:: 250* Custom Macros::
251* Odds and Ends:: 251* Odds and Ends::
252* Sample .emacs File:: 252* Sample .emacs File::
253* Performance Issues:: 253* Performance Issues::
254* Limitations and Known Bugs:: 254* Limitations and Known Bugs::
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* GNU Free Documentation License::
259* Command and Function Index:: 259* Command and Function Index::
260* Variable Index:: 260* Variable Index::
261* Concept and Key Index:: 261* Concept and Key Index::
262 262
263@detailmenu 263@detailmenu
264 --- The Detailed Node Listing --- 264 --- The Detailed Node Listing ---
265 265
266Commands 266Commands
267 267
268* Indentation Commands:: 268* Indentation Commands::
269* Comment Commands:: 269* Comment Commands::
270* Movement Commands:: 270* Movement Commands::
271* Filling and Breaking:: 271* Filling and Breaking::
272* Minor Modes:: 272* Minor Modes::
273* Electric Keys:: 273* Electric Keys::
274* Auto-newlines:: 274* Auto-newlines::
275* Hungry WS Deletion:: 275* Hungry WS Deletion::
276* Subword Movement:: 276* Subword Movement::
277* Other Commands:: 277* Other Commands::
278 278
279Font Locking 279Font Locking
280 280
281* Font Locking Preliminaries:: 281* Font Locking Preliminaries::
282* Faces:: 282* Faces::
283* Doc Comments:: 283* Doc Comments::
284* AWK Mode Font Locking:: 284* AWK Mode Font Locking::
285 285
286Configuration Basics 286Configuration Basics
287 287
288* CC Hooks:: 288* CC Hooks::
289* Style Variables:: 289* Style Variables::
290* Styles:: 290* Styles::
291 291
292Styles 292Styles
293 293
294* Built-in Styles:: 294* Built-in Styles::
295* Choosing a Style:: 295* Choosing a Style::
296* Adding Styles:: 296* Adding Styles::
297* File Styles:: 297* File Styles::
298 298
299Customizing Auto-newlines 299Customizing Auto-newlines
300 300
301* Hanging Braces:: 301* Hanging Braces::
302* Hanging Colons:: 302* Hanging Colons::
303* Hanging Semicolons and Commas:: 303* Hanging Semicolons and Commas::
304 304
305Hanging Braces 305Hanging Braces
306 306
307* Custom Braces:: 307* Custom Braces::
308 308
309Indentation Engine Basics 309Indentation Engine Basics
310 310
311* Syntactic Analysis:: 311* Syntactic Analysis::
312* Syntactic Symbols:: 312* Syntactic Symbols::
313* Indentation Calculation:: 313* Indentation Calculation::
314 314
315Syntactic Symbols 315Syntactic Symbols
316 316
317* Function Symbols:: 317* Function Symbols::
318* Class Symbols:: 318* Class Symbols::
319* Conditional Construct Symbols:: 319* Conditional Construct Symbols::
320* Switch Statement Symbols:: 320* Switch Statement Symbols::
321* Brace List Symbols:: 321* Brace List Symbols::
322* External Scope Symbols:: 322* External Scope Symbols::
323* Paren List Symbols:: 323* Paren List Symbols::
324* Literal Symbols:: 324* Literal Symbols::
325* Multiline Macro Symbols:: 325* Multiline Macro Symbols::
326* Objective-C Method Symbols:: 326* Objective-C Method Symbols::
327* Anonymous Class Symbol:: 327* Anonymous Class Symbol::
328* Statement Block Symbols:: 328* Statement Block Symbols::
329* K&R Symbols:: 329* K&R Symbols::
330 330
331Customizing Indentation 331Customizing Indentation
332 332
333* c-offsets-alist:: 333* c-offsets-alist::
334* Interactive Customization:: 334* Interactive Customization::
335* Line-Up Functions:: 335* Line-Up Functions::
336* Custom Line-Up:: 336* Custom Line-Up::
337* Other Indentation:: 337* Other Indentation::
338 338
339Line-Up Functions 339Line-Up Functions
340 340
341* Brace/Paren Line-Up:: 341* Brace/Paren Line-Up::
342* List Line-Up:: 342* List Line-Up::
343* Operator Line-Up:: 343* Operator Line-Up::
344* Comment Line-Up:: 344* Comment Line-Up::
345* Misc Line-Up:: 345* Misc Line-Up::
346 346
347@end detailmenu 347@end detailmenu
348@end menu 348@end menu
@@ -534,7 +534,7 @@ is no ``easy customization'' facility for making this change.}:
534@end example 534@end example
535 535
536@noindent 536@noindent
537Details of of this and other similar ``Minor Modes'' appear in the 537Details of this and other similar ``Minor Modes'' appear in the
538section @ref{Minor Modes}. 538section @ref{Minor Modes}.
539 539
540@item Making the @key{RET} key indent the new line 540@item Making the @key{RET} key indent the new line
@@ -613,16 +613,16 @@ structures.
613 613
614 614
615@menu 615@menu
616* Indentation Commands:: 616* Indentation Commands::
617* Comment Commands:: 617* Comment Commands::
618* Movement Commands:: 618* Movement Commands::
619* Filling and Breaking:: 619* Filling and Breaking::
620* Minor Modes:: 620* Minor Modes::
621* Electric Keys:: 621* Electric Keys::
622* Auto-newlines:: 622* Auto-newlines::
623* Hungry WS Deletion:: 623* Hungry WS Deletion::
624* Subword Movement:: 624* Subword Movement::
625* Other Commands:: 625* Other Commands::
626@end menu 626@end menu
627 627
628@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 628@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -852,7 +852,7 @@ actions describing how they should be handled. If a certain line type
852isn't present on the list then the line is indented to the column 852isn't present on the list then the line is indented to the column
853specified by @code{comment-column}. 853specified by @code{comment-column}.
854 854
855See the documentation string for for a full description of this 855See the documentation string for a full description of this
856variable (use @kbd{C-h v c-indent-comment-alist}). 856variable (use @kbd{C-h v c-indent-comment-alist}).
857@end defopt 857@end defopt
858 858
@@ -1810,10 +1810,10 @@ chapter, @ref{AWK Mode Font Locking}, applies to AWK. The other
1810sections apply to the other languages. 1810sections apply to the other languages.
1811 1811
1812@menu 1812@menu
1813* Font Locking Preliminaries:: 1813* Font Locking Preliminaries::
1814* Faces:: 1814* Faces::
1815* Doc Comments:: 1815* Doc Comments::
1816* AWK Mode Font Locking:: 1816* AWK Mode Font Locking::
1817@end menu 1817@end menu
1818 1818
1819 1819
@@ -2318,9 +2318,9 @@ have it enabled by default by placing the following in your
2318@end table 2318@end table
2319 2319
2320@menu 2320@menu
2321* CC Hooks:: 2321* CC Hooks::
2322* Style Variables:: 2322* Style Variables::
2323* Styles:: 2323* Styles::
2324@end menu 2324@end menu
2325 2325
2326@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2326@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -2409,7 +2409,7 @@ The variables that @ccmode{}'s style system control are called
2409@dfn{style variables}. Note that style variables are ordinary Lisp 2409@dfn{style variables}. Note that style variables are ordinary Lisp
2410variables, which the style system initializes; you can change their 2410variables, which the style system initializes; you can change their
2411values at any time (e.g. in a hook function). The style system can 2411values at any time (e.g. in a hook function). The style system can
2412also also set other variables, to some extent. @xref{Styles}. 2412also set other variables, to some extent. @xref{Styles}.
2413 2413
2414@dfn{Style variables} are handled specially in several ways: 2414@dfn{Style variables} are handled specially in several ways:
2415 2415
@@ -2509,10 +2509,10 @@ for any particular style, and pretty easily start editing new or
2509existing code using these styles. 2509existing code using these styles.
2510 2510
2511@menu 2511@menu
2512* Built-in Styles:: 2512* Built-in Styles::
2513* Choosing a Style:: 2513* Choosing a Style::
2514* Adding Styles:: 2514* Adding Styles::
2515* File Styles:: 2515* File Styles::
2516@end menu 2516@end menu
2517 2517
2518 2518
@@ -3059,9 +3059,9 @@ to remove these automatically added newlines in certain specific
3059circumstances. @xref{Clean-ups}. 3059circumstances. @xref{Clean-ups}.
3060 3060
3061@menu 3061@menu
3062* Hanging Braces:: 3062* Hanging Braces::
3063* Hanging Colons:: 3063* Hanging Colons::
3064* Hanging Semicolons and Commas:: 3064* Hanging Semicolons and Commas::
3065@end menu 3065@end menu
3066 3066
3067 3067
@@ -3212,7 +3212,7 @@ themselves.
3212@end defopt 3212@end defopt
3213 3213
3214@menu 3214@menu
3215* Custom Braces:: 3215* Custom Braces::
3216@end menu 3216@end menu
3217 3217
3218@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3218@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -3732,9 +3732,9 @@ of the variables associated with indentation, not even
3732@end defopt 3732@end defopt
3733 3733
3734@menu 3734@menu
3735* Syntactic Analysis:: 3735* Syntactic Analysis::
3736* Syntactic Symbols:: 3736* Syntactic Symbols::
3737* Indentation Calculation:: 3737* Indentation Calculation::
3738@end menu 3738@end menu
3739 3739
3740 3740
@@ -4113,19 +4113,19 @@ Java. @ref{Anonymous Class Symbol}.
4113@end table 4113@end table
4114 4114
4115@menu 4115@menu
4116* Function Symbols:: 4116* Function Symbols::
4117* Class Symbols:: 4117* Class Symbols::
4118* Conditional Construct Symbols:: 4118* Conditional Construct Symbols::
4119* Switch Statement Symbols:: 4119* Switch Statement Symbols::
4120* Brace List Symbols:: 4120* Brace List Symbols::
4121* External Scope Symbols:: 4121* External Scope Symbols::
4122* Paren List Symbols:: 4122* Paren List Symbols::
4123* Literal Symbols:: 4123* Literal Symbols::
4124* Multiline Macro Symbols:: 4124* Multiline Macro Symbols::
4125* Objective-C Method Symbols:: 4125* Objective-C Method Symbols::
4126* Anonymous Class Symbol:: 4126* Anonymous Class Symbol::
4127* Statement Block Symbols:: 4127* Statement Block Symbols::
4128* K&R Symbols:: 4128* K&R Symbols::
4129@end menu 4129@end menu
4130 4130
4131@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4131@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -5019,11 +5019,11 @@ can install functions here to make ad-hoc adjustments to any line's
5019indentation. 5019indentation.
5020 5020
5021@menu 5021@menu
5022* c-offsets-alist:: 5022* c-offsets-alist::
5023* Interactive Customization:: 5023* Interactive Customization::
5024* Line-Up Functions:: 5024* Line-Up Functions::
5025* Custom Line-Up:: 5025* Custom Line-Up::
5026* Other Indentation:: 5026* Other Indentation::
5027@end menu 5027@end menu
5028 5028
5029 5029
@@ -5371,11 +5371,11 @@ Works with:
5371@end iftex 5371@end iftex
5372 5372
5373@menu 5373@menu
5374* Brace/Paren Line-Up:: 5374* Brace/Paren Line-Up::
5375* List Line-Up:: 5375* List Line-Up::
5376* Operator Line-Up:: 5376* Operator Line-Up::
5377* Comment Line-Up:: 5377* Comment Line-Up::
5378* Misc Line-Up:: 5378* Misc Line-Up::
5379@end menu 5379@end menu
5380 5380
5381@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 5381@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
diff --git a/man/display.texi b/man/display.texi
index 6cb2d857165..21a65999ec3 100644
--- a/man/display.texi
+++ b/man/display.texi
@@ -922,8 +922,18 @@ accessible part of the buffer is shown.
922Number mode is enabled. Use the command @kbd{M-x line-number-mode} to 922Number mode is enabled. Use the command @kbd{M-x line-number-mode} to
923turn this mode on and off; normally it is on. The line number appears 923turn this mode on and off; normally it is on. The line number appears
924after the buffer percentage @var{pos}, with the letter @samp{L} to 924after the buffer percentage @var{pos}, with the letter @samp{L} to
925indicate what it is. @xref{Minor Modes}, for more information about 925indicate what it is.
926minor modes and about how to use this command. 926
927@cindex Column Number mode
928@cindex mode, Column Number
929@findex column-number-mode
930 Similarly, you can display the current column number by turning on
931Column number mode with @kbd{M-x column-number-mode}. The column
932number is indicated by the letter @samp{C}. However, when both of
933these modes are enabled, the line and column numbers are displayed in
934parentheses, the line number first, rather than with @samp{L} and
935@samp{C}. For example: @samp{(561,2)}. @xref{Minor Modes}, for more
936information about minor modes and about how to use these commands.
927 937
928@cindex narrowing, and line number display 938@cindex narrowing, and line number display
929 If you have narrowed the buffer (@pxref{Narrowing}), the displayed 939 If you have narrowed the buffer (@pxref{Narrowing}), the displayed
@@ -946,13 +956,6 @@ larger than the value of the variable
946@code{line-number-display-limit-width}. The default value is 200 956@code{line-number-display-limit-width}. The default value is 200
947characters. 957characters.
948 958
949@cindex Column Number mode
950@cindex mode, Column Number
951@findex column-number-mode
952 You can also display the current column number by turning on Column
953Number mode. It displays the current column number preceded by the
954letter @samp{C}. Type @kbd{M-x column-number-mode} to toggle this mode.
955
956@findex display-time 959@findex display-time
957@cindex time (on mode line) 960@cindex time (on mode line)
958 Emacs can optionally display the time and system load in all mode 961 Emacs can optionally display the time and system load in all mode
diff --git a/man/gnus.texi b/man/gnus.texi
index dc02efa766f..85167d53432 100644
--- a/man/gnus.texi
+++ b/man/gnus.texi
@@ -4084,8 +4084,8 @@ happens. You just have to be careful if you do stuff like that.
4084@item v 4084@item v
4085@kindex v (Group) 4085@kindex v (Group)
4086@cindex keys, reserved for users (Group) 4086@cindex keys, reserved for users (Group)
4087The key @kbd{v} is reserved for users. You can bind it key to some 4087The key @kbd{v} is reserved for users. You can bind it to some
4088function or better use it as a prefix key. For example: 4088command or better use it as a prefix key. For example:
4089 4089
4090@lisp 4090@lisp
4091(define-key gnus-group-mode-map (kbd "v j d") 4091(define-key gnus-group-mode-map (kbd "v j d")
@@ -4498,8 +4498,8 @@ available in Emacs.
4498 4498
4499@kindex v (Summary) 4499@kindex v (Summary)
4500@cindex keys, reserved for users (Summary) 4500@cindex keys, reserved for users (Summary)
4501The key @kbd{v} is reserved for users. You can bind it key to some 4501The key @kbd{v} is reserved for users. You can bind it to some
4502function or better use it as a prefix key. For example: 4502command or better use it as a prefix key. For example:
4503@lisp 4503@lisp
4504(define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread 4504(define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread
4505@end lisp 4505@end lisp
@@ -8936,7 +8936,7 @@ This variable determines what to do when the button on a string as
8936message ID or a mail address. If it is one of the symbols @code{mid} or 8936message ID or a mail address. If it is one of the symbols @code{mid} or
8937@code{mail}, Gnus will always assume that the string is a message ID or 8937@code{mail}, Gnus will always assume that the string is a message ID or
8938a mail address, respectively. If this variable is set to the symbol 8938a mail address, respectively. If this variable is set to the symbol
8939@code{ask}, always query the user what do do. If it is a function, this 8939@code{ask}, always query the user what to do. If it is a function, this
8940function will be called with the string as its only argument. The 8940function will be called with the string as its only argument. The
8941function must return @code{mid}, @code{mail}, @code{invalid} or 8941function must return @code{mid}, @code{mail}, @code{invalid} or
8942@code{ask}. The default value is the function 8942@code{ask}. The default value is the function
@@ -11422,8 +11422,8 @@ buffer.
11422 11422
11423@kindex v (Article) 11423@kindex v (Article)
11424@cindex keys, reserved for users (Article) 11424@cindex keys, reserved for users (Article)
11425The key @kbd{v} is reserved for users. You can bind it key to some 11425The key @kbd{v} is reserved for users. You can bind it to some
11426function or better use it as a prefix key. 11426command or better use it as a prefix key.
11427 11427
11428A few additional keystrokes are available: 11428A few additional keystrokes are available:
11429 11429
@@ -12460,8 +12460,8 @@ Also @pxref{Formatting Variables}.
12460@item v 12460@item v
12461@kindex v (Server) 12461@kindex v (Server)
12462@cindex keys, reserved for users (Server) 12462@cindex keys, reserved for users (Server)
12463The key @kbd{v} is reserved for users. You can bind it key to some 12463The key @kbd{v} is reserved for users. You can bind it to some
12464function or better use it as a prefix key. 12464command or better use it as a prefix key.
12465 12465
12466@item a 12466@item a
12467@kindex a (Server) 12467@kindex a (Server)
@@ -14034,7 +14034,7 @@ files. If a positive number, delete files older than number of days
14034 14034
14035@item mail-source-delete-old-incoming-confirm 14035@item mail-source-delete-old-incoming-confirm
14036@vindex mail-source-delete-old-incoming-confirm 14036@vindex mail-source-delete-old-incoming-confirm
14037If non-@code{nil}, ask for for confirmation before deleting old incoming 14037If non-@code{nil}, ask for confirmation before deleting old incoming
14038files. This variable only applies when 14038files. This variable only applies when
14039@code{mail-source-delete-incoming} is a positive number. 14039@code{mail-source-delete-incoming} is a positive number.
14040 14040
@@ -16589,7 +16589,7 @@ Probably the only useful value to change this to is
16589messages instead of the internal article date. See section 6.4.4 of 16589messages instead of the internal article date. See section 6.4.4 of
16590RFC 2060 for more information on valid strings. 16590RFC 2060 for more information on valid strings.
16591 16591
16592However, if @code{nnimap-search-uids-not-since-is-evil} 16592However, if @code{nnimap-search-uids-not-since-is-evil}
16593is true, this variable has no effect since the search logic 16593is true, this variable has no effect since the search logic
16594is reversed, as described below. 16594is reversed, as described below.
16595 16595
@@ -18107,7 +18107,7 @@ two variables are probably the only ones you will want to change:
18107 18107
18108@defvar nndiary-reminders 18108@defvar nndiary-reminders
18109This is the list of times when you want to be reminded of your 18109This is the list of times when you want to be reminded of your
18110appointements (e.g. 3 weeks before, then 2 days before, then 1 hour 18110appointments (e.g. 3 weeks before, then 2 days before, then 1 hour
18111before and that's it). Remember that ``being reminded'' means that the 18111before and that's it). Remember that ``being reminded'' means that the
18112diary message will pop up as brand new and unread again when you get new 18112diary message will pop up as brand new and unread again when you get new
18113mail. 18113mail.
@@ -18258,14 +18258,14 @@ automatically (although not filled with proper values yet).
18258@node Sending or Not Sending 18258@node Sending or Not Sending
18259@subsection Sending or Not Sending 18259@subsection Sending or Not Sending
18260 18260
18261Well, assuming you've read of of the above, here are two final notes on 18261Well, assuming you've read all of the above, here are two final notes on
18262mail sending with @code{nndiary}: 18262mail sending with @code{nndiary}:
18263 18263
18264@itemize @bullet 18264@itemize @bullet
18265@item 18265@item
18266@code{nndiary} is a @emph{real} mail back end. You really send real diary 18266@code{nndiary} is a @emph{real} mail back end. You really send real diary
18267messsages for real. This means for instance that you can give 18267messsages for real. This means for instance that you can give
18268appointements to anybody (provided they use Gnus and @code{nndiary}) by 18268appointments to anybody (provided they use Gnus and @code{nndiary}) by
18269sending the diary message to them as well. 18269sending the diary message to them as well.
18270@item 18270@item
18271However, since @code{nndiary} also has a @code{request-post} method, you 18271However, since @code{nndiary} also has a @code{request-post} method, you
diff --git a/man/maintaining.texi b/man/maintaining.texi
index c9e77ede2a1..988d5890b8c 100644
--- a/man/maintaining.texi
+++ b/man/maintaining.texi
@@ -409,8 +409,8 @@ source files, and the tags file will still refer correctly to the source
409files. If the tags file is in @file{/dev}, however, the file names are 409files. If the tags file is in @file{/dev}, however, the file names are
410made relative to the current working directory. This is useful, for 410made relative to the current working directory. This is useful, for
411example, when writing the tags to @file{/dev/stdout}. 411example, when writing the tags to @file{/dev/stdout}.
412 412
413 When using a a relative file name, it should not be a symbolic link 413 When using a relative file name, it should not be a symbolic link
414pointing to a tags file in a different directory, because this would 414pointing to a tags file in a different directory, because this would
415generally render the file names invalid. 415generally render the file names invalid.
416 416
diff --git a/man/message.texi b/man/message.texi
index c843d8c58d9..eef4d77205a 100644
--- a/man/message.texi
+++ b/man/message.texi
@@ -1450,7 +1450,7 @@ responding to a message:
1450@vindex message-subject-trailing-was-regexp 1450@vindex message-subject-trailing-was-regexp
1451Controls what to do with trailing @samp{(was: <old subject>)} in subject 1451Controls what to do with trailing @samp{(was: <old subject>)} in subject
1452lines. If @code{nil}, leave the subject unchanged. If it is the symbol 1452lines. If @code{nil}, leave the subject unchanged. If it is the symbol
1453@code{ask}, query the user what do do. In this case, the subject is 1453@code{ask}, query the user what to do. In this case, the subject is
1454matched against @code{message-subject-trailing-was-ask-regexp}. If 1454matched against @code{message-subject-trailing-was-ask-regexp}. If
1455@code{message-subject-trailing-was-query} is @code{t}, always strip the 1455@code{message-subject-trailing-was-query} is @code{t}, always strip the
1456trailing old subject. In this case, 1456trailing old subject. In this case,
diff --git a/man/mh-e.texi b/man/mh-e.texi
index 707e5e44b98..76697cbdcf5 100644
--- a/man/mh-e.texi
+++ b/man/mh-e.texi
@@ -132,64 +132,64 @@ Fifth Floor, Boston, MA 02110-1301, USA.
132 132
133Tour Through MH-E 133Tour Through MH-E
134 134
135* Sending Mail Tour:: 135* Sending Mail Tour::
136* Reading Mail Tour:: 136* Reading Mail Tour::
137* Processing Mail Tour:: 137* Processing Mail Tour::
138* Leaving MH-E:: 138* Leaving MH-E::
139* More About MH-E:: 139* More About MH-E::
140 140
141Using This Manual 141Using This Manual
142 142
143* Options:: 143* Options::
144* Ranges:: 144* Ranges::
145* Folder Selection:: 145* Folder Selection::
146 146
147Reading Your Mail 147Reading Your Mail
148 148
149* Viewing:: 149* Viewing::
150* Viewing Attachments:: 150* Viewing Attachments::
151* HTML:: 151* HTML::
152* Digests:: 152* Digests::
153* Reading PGP:: 153* Reading PGP::
154* Printing:: 154* Printing::
155* Files and Pipes:: 155* Files and Pipes::
156* Navigating:: 156* Navigating::
157* Miscellaneous Commands and Options:: 157* Miscellaneous Commands and Options::
158 158
159Sending Mail 159Sending Mail
160 160
161* Composing:: 161* Composing::
162* Replying:: 162* Replying::
163* Forwarding:: 163* Forwarding::
164* Redistributing:: 164* Redistributing::
165* Editing Again:: 165* Editing Again::
166 166
167Editing a Draft 167Editing a Draft
168 168
169* Editing Message:: 169* Editing Message::
170* Inserting Letter:: 170* Inserting Letter::
171* Inserting Messages:: 171* Inserting Messages::
172* Signature:: 172* Signature::
173* Picture:: 173* Picture::
174* Adding Attachments:: 174* Adding Attachments::
175* Sending PGP:: 175* Sending PGP::
176* Checking Recipients:: 176* Checking Recipients::
177* Sending Message:: 177* Sending Message::
178* Killing Draft:: 178* Killing Draft::
179 179
180Odds and Ends 180Odds and Ends
181 181
182* Bug Reports:: 182* Bug Reports::
183* Mailing Lists:: 183* Mailing Lists::
184* MH FAQ and Support:: 184* MH FAQ and Support::
185* Getting MH-E:: 185* Getting MH-E::
186 186
187History of MH-E 187History of MH-E
188 188
189* From Brian Reid:: 189* From Brian Reid::
190* From Jim Larus:: 190* From Jim Larus::
191* From Stephen Gildea:: 191* From Stephen Gildea::
192* From Bill Wohler:: 192* From Bill Wohler::
193 193
194@end detailmenu 194@end detailmenu
195@end menu 195@end menu
@@ -360,7 +360,7 @@ mode (@pxref{Reading Mail Tour}). In this mode, simply enter the
360numerical argument before entering the command. 360numerical argument before entering the command.
361@end quotation 361@end quotation
362@sp 1 362@sp 1
363 363
364@cindex @file{.emacs} 364@cindex @file{.emacs}
365@cindex Emacs, variables 365@cindex Emacs, variables
366@cindex files, @file{.emacs} 366@cindex files, @file{.emacs}
@@ -415,7 +415,7 @@ Face Customization} in @cite{The GNU Emacs Manual}.
415@findex customize-option 415@findex customize-option
416 416
417Commands often offer @dfn{hooks} which enable you to extend or modify 417Commands often offer @dfn{hooks} which enable you to extend or modify
418the way a command works. 418the way a command works.
419@ifnothtml 419@ifnothtml
420@ref{Hooks, , Hooks, emacs, The GNU Emacs Manual}, in @cite{The GNU 420@ref{Hooks, , Hooks, emacs, The GNU Emacs Manual}, in @cite{The GNU
421Emacs Manual} 421Emacs Manual}
@@ -673,11 +673,11 @@ use all the features of MH-E. I suggest you read this chapter first to
673get the big picture, and then you can read the manual as you wish. 673get the big picture, and then you can read the manual as you wish.
674 674
675@menu 675@menu
676* Sending Mail Tour:: 676* Sending Mail Tour::
677* Reading Mail Tour:: 677* Reading Mail Tour::
678* Processing Mail Tour:: 678* Processing Mail Tour::
679* Leaving MH-E:: 679* Leaving MH-E::
680* More About MH-E:: 680* More About MH-E::
681@end menu 681@end menu
682 682
683@node Sending Mail Tour, Reading Mail Tour, Tour Through MH-E, Tour Through MH-E 683@node Sending Mail Tour, Reading Mail Tour, Tour Through MH-E, Tour Through MH-E
@@ -843,10 +843,10 @@ sending the original message, like this:
843 843
844@cartouche 844@cartouche
845@smallexample 845@smallexample
846To: 846To:
847cc: 847cc:
848Subject: Re: Test 848Subject: Re: Test
849In-reply-to: <31054.1142621351@@stop.mail-abuse.org> 849In-reply-to: <31054.1142621351@@stop.mail-abuse.org>
850References: <31054.1142621351@@stop.mail-abuse.org> 850References: <31054.1142621351@@stop.mail-abuse.org>
851Comments: In-reply-to Bill Wohler <wohler@@stop.mail-abuse.org> 851Comments: In-reply-to Bill Wohler <wohler@@stop.mail-abuse.org>
852 message dated "Fri, 17 Mar 2006 10:49:11 -0800." 852 message dated "Fri, 17 Mar 2006 10:49:11 -0800."
@@ -1161,9 +1161,9 @@ conflicts with existing MH-E symbols, use a prefix like @samp{my-} or
1161your initials. (Unless, of course, your initials happen to be @emph{mh}!) 1161your initials. (Unless, of course, your initials happen to be @emph{mh}!)
1162 1162
1163@menu 1163@menu
1164* Options:: 1164* Options::
1165* Ranges:: 1165* Ranges::
1166* Folder Selection:: 1166* Folder Selection::
1167@end menu 1167@end menu
1168 1168
1169@node Options, Ranges, Using This Manual, Using This Manual 1169@node Options, Ranges, Using This Manual, Using This Manual
@@ -2001,15 +2001,15 @@ The functions and variables introduced here are explained in more
2001detail in the following sections. 2001detail in the following sections.
2002 2002
2003@menu 2003@menu
2004* Viewing:: 2004* Viewing::
2005* Viewing Attachments:: 2005* Viewing Attachments::
2006* HTML:: 2006* HTML::
2007* Digests:: 2007* Digests::
2008* Reading PGP:: 2008* Reading PGP::
2009* Printing:: 2009* Printing::
2010* Files and Pipes:: 2010* Files and Pipes::
2011* Navigating:: 2011* Navigating::
2012* Miscellaneous Commands and Options:: 2012* Miscellaneous Commands and Options::
2013@end menu 2013@end menu
2014 2014
2015@node Viewing, Viewing Attachments, Reading Mail, Reading Mail 2015@node Viewing, Viewing Attachments, Reading Mail, Reading Mail
@@ -2047,7 +2047,7 @@ The option @code{mh-show-maximum-size} provides an opportunity to skip
2047over large messages which may be slow to load. The default value of 0 2047over large messages which may be slow to load. The default value of 0
2048means that all message are shown regardless of size. 2048means that all message are shown regardless of size.
2049 2049
2050A litany of options control what displayed messages look like. 2050A litany of options control what displayed messages look like.
2051 2051
2052@vindex mh-show-cc 2052@vindex mh-show-cc
2053@vindex mh-show-date 2053@vindex mh-show-date
@@ -2637,7 +2637,7 @@ the Gnus command @kbd{W h} (@pxref{Article Washing,,,gnus},).
2637@end ifinfo 2637@end ifinfo
2638@ifnotinfo 2638@ifnotinfo
2639see section @uref{http://www.gnus.org/manual/emacs-mime_6.html, 2639see section @uref{http://www.gnus.org/manual/emacs-mime_6.html,
2640Display Customization} in the @cite{The Emacs MIME Manual} and the the 2640Display Customization} in the @cite{The Emacs MIME Manual} and the
2641documentation for the Gnus command @kbd{W h} (see section 2641documentation for the Gnus command @kbd{W h} (see section
2642@uref{http://www.gnus.org/manual/gnus_99.html, Article Washing} in the 2642@uref{http://www.gnus.org/manual/gnus_99.html, Article Washing} in the
2643@cite{The Gnus Manual}). 2643@cite{The Gnus Manual}).
@@ -2808,7 +2808,7 @@ The latter is used whether the signature is unknown or untrusted.
2808@cindex customization group, @samp{pgg} 2808@cindex customization group, @samp{pgg}
2809 2809
2810The @samp{pgg} customization group may have some settings which may 2810The @samp{pgg} customization group may have some settings which may
2811interest you. 2811interest you.
2812@iftex 2812@iftex
2813See @cite{The PGG Manual}. 2813See @cite{The PGG Manual}.
2814@end iftex 2814@end iftex
@@ -3942,11 +3942,11 @@ The functions and options introduced here are explained in more detail
3942in the following sections. 3942in the following sections.
3943 3943
3944@menu 3944@menu
3945* Composing:: 3945* Composing::
3946* Replying:: 3946* Replying::
3947* Forwarding:: 3947* Forwarding::
3948* Redistributing:: 3948* Redistributing::
3949* Editing Again:: 3949* Editing Again::
3950@end menu 3950@end menu
3951 3951
3952@node Composing, Replying, Sending Mail, Sending Mail 3952@node Composing, Replying, Sending Mail, Sending Mail
@@ -4686,16 +4686,16 @@ The commands and options introduced here are explained in more
4686detail in the following sections. 4686detail in the following sections.
4687 4687
4688@menu 4688@menu
4689* Editing Message:: 4689* Editing Message::
4690* Inserting Letter:: 4690* Inserting Letter::
4691* Inserting Messages:: 4691* Inserting Messages::
4692* Signature:: 4692* Signature::
4693* Picture:: 4693* Picture::
4694* Adding Attachments:: 4694* Adding Attachments::
4695* Sending PGP:: 4695* Sending PGP::
4696* Checking Recipients:: 4696* Checking Recipients::
4697* Sending Message:: 4697* Sending Message::
4698* Killing Draft:: 4698* Killing Draft::
4699@end menu 4699@end menu
4700 4700
4701@node Editing Message, Inserting Letter, Editing Drafts, Editing Drafts 4701@node Editing Message, Inserting Letter, Editing Drafts, Editing Drafts
@@ -4795,7 +4795,7 @@ the alias expansion in the minibuffer if
4795@code{mh-alias-flash-on-comma} is turned on. 4795@code{mh-alias-flash-on-comma} is turned on.
4796 4796
4797@c XXX Document the replacement for the inaccessible 'long argument. 4797@c XXX Document the replacement for the inaccessible 'long argument.
4798 4798
4799@findex mh-letter-toggle-header-field-display 4799@findex mh-letter-toggle-header-field-display
4800@kindex C-c C-t 4800@kindex C-c C-t
4801 4801
@@ -5543,7 +5543,7 @@ mechanisms include vanilla @samp{PGP} and @samp{S/MIME}.
5543@cindex customization group, @samp{pgg} 5543@cindex customization group, @samp{pgg}
5544 5544
5545The @samp{pgg} customization group may have some settings which may 5545The @samp{pgg} customization group may have some settings which may
5546interest you. 5546interest you.
5547@iftex 5547@iftex
5548See @cite{The PGG Manual}. 5548See @cite{The PGG Manual}.
5549@end iftex 5549@end iftex
@@ -5954,7 +5954,7 @@ mh-alias-apropos} to show all aliases or addresses that match a
5954regular expression 5954regular expression
5955@ifnothtml 5955@ifnothtml
5956(@pxref{Regexps, , Syntax of Regular Expressions, emacs, The 5956(@pxref{Regexps, , Syntax of Regular Expressions, emacs, The
5957GNU Emacs Manual}). 5957GNU Emacs Manual}).
5958@end ifnothtml 5958@end ifnothtml
5959@ifhtml 5959@ifhtml
5960(see the section 5960(see the section
@@ -6104,7 +6104,7 @@ customize @code{mh-auto-fields-list}, click on the @samp{INS} button
6104and enter a regular expression for the recipient's address 6104and enter a regular expression for the recipient's address
6105@ifnothtml 6105@ifnothtml
6106(@pxref{Regexps, , Syntax of Regular Expressions, emacs, The 6106(@pxref{Regexps, , Syntax of Regular Expressions, emacs, The
6107GNU Emacs Manual}). 6107GNU Emacs Manual}).
6108@end ifnothtml 6108@end ifnothtml
6109@ifhtml 6109@ifhtml
6110(see the section 6110(see the section
@@ -6142,7 +6142,7 @@ recipient is also listed there so that he receives replies to your
6142reply. 6142reply.
6143@c ------------------------- 6143@c -------------------------
6144@item Other Field 6144@item Other Field
6145Other header fields may be added using this menu item. 6145Other header fields may be added using this menu item.
6146@end table 6146@end table
6147 6147
6148@findex mh-insert-auto-fields 6148@findex mh-insert-auto-fields
@@ -6181,7 +6181,7 @@ added. To customize @code{mh-identity-handlers}, replace the name of
6181an existing handler function associated with the field you want to 6181an existing handler function associated with the field you want to
6182change with the name of a function you have written. You can also 6182change with the name of a function you have written. You can also
6183click on an @samp{INS} button and insert a field of your choice and 6183click on an @samp{INS} button and insert a field of your choice and
6184the name of the function you have written to handle it. 6184the name of the function you have written to handle it.
6185 6185
6186@vindex mh-identity-list 6186@vindex mh-identity-list
6187 6187
@@ -6210,7 +6210,7 @@ containing the value for the field is given.
6210@kindex M-x speedbar 6210@kindex M-x speedbar
6211@kindex Mouse-2 6211@kindex Mouse-2
6212 6212
6213You can also use the speedbar 6213You can also use the speedbar
6214@ifnothtml 6214@ifnothtml
6215(@pxref{Speedbar, , Speedbar Frames, emacs, The GNU Emacs Manual},) 6215(@pxref{Speedbar, , Speedbar Frames, emacs, The GNU Emacs Manual},)
6216@end ifnothtml 6216@end ifnothtml
@@ -6573,7 +6573,7 @@ There is one option from the @samp{mh-search} customization group used
6573in searching. 6573in searching.
6574 6574
6575@vtable @code 6575@vtable @code
6576@item mh-search-program 6576@item mh-search-program
6577Search program that MH-E shall use (default: @samp{Auto-detect}). 6577Search program that MH-E shall use (default: @samp{Auto-detect}).
6578@end vtable 6578@end vtable
6579 6579
@@ -7145,7 +7145,7 @@ Limit to messages with the same @samp{Cc:} field
7145@c ------------------------- 7145@c -------------------------
7146@kindex / m 7146@kindex / m
7147@findex mh-narrow-to-from 7147@findex mh-narrow-to-from
7148@item / m 7148@item / m
7149Limit to messages with the same @samp{From:} field 7149Limit to messages with the same @samp{From:} field
7150(@code{mh-narrow-to-from}). 7150(@code{mh-narrow-to-from}).
7151@c ------------------------- 7151@c -------------------------
@@ -7635,7 +7635,7 @@ If you don't use @command{spamc}, use @samp{spamassassin -P -a}.
7635 7635
7636Note that one of the recipes above throws away messages with a score 7636Note that one of the recipes above throws away messages with a score
7637greater than or equal to 10. Here's how you can determine a value that 7637greater than or equal to 10. Here's how you can determine a value that
7638works best for you. 7638works best for you.
7639 7639
7640First, run @samp{spamassassin -t} on every mail message in your 7640First, run @samp{spamassassin -t} on every mail message in your
7641archive and use @command{gnumeric} to verify that the average plus the 7641archive and use @command{gnumeric} to verify that the average plus the
@@ -8579,10 +8579,10 @@ tell you how to report bugs and how to get on the MH-E mailing lists.
8579I also point out some additional sources of information. 8579I also point out some additional sources of information.
8580 8580
8581@menu 8581@menu
8582* Bug Reports:: 8582* Bug Reports::
8583* Mailing Lists:: 8583* Mailing Lists::
8584* MH FAQ and Support:: 8584* MH FAQ and Support::
8585* Getting MH-E:: 8585* Getting MH-E::
8586@end menu 8586@end menu
8587 8587
8588@node Bug Reports, Mailing Lists, Odds and Ends, Odds and Ends 8588@node Bug Reports, Mailing Lists, Odds and Ends, Odds and Ends
@@ -8713,10 +8713,10 @@ development to @uref{http://sourceforge.net/, SourceForge} where it
8713lives today. 8713lives today.
8714 8714
8715@menu 8715@menu
8716* From Brian Reid:: 8716* From Brian Reid::
8717* From Jim Larus:: 8717* From Jim Larus::
8718* From Stephen Gildea:: 8718* From Stephen Gildea::
8719* From Bill Wohler:: 8719* From Bill Wohler::
8720@end menu 8720@end menu
8721 8721
8722@node From Brian Reid, From Jim Larus, History, History 8722@node From Brian Reid, From Jim Larus, History, History
@@ -9715,7 +9715,7 @@ Public License instead of this License.
9715@c The following are words that ispell should ignore that would not 9715@c The following are words that ispell should ignore that would not
9716@c normally be in a dictionary (global or personal). Be careful not to 9716@c normally be in a dictionary (global or personal). Be careful not to
9717@c include words here that could potentially be typos of other words 9717@c include words here that could potentially be typos of other words
9718@c (such as url, elisp, or MHE). 9718@c (such as url, elisp, or MHE).
9719@c 9719@c
9720@c LocalWords: CTRL ESC SPC f's 9720@c LocalWords: CTRL ESC SPC f's
9721@c LocalWords: addr Aliasfile alist 9721@c LocalWords: addr Aliasfile alist
diff --git a/man/org.texi b/man/org.texi
index aacc2929d13..22d217c1c89 100644
--- a/man/org.texi
+++ b/man/org.texi
@@ -3,8 +3,8 @@
3@setfilename ../info/org 3@setfilename ../info/org
4@settitle Org Mode Manual 4@settitle Org Mode Manual
5 5
6@set VERSION 4.67 6@set VERSION 4.77
7@set DATE February 2007 7@set DATE June 2007
8 8
9@dircategory Emacs 9@dircategory Emacs
10@direntry 10@direntry
@@ -89,7 +89,6 @@ 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.
93* Index:: The fast road to specific information 92* Index:: The fast road to specific information
94* Key Index:: Key bindings and where they are described 93* Key Index:: Key bindings and where they are described
95 94
@@ -123,6 +122,7 @@ Tables
123 122
124* Built-in table editor:: Simple tables 123* Built-in table editor:: Simple tables
125* Narrow columns:: Stop wasting space in tables 124* Narrow columns:: Stop wasting space in tables
125* Column groups:: Grouping to trigger vertical lines
126* orgtbl-mode:: The table editor as minor mode 126* orgtbl-mode:: The table editor as minor mode
127* The spreadsheet:: The table editor has spreadsheet capabilities. 127* The spreadsheet:: The table editor has spreadsheet capabilities.
128 128
@@ -163,26 +163,32 @@ TODO items
163* TODO basics:: Marking and displaying TODO entries 163* TODO basics:: Marking and displaying TODO entries
164* TODO extensions:: Workflow and assignments 164* TODO extensions:: Workflow and assignments
165* Priorities:: Some things are more important than others 165* Priorities:: Some things are more important than others
166* Breaking down tasks:: Splitting a task into managable pieces 166* Breaking down tasks:: Splitting a task into manageable pieces
167* Checkboxes:: Tick-off lists 167* Checkboxes:: Tick-off lists
168 168
169Extended use of TODO keywords 169Extended use of TODO keywords
170 170
171* Workflow states:: From TODO to DONE in steps 171* Workflow states:: From TODO to DONE in steps
172* TODO types:: I do this, Fred the rest 172* TODO types:: I do this, Fred the rest
173* Multiple sets in one file:: Mixing it all, and still finding your way
173* Per file keywords:: Different files, different requirements 174* Per file keywords:: Different files, different requirements
174 175
175Timestamps 176Timestamps
176 177
177* Time stamps:: Assigning a time to a tree entry 178* Time stamps:: Assigning a time to a tree entry
178* Creating timestamps:: Commands which insert timestamps 179* Creating timestamps:: Commands which insert timestamps
179* Custom time format:: If you cannot work with the ISO format 180* Deadlines and scheduling:: Planning your work
180* Repeating items:: Deadlines that come back again and again
181* Progress logging:: Documenting when what work was done. 181* Progress logging:: Documenting when what work was done.
182 182
183Creating timestamps 183Creating timestamps
184 184
185* The date/time prompt:: How org-mode helps you entering date and time 185* The date/time prompt:: How org-mode helps you entering date and time
186* Custom time format:: Making dates look differently
187
188Deadlines and Scheduling
189
190* Inserting deadline/schedule::
191* Repeated tasks::
186 192
187Progress Logging 193Progress Logging
188 194
@@ -224,7 +230,8 @@ Custom agenda views
224* Storing searches:: Type once, use often 230* Storing searches:: Type once, use often
225* Block agenda:: All the stuff you need in a single buffer 231* Block agenda:: All the stuff you need in a single buffer
226* Setting Options:: Changing the rules 232* Setting Options:: Changing the rules
227* Batch processing:: Agenda views from the command line 233* Exporting Agenda Views:: Writing agendas to files.
234* Extracting Agenda Information for other programs::
228 235
229Embedded LaTeX 236Embedded LaTeX
230 237
@@ -244,7 +251,7 @@ Exporting
244 251
245HTML export 252HTML export
246 253
247* Export commands:: How to invode HTML export 254* Export commands:: How to invoke HTML export
248* Quoting HTML tags:: Using direct HTML in Org-mode 255* Quoting HTML tags:: Using direct HTML in Org-mode
249* Links:: How hyperlinks get transferred to HTML 256* Links:: How hyperlinks get transferred to HTML
250* Images:: To inline or not to inline? 257* Images:: To inline or not to inline?
@@ -253,6 +260,8 @@ HTML export
253Text interpretation by the exporter 260Text interpretation by the exporter
254 261
255* Comment lines:: Some lines will not be exported 262* Comment lines:: Some lines will not be exported
263* Initial text:: Text before the first headline
264* Footnotes:: Numbers like [1]
256* Enhancing text:: Subscripts, symbols and more 265* Enhancing text:: Subscripts, symbols and more
257* Export options:: How to influence the export settings 266* Export options:: How to influence the export settings
258 267
@@ -371,7 +380,7 @@ example as:
371Org-mode's automatic, context sensitive table editor with spreadsheet 380Org-mode's automatic, context sensitive table editor with spreadsheet
372capabilities can be integrated into any major mode by activating the 381capabilities can be integrated into any major mode by activating the
373minor Orgtbl-mode. Using a translation step, it can be used to maintain 382minor Orgtbl-mode. Using a translation step, it can be used to maintain
374tables in arbitray file types, for example in LaTeX. 383tables in arbitrary file types, for example in LaTeX.
375 384
376@cindex FAQ 385@cindex FAQ
377There is a website for Org-mode which provides links to the newest 386There is a website for Org-mode which provides links to the newest
@@ -578,8 +587,9 @@ key.
578@cindex outline tree 587@cindex outline tree
579 588
580Headlines define the structure of an outline tree. The headlines in 589Headlines define the structure of an outline tree. The headlines in
581Org-mode start with one or more stars, on the left margin. For 590Org-mode start with one or more stars, on the left margin@footnote{See
582example: 591the variable @code{org-special-ctrl-a} to configure special behavior of
592@kbd{C-a} in headlines.}. For example:
583 593
584@example 594@example
585* Top level headline 595* Top level headline
@@ -588,6 +598,7 @@ example:
588 some text 598 some text
589*** 3rd level 599*** 3rd level
590 more text 600 more text
601
591* Another top level headline 602* Another top level headline
592@end example 603@end example
593 604
@@ -595,6 +606,12 @@ example:
595outline that has whitespace followed by a single star as headline 606outline that has whitespace followed by a single star as headline
596starters. @ref{Clean view} describes a setup to realize this. 607starters. @ref{Clean view} describes a setup to realize this.
597 608
609An empty line after the end of a subtree is considered part of it and
610will be hidden when the subtree is folded. However, if you leave at
611least two empty lines, one empty line will remain visible after folding
612the subtree, in order to structure the collapsed view. See the
613variable @code{org-cycle-separator-lines} for modifying this behavior.
614
598@node Visibility cycling, Motion, Headlines, Document structure 615@node Visibility cycling, Motion, Headlines, Document structure
599@section Visibility cycling 616@section Visibility cycling
600@cindex cycling, visibility 617@cindex cycling, visibility
@@ -615,7 +632,7 @@ Org-mode uses just two commands, bound to @key{TAB} and
615@table @kbd 632@table @kbd
616@kindex @key{TAB} 633@kindex @key{TAB}
617@item @key{TAB} 634@item @key{TAB}
618@emph{Subtree cycling}: Rotate current subtree between the states 635@emph{Subtree cycling}: Rotate current subtree among the states
619 636
620@example 637@example
621,-> FOLDED -> CHILDREN -> SUBTREE --. 638,-> FOLDED -> CHILDREN -> SUBTREE --.
@@ -637,7 +654,7 @@ argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
637@kindex S-@key{TAB} 654@kindex S-@key{TAB}
638@item S-@key{TAB} 655@item S-@key{TAB}
639@itemx C-u @key{TAB} 656@itemx C-u @key{TAB}
640@emph{Global cycling}: Rotate the entire buffer between the states 657@emph{Global cycling}: Rotate the entire buffer among the states
641 658
642@example 659@example
643,-> OVERVIEW -> CONTENTS -> SHOW ALL --. 660,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
@@ -662,13 +679,19 @@ level, all sibling headings.
662@kindex C-c C-x b 679@kindex C-c C-x b
663@item C-c C-x b 680@item C-c C-x b
664Show the current subtree in an indirect buffer@footnote{The indirect 681Show the current subtree in an indirect buffer@footnote{The indirect
665buffer (@pxref{Indirect Buffers,Indirect Buffers,Indirect 682buffer
666Buffers,emacs,GNU Emacs Manual}) will contain the entire buffer, but 683@ifinfo
667will be narrowed to the current tree. Editing the indirect buffer will 684(@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
668also change the original buffer, but without affecting visibility in 685@end ifinfo
669that buffer.}. With numerical prefix ARG, go up to this level and then 686@ifnotinfo
670take that tree. If ARG is negative, go up that many levels. With 687(see the Emacs manual for more information about indirect buffers)
671@kbd{C-u} prefix, do not remove the previously used indirect buffer. 688@end ifnotinfo
689will contain the entire buffer, but will be narrowed to the current
690tree. Editing the indirect buffer will also change the original buffer,
691but without affecting visibility in that buffer.}. With numerical
692prefix ARG, go up to this level and then take that tree. If ARG is
693negative, go up that many levels. With @kbd{C-u} prefix, do not remove
694the previously used indirect buffer.
672@end table 695@end table
673 696
674When Emacs first visits an Org-mode file, the global state is set to 697When Emacs first visits an Org-mode file, the global state is set to
@@ -710,10 +733,16 @@ Backward to higher level heading.
710@item C-c C-j 733@item C-c C-j
711Jump to a different place without changing the current outline 734Jump to a different place without changing the current outline
712visibility. Shows the document structure in a temporary buffer, where 735visibility. Shows the document structure in a temporary buffer, where
713you can use visibility cycling (@key{TAB}) to find your destination. 736you can use the following keys to find your destination:
714After pressing @key{RET}, the cursor moves to the selected location in 737@example
715the original buffer, and the headings hierarchy above it is made 738@key{TAB} @r{Cycle visibility.}
716visible. 739@key{down} / @key{up} @r{Next/previous visible headline.}
740n / p @r{Next/previous visible headline.}
741f / b @r{Next/previous headline same level.}
742u @r{One level up.}
7430-9 @r{Digit argument.}
744@key{RET} @r{Select this location.}
745@end example
717@end table 746@end table
718 747
719@node Structure editing, Archiving, Motion, Document structure 748@node Structure editing, Archiving, Motion, Document structure
@@ -980,14 +1009,17 @@ bullet, lines must be indented or they will be seen as top-level
980headlines. Also, when you are hiding leading stars to get a clean 1009headlines. Also, when you are hiding leading stars to get a clean
981outline view, plain list items starting with a star are visually 1010outline view, plain list items starting with a star are visually
982indistinguishable from true headlines. In short: even though @samp{*} 1011indistinguishable from true headlines. In short: even though @samp{*}
983is supported, it may be better not to use it for plain list items} as 1012is supported, it may be better not to use it for plain list items.} as
984bullets. Ordered list items start with @samp{1.} or @samp{1)}. Items 1013bullets. Ordered list items start with @samp{1.} or @samp{1)}. Items
985belonging to the same list must have the same indentation on the first 1014belonging to the same list must have the same indentation on the first
986line. In particular, if an ordered list reaches number @samp{10.}, then 1015line. In particular, if an ordered list reaches number @samp{10.}, then
987the 2--digit numbers must be written left-aligned with the other numbers 1016the 2--digit numbers must be written left-aligned with the other numbers
988in the list. Indentation also determines the end of a list item. It 1017in the list. Indentation also determines the end of a list item. It
989ends before the next line that is indented like the bullet/number, or 1018ends before the next line that is indented like the bullet/number, or
990less. For example: 1019less. Empty lines are part of the previous item, so you can have
1020several paragraphs in one item. If you would like an emtpy line to
1021terminate all currently open plain lists, configure the variable
1022@code{org-empty-line-terminates-plain-lists}. Here is an for example:
991 1023
992@example 1024@example
993@group 1025@group
@@ -1078,6 +1110,7 @@ Emacs @file{calc} package.
1078@menu 1110@menu
1079* Built-in table editor:: Simple tables 1111* Built-in table editor:: Simple tables
1080* Narrow columns:: Stop wasting space in tables 1112* Narrow columns:: Stop wasting space in tables
1113* Column groups:: Grouping to trigger vertical lines
1081* orgtbl-mode:: The table editor as minor mode 1114* orgtbl-mode:: The table editor as minor mode
1082* The spreadsheet:: The table editor has spreadsheet capabilities. 1115* The spreadsheet:: The table editor has spreadsheet capabilities.
1083@end menu 1116@end menu
@@ -1141,16 +1174,16 @@ table. But it's easier just to start typing, like
1141@kindex C-c C-c 1174@kindex C-c C-c
1142@item C-c C-c 1175@item C-c C-c
1143Re-align the table without moving the cursor. 1176Re-align the table without moving the cursor.
1144 1177@c
1145@kindex @key{TAB} 1178@kindex @key{TAB}
1146@item @key{TAB} 1179@item @key{TAB}
1147Re-align the table, move to the next field. Creates a new row if 1180Re-align the table, move to the next field. Creates a new row if
1148necessary. 1181necessary.
1149 1182@c
1150@kindex S-@key{TAB} 1183@kindex S-@key{TAB}
1151@item S-@key{TAB} 1184@item S-@key{TAB}
1152Re-align, move to previous field. 1185Re-align, move to previous field.
1153 1186@c
1154@kindex @key{RET} 1187@kindex @key{RET}
1155@item @key{RET} 1188@item @key{RET}
1156Re-align the table and move down to next row. Creates a new row if 1189Re-align the table and move down to next row. Creates a new row if
@@ -1163,34 +1196,34 @@ NEWLINE, so it can be used to split a table.
1163@item M-@key{left} 1196@item M-@key{left}
1164@itemx M-@key{right} 1197@itemx M-@key{right}
1165Move the current column left/right. 1198Move the current column left/right.
1166 1199@c
1167@kindex M-S-@key{left} 1200@kindex M-S-@key{left}
1168@item M-S-@key{left} 1201@item M-S-@key{left}
1169Kill the current column. 1202Kill the current column.
1170 1203@c
1171@kindex M-S-@key{right} 1204@kindex M-S-@key{right}
1172@item M-S-@key{right} 1205@item M-S-@key{right}
1173Insert a new column to the left of the cursor position. 1206Insert a new column to the left of the cursor position.
1174 1207@c
1175@kindex M-@key{up} 1208@kindex M-@key{up}
1176@kindex M-@key{down} 1209@kindex M-@key{down}
1177@item M-@key{up} 1210@item M-@key{up}
1178@itemx M-@key{down} 1211@itemx M-@key{down}
1179Move the current row up/down. 1212Move the current row up/down.
1180 1213@c
1181@kindex M-S-@key{up} 1214@kindex M-S-@key{up}
1182@item M-S-@key{up} 1215@item M-S-@key{up}
1183Kill the current row or horizontal line. 1216Kill the current row or horizontal line.
1184 1217@c
1185@kindex M-S-@key{down} 1218@kindex M-S-@key{down}
1186@item M-S-@key{down} 1219@item M-S-@key{down}
1187Insert a new row above (with arg: below) the current row. 1220Insert a new row above (with arg: below) the current row.
1188 1221@c
1189@kindex C-c - 1222@kindex C-c -
1190@item C-c - 1223@item C-c -
1191Insert a horizontal line below current row. With prefix arg, the line 1224Insert a horizontal line below current row. With prefix arg, the line
1192is created above the current line. 1225is created above the current line.
1193 1226@c
1194@kindex C-c ^ 1227@kindex C-c ^
1195@item C-c ^ 1228@item C-c ^
1196Sort the table lines in the region. The position of point indicates the 1229Sort the table lines in the region. The position of point indicates the
@@ -1209,10 +1242,12 @@ argument, alphabetic sorting will be case-sensitive.
1209Copy a rectangular region from a table to a special clipboard. Point 1242Copy a rectangular region from a table to a special clipboard. Point
1210and mark determine edge fields of the rectangle. The process ignores 1243and mark determine edge fields of the rectangle. The process ignores
1211horizontal separator lines. 1244horizontal separator lines.
1245@c
1212@kindex C-c C-x C-w 1246@kindex C-c C-x C-w
1213@item C-c C-x C-w 1247@item C-c C-x C-w
1214Copy a rectangular region from a table to a special clipboard, and 1248Copy a rectangular region from a table to a special clipboard, and
1215blank all fields in the rectangle. So this is the ``cut'' operation. 1249blank all fields in the rectangle. So this is the ``cut'' operation.
1250@c
1216@kindex C-c C-x C-y 1251@kindex C-c C-x C-y
1217@item C-c C-x C-y 1252@item C-c C-x C-y
1218Paste a rectangular region into a table. 1253Paste a rectangular region into a table.
@@ -1220,6 +1255,7 @@ The upper right corner ends up in the current field. All involved fields
1220will be overwritten. If the rectangle does not fit into the present table, 1255will be overwritten. If the rectangle does not fit into the present table,
1221the table is enlarged as needed. The process ignores horizontal separator 1256the table is enlarged as needed. The process ignores horizontal separator
1222lines. 1257lines.
1258@c
1223@kindex C-c C-q 1259@kindex C-c C-q
1224@item C-c C-q 1260@item C-c C-q
1225Wrap several fields in a column like a paragraph. If there is an active 1261Wrap several fields in a column like a paragraph. If there is an active
@@ -1235,7 +1271,6 @@ above.
1235@tsubheading{Calculations} 1271@tsubheading{Calculations}
1236@cindex formula, in tables 1272@cindex formula, in tables
1237@cindex calculations, in tables 1273@cindex calculations, in tables
1238
1239@cindex region, active 1274@cindex region, active
1240@cindex active region 1275@cindex active region
1241@cindex transient-mark-mode 1276@cindex transient-mark-mode
@@ -1244,7 +1279,7 @@ above.
1244Sum the numbers in the current column, or in the rectangle defined by 1279Sum the numbers in the current column, or in the rectangle defined by
1245the active region. The result is shown in the echo area and can 1280the active region. The result is shown in the echo area and can
1246be inserted with @kbd{C-y}. 1281be inserted with @kbd{C-y}.
1247 1282@c
1248@kindex S-@key{RET} 1283@kindex S-@key{RET}
1249@item S-@key{RET} 1284@item S-@key{RET}
1250When current field is empty, copy from first non-empty field above. 1285When current field is empty, copy from first non-empty field above.
@@ -1261,12 +1296,12 @@ Edit the current field in a separate window. This is useful for fields
1261that are not fully visible (@pxref{Narrow columns}). When called with a 1296that are not fully visible (@pxref{Narrow columns}). When called with a
1262@kbd{C-u} prefix, just make the full field visible, so that it can be 1297@kbd{C-u} prefix, just make the full field visible, so that it can be
1263edited in place. 1298edited in place.
1264 1299@c
1265@kindex C-c @key{TAB} 1300@kindex C-c @key{TAB}
1266@item C-c @key{TAB} 1301@item C-c @key{TAB}
1267This is an alias for @kbd{C-u C-c `} to make the current field fully 1302This is an alias for @kbd{C-u C-c `} to make the current field fully
1268visible. 1303visible.
1269 1304@c
1270@item M-x org-table-import 1305@item M-x org-table-import
1271Import a file as a table. The table should be TAB- or whitespace 1306Import a file as a table. The table should be TAB- or whitespace
1272separated. Useful, for example, to import an Excel table or data from a 1307separated. Useful, for example, to import an Excel table or data from a
@@ -1274,11 +1309,14 @@ database, because these programs generally can write TAB-separated text
1274files. This command works by inserting the file into the buffer and 1309files. This command works by inserting the file into the buffer and
1275then converting the region to a table. Any prefix argument is passed on 1310then converting the region to a table. Any prefix argument is passed on
1276to the converter, which uses it to determine the separator. 1311to the converter, which uses it to determine the separator.
1277 1312@item C-c |
1313Tables can also be imported by pasting tabular text into the org-mode
1314buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
1315@kbd{C-c |} command (see above under @i{Creation and conversion}.
1316@c
1278@item M-x org-table-export 1317@item M-x org-table-export
1279Export the table as a TAB-separated file. Useful for data exchange with, 1318Export the table as a TAB-separated file. Useful for data exchange with,
1280for example, Excel or database programs. 1319for example, Excel or database programs.
1281
1282@end table 1320@end table
1283 1321
1284If you don't like the automatic table editor because it gets in your 1322If you don't like the automatic table editor because it gets in your
@@ -1292,7 +1330,7 @@ it off with
1292@noindent Then the only table command that still works is 1330@noindent Then the only table command that still works is
1293@kbd{C-c C-c} to do a manual re-align. 1331@kbd{C-c C-c} to do a manual re-align.
1294 1332
1295@node Narrow columns, orgtbl-mode, Built-in table editor, Tables 1333@node Narrow columns, Column groups, Built-in table editor, Tables
1296@section Narrow columns 1334@section Narrow columns
1297@cindex narrow columns in tables 1335@cindex narrow columns in tables
1298 1336
@@ -1320,7 +1358,7 @@ value.
1320@noindent 1358@noindent
1321Fields that are wider become clipped and end in the string @samp{=>}. 1359Fields that are wider become clipped and end in the string @samp{=>}.
1322Note that the full text is still in the buffer, it is only invisible. 1360Note that the full text is still in the buffer, it is only invisible.
1323To see the full text, hold the mouse over the field - a tooltip window 1361To see the full text, hold the mouse over the field - a tool-tip window
1324will show the full content. To edit such a field, use the command 1362will show the full content. To edit such a field, use the command
1325@kbd{C-c `} (that is @kbd{C-c} followed by the backquote). This will 1363@kbd{C-c `} (that is @kbd{C-c} followed by the backquote). This will
1326open a new window with the full field. Edit it and finish with @kbd{C-c 1364open a new window with the full field. Edit it and finish with @kbd{C-c
@@ -1338,7 +1376,42 @@ on a per-file basis with:
1338#+STARTUP: noalign 1376#+STARTUP: noalign
1339@end example 1377@end example
1340 1378
1341@node orgtbl-mode, The spreadsheet, Narrow columns, Tables 1379@node Column groups, orgtbl-mode, Narrow columns, Tables
1380@section Column groups
1381@cindex grouping columns in tables
1382
1383When Org-mode exports tables, it does so by default without vertical
1384lines because that is visually more satisfying in general. Occasionally
1385however, vertical lines can be useful to structure a table into groups
1386of columns, much like horizontal lines can do for groups of rows. In
1387order to specify column groups, you can use a special row where the
1388first field contains only @samp{/}. The further fields can either
1389contain @samp{<} to indicate that this column should start a group,
1390@samp{>} to indicate the end of a column, or @samp{<>} to make a column
1391a group of its own. Boundaries between colum groups will upon export be
1392marked with vertical lines. Here is an example:
1393
1394@example
1395| | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1396|---+----+-----+-----+-----+---------+------------|
1397| / | <> | < | | > | < | > |
1398| # | 1 | 1 | 1 | 1 | 1 | 1 |
1399| # | 2 | 4 | 8 | 16 | 1.4142 | 1.1892 |
1400| # | 3 | 9 | 27 | 81 | 1.7321 | 1.3161 |
1401|---+----+-----+-----+-----+---------+------------|
1402#+TBLFM: $3=$2^2::$4=$2^3::$5=$2^4::$6=sqrt($2)::$7=sqrt(sqrt(($2))
1403@end example
1404
1405It is also sufficient to just insert the colum group starters after
1406every vertical line you'd like to have:
1407
1408@example
1409| N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1410|----+-----+-----+-----+---------+------------|
1411| / | < | | | < | |
1412@end example
1413
1414@node orgtbl-mode, The spreadsheet, Column groups, Tables
1342@section The Orgtbl minor mode 1415@section The Orgtbl minor mode
1343@cindex orgtbl-mode 1416@cindex orgtbl-mode
1344@cindex minor mode for tables 1417@cindex minor mode for tables
@@ -1356,7 +1429,7 @@ example in mail mode, use
1356Furthermore, with some special setup, it is possible to maintain tables 1429Furthermore, with some special setup, it is possible to maintain tables
1357in arbitrary syntax with Orgtbl-mode. For example, it is possible to 1430in arbitrary syntax with Orgtbl-mode. For example, it is possible to
1358construct LaTeX tables with the underlying ease and power of 1431construct LaTeX tables with the underlying ease and power of
1359Orgtbl-mode, including spreadsheet capabulities. For details, see 1432Orgtbl-mode, including spreadsheet capabilities. For details, see
1360@ref{Tables in arbitrary syntax}. 1433@ref{Tables in arbitrary syntax}.
1361 1434
1362@node The spreadsheet, , orgtbl-mode, Tables 1435@node The spreadsheet, , orgtbl-mode, Tables
@@ -1367,7 +1440,12 @@ Orgtbl-mode, including spreadsheet capabulities. For details, see
1367 1440
1368The table editor makes use of the Emacs @file{calc} package to implement 1441The table editor makes use of the Emacs @file{calc} package to implement
1369spreadsheet-like capabilities. It can also evaluate Emacs Lisp forms to 1442spreadsheet-like capabilities. It can also evaluate Emacs Lisp forms to
1370derive fields from other fields. 1443derive fields from other fields. While fully featured, Org-mode's
1444implementation is not identical to other spreadsheets. For example,
1445Org-mode knows the concept of a @emph{column formula} that will be
1446applied to all non-header fields in a column without having to copy the
1447formula to each relevant field.
1448
1371@menu 1449@menu
1372* References:: How to refer to another field or range 1450* References:: How to refer to another field or range
1373* Formula syntax for Calc:: Using Calc to compute stuff 1451* Formula syntax for Calc:: Using Calc to compute stuff
@@ -1387,17 +1465,26 @@ To compute fields in the table from other fields, formulas must
1387reference other fields or ranges. In Org-mode, fields can be referenced 1465reference other fields or ranges. In Org-mode, fields can be referenced
1388by name, by absolute coordinates, and by relative coordinates. To find 1466by name, by absolute coordinates, and by relative coordinates. To find
1389out what the coordinates of a field are, press @kbd{C-c ?} in that 1467out what the coordinates of a field are, press @kbd{C-c ?} in that
1390field. 1468field, or press @kbd{C-c @}} to toggle the display of a grid.
1391 1469
1392@subsubheading Field references 1470@subsubheading Field references
1393@cindex field references 1471@cindex field references
1394@cindex references, to fields 1472@cindex references, to fields
1395 1473
1396Formulas can reference the value of another field with the operator 1474Formulas can reference the value of another field in two ways. Like in
1475any other spreadsheet, you may reference fields with a letter/number
1476combination like @code{B3}, meaning the 2nd field in the 3rd row.
1477@c Such references are always fixed to that field, they don't change
1478@c when you copy and paste a formula to a different field. So
1479@c Org-mode's @code{B3} behaves like @code{$B$3} in other spreadsheets.
1480
1481@noindent
1482Org-mode also uses another, more general operator that looks like this:
1397@example 1483@example
1398@@row$column 1484@@row$column
1399@end example 1485@end example
1400 1486
1487@noindent
1401Column references can be absolute like @samp{1}, @samp{2},...@samp{N}, 1488Column references can be absolute like @samp{1}, @samp{2},...@samp{N},
1402or relative to the current column like @samp{+1} or @samp{-2}. 1489or relative to the current column like @samp{+1} or @samp{-2}.
1403 1490
@@ -1417,18 +1504,20 @@ directly at the hline is used.
1417either the column or the row part of the reference, the current 1504either the column or the row part of the reference, the current
1418row/column is implied. 1505row/column is implied.
1419 1506
1420Org-mode's references with @emph{positive} numbers correspond to fixed 1507Org-mode's references with @emph{unsigned} numbers are fixed references
1421references in other spreadsheet programs. For example, @code{@@3$28} 1508in the sense that if you use the same reference in the formula for two
1422corresponds to @code{$AB$3}. Org-mode's references with @emph{negative} 1509different fields, the same field will be referenced each time.
1423numbers behave similar to non-fixed references in other spreadsheet 1510Org-mode's references with @emph{signed} numbers are floating
1424programs, because when the same formula is used in several fields, 1511references because the same reference operator can reference different
1425different fields are referenced each time. 1512fields depending on the field being calculated by the formula.
1426 1513
1427Here are a few examples: 1514Here are a few examples:
1428 1515
1429@example 1516@example
1430@@2$3 @r{2nd row, 3rd column} 1517@@2$3 @r{2nd row, 3rd column}
1518C2 @r{same as previous}
1431$5 @r{column 5 in the current row} 1519$5 @r{column 5 in the current row}
1520E& @r{same as previous}
1432@@2 @r{current column, row 2} 1521@@2 @r{current column, row 2}
1433@@-1$-3 @r{the field one row up, three columns to the left} 1522@@-1$-3 @r{the field one row up, three columns to the left}
1434@@-I$2 @r{field just under hline above current row, column 2} 1523@@-I$2 @r{field just under hline above current row, column 2}
@@ -1449,6 +1538,7 @@ format at least for the first field (i.e the reference must start with
1449$1..$3 @r{First three fields in the current row.} 1538$1..$3 @r{First three fields in the current row.}
1450$P..$Q @r{Range, using column names (see under Advanced)} 1539$P..$Q @r{Range, using column names (see under Advanced)}
1451@@2$1..@@4$3 @r{6 fields between these two fields.} 1540@@2$1..@@4$3 @r{6 fields between these two fields.}
1541A2..C4 @r{Same as above.}
1452@@-1$-2..@@-1 @r{3 numbers from the column to the left, 2 up to current row} 1542@@-1$-2..@@-1 @r{3 numbers from the column to the left, 2 up to current row}
1453@end example 1543@end example
1454 1544
@@ -1466,12 +1556,18 @@ see the @samp{E} mode switch below). If there are no non-empty fields,
1466 1556
1467@samp{$name} is interpreted as the name of a column, parameter or 1557@samp{$name} is interpreted as the name of a column, parameter or
1468constant. Constants are defined globally through the variable 1558constant. Constants are defined globally through the variable
1469@code{org-table-formula-constants}. If you have the 1559@code{org-table-formula-constants}. If you have the @file{constants.el}
1470@file{constants.el} package, it will also be used to resolve 1560package, it will also be used to resolve constants, including natural
1471constants, including natural constants like @samp{$h} for Planck's 1561constants like @samp{$h} for Planck's constant, and units like
1472constant, and units like @samp{$km} for kilometers. Column names and 1562@samp{$km} for kilometers@footnote{@file{Constant.el} can supply the
1473parameters can be specified in special table lines. These are 1563values of constants in two different unit systems, @code{SI} and
1474described below, see @ref{Advanced features}. 1564@code{cgs}. Which one is used depends on the value of the variable
1565@code{constants-unit-system}. You can use the @code{#+STARTUP} options
1566@code{constSI} and @code{constcgs} to set this value for the current
1567buffer.}. Column names and parameters can be specified in special table
1568lines. These are described below, see @ref{Advanced features}. All
1569names must start with a letter, and further consist of letters and
1570numbers.
1475 1571
1476@node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet 1572@node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
1477@subsection Formula syntax for Calc 1573@subsection Formula syntax for Calc
@@ -1485,6 +1581,7 @@ non-standard convention that @samp{/} has lower precedence than
1485evaluation by @code{calc-eval} (@pxref{Calling Calc from 1581evaluation by @code{calc-eval} (@pxref{Calling Calc from
1486Your Programs,calc-eval,Calling calc from Your Lisp Programs,calc,GNU 1582Your Programs,calc-eval,Calling calc from Your Lisp Programs,calc,GNU
1487Emacs Calc Manual}), 1583Emacs Calc Manual}),
1584@c FIXME: The link to the calc manual in HTML does not work.
1488variable substitution takes place according to the rules described above. 1585variable substitution takes place according to the rules described above.
1489@cindex vectors, in table calculations 1586@cindex vectors, in table calculations
1490The range vectors can be directly fed into the calc vector functions 1587The range vectors can be directly fed into the calc vector functions
@@ -1518,7 +1615,7 @@ reformat the final result. A few examples:
1518$1+$2 @r{Sum of first and second field} 1615$1+$2 @r{Sum of first and second field}
1519$1+$2;%.2f @r{Same, format result to two decimals} 1616$1+$2;%.2f @r{Same, format result to two decimals}
1520exp($2)+exp($1) @r{Math functions can be used} 1617exp($2)+exp($1) @r{Math functions can be used}
1521$;%.1f @r{Reformat current cell to 1 decimal} 1618$0;%.1f @r{Reformat current cell to 1 decimal}
1522($3-32)*5/9 @r{Degrees F -> C conversion} 1619($3-32)*5/9 @r{Degrees F -> C conversion}
1523$c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}} 1620$c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
1524tan($1);Dp3s1 @r{Compute in degrees, precision 3, display SCI 1} 1621tan($1);Dp3s1 @r{Compute in degrees, precision 3, display SCI 1}
@@ -1528,21 +1625,28 @@ vmean($2..$7);EN @r{Same, but treat empty fields as 0}
1528taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree} 1625taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree}
1529@end example 1626@end example
1530 1627
1628Calc also contains a complete set of logical operations. For example
1629
1630@example
1631if($1<20,teen,string("")) @r{``teen'' if age $1 less than 20, else empty}
1632@end example
1633
1531@node Formula syntax for Lisp, Field formulas, Formula syntax for Calc, The spreadsheet 1634@node Formula syntax for Lisp, Field formulas, Formula syntax for Calc, The spreadsheet
1532@subsection Emacs Lisp forms as formulas 1635@subsection Emacs Lisp forms as formulas
1533@cindex Lisp forms, as table formulas 1636@cindex Lisp forms, as table formulas
1534 1637
1535It is also possible to write a formula in Emacs Lisp; this can be useful 1638It is also possible to write a formula in Emacs Lisp; this can be useful
1536for string manipulation and control structures. If a formula starts 1639for string manipulation and control structures, if the Calc's
1537with a single quote followed by an opening parenthesis, then it is 1640functionality is not enough. If a formula starts with a single quote
1538evaluated as a lisp form. The evaluation should return either a string 1641followed by an opening parenthesis, then it is evaluated as a lisp form.
1539or a number. Just as with @file{calc} formulas, you can specify modes 1642The evaluation should return either a string or a number. Just as with
1540and a printf format after a semicolon. A reference will be replaced 1643@file{calc} formulas, you can specify modes and a printf format after a
1541with a string (in double quotes) containing the field. If you provide 1644semicolon. A reference will be replaced with a string (in double
1542the @samp{N} mode switch, all referenced elements will be numbers. 1645quotes) containing the field. If you provide the @samp{N} mode switch,
1543Ranges are inserted as space-separated fields, so you can embed them in 1646all referenced elements will be numbers. Ranges are inserted as
1544list or vector syntax. A few examples, note how the @samp{N} mode is 1647space-separated fields, so you can embed them in list or vector syntax.
1545used when we do computations in lisp. 1648A few examples, note how the @samp{N} mode is used when we do
1649computations in lisp.
1546 1650
1547@example 1651@example
1548@r{Swap the first two characters of the content of column 1} 1652@r{Swap the first two characters of the content of column 1}
@@ -1567,12 +1671,11 @@ evaluated, and the current field replaced with the result.
1567Formulas are stored in a special line starting with @samp{#+TBLFM:} 1671Formulas are stored in a special line starting with @samp{#+TBLFM:}
1568directly below the table. If you typed the equation in the 4th field of 1672directly below the table. If you typed the equation in the 4th field of
1569the 3rd data line in the table, the formula will look like 1673the 3rd data line in the table, the formula will look like
1570@samp{@@3$2=$1+$2}. When inserting/deleting/swapping column and rows 1674@samp{@@3$4=$1+$2}. When inserting/deleting/swapping column and rows
1571with the appropriate commands, @i{absolute references} (but not relative 1675with the appropriate commands, @i{absolute references} (but not relative
1572ones) in stored formulas are modified in order to 1676ones) in stored formulas are modified in order to still reference the
1573still reference the same field. Of cause this is not true if you edit 1677same field. Of cause this is not true if you edit the table structure
1574the table structure with normal editing commands - then you must go and 1678with normal editing commands - then you must fix the equations yourself.
1575fix equations yourself.
1576 1679
1577Instead of typing an equation into the field, you may also use the 1680Instead of typing an equation into the field, you may also use the
1578following command 1681following command
@@ -1593,7 +1696,9 @@ it to the current field and stores it.
1593Often in a table, the same formula should be used for all fields in a 1696Often in a table, the same formula should be used for all fields in a
1594particular column. Instead of having to copy the formula to all fields 1697particular column. Instead of having to copy the formula to all fields
1595in that column, org-mode allows to assign a single formula to an entire 1698in that column, org-mode allows to assign a single formula to an entire
1596column. 1699column. If the table contains horizontal separator hlines, everything
1700before the first such line is considered part of the table @emph{header}
1701and will not be modified by column formulas.
1597 1702
1598To assign a formula to a column, type it directly into any field in the 1703To assign a formula to a column, type it directly into any field in the
1599column, preceded by an equal sign, like @samp{=$1+$2}. When you press 1704column, preceded by an equal sign, like @samp{=$1+$2}. When you press
@@ -1626,7 +1731,11 @@ will apply it to that many consecutive fields in the current column.
1626 1731
1627You can edit individual formulas in the minibuffer or directly in the 1732You can edit individual formulas in the minibuffer or directly in the
1628field. Org-mode can also prepare a special buffer with all active 1733field. Org-mode can also prepare a special buffer with all active
1629formulas of a table. 1734formulas of a table. When offering a formula for editing, Org-mode
1735converts references to the standard format (like @code{B3} or @code{D&})
1736if possible. If you prefer to only work with the internal format (like
1737@code{@@3$2} or @code{$4}), configure the variable
1738@code{org-table-use-standard-references}.
1630 1739
1631@table @kbd 1740@table @kbd
1632@kindex C-c = 1741@kindex C-c =
@@ -1645,21 +1754,36 @@ minibuffer is that you can use the command @kbd{C-c ?}.
1645@item C-c ? 1754@item C-c ?
1646While editing a formula in a table field, highlight the field(s) 1755While editing a formula in a table field, highlight the field(s)
1647referenced by the reference at the cursor position in the formula. 1756referenced by the reference at the cursor position in the formula.
1757@kindex C-c @}
1758@item C-c @}
1759Toggle the display of row and column numbers for a table, using
1760overlays. These are updated each time the table is aligned, you can
1761force it with @kbd{C-c C-c}.
1762@kindex C-c @{
1763@item C-c @{
1764Toggle the formula debugger on and off. See below.
1648@kindex C-c ' 1765@kindex C-c '
1649@item C-c ' 1766@item C-c '
1650Edit all formulas for the current table in a special buffer, where the 1767Edit all formulas for the current table in a special buffer, where the
1651formulas will be displayed one per line. 1768formulas will be displayed one per line. If the current field has an
1769active formula, the cursor in the formula editor will mark it.
1652While inside the special buffer, Org-mode will automatically highlight 1770While inside the special buffer, Org-mode will automatically highlight
1653any field or range reference at the cursor position. You may edit, 1771any field or range reference at the cursor position. You may edit,
1654remove and add formulas, and use the following commands: 1772remove and add formulas, and use the following commands:
1655@table @kbd 1773@table @kbd
1656@kindex C-c C-c 1774@kindex C-c C-c
1775@kindex C-x C-s
1657@item C-c C-c 1776@item C-c C-c
1658Exit the buffer and store the modified formulas. With @kbd{C-u} prefix, 1777@itemx C-x C-s
1659also apply the new formulas to the entire table. 1778Exit the formula editor and store the modified formulas. With @kbd{C-u}
1779prefix, also apply the new formulas to the entire table.
1660@kindex C-c C-q 1780@kindex C-c C-q
1661@item C-c C-q 1781@item C-c C-q
1662Exit the buffer without installing changes. 1782Exit the formula editor without installing changes.
1783@kindex C-c C-r
1784@item C-c C-r
1785Toggle all references in the formula editor between standard (like
1786@code{B3}) and internal (like @code{@@3$2}).
1663@kindex @key{TAB} 1787@kindex @key{TAB}
1664@item @key{TAB} 1788@item @key{TAB}
1665Pretty-print or indent lisp formula at point. When in a line containing 1789Pretty-print or indent lisp formula at point. When in a line containing
@@ -1671,23 +1795,25 @@ formula, @key{TAB} re-indents just like in Emacs-lisp-mode.
1671Complete Lisp symbols, just like in Emacs-lisp-mode. 1795Complete Lisp symbols, just like in Emacs-lisp-mode.
1672@kindex S-@key{up} 1796@kindex S-@key{up}
1673@kindex S-@key{down} 1797@kindex S-@key{down}
1674@item S-@key{up}/@key{down} 1798@kindex S-@key{left}
1675Move the reference line in the Org-mode buffer up and down. This is 1799@kindex S-@key{right}
1676important for highlighting the references of column formulas for 1800@item S-@key{up}/@key{down}/@key{left}/@key{right}
1677different rows. 1801Shift the reference at point. For example, if the reference is
1802@code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
1803This also works for relative references, and for hline references.
1804@kindex M-S-@key{up}
1805@kindex M-S-@key{down}
1806@item M-S-@key{up}/@key{down}
1807Move the test line for column formulas in the Org-mode buffer up and
1808down.
1678@kindex M-@key{up} 1809@kindex M-@key{up}
1679@kindex M-@key{down} 1810@kindex M-@key{down}
1680@item M-@key{up}/@key{down} 1811@item M-@key{up}/@key{down}
1681Scroll the window displaying the table. 1812Scroll the window displaying the table.
1682@end table
1683@kindex C-c @} 1813@kindex C-c @}
1684@item C-c @} 1814@item C-c @}
1685Toggle the display of row and column numbers for a table, using 1815Turn the coordinate grid in the table on and off.
1686overlays. These are uptated each time the table is aligned, you can 1816@end table
1687force it with @kbd{C-c C-c}.
1688@kindex C-c @{
1689@item C-c @{
1690Toggle the formula debugger on and off. See below.
1691@end table 1817@end table
1692 1818
1693Making a table field blank does not remove the formula associated with 1819Making a table field blank does not remove the formula associated with
@@ -1708,8 +1834,8 @@ When the evaluation of a formula leads to an error, the field content
1708becomes the string @samp{#ERROR}. If you would like see what is going 1834becomes the string @samp{#ERROR}. If you would like see what is going
1709on during variable substitution and calculation in order to find a bug, 1835on during variable substitution and calculation in order to find a bug,
1710turn on formula debugging in the @code{Tbl} menu and repeat the 1836turn on formula debugging in the @code{Tbl} menu and repeat the
1711calculation, for example by pressing @kbd{C-c = @key{RET}} in a field. 1837calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
1712Detailed information will be displayed. 1838field. Detailed information will be displayed.
1713 1839
1714@node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet 1840@node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
1715@subsection Updating the Table 1841@subsection Updating the Table
@@ -1728,14 +1854,14 @@ following commands:
1728@item C-c * 1854@item C-c *
1729Recalculate the current row by first applying the stored column formulas 1855Recalculate the current row by first applying the stored column formulas
1730from left to right, and all field formulas in the current row. 1856from left to right, and all field formulas in the current row.
1731 1857@c
1732@kindex C-u C-c * 1858@kindex C-u C-c *
1733@item C-u C-c * 1859@item C-u C-c *
1734@kindex C-u C-c C-c 1860@kindex C-u C-c C-c
1735@itemx C-u C-c C-c 1861@itemx C-u C-c C-c
1736Recompute the entire table, line by line. Any lines before the first 1862Recompute the entire table, line by line. Any lines before the first
1737hline are left alone, assuming that these are part of the table header. 1863hline are left alone, assuming that these are part of the table header.
1738 1864@c
1739@kindex C-u C-u C-c * 1865@kindex C-u C-u C-c *
1740@item C-u C-u C-c * 1866@item C-u C-u C-c *
1741Iterate the table by recomputing it until no further changes occur. 1867Iterate the table by recomputing it until no further changes occur.
@@ -1743,7 +1869,6 @@ This may be necessary if some computed fields use the value of other
1743fields that are computed @i{later} in the calculation sequence. 1869fields that are computed @i{later} in the calculation sequence.
1744@end table 1870@end table
1745 1871
1746
1747@node Advanced features, , Updating the table, The spreadsheet 1872@node Advanced features, , Updating the table, The spreadsheet
1748@subsection Advanced features 1873@subsection Advanced features
1749 1874
@@ -2058,7 +2183,7 @@ automatically created link is not working correctly or accurately
2058enough, you can write custom functions to select the search string and 2183enough, you can write custom functions to select the search string and
2059to do the search for particular file types - see @ref{Custom searches}. 2184to do the search for particular file types - see @ref{Custom searches}.
2060The key binding @kbd{C-c l} is only a suggestion - see @ref{Installation}. 2185The key binding @kbd{C-c l} is only a suggestion - see @ref{Installation}.
2061 2186@c
2062@kindex C-c C-l 2187@kindex C-c C-l
2063@cindex link completion 2188@cindex link completion
2064@cindex completion, of links 2189@cindex completion, of links
@@ -2068,24 +2193,26 @@ Insert a link. This prompts for a link to be inserted into the buffer.
2068You can just type a link, using text for an internal link, or one of the 2193You can just type a link, using text for an internal link, or one of the
2069link type prefixes mentioned in the examples above. All links stored 2194link type prefixes mentioned in the examples above. All links stored
2070during the current session are part of the history for this prompt, so 2195during the current session are part of the history for this prompt, so
2071you can access them with @key{up} and @key{down}, or with 2196you can access them with @key{up} and @key{down}. Completion, on the
2072completion@footnote{After insertion of a stored link, the link will be 2197other hand, will help you to insert valid link prefixes like
2073removed from the list of stored links. To keep it in the list later 2198@samp{http:} or @samp{ftp:}, including the prefixes defined through link
2199abbreviations (@pxref{Link abbreviations}). The link will be inserted
2200into the buffer@footnote{After insertion of a stored link, the link will
2201be removed from the list of stored links. To keep it in the list later
2074use, use a triple @kbd{C-u} prefix to @kbd{C-c C-l}, or configure the 2202use, use a triple @kbd{C-u} prefix to @kbd{C-c C-l}, or configure the
2075option @code{org-keep-stored-link-after-insertion}.}. The link will be 2203option @code{org-keep-stored-link-after-insertion}.}, along with a
2076inserted into the buffer, along with a descriptive text. If some text 2204descriptive text. If some text was selected when this command is
2077was selected when this command is called, the selected text becomes the 2205called, the selected text becomes the default description.@* Note that
2078default description.@* Note that you don't have to use this command to 2206you don't have to use this command to insert a link. Links in Org-mode
2079insert a link. Links in Org-mode are plain text, and you can type or 2207are plain text, and you can type or paste them straight into the buffer.
2080paste them straight into the buffer. By using this command, the links 2208By using this command, the links are automatically enclosed in double
2081are automatically enclosed in double brackets, and you will be asked for 2209brackets, and you will be asked for the optional descriptive text.
2082the optional descriptive text. 2210@c
2083
2084@c If the link is a @samp{file:} link and 2211@c If the link is a @samp{file:} link and
2085@c the linked file is located in the same directory as the current file or 2212@c the linked file is located in the same directory as the current file or
2086@c a subdirectory of it, the path of the file will be inserted relative to 2213@c a subdirectory of it, the path of the file will be inserted relative to
2087@c the current directory. 2214@c the current directory.
2088 2215@c
2089@kindex C-u C-c C-l 2216@kindex C-u C-c C-l
2090@cindex file name completion 2217@cindex file name completion
2091@cindex completion, of file names 2218@cindex completion, of file names
@@ -2098,11 +2225,11 @@ directory or in a subdirectory of it, or if the path is written relative
2098to the current directory using @samp{../}. Otherwise an absolute path 2225to the current directory using @samp{../}. Otherwise an absolute path
2099is used, if possible with @samp{~/} for your home directory. You can 2226is used, if possible with @samp{~/} for your home directory. You can
2100force an absolute path with two @kbd{C-u} prefixes. 2227force an absolute path with two @kbd{C-u} prefixes.
2101 2228@c
2102@item C-c C-l @r{with cursor on existing link} 2229@item C-c C-l @r{(with cursor on existing link)}
2103When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the 2230When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
2104link and description parts of the link. 2231link and description parts of the link.
2105 2232@c
2106@cindex following links 2233@cindex following links
2107@kindex C-c C-o 2234@kindex C-c C-o
2108@item C-c C-o 2235@item C-c C-o
@@ -2118,26 +2245,26 @@ suitable application for local non-text files. Classification of files
2118is based on file extension only. See option @code{org-file-apps}. If 2245is based on file extension only. See option @code{org-file-apps}. If
2119you want to override the default application and visit the file with 2246you want to override the default application and visit the file with
2120Emacs, use a @kbd{C-u} prefix. 2247Emacs, use a @kbd{C-u} prefix.
2121 2248@c
2122@kindex mouse-2 2249@kindex mouse-2
2123@kindex mouse-1 2250@kindex mouse-1
2124@item mouse-2 2251@item mouse-2
2125@itemx mouse-1 2252@itemx mouse-1
2126On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o} 2253On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
2127would. Under Emacs 22, also @kbd{mouse-1} will follow a link. 2254would. Under Emacs 22, also @kbd{mouse-1} will follow a link.
2128 2255@c
2129@kindex mouse-3 2256@kindex mouse-3
2130@item mouse-3 2257@item mouse-3
2131Like @kbd{mouse-2}, but force file links to be opened with Emacs, and 2258Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
2132internal links to be displayed in another window@footnote{See the 2259internal links to be displayed in another window@footnote{See the
2133variable @code{org-display-internal-link-with-indirect-buffer}}. 2260variable @code{org-display-internal-link-with-indirect-buffer}}.
2134 2261@c
2135@cindex mark ring 2262@cindex mark ring
2136@kindex C-c % 2263@kindex C-c %
2137@item C-c % 2264@item C-c %
2138Push the current position onto the mark ring, to be able to return 2265Push the current position onto the mark ring, to be able to return
2139easily. Commands following an internal link do this automatically. 2266easily. Commands following an internal link do this automatically.
2140 2267@c
2141@cindex links, returning to 2268@cindex links, returning to
2142@kindex C-c & 2269@kindex C-c &
2143@item C-c & 2270@item C-c &
@@ -2145,7 +2272,7 @@ Jump back to a recorded position. A position is recorded by the
2145commands following internal links, and by @kbd{C-c %}. Using this 2272commands following internal links, and by @kbd{C-c %}. Using this
2146command several times in direct succession moves through a ring of 2273command several times in direct succession moves through a ring of
2147previously recorded positions. 2274previously recorded positions.
2148 2275@c
2149@kindex C-c C-x C-n 2276@kindex C-c C-x C-n
2150@kindex C-c C-x C-p 2277@kindex C-c C-x C-p
2151@cindex links, finding next/previous 2278@cindex links, finding next/previous
@@ -2341,8 +2468,8 @@ use:
2341@noindent In these entries, the character specifies how to select the 2468@noindent In these entries, the character specifies how to select the
2342template. The first string specifies the template. Two more (optional) 2469template. The first string specifies the template. Two more (optional)
2343strings give the file in which, and the headline under which the new 2470strings give the file in which, and the headline under which the new
2344note should be stored. The file defaults to 2471note should be stored. The file defaults (if not present or @code{nil})
2345@code{org-default-notes-file}, the heading to 2472to @code{org-default-notes-file}, the heading to
2346@code{org-remember-default-headline}. Both defaults help to get to the 2473@code{org-remember-default-headline}. Both defaults help to get to the
2347storing location quickly, but you can change the location interactively 2474storing location quickly, but you can change the location interactively
2348while storing the note. 2475while storing the note.
@@ -2398,8 +2525,7 @@ calendar | %:date"
2398@end example 2525@end example
2399 2526
2400@noindent 2527@noindent
2401If you would like to have the cursor in a specific position after the 2528To place the cursor after template expansion use:
2402template has been expanded:
2403 2529
2404@example 2530@example
2405%? @r{After completing the template, position cursor here.} 2531%? @r{After completing the template, position cursor here.}
@@ -2408,7 +2534,7 @@ template has been expanded:
2408@noindent 2534@noindent
2409If you change you mind about which template to use, call 2535If you change you mind about which template to use, call
2410@code{org-remember} in the remember buffer. You may then select a new 2536@code{org-remember} in the remember buffer. You may then select a new
2411template that will be filled with the previoous context information. 2537template that will be filled with the previous context information.
2412 2538
2413@node Storing notes, , Remember templates, Remember 2539@node Storing notes, , Remember templates, Remember
2414@subsection Storing notes 2540@subsection Storing notes
@@ -2419,20 +2545,27 @@ target file - if you press @key{RET}, the value specified for the
2419template is used. Then the command offers the headings tree of the 2545template is used. Then the command offers the headings tree of the
2420selected file, with the cursor position at the default headline (if you 2546selected file, with the cursor position at the default headline (if you
2421had specified one in the template). You can either immediately press 2547had specified one in the template). You can either immediately press
2422@key{RET} to get the note placed there. Or you can use vertical cursor 2548@key{RET} to get the note placed there. Or you can use the following
2423motion (@key{up} and @key{down}) and visibility cycling (@key{TAB}) to 2549keys to find a better location:
2424find a better place. Pressing @key{RET} or @key{left} or @key{right} 2550@example
2551@key{TAB} @r{Cycle visibility.}
2552@key{down} / @key{up} @r{Next/previous visible headline.}
2553n / p @r{Next/previous visible headline.}
2554f / b @r{Next/previous headline same level.}
2555u @r{One level up.}
2556@c 0-9 @r{Digit argument.}
2557@end example
2558@noindent
2559Pressing @key{RET} or @key{left} or @key{right}
2425then leads to the following result. 2560then leads to the following result.
2426 2561
2427@multitable @columnfractions 0.2 0.1 0.7 2562@multitable @columnfractions 0.2 0.15 0.65
2428@item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted} 2563@item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
2429@item buffer-start @tab @key{RET} @tab as level 2 heading at end of file 2564@item buffer-start @tab @key{RET} @tab as level 2 heading at end of file
2430@item on headline @tab @key{RET} @tab as sublevel of the heading at cursor 2565@item on headline @tab @key{RET} @tab as sublevel of the heading at cursor
2431@item @tab @key{left} @tab as same level, before current heading 2566@item @tab @key{left}/@key{right} @tab as same level, before/after current heading
2432@item @tab @key{right} @tab as same level, after current heading
2433@item not on headline @tab @key{RET} 2567@item not on headline @tab @key{RET}
2434 @tab at cursor position, level taken from context. 2568 @tab at cursor position, level taken from context.
2435 Or use prefix arg to specify level manually.
2436@end multitable 2569@end multitable
2437 2570
2438So a fast way to store the note to its default location is to press 2571So a fast way to store the note to its default location is to press
@@ -2467,7 +2600,7 @@ things you have to do.
2467* TODO basics:: Marking and displaying TODO entries 2600* TODO basics:: Marking and displaying TODO entries
2468* TODO extensions:: Workflow and assignments 2601* TODO extensions:: Workflow and assignments
2469* Priorities:: Some things are more important than others 2602* Priorities:: Some things are more important than others
2470* Breaking down tasks:: Splitting a task into managable pieces 2603* Breaking down tasks:: Splitting a task into manageable pieces
2471* Checkboxes:: Tick-off lists 2604* Checkboxes:: Tick-off lists
2472@end menu 2605@end menu
2473 2606
@@ -2488,7 +2621,7 @@ The most important commands to work with TODO entries are:
2488@kindex C-c C-t 2621@kindex C-c C-t
2489@cindex cycling, of TODO states 2622@cindex cycling, of TODO states
2490@item C-c C-t 2623@item C-c C-t
2491Rotate the TODO state of the current item between 2624Rotate the TODO state of the current item among
2492 2625
2493@example 2626@example
2494,-> (unmarked) -> TODO -> DONE --. 2627,-> (unmarked) -> TODO -> DONE --.
@@ -2508,9 +2641,11 @@ useful if more than two TODO states are possible (@pxref{TODO extensions}).
2508@item C-c C-v 2641@item C-c C-v
2509View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds 2642View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds
2510the entire buffer, but shows all TODO items and the headings hierarchy 2643the entire buffer, but shows all TODO items and the headings hierarchy
2511above them. With prefix arg, show also the DONE entries. With 2644above them. With prefix arg, search for a specific TODO. You will be
2512numerical prefix N, show the tree for the Nth keyword in the variable 2645prompted for the keyword, and you can also give a list of keywords like
2513@code{org-todo-keywords}. 2646@code{kwd1|kwd2|...}. With numerical prefix N, show the tree for the
2647Nth keyword in the variable @code{org-todo-keywords}. With two prefix
2648args, find all TODO and DONE entries.
2514@kindex C-c a t 2649@kindex C-c a t
2515@item C-c a t 2650@item C-c a t
2516Show the global TODO list. This collects the TODO items from all 2651Show the global TODO list. This collects the TODO items from all
@@ -2523,16 +2658,14 @@ the TODO entries directly from that buffer (@pxref{Agenda commands}).
2523@c agenda, customize the variable @code{org-agenda-include-all-todo}. 2658@c agenda, customize the variable @code{org-agenda-include-all-todo}.
2524@end table 2659@end table
2525 2660
2526
2527@node TODO extensions, Priorities, TODO basics, TODO items 2661@node TODO extensions, Priorities, TODO basics, TODO items
2528@section Extended use of TODO keywords 2662@section Extended use of TODO keywords
2529@cindex extended TODO keywords 2663@cindex extended TODO keywords
2530 2664
2531The default implementation of TODO entries is just two states: TODO and 2665The default implementation of TODO entries is just two states: TODO and
2532DONE. You can, however, use the TODO feature for more complicated 2666DONE. You can use the TODO feature for more complicated things by
2533things by configuring the variables @code{org-todo-keywords} and 2667configuring the variable @code{org-todo-keywords}. With special setup,
2534@code{org-todo-interpretation}. Using special setup, you can even use 2668the TODO keyword system can work differently in different files.
2535TODO keywords in different ways in different org files.
2536 2669
2537Note that @i{tags} are another way to classify headlines in general and 2670Note that @i{tags} are another way to classify headlines in general and
2538TODO items in particular (@pxref{Tags}). 2671TODO items in particular (@pxref{Tags}).
@@ -2540,6 +2673,7 @@ TODO items in particular (@pxref{Tags}).
2540@menu 2673@menu
2541* Workflow states:: From TODO to DONE in steps 2674* Workflow states:: From TODO to DONE in steps
2542* TODO types:: I do this, Fred the rest 2675* TODO types:: I do this, Fred the rest
2676* Multiple sets in one file:: Mixing it all, and still finding your way
2543* Per file keywords:: Different files, different requirements 2677* Per file keywords:: Different files, different requirements
2544@end menu 2678@end menu
2545 2679
@@ -2548,103 +2682,149 @@ TODO items in particular (@pxref{Tags}).
2548@cindex TODO workflow 2682@cindex TODO workflow
2549@cindex workflow states as TODO keywords 2683@cindex workflow states as TODO keywords
2550 2684
2551You can use TODO keywords to indicate different states in the process 2685You can use TODO keywords to indicate different @emph{sequential} states
2552of working on an item, for example: 2686in the process of working on an item, for example@footnote{Changing
2687this variable only becomes effective after restarting Org-mode in a
2688buffer.}:
2553 2689
2554@lisp 2690@lisp
2555(setq org-todo-keywords '("TODO" "FEEDBACK" "VERIFY" "DONE") 2691(setq org-todo-keywords
2556 org-todo-interpretation 'sequence) 2692 '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
2557@end lisp 2693@end lisp
2558 2694
2695The vertical bar separates the TODO keywords (states that @emph{need
2696action}) from the DONE states (which need @emph{no further action}. If
2697you don't provide the separator bar, the last state is used as the DONE
2698state.
2559@cindex completion, of TODO keywords 2699@cindex completion, of TODO keywords
2560Changing these variables only becomes effective in a new Emacs session. 2700With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
2561With this setup, the command @kbd{C-c C-t} will cycle an entry from 2701to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED. You may
2562TODO to FEEDBACK, then to VERIFY, and finally to DONE. You may also 2702also use a prefix argument to quickly select a specific state. For
2563use a prefix argument to quickly select a specific state. For example 2703example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
2564@kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
2565If you define many keywords, you can use in-buffer completion (see 2704If you define many keywords, you can use in-buffer completion (see
2566@ref{Completion}) to insert these words into the buffer. Changing a todo 2705@ref{Completion}) to insert these words into the buffer. Changing a
2567state can be logged with a timestamp, see @ref{Tracking TODO state 2706todo state can be logged with a timestamp, see @ref{Tracking TODO state
2568changes} for more information. 2707changes} for more information.
2569 2708
2570@node TODO types, Per file keywords, Workflow states, TODO extensions 2709@node TODO types, Multiple sets in one file, Workflow states, TODO extensions
2571@subsection TODO keywords as types 2710@subsection TODO keywords as types
2572@cindex TODO types 2711@cindex TODO types
2573@cindex names as TODO keywords 2712@cindex names as TODO keywords
2574@cindex types as TODO keywords 2713@cindex types as TODO keywords
2575 2714
2576The second possibility is to use TODO keywords to indicate different 2715The second possibility is to use TODO keywords to indicate different
2577types of action items. For example, you might want to indicate that 2716@emph{types} of action items. For example, you might want to indicate
2578items are for ``work'' or ``home''. If you are into David Allen's 2717that items are for ``work'' or ``home''. Or, when you work with several
2579@emph{Getting Things DONE}, you might want to use todo types 2718people on a single project, you might want to assign action items
2580@samp{NEXTACTION}, @samp{WAITING}, @samp{MAYBE}. Or, when you work 2719directly to persons, by using their names as TODO keywords. This would
2581with several people on a single project, you might want to assign 2720be set up like this:
2582action items directly to persons, by using their names as TODO 2721
2583keywords. This would be set up like this: 2722@lisp
2723(setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
2724@end lisp
2725
2726In this case, different keywords do not indicate a sequence, but rather
2727different types. So the normal work flow would be to assign a task to a
2728person, and later to mark it DONE. Org-mode supports this style by
2729adapting the workings of the command @kbd{C-c C-t}@footnote{This is also
2730true for the @kbd{t} command in the timeline and agenda buffers.}. When
2731used several times in succession, it will still cycle through all names,
2732in order to first select the right type for a task. But when you return
2733to the item after some time and execute @kbd{C-c C-t} again, it will
2734switch from any name directly to DONE. Use prefix arguments or
2735completion to quickly select a specific name. You can also review the
2736items of a specific TODO type in a sparse tree by using a numeric prefix
2737to @kbd{C-c C-v}. For example, to see all things Lucy has to do, you
2738would use @kbd{C-3 C-c C-v}. To collect Lucy's items from all agenda
2739files into a single buffer, you would use the prefix arg as well when
2740creating the global todo list: @kbd{C-3 C-c t}.
2741
2742@node Multiple sets in one file, Per file keywords, TODO types, TODO extensions
2743@subsection Multiple keyword sets in one file
2744@cindex todo keyword sets
2745
2746Sometimes you may want to use different sets of TODO keywords in
2747parallel. For example, you may want to have the basic
2748@code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
2749separate state indicating that an item has been canceled (so it is not
2750DONE, but also does not require action). Your setup would then look
2751like this:
2584 2752
2585@lisp 2753@lisp
2586(setq org-todo-keywords '("Fred" "Sara" "Lucy" "Mike" "DONE") 2754(setq org-todo-keywords
2587 org-todo-interpretation 'type) 2755 '((sequence "TODO" "|" "DONE")
2756 (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
2757 (sequence "|" "CANCELED")))
2588@end lisp 2758@end lisp
2589 2759
2590In this case, different keywords do not indicate a sequence, but 2760The keywords should all be different, this helps Org-mode to keep track
2591rather different types. So it is normally not useful to change from 2761of which subsequence should be used for a given entry. In this setup,
2592one type to another. Therefore, in this case the behavior of the 2762@kbd{C-c C-t} only operates within a subsequence, so it switches from
2593command @kbd{C-c C-t} is changed slightly@footnote{This is also true 2763@code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
2594for the @kbd{t} command in the timeline and agenda buffers.}. When 2764(nothing) to @code{REPORT}. Therefore you need a mechanism to initially
2595used several times in succession, it will still cycle through all 2765select the correct sequence. Besides the obvious ways like typing a
2596names. But when you return to the item after some time and execute 2766keyword or using completion, you may also apply the following commands:
2597@kbd{C-c C-t} again, it will switch from each name directly to DONE. 2767
2598Use prefix arguments or completion to quickly select a specific name. 2768@table @kbd
2599You can also review the items of a specific TODO type in a sparse tree 2769@kindex C-S-@key{right}
2600by using a numeric prefix to @kbd{C-c C-v}. For example, to see all 2770@kindex C-S-@key{left}
2601things Lucy has to do, you would use @kbd{C-3 C-c C-v}. To collect 2771@item C-S-@key{right}
2602Lucy's items from all agenda files into a single buffer, you 2772@itemx C-S-@key{left}
2603would use the prefix arg as well when creating the global todo list: 2773These keys jump from one TODO subset to the next. In the above example,
2604@kbd{C-3 C-c t}. 2774@kbd{C-S-@key{right}} would jump from @code{TODO} or @code{DONE} to
2605 2775@code{REPORT}, and any of the words in the second row to @code{CANCELED}.
2606@node Per file keywords, , TODO types, TODO extensions 2776@kindex S-@key{right}
2607@subsection Setting up TODO keywords for individual files 2777@kindex S-@key{left}
2778@item S-@key{right}
2779@itemx S-@key{left}
2780@kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through
2781@emph{all} keywords from all sets, so for example @kbd{S-@key{<right>}}
2782would switch from @code{DONE} to @code{REPORT} in the example above.
2783@end table
2784
2785@node Per file keywords, , Multiple sets in one file, TODO extensions
2786@subsection Setting up keywords for individual files
2608@cindex keyword options 2787@cindex keyword options
2609@cindex per file keywords 2788@cindex per file keywords
2610 2789
2611It can be very useful to use different aspects of the TODO mechanism 2790It can be very useful to use different aspects of the TODO mechanism in
2612in different files, which is not possible with the global settings 2791different files. For file-local settings, you need to add special lines
2613described above. For file-local settings, you need to add special 2792to the file which set the keywords and interpretation for that file
2614lines to the file which set the keywords and interpretation for that 2793only. For example, to set one of the two examples discussed above, you
2615file only. For example, to set one of the two examples discussed 2794need one of the following lines, starting in column zero anywhere in the
2616above, you need one of the following lines, starting in column zero 2795file:
2617anywhere in the file: 2796
2797@example
2798#+SEQ_TODO: TODO FEEDBACK VERIFY | DONE CANCELED
2799@end example
2800or
2801@example
2802#+TYP_TODO: Fred Sara Lucy Mike | DONE
2803@end example
2804
2805A setup for using several sets in parallel would be:
2618 2806
2619@example 2807@example
2620#+SEQ_TODO: TODO FEEDBACK VERIFY DONE 2808#+SEQ_TODO: "TODO" "|" "DONE"
2621#+TYP_TODO: Fred Sara Lucy Mike DONE 2809#+SEQ_TODO: "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED"
2810#+SEQ_TODO: "|" "CANCELED"
2622@end example 2811@end example
2623 2812
2813
2624@cindex completion, of option keywords 2814@cindex completion, of option keywords
2625@kindex M-@key{TAB} 2815@kindex M-@key{TAB}
2626@noindent To make sure you are using the correct keyword, type 2816@noindent To make sure you are using the correct keyword, type
2627@samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion. 2817@samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
2628 2818
2629@cindex DONE, final TODO keyword 2819@cindex DONE, final TODO keyword
2630Remember that the last keyword must always mean that the item is DONE 2820Remember that the keywords after the vertical bar (or the last keyword
2631(although you may use a different word). Also note that in each file, 2821if no bar is there) must always mean that the item is DONE (although you
2632only one of the two aspects of TODO keywords can be used. After 2822may use a different word). After changing one of these lines, use
2633changing one of these lines, use @kbd{C-c C-c} with the cursor still 2823@kbd{C-c C-c} with the cursor still in the line to make the changes
2634in the line to make the changes known to Org-mode@footnote{Org-mode 2824known to Org-mode@footnote{Org-mode parses these lines only when
2635parses these lines only when Org-mode is activated after visiting a 2825Org-mode is activated after visiting a file. @kbd{C-c C-c} with the
2636file. @kbd{C-c C-c} with the cursor in a line starting with @samp{#+} 2826cursor in a line starting with @samp{#+} is simply restarting Org-mode
2637is simply restarting Org-mode for the current buffer.}. 2827for the current buffer.}.
2638
2639If you want to use very many keywords, for example when working with a
2640large group of people, you may split the names over several lines:
2641
2642@example
2643#+TYP_TODO: Fred Sara Lucy Mike
2644#+TYP_TODO: Luis George Jules Jessica
2645#+TYP_TODO: Kim Arnold Peter
2646#+TYP_TODO: DONE
2647@end example
2648 2828
2649@node Priorities, Breaking down tasks, TODO extensions, TODO items 2829@node Priorities, Breaking down tasks, TODO extensions, TODO items
2650@section Priorities 2830@section Priorities
@@ -2673,7 +2853,7 @@ priority character @samp{A}, @samp{B} or @samp{C}. When you press
2673@key{SPC} instead, the priority cookie is removed from the headline. 2853@key{SPC} instead, the priority cookie is removed from the headline.
2674The priorities can also be changed ``remotely'' from the timeline and 2854The priorities can also be changed ``remotely'' from the timeline and
2675agenda buffer with the @kbd{,} command (@pxref{Agenda commands}). 2855agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
2676 2856@c
2677@kindex S-@key{up} 2857@kindex S-@key{up}
2678@kindex S-@key{down} 2858@kindex S-@key{down}
2679@item S-@key{up} 2859@item S-@key{up}
@@ -2683,11 +2863,22 @@ are also used to modify time stamps (@pxref{Creating timestamps}).
2683Furthermore, these keys are also used by CUA-mode (@pxref{Conflicts}). 2863Furthermore, these keys are also used by CUA-mode (@pxref{Conflicts}).
2684@end table 2864@end table
2685 2865
2866You can change the range of allowed priorities by setting the variables
2867@code{org-highest-priority}, @code{org-lowest-priority}, and
2868@code{org-default-priority}. For an individual buffer, you may set
2869these values (highest, lowest, default) like this (please make sure that
2870the highest priority is earlier in the alphabet than the lowest
2871priority):
2872
2873@example
2874#+PRIORITIES: A C B
2875@end example
2876
2686@node Breaking down tasks, Checkboxes, Priorities, TODO items 2877@node Breaking down tasks, Checkboxes, Priorities, TODO items
2687@section Breaking tasks down into subtasks 2878@section Breaking tasks down into subtasks
2688@cindex tasks, breaking down 2879@cindex tasks, breaking down
2689 2880
2690It is often advisable to break down large tasks into smaller, managable 2881It is often advisable to break down large tasks into smaller, manageable
2691subtasks. You can do this by creating an outline tree below a TODO 2882subtasks. You can do this by creating an outline tree below a TODO
2692item, with detailed subtasks on the tree@footnote{To keep subtasks out 2883item, with detailed subtasks on the tree@footnote{To keep subtasks out
2693of the global TODO list, see the 2884of the global TODO list, see the
@@ -2780,8 +2971,7 @@ planning.
2780@menu 2971@menu
2781* Time stamps:: Assigning a time to a tree entry 2972* Time stamps:: Assigning a time to a tree entry
2782* Creating timestamps:: Commands which insert timestamps 2973* Creating timestamps:: Commands which insert timestamps
2783* Custom time format:: If you cannot work with the ISO format 2974* Deadlines and scheduling:: Planning your work
2784* Repeating items:: Deadlines that come back again and again
2785* Progress logging:: Documenting when what work was done. 2975* Progress logging:: Documenting when what work was done.
2786@end menu 2976@end menu
2787 2977
@@ -2799,7 +2989,7 @@ special format, either @samp{<2003-09-16 Tue>} or @samp{<2003-09-16 Tue
279909:39>}@footnote{This is the standard ISO date/time format. If you 298909:39>}@footnote{This is the standard ISO date/time format. If you
2800cannot get used to these, see @ref{Custom time format}}. A time stamp 2990cannot get used to these, see @ref{Custom time format}}. A time stamp
2801can appear anywhere in the headline or body of an org-tree entry. Its 2991can appear anywhere in the headline or body of an org-tree entry. Its
2802presence allows entries to be shown on specific dates in the agenda 2992presence causes entries to be shown on specific dates in the agenda
2803(@pxref{Weekly/Daily agenda}). We distinguish: 2993(@pxref{Weekly/Daily agenda}). We distinguish:
2804 2994
2805@table @var 2995@table @var
@@ -2815,76 +3005,53 @@ associated with a plain time stamp will be shown exactly on that date.
2815* Meet Peter at the movies <2006-11-01 Wed 19:15> 3005* Meet Peter at the movies <2006-11-01 Wed 19:15>
2816@end example 3006@end example
2817 3007
2818@item Inactive time stamp 3008@item Time stamp with repeater interval
2819@cindex timestamp, inactive 3009@cindex timestamp, with repeater interval
2820@cindex inactive timestamp 3010A time stamp may contain a @emph{repeater interval}, indicating that it
2821Just like a plain time stamp, but with square brackets instead of 3011applies not only on the given date, but again and again after a certain
2822angular ones. These time stamps are inactive in the sense that they do 3012interval of N days (d), weeks (w), months(m), or years(y). The
2823@emph{not} trigger an entry to show up in the agenda. 3013following will show up in the agenda every Wednesday:
2824 3014
2825@example 3015@example
2826* Gillian comes late for the fifth time [2006-11-01 Wed] 3016* Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
2827@end example 3017@end example
2828 3018
2829@item Time stamp range 3019@item Diary-style sexp entries
2830@cindex timerange 3020For more complex date specifications, Org-mode supports using the
2831Two time stamps connected by @samp{--} denote a time range. The 3021special sexp diary entries implemented in the Emacs calendar/diary
2832headline will be shown on the first and last day of the range, and on 3022package. For example
2833any dates that are displayed and fall in the range. Here is an
2834example:
2835 3023
2836@example 3024@example
2837** Meeting in Amsterdam 3025* The nerd meeting on every 2nd Thursday of the month
2838 <2004-08-23 Mon>--<2004-08-26 Thu> 3026 <%%(diary-float t 4 2)>
2839@end example 3027@end example
2840 3028
2841@item Time stamp with SCHEDULED keyword 3029@item Time/Date range
2842@cindex SCHEDULED keyword 3030@cindex timerange
2843If a time stamp is preceded by the word @samp{SCHEDULED:}, it means you 3031@cindex date range
2844are planning to start working on that task on the given date. So this is 3032Two time stamps connected by @samp{--} denote a range. The headline
2845not about recording an event, but about planning your work. The 3033will be shown on the first and last day of the range, and on any dates
2846headline will be listed under the given date@footnote{It will still be 3034that are displayed and fall in the range. Here is an example:
2847listed on that date after it has been marked DONE. If you don't like
2848this, set the variable @code{org-agenda-skip-scheduled-if-done}.}. In
2849addition, a reminder that the scheduled date has passed will be present
2850in the compilation for @emph{today}, until the entry is marked DONE.
2851I.e., the task will automatically be forwarded until completed.
2852 3035
2853@example 3036@example
2854*** TODO Call Trillian for a date on New Years Eve. 3037** Meeting in Amsterdam
2855 SCHEDULED: <2004-12-25 Sat> 3038 <2004-08-23 Mon>--<2004-08-26 Thu>
2856@end example 3039@end example
2857 3040
2858@item Time stamp with DEADLINE keyword 3041@item Inactive time stamp
2859@cindex DEADLINE keyword 3042@cindex timestamp, inactive
2860If a time stamp is preceded by the word @samp{DEADLINE:}, the task 3043@cindex inactive timestamp
2861(most likely a TODO item) is supposed to be finished on that date, and 3044Just like a plain time stamp, but with square brackets instead of
2862it will be listed then. In addition, the compilation for @emph{today} 3045angular ones. These time stamps are inactive in the sense that they do
2863will carry a warning about the approaching or missed deadline, 3046@emph{not} trigger an entry to show up in the agenda.
2864starting @code{org-deadline-warning-days} before the due date, and
2865continuing until the entry is marked DONE. An example:
2866 3047
2867@example 3048@example
2868*** TODO write article about the Earth for the Guide 3049* Gillian comes late for the fifth time [2006-11-01 Wed]
2869 The editor in charge is [[bbdb:Ford Prefect]]
2870 DEADLINE: <2004-02-29 Sun>
2871@end example 3050@end example
2872@item Time stamp with CLOSED keyword 3051
2873@cindex CLOSED keyword
2874When @code{org-log-done} is non-nil, Org-mode will automatically insert
2875a special time stamp each time a TODO entry is marked done
2876(@pxref{Progress logging}). This time stamp is enclosed in square
2877brackets instead of angular brackets.
2878
2879@item Time range with CLOCK keyword
2880@cindex CLOCK keyword
2881When using the clock to time the work that is being done on specific
2882items, time ranges preceded by the CLOCK keyword are inserted
2883automatically into the file. The time stamps are enclosed in square
2884brackets instead of angular brackets. @xref{Clocking work time}.
2885@end table 3052@end table
2886 3053
2887@node Creating timestamps, Custom time format, Time stamps, Timestamps 3054@node Creating timestamps, Deadlines and scheduling, Time stamps, Timestamps
2888@section Creating timestamps 3055@section Creating timestamps
2889@cindex creating timestamps 3056@cindex creating timestamps
2890@cindex timestamps, creating 3057@cindex timestamps, creating
@@ -2899,61 +3066,40 @@ format.
2899Prompt for a date and insert a corresponding time stamp. When the 3066Prompt for a date and insert a corresponding time stamp. When the
2900cursor is at a previously used time stamp, it is updated to NOW. When 3067cursor is at a previously used time stamp, it is updated to NOW. When
2901this command is used twice in succession, a time range is inserted. 3068this command is used twice in succession, a time range is inserted.
2902 3069@c
2903@kindex C-u C-c . 3070@kindex C-u C-c .
2904@item C-u C-c . 3071@item C-u C-c .
2905Like @kbd{C-c .}, but use the alternative format which contains date 3072Like @kbd{C-c .}, but use the alternative format which contains date
2906and time. The default time can be rounded to multiples of 5 minutes, 3073and time. The default time can be rounded to multiples of 5 minutes,
2907see the option @code{org-time-stamp-rounding-minutes}. 3074see the option @code{org-time-stamp-rounding-minutes}.
2908 3075@c
2909@kindex C-c ! 3076@kindex C-c !
2910@item C-c ! 3077@item C-c !
2911Like @kbd{C-c .}, but insert an inactive time stamp not triggering the 3078Like @kbd{C-c .}, but insert an inactive time stamp that will not cause
2912agenda. 3079an agenda entry.
2913 3080@c
2914@kindex C-c < 3081@kindex C-c <
2915@item C-c < 3082@item C-c <
2916Insert a time stamp corresponding to the cursor date in the Calendar. 3083Insert a time stamp corresponding to the cursor date in the Calendar.
2917 3084@c
2918@kindex C-c > 3085@kindex C-c >
2919@item C-c > 3086@item C-c >
2920Access the Emacs calendar for the current date. If there is a 3087Access the Emacs calendar for the current date. If there is a
2921timestamp in the current line, goto the corresponding date 3088timestamp in the current line, goto the corresponding date
2922instead. 3089instead.
2923 3090@c
2924@kindex C-c C-o 3091@kindex C-c C-o
2925@item C-c C-o 3092@item C-c C-o
2926Access the agenda for the date given by the time stamp or -range at 3093Access the agenda for the date given by the time stamp or -range at
2927point (@pxref{Weekly/Daily agenda}). 3094point (@pxref{Weekly/Daily agenda}).
2928 3095@c
2929@kindex C-c C-d
2930@item C-c C-d
2931Insert @samp{DEADLINE} keyword along with a stamp. The insertion will
2932happen in the line directly following the headline.
2933@c FIXME Any CLOSED timestamp will be removed.????????
2934
2935@kindex C-c C-w
2936@cindex sparse tree, for deadlines
2937@item C-c C-w
2938Create a sparse tree with all deadlines that are either past-due, or
2939which will become due within @code{org-deadline-warning-days}.
2940With @kbd{C-u} prefix, show all deadlines in the file. With a numeric
2941prefix, check that many days. For example, @kbd{C-1 C-c C-w} shows
2942all deadlines due tomorrow.
2943
2944@kindex C-c C-s
2945@item C-c C-s
2946Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
2947happen in the line directly following the headline. Any CLOSED
2948timestamp will be removed.
2949
2950@kindex S-@key{left} 3096@kindex S-@key{left}
2951@kindex S-@key{right} 3097@kindex S-@key{right}
2952@item S-@key{left} 3098@item S-@key{left}
2953@itemx S-@key{right} 3099@itemx S-@key{right}
2954Change date at cursor by one day. These key bindings conflict with 3100Change date at cursor by one day. These key bindings conflict with
2955CUA-mode (@pxref{Conflicts}). 3101CUA-mode (@pxref{Conflicts}).
2956 3102@c
2957@kindex S-@key{up} 3103@kindex S-@key{up}
2958@kindex S-@key{down} 3104@kindex S-@key{down}
2959@item S-@key{up} 3105@item S-@key{up}
@@ -2963,8 +3109,7 @@ year, month, day, hour or minute. Note that if the cursor is in a
2963headline and not at a time stamp, these same keys modify the priority of 3109headline and not at a time stamp, these same keys modify the priority of
2964an item. (@pxref{Priorities}). The key bindings also conflict with 3110an item. (@pxref{Priorities}). The key bindings also conflict with
2965CUA-mode (@pxref{Conflicts}). 3111CUA-mode (@pxref{Conflicts}).
2966 3112@c
2967
2968@kindex C-c C-y 3113@kindex C-c C-y
2969@cindex evaluate time range 3114@cindex evaluate time range
2970@item C-c C-y 3115@item C-c C-y
@@ -2976,9 +3121,10 @@ into the following column).
2976 3121
2977@menu 3122@menu
2978* The date/time prompt:: How org-mode helps you entering date and time 3123* The date/time prompt:: How org-mode helps you entering date and time
3124* Custom time format:: Making dates look differently
2979@end menu 3125@end menu
2980 3126
2981@node The date/time prompt, , Creating timestamps, Creating timestamps 3127@node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
2982@subsection The date/time prompt 3128@subsection The date/time prompt
2983@cindex date, reading in minibuffer 3129@cindex date, reading in minibuffer
2984@cindex time, reading in minibuffer 3130@cindex time, reading in minibuffer
@@ -3047,8 +3193,8 @@ One month back.
3047Choose date in calendar (only if nothing was typed into minibuffer). 3193Choose date in calendar (only if nothing was typed into minibuffer).
3048@end table 3194@end table
3049 3195
3050@node Custom time format, Repeating items, Creating timestamps, Timestamps 3196@node Custom time format, , The date/time prompt, Creating timestamps
3051@section Custom time format 3197@subsection Custom time format
3052@cindex custom date/time format 3198@cindex custom date/time format
3053@cindex time format, custom 3199@cindex time format, custom
3054@cindex date format, custom 3200@cindex date format, custom
@@ -3090,48 +3236,119 @@ using dates in tables, table alignment will be messed up. If the custom
3090format is shorter, things do work as expected. 3236format is shorter, things do work as expected.
3091@end itemize 3237@end itemize
3092 3238
3093@node Repeating items, Progress logging, Custom time format, Timestamps
3094@section Repeating items
3095@cindex TODO items, repeating
3096@cindex deadlines, repeating
3097@cindex scheduling, repeating
3098
3099Org-mode integrates with the Emacs calendar and diary to display cyclic
3100appointments, anniversaries and other special entries in the agenda
3101(@pxref{Weekly/Daily agenda}). However, it can be useful to have
3102certain deadlines and scheduling items to auto-repeat. The advantage of
3103a deadline or scheduled item is that the they produce warnings ahead of
3104time and automatically forward themselves in the agenda until they are
3105done. The abstract difference is therefore between cyclic
3106@i{appointments} and cyclic @i{action items}. For appointments you
3107should use the diary, for actions you can uses an org-mode deadline or
3108scheduling time stamp together with a REPEAT cookie. For example:
3109 3239
3240@node Deadlines and scheduling, Progress logging, Creating timestamps, Timestamps
3241@section Deadlines and Scheduling
3242
3243A time stamp may be preceded by special keywords to facilitate planning
3244of work:
3245
3246@table @var
3247@item DEADLINE
3248@cindex DEADLINE keyword
3249The task (most likely a TODO item) is supposed to be finished on that
3250date, and it will be listed then. In addition, the compilation for
3251@emph{today} will carry a warning about the approaching or missed
3252deadline, starting @code{org-deadline-warning-days} before the due date,
3253and continuing until the entry is marked DONE. An example:
3254
3255@example
3256*** TODO write article about the Earth for the Guide
3257 The editor in charge is [[bbdb:Ford Prefect]]
3258 DEADLINE: <2004-02-29 Sun>
3259@end example
3260
3261@item SCHEDULED
3262@cindex SCHEDULED keyword
3263You are planning to start working on that task on the given date. The
3264headline will be listed under the given date@footnote{It will still be
3265listed on that date after it has been marked DONE. If you don't like
3266this, set the variable @code{org-agenda-skip-scheduled-if-done}.}. In
3267addition, a reminder that the scheduled date has passed will be present
3268in the compilation for @emph{today}, until the entry is marked DONE.
3269I.e., the task will automatically be forwarded until completed.
3270
3271@example
3272*** TODO Call Trillian for a date on New Years Eve.
3273 SCHEDULED: <2004-12-25 Sat>
3274@end example
3275@end table
3276
3277@menu
3278* Inserting deadline/schedule::
3279* Repeated tasks::
3280@end menu
3281
3282@node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
3283@subsection Inserting deadline/schedule
3284
3285The following commands allow to quickly insert a deadline or to schedule
3286an item:
3287
3288@table @kbd
3289@c
3290@kindex C-c C-d
3291@item C-c C-d
3292Insert @samp{DEADLINE} keyword along with a stamp. The insertion will
3293happen in the line directly following the headline.
3294@c FIXME Any CLOSED timestamp will be removed.????????
3295@c
3296@kindex C-c C-w
3297@cindex sparse tree, for deadlines
3298@item C-c C-w
3299Create a sparse tree with all deadlines that are either past-due, or
3300which will become due within @code{org-deadline-warning-days}.
3301With @kbd{C-u} prefix, show all deadlines in the file. With a numeric
3302prefix, check that many days. For example, @kbd{C-1 C-c C-w} shows
3303all deadlines due tomorrow.
3304@c
3305@kindex C-c C-s
3306@item C-c C-s
3307Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
3308happen in the line directly following the headline. Any CLOSED
3309timestamp will be removed.
3310@end table
3311
3312@node Repeated tasks, , Inserting deadline/schedule, Deadlines and scheduling
3313@subsection Repeated Tasks
3314
3315Some tasks need to be repeated again and again, and Org-mode therefore
3316allows to use a repeater in a DEADLINE or SCHEDULED time stamp, for
3317example:
3110@example 3318@example
3111* TODO Replace batteries in smoke detector REPEAT(+18m) 3319** TODO Pay the rent
3112 SCHEDULED: <2007-01-01 Mon> 3320 DEADLINE: <2005-10-01 Sat +1m>
3321@end example
3113 3322
3114* TODO Get dentist appointment REPEAT(+6m) 3323Deadlines and scheduled items produce entries in the agenda when they
3115 SCHEDULED: <2006-12-19 Tue> 3324are over-due, so it is important to be able to mark such an entry as
3325completed once you have done so. When you mark a DEADLINE or a SCHEDULE
3326with the todo keyword DONE, it will no longer produce entries in the
3327agenda. The problem with this is, however, that then also the
3328@emph{next} instance of the repeated entry will not be active. Org-mode
3329deals with this in the following way: When you try to mark such an entry
3330DONE (using @kbd{C-c C-t}), it will shift the base date of the repeating
3331time stamp by the repeater interval, and immediately set the entry state
3332back to TODO. In the example above, setting the state to DONE would
3333actually switch the date like this:
3116 3334
3117* TODO Tax report to IRS REPEAT(+1y) 3335@example
3118 DEADLINE: <2007-04-01 Sun> 3336** TODO Pay the rent
3337 DEADLINE: <2005-11-01 Tue +1m>
3119@end example 3338@end example
3120 3339
3121Each time you try to mark one of these entries DONE using @kbd{C-c C-t}, 3340You will also be prompted for a note that will be put under the DEADLINE
3122they will automatically switch back to the state TODO, and the 3341line to keep a record that you actually acted on the previous instance
3123deadline/scheduling will be shifted accordingly. The time units 3342of this deadline.
3124recognized by org-mode are year (y), month (m), week (w), and day (d). 3343
3125Org-mode will also prompt you for a note and record the fact that you 3344As a consequence of shifting the base date, this entry will no longer be
3126have closed this item in a note under the headline. 3345visible in the agenda when checking past dates, but all future instances
3346will be visible.
3127 3347
3128One unusual property of these repeating items is that only one instance 3348You may have both scheduling and deadline information for a specific
3129of each exist at any given time. So if you look back or ahead in the 3349task - just make sure that the repeater intervals on both are the same.
3130agenda, you will not find past and future instances, only the current
3131one will show up. Use a cyclic diary entry if you need all past and
3132future instances to be visible in the agenda.
3133 3350
3134@node Progress logging, , Repeating items, Timestamps 3351@node Progress logging, , Deadlines and scheduling, Timestamps
3135@section Progress Logging 3352@section Progress Logging
3136@cindex progress logging 3353@cindex progress logging
3137@cindex logging, of progress 3354@cindex logging, of progress
@@ -3199,6 +3416,7 @@ these into a separate file that starts with:
3199#+STARTUP: lognotestate 3416#+STARTUP: lognotestate
3200@end example 3417@end example
3201 3418
3419
3202@node Clocking work time, , Tracking TODO state changes, Progress logging 3420@node Clocking work time, , Tracking TODO state changes, Progress logging
3203@subsection Clocking work time 3421@subsection Clocking work time
3204 3422
@@ -3743,6 +3961,23 @@ Sunrise/Sunset times, show lunar phases and to convert to other
3743calendars, respectively. @kbd{c} can be used to switch back and forth 3961calendars, respectively. @kbd{c} can be used to switch back and forth
3744between calendar and agenda. 3962between calendar and agenda.
3745 3963
3964If you are using the diary only for sexp entries and holidays, it is
3965faster to not use the above setting, but instead to copy or even move
3966the entries into an Org-mode file. Org-mode evaluates diary-style sexp
3967entries, and does it faster because there is no overhead for first
3968creating the diary display. Note that the sexp entries must start at
3969the left margin, no white space is allowed before them. For example,
3970the following segment of an Org-mode file will be processed and entries
3971will be made in the agenda:
3972
3973@example
3974* Birthdays and similar stuff
3975#+CATEGORY: Holiday
3976%%(org-calendar-holiday) ; special function for holiday names
3977#+CATEGORY: Ann
3978%%(diary-anniversary 14 5 1956) Artur Dent %d is years old
3979%%(diary-anniversary 2 10 1869) Mahatma Gandhi would be %d years old
3980@end example
3746 3981
3747@node Global TODO list, Matching headline tags, Weekly/Daily agenda, Built-in agenda views 3982@node Global TODO list, Matching headline tags, Weekly/Daily agenda, Built-in agenda views
3748@subsection The global TODO list 3983@subsection The global TODO list
@@ -3762,10 +3997,12 @@ the TODO entries directly from that buffer (@pxref{Agenda commands}).
3762@kindex C-c a T 3997@kindex C-c a T
3763@item C-c a T 3998@item C-c a T
3764@cindex TODO keyword matching 3999@cindex TODO keyword matching
3765Like the above, but allows selection of a specific TODO keyword. You can 4000Like the above, but allows selection of a specific TODO keyword. You
3766also do this by specifying a prefix argument to @kbd{C-c a t}. With a 4001can also do this by specifying a prefix argument to @kbd{C-c a t}. With
3767@kbd{C-u} prefix you are prompted for a keyword. With a numeric 4002a @kbd{C-u} prefix you are prompted for a keyword, and you may also
3768prefix, the Nth keyword in @code{org-todo-keywords} is selected. 4003specify several keywords by separating them with @samp{|} as boolean OR
4004operator. With a numeric prefix, the Nth keyword in
4005@code{org-todo-keywords} is selected.
3769@kindex r 4006@kindex r
3770The @kbd{r} key in the agenda buffer regenerates it, and you can give 4007The @kbd{r} key in the agenda buffer regenerates it, and you can give
3771a prefix argument to this command to change the selected TODO keyword, 4008a prefix argument to this command to change the selected TODO keyword,
@@ -3875,16 +4112,18 @@ Lets assume that you, in your own way of using Org-mode, identify
3875projects with a tag PROJECT, and that you use a todo keyword MAYBE to 4112projects with a tag PROJECT, and that you use a todo keyword MAYBE to
3876indicate a project that should not be considered yet. Lets further 4113indicate a project that should not be considered yet. Lets further
3877assume that the todo keyword DONE marks finished projects, and that NEXT 4114assume that the todo keyword DONE marks finished projects, and that NEXT
3878and TODO indicate next actions. Finally, the tag @@SHOP indicates 4115and TODO indicate next actions. The tag @@SHOP indicates shopping and
3879shopping and is a next action even without the NEXT tag. In this case 4116is a next action even without the NEXT tag. Finally, if the project
3880you would start by identifying eligible projects with a tags/todo match 4117contains the special word IGNORE anywhere, it should not be listed
3881@samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT and @@SHOP in 4118either. In this case you would start by identifying eligible projects
3882the subtree to identify projects that are not stuck. The correct 4119with a tags/todo match @samp{+PROJECT/-MAYBE-DONE}, and then check for
3883customization for this is 4120TODO, NEXT, @@SHOP, and IGNORE in the subtree to identify projects that
4121are not stuck. The correct customization for this is
3884 4122
3885@lisp 4123@lisp
3886(setq org-stuck-projects 4124(setq org-stuck-projects
3887 ("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP"))) 4125 '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
4126 "\\<IGNORE\\>"))
3888@end lisp 4127@end lisp
3889 4128
3890 4129
@@ -4031,11 +4270,11 @@ Previous line (same as @key{down}).
4031@item mouse-3 4270@item mouse-3
4032@itemx @key{SPC} 4271@itemx @key{SPC}
4033Display the original location of the item in another window. 4272Display the original location of the item in another window.
4034 4273@c
4035@kindex L 4274@kindex L
4036@item L 4275@item L
4037Display original location and recenter that window. 4276Display original location and recenter that window.
4038 4277@c
4039@kindex mouse-2 4278@kindex mouse-2
4040@kindex mouse-1 4279@kindex mouse-1
4041@kindex @key{TAB} 4280@kindex @key{TAB}
@@ -4044,11 +4283,11 @@ Display original location and recenter that window.
4044@itemx @key{TAB} 4283@itemx @key{TAB}
4045Go to the original location of the item in another window. Under Emacs 4284Go to the original location of the item in another window. Under Emacs
404622, @kbd{mouse-1} will also works for this. 428522, @kbd{mouse-1} will also works for this.
4047 4286@c
4048@kindex @key{RET} 4287@kindex @key{RET}
4049@itemx @key{RET} 4288@itemx @key{RET}
4050Go to the original location of the item and delete other windows. 4289Go to the original location of the item and delete other windows.
4051 4290@c
4052@kindex f 4291@kindex f
4053@item f 4292@item f
4054Toggle Follow mode. In Follow mode, as you move the cursor through 4293Toggle Follow mode. In Follow mode, as you move the cursor through
@@ -4056,14 +4295,14 @@ the agenda buffer, the other window always shows the corresponding
4056location in the org file. The initial setting for this mode in new 4295location in the org file. The initial setting for this mode in new
4057agenda buffers can be set with the variable 4296agenda buffers can be set with the variable
4058@code{org-agenda-start-with-follow-mode}. 4297@code{org-agenda-start-with-follow-mode}.
4059 4298@c
4060@kindex b 4299@kindex b
4061@item b 4300@item b
4062Display the entire subtree of the current item in an indirect buffer. 4301Display the entire subtree of the current item in an indirect buffer.
4063With numerical prefix ARG, go up to this level and then take that tree. 4302With numerical prefix ARG, go up to this level and then take that tree.
4064If ARG is negative, go up that many levels. With @kbd{C-u} prefix, do 4303If ARG is negative, go up that many levels. With @kbd{C-u} prefix, do
4065not remove the previously used indirect buffer. 4304not remove the previously used indirect buffer.
4066 4305@c
4067@kindex l 4306@kindex l
4068@item l 4307@item l
4069Toggle Logbook mode. In Logbook mode, entries that where marked DONE while 4308Toggle Logbook mode. In Logbook mode, entries that where marked DONE while
@@ -4075,24 +4314,24 @@ as are entries that have been clocked on that day.
4075@kindex o 4314@kindex o
4076@item o 4315@item o
4077Delete other windows. 4316Delete other windows.
4078 4317@c
4079@kindex w 4318@kindex w
4080@item w 4319@item w
4081Switch to weekly view (7 days displayed together). 4320Switch to weekly view (7 days displayed together).
4082 4321@c
4083@kindex d 4322@kindex d
4084@item d 4323@item d
4085Switch to daily view (just one day displayed). 4324Switch to daily view (just one day displayed).
4086 4325@c
4087@kindex D 4326@kindex D
4088@item D 4327@item D
4089Toggle the inclusion of diary entries. See @ref{Weekly/Daily agenda}. 4328Toggle the inclusion of diary entries. See @ref{Weekly/Daily agenda}.
4090 4329@c
4091@kindex g 4330@kindex g
4092@item g 4331@item g
4093Toggle the time grid on and off. See also the variables 4332Toggle the time grid on and off. See also the variables
4094@code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}. 4333@code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
4095 4334@c
4096@kindex r 4335@kindex r
4097@item r 4336@item r
4098Recreate the agenda buffer, for example to reflect the changes 4337Recreate the agenda buffer, for example to reflect the changes
@@ -4100,21 +4339,21 @@ after modification of the time stamps of items with S-@key{left} and
4100S-@key{right}. When the buffer is the global todo list, a prefix 4339S-@key{right}. When the buffer is the global todo list, a prefix
4101argument is interpreted to create a selective list for a specific TODO 4340argument is interpreted to create a selective list for a specific TODO
4102keyword. 4341keyword.
4103 4342@c
4104@kindex s 4343@kindex s
4105@item s 4344@item s
4106Save all Org-mode buffers in the current Emacs session. 4345Save all Org-mode buffers in the current Emacs session.
4107 4346@c
4108@kindex @key{right} 4347@kindex @key{right}
4109@item @key{right} 4348@item @key{right}
4110Display the following @code{org-agenda-ndays} days. For example, if 4349Display the following @code{org-agenda-ndays} days. For example, if
4111the display covers a week, switch to the following week. With prefix 4350the display covers a week, switch to the following week. With prefix
4112arg, go forward that many times @code{org-agenda-ndays} days. 4351arg, go forward that many times @code{org-agenda-ndays} days.
4113 4352@c
4114@kindex @key{left} 4353@kindex @key{left}
4115@item @key{left} 4354@item @key{left}
4116Display the previous dates. 4355Display the previous dates.
4117 4356@c
4118@kindex . 4357@kindex .
4119@item . 4358@item .
4120Goto today. 4359Goto today.
@@ -4124,53 +4363,53 @@ Goto today.
4124 4363
4125@item 0-9 4364@item 0-9
4126Digit argument. 4365Digit argument.
4127 4366@c
4128@cindex undoing remote-editing events 4367@cindex undoing remote-editing events
4129@cindex remote editing, undo 4368@cindex remote editing, undo
4130@kindex C-_ 4369@kindex C-_
4131@item C-_ 4370@item C-_
4132Undo a change due to a remote editing command. The change is undone 4371Undo a change due to a remote editing command. The change is undone
4133both in the agenda buffer and in the remote buffer. 4372both in the agenda buffer and in the remote buffer.
4134 4373@c
4135@kindex t 4374@kindex t
4136@item t 4375@item t
4137Change the TODO state of the item, both in the agenda and in the 4376Change the TODO state of the item, both in the agenda and in the
4138original org file. 4377original org file.
4139 4378@c
4140@kindex C-k 4379@kindex C-k
4141@item C-k 4380@item C-k
4142Delete the current agenda item along with the entire subtree belonging 4381Delete the current agenda item along with the entire subtree belonging
4143to it in the original Org-mode file. If the text to be deleted remotely 4382to it in the original Org-mode file. If the text to be deleted remotely
4144is longer than one line, the kill needs to be confirmed by the user. See 4383is longer than one line, the kill needs to be confirmed by the user. See
4145variable @code{org-agenda-confirm-kill}. 4384variable @code{org-agenda-confirm-kill}.
4146 4385@c
4147@kindex $ 4386@kindex $
4148@item $ 4387@item $
4149Archive the subtree corresponding to the current headline. 4388Archive the subtree corresponding to the current headline.
4150 4389@c
4151@kindex T 4390@kindex T
4152@item T 4391@item T
4153Show all tags associated with the current item. Because of 4392Show all tags associated with the current item. Because of
4154inheritance, this may be more than the tags listed in the line itself. 4393inheritance, this may be more than the tags listed in the line itself.
4155 4394@c
4156@kindex : 4395@kindex :
4157@item : 4396@item :
4158Set tags for the current headline. 4397Set tags for the current headline.
4159 4398@c
4160@kindex a 4399@kindex a
4161@item a 4400@item a
4162Toggle the ARCHIVE tag for the current headline. 4401Toggle the ARCHIVE tag for the current headline.
4163 4402@c
4164@kindex , 4403@kindex ,
4165@item , 4404@item ,
4166Set the priority for the current item. Org-mode prompts for the 4405Set the priority for the current item. Org-mode prompts for the
4167priority character. If you reply with @key{SPC}, the priority cookie 4406priority character. If you reply with @key{SPC}, the priority cookie
4168is removed from the entry. 4407is removed from the entry.
4169 4408@c
4170@kindex P 4409@kindex P
4171@item P 4410@item P
4172Display weighted priority of current item. 4411Display weighted priority of current item.
4173 4412@c
4174@kindex + 4413@kindex +
4175@kindex S-@key{up} 4414@kindex S-@key{up}
4176@item + 4415@item +
@@ -4178,21 +4417,21 @@ Display weighted priority of current item.
4178Increase the priority of the current item. The priority is changed in 4417Increase the priority of the current item. The priority is changed in
4179the original buffer, but the agenda is not resorted. Use the @kbd{r} 4418the original buffer, but the agenda is not resorted. Use the @kbd{r}
4180key for this. 4419key for this.
4181 4420@c
4182@kindex - 4421@kindex -
4183@kindex S-@key{down} 4422@kindex S-@key{down}
4184@item - 4423@item -
4185@itemx S-@key{down} 4424@itemx S-@key{down}
4186Decrease the priority of the current item. 4425Decrease the priority of the current item.
4187 4426@c
4188@kindex C-c C-s 4427@kindex C-c C-s
4189@item C-c C-s 4428@item C-c C-s
4190Schedule this item 4429Schedule this item
4191 4430@c
4192@kindex C-c C-d 4431@kindex C-c C-d
4193@item C-c C-d 4432@item C-c C-d
4194Set a deadline for this item. 4433Set a deadline for this item.
4195 4434@c
4196@kindex S-@key{right} 4435@kindex S-@key{right}
4197@item S-@key{right} 4436@item S-@key{right}
4198Change the time stamp associated with the current line by one day into 4437Change the time stamp associated with the current line by one day into
@@ -4201,25 +4440,27 @@ example, @kbd{3 6 5 S-@key{right}} will change it by a year. The
4201stamp is changed in the original org file, but the change is not 4440stamp is changed in the original org file, but the change is not
4202directly reflected in the agenda buffer. Use the 4441directly reflected in the agenda buffer. Use the
4203@kbd{r} key to update the buffer. 4442@kbd{r} key to update the buffer.
4204 4443@c
4205@kindex S-@key{left} 4444@kindex S-@key{left}
4206@item S-@key{left} 4445@item S-@key{left}
4207Change the time stamp associated with the current line by one day 4446Change the time stamp associated with the current line by one day
4208into the past. 4447into the past.
4209 4448@c
4210@kindex > 4449@kindex >
4211@item > 4450@item >
4212Change the time stamp associated with the current line to today. 4451Change the time stamp associated with the current line to today.
4213The key @kbd{>} has been chosen, because it is the same as @kbd{S-.} 4452The key @kbd{>} has been chosen, because it is the same as @kbd{S-.}
4214on my keyboard. 4453on my keyboard.
4215 4454@c
4216@kindex I 4455@kindex I
4217@item I 4456@item I
4218Start the clock on the current item. If a clock is running already, it 4457Start the clock on the current item. If a clock is running already, it
4219is stopped first. 4458is stopped first.
4459@c
4220@kindex O 4460@kindex O
4221@item O 4461@item O
4222Stop the previously started clock. 4462Stop the previously started clock.
4463@c
4223@kindex X 4464@kindex X
4224@item X 4465@item X
4225Cancel the currently running clock. 4466Cancel the currently running clock.
@@ -4229,11 +4470,11 @@ Cancel the currently running clock.
4229@kindex c 4470@kindex c
4230@item c 4471@item c
4231Open the Emacs calendar and move to the date at the agenda cursor. 4472Open the Emacs calendar and move to the date at the agenda cursor.
4232 4473@c
4233@item c 4474@item c
4234When in the calendar, compute and show the Org-mode agenda for the 4475When in the calendar, compute and show the Org-mode agenda for the
4235date at the cursor. 4476date at the cursor.
4236 4477@c
4237@cindex diary entries, creating from agenda 4478@cindex diary entries, creating from agenda
4238@kindex i 4479@kindex i
4239@item i 4480@item i
@@ -4241,42 +4482,53 @@ Insert a new entry into the diary. Prompts for the type of entry
4241(day, weekly, monthly, yearly, anniversary, cyclic) and creates a new 4482(day, weekly, monthly, yearly, anniversary, cyclic) and creates a new
4242entry in the diary, just as @kbd{i d} etc. would do in the calendar. 4483entry in the diary, just as @kbd{i d} etc. would do in the calendar.
4243The date is taken from the cursor position. 4484The date is taken from the cursor position.
4244 4485@c
4245@kindex M 4486@kindex M
4246@item M 4487@item M
4247Show the phases of the moon for the three months around current date. 4488Show the phases of the moon for the three months around current date.
4248 4489@c
4249@kindex S 4490@kindex S
4250@item S 4491@item S
4251Show sunrise and sunset times. The geographical location must be set 4492Show sunrise and sunset times. The geographical location must be set
4252with calendar variables, see documentation of the Emacs calendar. 4493with calendar variables, see documentation of the Emacs calendar.
4253 4494@c
4254@kindex C 4495@kindex C
4255@item C 4496@item C
4256Convert the date at cursor into many other cultural and historic 4497Convert the date at cursor into many other cultural and historic
4257calendars. 4498calendars.
4258 4499@c
4259@kindex H 4500@kindex H
4260@item H 4501@item H
4261Show holidays for three month around the cursor date. 4502Show holidays for three month around the cursor date.
4262 4503@c
4263@c FIXME: This should be a different key. 4504@c FIXME: This should be a different key.
4264@kindex C-c C-x C-c 4505@kindex C-c C-x C-c
4265@item C-c C-x C-c 4506@item C-c C-x C-c
4266Export a single iCalendar file containing entries from all agenda files. 4507Export a single iCalendar file containing entries from all agenda files.
4267 4508
4509@tsubheading{Exporting to a file}
4510@kindex C-x C-w
4511@item C-x C-w
4512@cindex exporting agenda views
4513@cindex agenda views, exporting
4514Write the agenda view to a file. Depending on the extension of the
4515selected file name, the view will be exported as HTML (extension
4516@file{.html} or @file{.htm}), Postscript (extension @file{.ps}), or
4517plain text (any other extension). Use the variable
4518@code{org-agenda-exporter-settings} to set options for @file{ps-print}
4519and for @file{htmlize} to be used during export.
4520
4268@tsubheading{Quit and Exit} 4521@tsubheading{Quit and Exit}
4269@kindex q 4522@kindex q
4270@item q 4523@item q
4271Quit agenda, remove the agenda buffer. 4524Quit agenda, remove the agenda buffer.
4272 4525@c
4273@kindex x 4526@kindex x
4274@cindex agenda files, removing buffers 4527@cindex agenda files, removing buffers
4275@item x 4528@item x
4276Exit agenda, remove the agenda buffer and all buffers loaded by Emacs 4529Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
4277for the compilation of the agenda. Buffers created by the user to 4530for the compilation of the agenda. Buffers created by the user to
4278visit org files will not be removed. 4531visit org files will not be removed.
4279
4280@end table 4532@end table
4281 4533
4282 4534
@@ -4294,7 +4546,8 @@ dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
4294* Storing searches:: Type once, use often 4546* Storing searches:: Type once, use often
4295* Block agenda:: All the stuff you need in a single buffer 4547* Block agenda:: All the stuff you need in a single buffer
4296* Setting Options:: Changing the rules 4548* Setting Options:: Changing the rules
4297* Batch processing:: Agenda views from the command line 4549* Exporting Agenda Views:: Writing agendas to files.
4550* Extracting Agenda Information for other programs::
4298@end menu 4551@end menu
4299 4552
4300@node Storing searches, Block agenda, Custom agenda views, Custom agenda views 4553@node Storing searches, Block agenda, Custom agenda views, Custom agenda views
@@ -4386,7 +4639,7 @@ your agenda for the current week, all TODO items that carry the tag
4386command @kbd{C-c a o} provides a similar view for office tasks. 4639command @kbd{C-c a o} provides a similar view for office tasks.
4387 4640
4388 4641
4389@node Setting Options, Batch processing, Block agenda, Custom agenda views 4642@node Setting Options, Exporting Agenda Views, Block agenda, Custom agenda views
4390@subsection Setting Options for custom commands 4643@subsection Setting Options for custom commands
4391@cindex options, for custom agenda views 4644@cindex options, for custom agenda views
4392 4645
@@ -4434,7 +4687,8 @@ the results for GARDEN tags query in the opposite order,
4434 '(("h" "Agenda and Home-related tasks" 4687 '(("h" "Agenda and Home-related tasks"
4435 ((agenda) 4688 ((agenda)
4436 (tags-todo "HOME") 4689 (tags-todo "HOME")
4437 (tags "GARDEN" ((org-agenda-sorting-strategy '(priority-up))))) 4690 (tags "GARDEN"
4691 ((org-agenda-sorting-strategy '(priority-up)))))
4438 ((org-agenda-sorting-strategy '(priority-down)))) 4692 ((org-agenda-sorting-strategy '(priority-down))))
4439 ("o" "Agenda and Office-related tasks" 4693 ("o" "Agenda and Office-related tasks"
4440 ((agenda) 4694 ((agenda)
@@ -4450,36 +4704,234 @@ this interface, the @emph{values} are just lisp expressions. So if the
4450value is a string, you need to add the double quotes around the value 4704value is a string, you need to add the double quotes around the value
4451yourself. 4705yourself.
4452 4706
4453@node Batch processing, , Setting Options, Custom agenda views
4454@subsection Creating agenda views in batch processing
4455@cindex agenda, batch production
4456 4707
4457If you want to print or otherwise reprocess agenda views, it can be 4708@node Exporting Agenda Views, Extracting Agenda Information for other programs, Setting Options, Custom agenda views
4458useful to create an agenda from the command line. This is the purpose 4709@subsection Exporting Agenda Views
4459of the function @code{org-batch-agenda}. It takes as a parameter one of 4710@cindex agenda views, exporting
4460the strings that are the keys in @code{org-agenda-custom-commands}. For 4711
4461example, to directly print the current TODO list, you could use 4712If you are away from your computer, it can be very useful to have a
4713printed version of some agenda views to carry around. Org-mode can
4714export custom agenda views as plain text, HTML@footnote{You need to
4715install Hrvoje Niksic' @file{htmlize.el}.} and postscript. If you want
4716to do this only occasionally, use the commend
4717
4718@table @kbd
4719@kindex C-x C-w
4720@item C-x C-w
4721@cindex exporting agenda views
4722@cindex agenda views, exporting
4723Write the agenda view to a file. Depending on the extension of the
4724selected file name, the view will be exported as HTML (extension
4725@file{.html} or @file{.htm}), Postscript (extension @file{.ps}), or
4726plain text (any other extension). Use the variable
4727@code{org-agenda-exporter-settings} to set options for @file{ps-print}
4728and for @file{htmlize} to be used during export, for example
4729@lisp
4730(setq org-agenda-exporter-settings
4731 '((ps-number-of-columns 2)
4732 (ps-landscape-mode t)
4733 (htmlize-output-type 'css)))
4734@end lisp
4735@end table
4736
4737If you need to export certain agenda views frequently, you can associate
4738any custom agenda command with a list of output file names
4739@footnote{If you want to store standard views like the weekly agenda
4740or the global TODO list as well, you need to define custom commands for
4741them in order to be able to specify filenames.}. Here is an example
4742that first does define custom commands for the agenda and the global
4743todo list, together with a number of files to which to export them.
4744Then we define two block agenda commands and specify filenames for them
4745as well. File names can be relative to the current working directory,
4746or absolute.
4747
4748@lisp
4749@group
4750(setq org-agenda-custom-commands
4751 '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
4752 ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
4753 ("h" "Agenda and Home-related tasks"
4754 ((agenda)
4755 (tags-todo "HOME")
4756 (tags "GARDEN"))
4757 nil
4758 ("~/views/home.html"))
4759 ("o" "Agenda and Office-related tasks"
4760 ((agenda)
4761 (tags-todo "WORK")
4762 (tags "OFFICE"))
4763 nil
4764 ("~/views/office.ps"))))
4765@end group
4766@end lisp
4767
4768The extension of the file name determines the type of export. If it is
4769@file{.html}, Org-mode will use the @file{htmlize.el} package to convert
4770the buffer to HTML and save it to this file name. If the extension is
4771@file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
4772postscript output. Any other extension produces a plain ASCII file.
4773
4774The export files are @emph{not} created when you use one of those
4775commands interactively. Instead, there is a special command to produce
4776@emph{all} specified files in one step:
4777
4778@table @kbd
4779@kindex C-c a e
4780@item C-c a e
4781Export all agenda views that have export filenames associated with
4782them.
4783@end table
4784
4785You can use the options section of the custom agenda commands to also
4786set options for the export commands. For example:
4787
4788@lisp
4789(setq org-agenda-custom-commands
4790 '(("X" agenda ""
4791 ((ps-number-of-columns 2)
4792 (ps-landscape-mode t)
4793 (org-agenda-prefix-format " [ ] ")
4794 (org-agenda-with-colors nil)
4795 (org-agenda-remove-tags t))
4796 ("theagenda.ps"))))
4797@end lisp
4798
4799@noindent
4800This command sets two options for the postscript exporter, to make it
4801print in two columns in landscape format - the resulting page can be cut
4802in two and then used in a paper agenda. The remaining settings modify
4803the agenda prefix to omit category and scheduling information, and
4804instead include a checkbox to check off items. We also remove the tags
4805to make the lines compact, and we don't want to use colors for the
4806black-and-white printer. Settings specified in
4807@code{org-agenda-exporter-settings} will also apply, but the settings
4808in @code{org-agenda-custom-commands} take precedence.
4809
4810@noindent
4811From the command line you may also use
4812@example
4813emacs -f org-batch-store-agenda-views -kill
4814@end example
4815@noindent
4816or, if you need to modify some parameters
4817@example
4818emacs -eval '(org-batch-store-agenda-views \
4819 org-agenda-ndays 30 \
4820 org-agenda-include-diary nil \
4821 org-agenda-files (quote ("~/org/project.org")))' \
4822 -kill
4823@end example
4824@noindent
4825which will create the agenda views restricted to the file
4826@file{~/org/project.org}, without diary entries and with 30 days
4827extent.
4828
4829@node Extracting Agenda Information for other programs, , Exporting Agenda Views, Custom agenda views
4830@subsection Extracting Agenda Information for other programs
4831@cindex agenda, pipe
4832@cindex Scripts, for agenda processing
4833
4834Org-mode provides commands to access agenda information for the command
4835line in emacs batch mode. This extracted information can be sent
4836directly to a printer, or it can be read by a program that does further
4837processing of the data. The first of these commands is the function
4838@code{org-batch-agenda}, that produces an agenda view and sends it as
4839ASCII text to STDOUT. The command takes a single string as parameter.
4840If the string has length 1, it is used as a key to one of the commands
4841you have configured in @code{org-agenda-custom-commands}, basically any
4842key you can use after @kbd{C-c a}. For example, to directly print the
4843current TODO list, you could use
4462 4844
4463@example 4845@example
4464emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr 4846emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
4465@end example 4847@end example
4466 4848
4849If the parameter is a string with 2 or more characters, it is used as a
4850tags/todo match string. For example, to print your local shopping list
4851(all items with the tag @samp{shop}, but excluding the tag
4852@samp{NewYork}), you could use
4853
4854@example
4855emacs -batch -l ~/.emacs \
4856 -eval '(org-batch-agenda "+shop-NewYork")' | lpr
4857@end example
4858
4467@noindent 4859@noindent
4468You may also modify parameters on the fly like this: 4860You may also modify parameters on the fly like this:
4469 4861
4470@example 4862@example
4471emacs -batch -l ~/.emacs \ 4863emacs -batch -l ~/.emacs \
4472 -eval '(org-batch-agenda "a" \ 4864 -eval '(org-batch-agenda "a" \
4473 org-agenda-ndays 300 \ 4865 org-agenda-ndays 30 \
4474 org-agenda-include-diary nil \ 4866 org-agenda-include-diary nil \
4475 org-agenda-files (quote ("~/org/project.org")))' \ 4867 org-agenda-files (quote ("~/org/project.org")))' \
4476 | lpr 4868 | lpr
4477@end example 4869@end example
4478 4870
4479@noindent 4871@noindent
4480which will produce a 300 day agenda, fully restricted to the Org file 4872which will produce a 30 day agenda, fully restricted to the Org file
4481@file{~/org/projects.org}, not even including the diary. 4873@file{~/org/projects.org}, not even including the diary.
4482 4874
4875If you want to process the agenda data in more sophisticated ways, you
4876can use the command @code{org-batch-agenda-csv} to get a comma-separated
4877list of values for each agenda item. Each line in the output will
4878contain a number of fields separated by commas. The fields in a line
4879are:
4880
4881@example
4882category @r{The category of the item}
4883head @r{The headline, without TODO kwd, TAGS and PRIORITY}
4884type @r{The type of the agenda entry, can be}
4885 todo @r{selected in TODO match}
4886 tagsmatch @r{selected in tags match}
4887 diary @r{imported from diary}
4888 deadline @r{a deadline}
4889 scheduled @r{scheduled}
4890 timestamp @r{appointment, selected by timestamp}
4891 closed @r{entry was closed on date}
4892 upcoming-deadline @r{warning about nearing deadline}
4893 past-scheduled @r{forwarded scheduled item}
4894 block @r{entry has date block including date}
4895todo @r{The todo keyword, if any}
4896tags @r{All tags including inherited ones, separated by colons}
4897date @r{The relevant date, like 2007-2-14}
4898time @r{The time, like 15:00-16:50}
4899extra @r{String with extra planning info}
4900priority-l @r{The priority letter if any was given}
4901priority-n @r{The computed numerical priority}
4902@end example
4903
4904@noindent
4905Time and date will only be given if a timestamp (or deadline/scheduled)
4906lead to the selection of the item.
4907
4908A CSV list like this is very easy to use in a post processing script.
4909For example, here is a Perl program that gets the TODO list from
4910Emacs/org-mode and prints all the items, preceded by a checkbox:
4911
4912@example
4913@group
4914#!/usr/bin/perl
4915
4916# define the Emacs command to run
4917$cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
4918
4919# run it and capture the output
4920$agenda = qx@{$cmd 2>/dev/null@};
4921
4922# loop over all lines
4923foreach $line (split(/\n/,$agenda)) @{
4924
4925 # get the individual values
4926 ($category,$head,$type,$todo,$tags,$date,$time,$extra,
4927 $priority_l,$priority_n) = split(/,/,$line);
4928
4929 # proccess and print
4930 print "[ ] $head\n";
4931@}
4932@end group
4933@end example
4934
4483@node Embedded LaTeX, Exporting, Agenda views, Top 4935@node Embedded LaTeX, Exporting, Agenda views, Top
4484@chapter Embedded LaTeX 4936@chapter Embedded LaTeX
4485@cindex @TeX{} interpretation 4937@cindex @TeX{} interpretation
@@ -4566,7 +5018,9 @@ preview the typeset result of these fragments, and upon export to HTML,
4566all fragments will be converted to images and inlined into the HTML 5018all fragments will be converted to images and inlined into the HTML
4567document. For this to work you need to be on a system with a working 5019document. For this to work you need to be on a system with a working
4568La@TeX{} installation. You also need the @file{dvipng} program, 5020La@TeX{} installation. You also need the @file{dvipng} program,
4569available at @url{http://sourceforge.net/projects/dvipng/}. 5021available at @url{http://sourceforge.net/projects/dvipng/}. The LaTeX
5022header that will be used when processing a fragment can be configured
5023with the variable @code{org-format-latex-header}.
4570 5024
4571La@TeX{} fragments don't need any special marking at all. The following 5025La@TeX{} fragments don't need any special marking at all. The following
4572snippets will be identified as LaTeX source code: 5026snippets will be identified as LaTeX source code:
@@ -4773,7 +5227,7 @@ HTML formatting, in ways similar to John Grubers @emph{markdown}
4773language, but with additional support for tables. 5227language, but with additional support for tables.
4774 5228
4775@menu 5229@menu
4776* Export commands:: How to invode HTML export 5230* Export commands:: How to invoke HTML export
4777* Quoting HTML tags:: Using direct HTML in Org-mode 5231* Quoting HTML tags:: Using direct HTML in Org-mode
4778* Links:: How hyperlinks get transferred to HTML 5232* Links:: How hyperlinks get transferred to HTML
4779* Images:: To inline or not to inline? 5233* Images:: To inline or not to inline?
@@ -4793,11 +5247,27 @@ Export as HTML file @file{myfile.html}.
4793@kindex C-c C-e b 5247@kindex C-c C-e b
4794@item C-c C-e b 5248@item C-c C-e b
4795Export as HTML file and open it with a browser. 5249Export as HTML file and open it with a browser.
5250@kindex C-c C-e H
5251@item C-c C-e H
5252Export to a temporary buffer, do not create a file.
5253@kindex C-c C-e R
5254@item C-c C-e H
5255Export the active region to a temporary buffer. With prefix arg, do not
5256produce file header and foot, but just the plain HTML section for the
5257region. This is good for cut-and-paste operations.
4796@kindex C-c C-e v h 5258@kindex C-c C-e v h
4797@kindex C-c C-e v b 5259@kindex C-c C-e v b
5260@kindex C-c C-e v H
5261@kindex C-c C-e v R
4798@item C-c C-e v h 5262@item C-c C-e v h
4799@item C-c C-e v b 5263@item C-c C-e v b
5264@item C-c C-e v H
5265@item C-c C-e v R
4800Export only the visible part of the document. 5266Export only the visible part of the document.
5267@item M-x org-export-region-as-html
5268Convert the region to HTML under the assumption that it was org-mode
5269syntax before. This is a global command that can be invoked in any
5270buffer.
4801@end table 5271@end table
4802 5272
4803@cindex headline levels, for exporting 5273@cindex headline levels, for exporting
@@ -4975,19 +5445,20 @@ in order to produce better output.
4975 5445
4976@menu 5446@menu
4977* Comment lines:: Some lines will not be exported 5447* Comment lines:: Some lines will not be exported
5448* Initial text:: Text before the first headline
5449* Footnotes:: Numbers like [1]
4978* Enhancing text:: Subscripts, symbols and more 5450* Enhancing text:: Subscripts, symbols and more
4979* Export options:: How to influence the export settings 5451* Export options:: How to influence the export settings
4980@end menu 5452@end menu
4981 5453
4982@node Comment lines, Enhancing text, Text interpretation, Text interpretation 5454@node Comment lines, Initial text, Text interpretation, Text interpretation
4983@subsection Comment lines 5455@subsection Comment lines
4984@cindex comment lines 5456@cindex comment lines
4985@cindex exporting, not 5457@cindex exporting, not
4986 5458
4987Lines starting with @samp{#} in column zero are treated as comments 5459Lines starting with @samp{#} in column zero are treated as comments
4988and will never be exported. Also entire subtrees starting with the 5460and will never be exported. Also entire subtrees starting with the
4989word @samp{COMMENT} will never be exported. Finally, any text before 5461word @samp{COMMENT} will never be exported.
4990the first headline will not be exported either.
4991 5462
4992@table @kbd 5463@table @kbd
4993@kindex C-c ; 5464@kindex C-c ;
@@ -4995,7 +5466,70 @@ the first headline will not be exported either.
4995Toggle the COMMENT keyword at the beginning of an entry. 5466Toggle the COMMENT keyword at the beginning of an entry.
4996@end table 5467@end table
4997 5468
4998@node Enhancing text, Export options, Comment lines, Text interpretation 5469@node Initial text, Footnotes, Comment lines, Text interpretation
5470@subsection Text before the first headline
5471
5472Org-mode normally ignores any text before the first headline when
5473exporting, leaving this region for internal links to speed up navigation
5474etc. However, in publishing-oriented files, you might want to have some
5475text before the first headline, like a small introduction, special HTML
5476code with a navigation bar, etc. You can ask to have this part of the
5477file exported as well by setting the variable
5478@code{org-export-skip-text-before-1st-heading} to @code{nil}. On a
5479per-file basis, you can get the same effect with
5480
5481@example
5482#+OPTIONS: skip:nil
5483@end example
5484
5485The text before the first headline will be fully processed
5486(@pxref{Enhancing text}), and the first non-comment line becomes the
5487title of the exported document. If you need to include literal HTML,
5488use the special constructs described in @ref{Quoting HTML tags}. The
5489table of contents is normally inserted directly before the first
5490headline of the file. If you would like to get it to a different
5491location, insert the string @code{[TABLE-OF-CONTENTS]} on a line by
5492itself at the desired location.
5493
5494Finally, if you want to use the space before the first headline for
5495internal purposes, but @emph{still} want to place something before the
5496first headline when exporting the file, you can use the @code{#+TEXT}
5497construct:
5498
5499@example
5500#+OPTIONS: skip:t
5501#+TEXT: This text will go before the *first* headline.
5502#+TEXT: We place the table of contents here:
5503#+TEXT: [TABLE-OF-CONTENTS]
5504#+TEXT: This goes between the table of contents and the first headline
5505@end example
5506
5507@node Footnotes, Enhancing text, Initial text, Text interpretation
5508@subsection Footnotes
5509@cindex footnotes
5510@cindex @file{footnote.el}
5511
5512Numbers in square brackets are treated as footnotes, so that you can use
5513the Emacs package @file{footnote.el} to create footnotes. For example:
5514
5515@example
5516The org-mode homepage[1] clearly needs help from
5517a good web designer.
5518
5519[1] The link is: http://www.astro.uva.nl/~dominik/Tools/org
5520@end example
5521
5522@noindent
5523@kindex C-c !
5524Note that the @file{footnote} package uses @kbd{C-c !} to invoke its
5525commands. This binding conflicts with the org-mode command for
5526inserting inactive time stamps. You could use the variable
5527@code{footnote-prefix} to switch footnotes commands to another key. Or,
5528if you are too used to this binding, you could use
5529@code{org-replace-disputed-keys} and @code{org-disputed-keys} to change
5530the settings in Org-mode.
5531
5532@node Enhancing text, Export options, Footnotes, Text interpretation
4999@subsection Enhancing text for export 5533@subsection Enhancing text for export
5000@cindex enhancing text 5534@cindex enhancing text
5001@cindex richer text 5535@cindex richer text
@@ -5019,7 +5553,9 @@ backend supports lists. See @xref{Plain lists}.
5019@cindex italic text 5553@cindex italic text
5020@item 5554@item
5021You can make words @b{*bold*}, @i{/italic/}, _underlined_, 5555You can make words @b{*bold*}, @i{/italic/}, _underlined_,
5022@code{=code=}, and @samp{+strikethrough+}. 5556@code{=code=}, and even @samp{+strikethrough+}@footnote{but remember
5557that strikethrough is typographically evil and should @i{never} be
5558used.}.
5023 5559
5024@cindex horizontal rules, in exported files 5560@cindex horizontal rules, in exported files
5025@item 5561@item
@@ -5057,7 +5593,7 @@ this position.
5057@end itemize 5593@end itemize
5058 5594
5059If these conversions conflict with your habits of typing ASCII text, 5595If these conversions conflict with your habits of typing ASCII text,
5060they can all be turned off with corresponding variables (see the 5596they can all be turned off with corresponding variables. See the
5061customization group @code{org-export-general}, and the following section 5597customization group @code{org-export-general}, and the following section
5062which explains how to set export options with special lines in a 5598which explains how to set export options with special lines in a
5063buffer. 5599buffer.
@@ -5088,7 +5624,7 @@ Insert template with export options, see example below.
5088#+LANGUAGE: language for HTML, e.g. @samp{en} (@code{org-export-default-language}) 5624#+LANGUAGE: language for HTML, e.g. @samp{en} (@code{org-export-default-language})
5089#+TEXT: Some descriptive text to be inserted at the beginning. 5625#+TEXT: Some descriptive text to be inserted at the beginning.
5090#+TEXT: Several lines may be given. 5626#+TEXT: Several lines may be given.
5091#+OPTIONS: H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t *:nil TeX:t LaTeX:t 5627#+OPTIONS: H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t *:nil TeX:t LaTeX:t skip:t
5092@end example 5628@end example
5093 5629
5094@noindent 5630@noindent
@@ -5113,10 +5649,13 @@ toc: @r{turn on/off table of contents, or set level limit (integer)}
5113@@: @r{turn on/off quoted HTML tags} 5649@@: @r{turn on/off quoted HTML tags}
5114:: @r{turn on/off fixed-width sections} 5650:: @r{turn on/off fixed-width sections}
5115|: @r{turn on/off tables} 5651|: @r{turn on/off tables}
5116^: @r{turn on/off @TeX{}-like syntax for sub- and superscripts.} 5652^: @r{turn on/off @TeX{}-like syntax for sub- and superscripts. If}
5653 @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
5654 @r{the simple @code{a_b} will be left as it is.}
5117*: @r{turn on/off emphasized text (bold, italic, underlined)} 5655*: @r{turn on/off emphasized text (bold, italic, underlined)}
5118TeX: @r{turn on/off simple @TeX{} macros in plain text} 5656TeX: @r{turn on/off simple @TeX{} macros in plain text}
5119LaTeX: @r{turn on/off La@TeX{} fragments} 5657LaTeX: @r{turn on/off La@TeX{} fragments}
5658skip: @r{turn on/off skipping the text before the first heading}
5120@end example 5659@end example
5121 5660
5122@node Publishing, Miscellaneous, Exporting, Top 5661@node Publishing, Miscellaneous, Exporting, Top
@@ -5444,13 +5983,13 @@ Once org-publish is properly configured, you can publish with the
5444following functions: 5983following functions:
5445 5984
5446@table @kbd 5985@table @kbd
5447@item C-c C-e c 5986@item C-c C-e C
5448Prompt for a specific project and publish all files that belong to it. 5987Prompt for a specific project and publish all files that belong to it.
5449@item C-c C-e p 5988@item C-c C-e P
5450Publish the project containing the current file. 5989Publish the project containing the current file.
5451@item C-c C-e f 5990@item C-c C-e F
5452Publish only the current file. 5991Publish only the current file.
5453@item C-c C-e a 5992@item C-c C-e A
5454Publish all projects. 5993Publish all projects.
5455@end table 5994@end table
5456 5995
@@ -5584,11 +6123,15 @@ Logging TODO state changes and clock intervals (variable
5584@cindex @code{lognotedone}, STARTUP keyword 6123@cindex @code{lognotedone}, STARTUP keyword
5585@cindex @code{lognoteclock-out}, STARTUP keyword 6124@cindex @code{lognoteclock-out}, STARTUP keyword
5586@cindex @code{lognotestate}, STARTUP keyword 6125@cindex @code{lognotestate}, STARTUP keyword
6126@cindex @code{logrepeat}, STARTUP keyword
6127@cindex @code{nologrepeat}, STARTUP keyword
5587@example 6128@example
5588logging @r{record a timestamp when an item is marked DONE} 6129logging @r{record a timestamp when an item is marked DONE}
5589nologging @r{don't record when items are marked DONE} 6130nologging @r{don't record when items are marked DONE}
5590lognotedone @r{record timestamp and a note when DONE} 6131lognotedone @r{record timestamp and a note when DONE}
5591lognotestate @r{record timestamp, note when TODO state changes} 6132lognotestate @r{record timestamp, note when TODO state changes}
6133logrepeat @r{record a not when re-instating a repeating item}
6134nologrepeat @r{do not record when re-instating repeating item}
5592lognoteclock-out @r{record timestamp and a note when clocking out} 6135lognoteclock-out @r{record timestamp and a note when clocking out}
5593@end example 6136@end example
5594Here are the options for hiding leading stars in outline headings. The 6137Here are the options for hiding leading stars in outline headings. The
@@ -5612,6 +6155,14 @@ To turn on custom format overlays over time stamps (variables
5612@example 6155@example
5613customtime @r{overlay custom time format} 6156customtime @r{overlay custom time format}
5614@end example 6157@end example
6158The following options influence the table spreadsheet (variable
6159@code{constants-unit-system}).
6160@cindex @code{constcgs}, STARTUP keyword
6161@cindex @code{constSI}, STARTUP keyword
6162@example
6163constcgs @r{@file{constants.el} should use the c-g-s unit system}
6164constSI @r{@file{constants.el} should use the SI unit system}
6165@end example
5615@item #+SEQ_TODO: #+TYP_TODO: 6166@item #+SEQ_TODO: #+TYP_TODO:
5616These lines set the TODO keywords and their interpretation in the 6167These lines set the TODO keywords and their interpretation in the
5617current file. The corresponding variables are @code{org-todo-keywords} 6168current file. The corresponding variables are @code{org-todo-keywords}
@@ -5633,6 +6184,10 @@ This line sets the archive location for the agenda file. It applies for
5633all subsequent lines until the next @samp{#+CATEGORY} line, or the end 6184all subsequent lines until the next @samp{#+CATEGORY} line, or the end
5634of the file. The first such line also applies to any entries before it. 6185of the file. The first such line also applies to any entries before it.
5635The corresponding variable is @code{org-archive-location}. 6186The corresponding variable is @code{org-archive-location}.
6187@item #+PRIORITIES: highest lowest default
6188This line sets the limits and the default for the priorities. All three
6189must be either letters A-Z or numbers 0-9. The highest priority must
6190have a lower ASCII number that the lowest priority.
5636@item #+TBLFM: 6191@item #+TBLFM:
5637This line contains the formulas for the table directly above the line. 6192This line contains the formulas for the table directly above the line.
5638@item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS: 6193@item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS:
@@ -5816,10 +6371,12 @@ rather use @kbd{C-c .} to re-insert the timestamp.
5816@item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab 6371@item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab
5817@item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{@key{Esc} @key{RET}} 6372@item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{@key{Esc} @key{RET}}
5818@item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab 6373@item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab
5819@item @kbd{S-@key{left}} @tab @kbd{C-c C-x @key{left}} @tab 6374@item @kbd{S-@key{left}} @tab @kbd{C-c @key{left}} @tab
5820@item @kbd{S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab 6375@item @kbd{S-@key{right}} @tab @kbd{C-c @key{right}} @tab
5821@item @kbd{S-@key{up}} @tab @kbd{C-c C-x @key{up}} @tab 6376@item @kbd{S-@key{up}} @tab @kbd{C-c @key{up}} @tab
5822@item @kbd{S-@key{down}} @tab @kbd{C-c C-x @key{down}} @tab 6377@item @kbd{S-@key{down}} @tab @kbd{C-c @key{down}} @tab
6378@item @kbd{C-S-@key{left}} @tab @kbd{C-c C-x @key{left}} @tab
6379@item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab
5823@end multitable 6380@end multitable
5824 6381
5825@node Interaction, Bugs, TTY keys, Miscellaneous 6382@node Interaction, Bugs, TTY keys, Miscellaneous
@@ -5887,7 +6444,7 @@ to execute Org-mode-related commands, leave the table.
5887@item C-c C-c 6444@item C-c C-c
5888Recognize @file{table.el} table. Works when the cursor is in a 6445Recognize @file{table.el} table. Works when the cursor is in a
5889table.el table. 6446table.el table.
5890 6447@c
5891@kindex C-c ~ 6448@kindex C-c ~
5892@item C-c ~ 6449@item C-c ~
5893Insert a table.el table. If there is already a table at point, this 6450Insert a table.el table. If there is already a table at point, this
@@ -5897,6 +6454,10 @@ format. See the documentation string of the command
5897possible. 6454possible.
5898@end table 6455@end table
5899@file{table.el} is part of Emacs 22. 6456@file{table.el} is part of Emacs 22.
6457@cindex @file{footnote.el}
6458@item @file{footnote.el} by Steven L. Baur
6459Org-mode recognizes numerical footnotes as provided by this package
6460(@pxref{Footnotes}).
5900@end table 6461@end table
5901 6462
5902@node Conflicts, , Cooperation, Interaction 6463@node Conflicts, , Cooperation, Interaction
@@ -5927,7 +6488,6 @@ during date selection).
5927@example 6488@example
5928S-UP -> M-p S-DOWN -> M-n 6489S-UP -> M-p S-DOWN -> M-n
5929S-LEFT -> M-- S-RIGHT -> M-+ 6490S-LEFT -> M-- S-RIGHT -> M-+
5930S-RET -> C-S-RET
5931@end example 6491@end example
5932 6492
5933Yes, these are unfortunately more difficult to remember. If you want 6493Yes, these are unfortunately more difficult to remember. If you want
@@ -5937,6 +6497,16 @@ to have other replacement keys, look at the variable
5937@cindex @file{windmove.el} 6497@cindex @file{windmove.el}
5938Also this package uses the @kbd{S-<cursor>} keys, so everything written 6498Also this package uses the @kbd{S-<cursor>} keys, so everything written
5939in the paragraph above about CUA mode also applies here. 6499in the paragraph above about CUA mode also applies here.
6500
6501@cindex @file{footnote.el}
6502@item @file{footnote.el} by Steven L. Baur
6503Org-mode supports the syntax of the footnote package, but only the
6504numerical footnote markers. Also, the default key for footnote
6505commands, @kbd{C-c !} is already used by org-mode. You could use the
6506variable @code{footnote-prefix} to switch footnotes commands to another
6507key. Or, you could use @code{org-replace-disputed-keys} and
6508@code{org-disputed-keys} to change the settings in Org-mode.
6509
5940@end table 6510@end table
5941 6511
5942 6512
@@ -6417,7 +6987,7 @@ MATCH is being ignored."
6417@end lisp 6987@end lisp
6418 6988
6419 6989
6420@node History and Acknowledgments, GNU Free Documentation License, Extensions and Hacking, Top 6990@node History and Acknowledgments, Index, Extensions and Hacking, Top
6421@appendix History and Acknowledgments 6991@appendix History and Acknowledgments
6422@cindex acknowledgments 6992@cindex acknowledgments
6423@cindex history 6993@cindex history
@@ -6478,6 +7048,9 @@ asked for a way to narrow wide table columns.
6478@i{Christian Egli} converted the documentation into TeXInfo format, 7048@i{Christian Egli} converted the documentation into TeXInfo format,
6479patched CSS formatting into the HTML exporter, and inspired the agenda. 7049patched CSS formatting into the HTML exporter, and inspired the agenda.
6480@item 7050@item
7051@i{David Emery} provided a patch for custom CSS support in exported
7052HTML agendas.
7053@item
6481@i{Nic Ferrier} contributed mailcap and XOXO support. 7054@i{Nic Ferrier} contributed mailcap and XOXO support.
6482@item 7055@item
6483@i{John Foerch} figured out how to make incremental search show context 7056@i{John Foerch} figured out how to make incremental search show context
@@ -6490,13 +7063,19 @@ translated David O'Toole's tutorial into French.
6490@item 7063@item
6491@i{Kai Grossjohann} pointed out key-binding conflicts with other packages. 7064@i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
6492@item 7065@item
6493@i{Shidai Liu} (``Leo'') provided extensive feedback and some patches. 7066@i{Shidai Liu} ("Leo") asked for embedded LaTeX and tested it. He also
7067provided frequent feedback and some patches.
6494@item 7068@item
6495@i{Leon Liu} asked for embedded LaTeX and tested it. 7069@i{Jason F. McBrayer} suggested agenda export to CSV format.
7070@item
7071@i{Dmitri Minaev} sent a patch to set priority limits on a per-file
7072basis.
6496@item 7073@item
6497@i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler 7074@i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
6498happy. 7075happy.
6499@item 7076@item
7077@i{Rick Moynihan} proposed to allow multiple TODO sequences in a file.
7078@item
6500@i{Todd Neal} provided patches for links to Info files and elisp forms. 7079@i{Todd Neal} provided patches for links to Info files and elisp forms.
6501@item 7080@item
6502@i{Tim O'Callaghan} suggested in-file links, search options for general 7081@i{Tim O'Callaghan} suggested in-file links, search options for general
@@ -6568,12 +7147,8 @@ work on a tty.
6568and contributed various ideas and code snippets. 7147and contributed various ideas and code snippets.
6569@end itemize 7148@end itemize
6570 7149
6571@node GNU Free Documentation License, Index, History and Acknowledgments, Top
6572@appendix GNU Free Documentation License
6573@include doclicense.texi
6574
6575 7150
6576@node Index, Key Index, GNU Free Documentation License, Top 7151@node Index, Key Index, History and Acknowledgments, Top
6577@unnumbered Index 7152@unnumbered Index
6578 7153
6579@printindex cp 7154@printindex cp
diff --git a/msdos/ChangeLog b/msdos/ChangeLog
index 24f83276b92..4c7c136c187 100644
--- a/msdos/ChangeLog
+++ b/msdos/ChangeLog
@@ -1,3 +1,7 @@
12007-06-02 Chong Yidong <cyd@stupidchicken.com>
2
3 * Version 22.1 released.
4
12007-02-10 Glenn Morris <rgm@gnu.org> 52007-02-10 Glenn Morris <rgm@gnu.org>
2 6
3 * COPYING.DJ: Remove file since it is no longer needed (see README 7 * COPYING.DJ: Remove file since it is no longer needed (see README
diff --git a/nt/ChangeLog b/nt/ChangeLog
index 03584981bf5..c2f784da78a 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,7 @@
12007-06-02 Chong Yidong <cyd@stupidchicken.com>
2
3 * Version 22.1 released.
4
12007-05-22 Eli Zaretskii <eliz@gnu.org> 52007-05-22 Eli Zaretskii <eliz@gnu.org>
2 6
3 * INSTALL: Add information about where to find GDB, and warn 7 * INSTALL: Add information about where to find GDB, and warn
diff --git a/oldXMenu/ChangeLog b/oldXMenu/ChangeLog
index 9a7f01ed901..95fe90f5e64 100644
--- a/oldXMenu/ChangeLog
+++ b/oldXMenu/ChangeLog
@@ -1,3 +1,12 @@
12007-06-04 Ulrich Mueller <ulm@gentoo.org> (tiny change)
2
3 * ChgPane.c, ChgSel.c: Quiet --with-x-toolkit=no
4 compilation warnings: #include <config.h>.
5
62007-06-02 Chong Yidong <cyd@stupidchicken.com>
7
8 * Version 22.1 released.
9
12007-05-30 Ulrich Mueller <ulm@gentoo.org> (tiny change) 102007-05-30 Ulrich Mueller <ulm@gentoo.org> (tiny change)
2 11
3 * XMakeAssoc.c (XMakeAssoc): Use malloc rather than xmalloc. 12 * XMakeAssoc.c (XMakeAssoc): Use malloc rather than xmalloc.
diff --git a/oldXMenu/ChgPane.c b/oldXMenu/ChgPane.c
index 35caf0917c9..06b2faa4451 100644
--- a/oldXMenu/ChgPane.c
+++ b/oldXMenu/ChgPane.c
@@ -13,6 +13,7 @@
13 * 13 *
14 */ 14 */
15 15
16#include <config.h>
16#include "XMenuInt.h" 17#include "XMenuInt.h"
17 18
18int 19int
diff --git a/oldXMenu/ChgSel.c b/oldXMenu/ChgSel.c
index 4d246f7bdbc..9a1230bd39b 100644
--- a/oldXMenu/ChgSel.c
+++ b/oldXMenu/ChgSel.c
@@ -13,6 +13,7 @@
13 * 13 *
14 */ 14 */
15 15
16#include <config.h>
16#include "XMenuInt.h" 17#include "XMenuInt.h"
17 18
18int 19int
diff --git a/src/ChangeLog b/src/ChangeLog
index 1ffb57b761a..a2e1e5b8484 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,224 @@
12007-06-10 Jason Rumney <jasonr@gnu.org>
2
3 * w32fns.c (Fx_file_dialog): Take size from struct not pointer.
4
52007-06-08 Juanma Barranquero <lekktu@gmail.com>
6
7 * callint.c (Fcall_interactively):
8 * editfns.c (Fdelete_and_extract_region):
9 * fileio.c (Fread_file_name):
10 * fns.c (Fmapconcat):
11 * keyboard.c (cmd_error_internal):
12 * keymap.c (Fkey_description):
13 * lread.c (openp):
14 * minibuf.c (read_minibuf):
15 * search.c (wordify):
16 * sunfns.c (sel_read):
17 * xdisp.c (Fformat_mode_line, syms_of_xdisp):
18 * xfns.c (x_default_scroll_bar_color_parameter):
19 * xmenu.c (menu_help_callback):
20 * xselect.c (Fx_get_atom_name):
21 * xterm.c (x_term_init): Use empty_unibyte_string.
22
232007-06-08 Dmitry Antipov <dmitry.antipov@mail.ru> (tiny change)
24
25 * alloc.c (init_strings): Initialize canonical empty strings.
26 (make_uninit_string, make_uninit_multibyte_string): Return appropriate
27 canonical empty string when the requested size is 0.
28
29 * emacs.c (empty_unibyte_string): Rename from empty_string.
30 (empty_multibyte_string): New canonical empty string.
31 (syms_of_emacs): Don't initialize empty_string.
32
33 * lisp.h (STRING_SET_UNIBYTE): Return the canonical empty unibyte
34 string, if appropriate.
35 (empty_unibyte_string, empty_multibyte_string): New externs.
36 (empty_string): Remove extern.
37
38 * lread.c (syms_of_lread): Use empty_unibyte_string.
39
402007-06-07 Jason Rumney <jasonr@gnu.org>
41
42 * s/ms-w32.h: Don't define HAVE_TZNAME.
43
44 * editfns.c (Fcurrent_time_zone): Remove hack for Japanese Windows.
45
462007-06-07 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
47
48 * mac.c (xrm_get_preference_database): Remove BLOCK_INPUT.
49
50 * macfns.c (mac_get_window_bounds): Move extern to macterm.h.
51 (compute_tip_xy) [TARGET_API_MAC_CARBON]: Use GetGlobalMouse.
52
53 * macmenu.c [TARGET_API_MAC_CARBON] (menu_target_item_handler):
54 Don't call next handler.
55 [TARGET_API_MAC_CARBON] (install_menu_target_item_handler):
56 Remove argument. Install handler to application.
57 (set_frame_menubar): Don't change deep_p.
58 (mac_menu_show): Use FRAME_OUTER_TO_INNER_DIFF_X and
59 FRAME_OUTER_TO_INNER_DIFF_Y.
60 (DIALOG_BUTTON_COMMAND_ID_OFFSET, DIALOG_BUTTON_COMMAND_ID_P)
61 (DIALOG_BUTTON_COMMAND_ID_VALUE, DIALOG_BUTTON_MAKE_COMMAND_ID)
62 [HAVE_DIALOGS]: New macros.
63 [HAVE_DIALOGS] (mac_handle_dialog_event, create_and_show_dialog):
64 Use them.
65 (fill_menubar) [TARGET_API_MAC_CARBON]: Use CFString.
66
67 * macselect.c [MAC_OSX] (install_service_handler): Rename from
68 init_service_handler. All callers changed. Return OSStatus value.
69
70 * macterm.c (mac_begin_cg_clip): New arg F. Call SetPortWindowPort.
71 All callers changed so as not to call SetPortWindowPort.
72 (mac_begin_cg_clip) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw.
73 (mac_draw_image_string_atsui) [USE_ATSUI]: New function created from
74 mac_draw_string_common.
75 (mac_draw_image_string_qd): Likewise.
76 (mac_draw_string_common): Use them. Add INLINE.
77 (XTmouse_position, x_scroll_bar_report_motion) [TARGET_API_MAC_CARBON]:
78 Use FRAME_OUTER_TO_INNER_DIFF_X, FRAME_OUTER_TO_INNER_DIFF_Y, and
79 GetGlobalMouse.
80 (x_set_mouse_pixel_position) [MAC_OSX]: Use FRAME_OUTER_TO_INNER_DIFF_X
81 and FRAME_OUTER_TO_INNER_DIFF_Y.
82 [TARGET_API_MAC_CARBON] (mac_handle_mouse_event): Likewise.
83 [USE_MAC_TSM] (mac_handle_text_input_event): Likewise.
84 (x_make_frame_visible) [TARGET_API_MAC_CARBON]: Move code for
85 repositioning window to mac_handle_window_event.
86 (x_make_frame_invisible) [TARGET_API_MAC_CARBON]: Move code for
87 saving window location to mac_handle_window_event
88 [USE_MAC_FONT_PANEL] (mac_show_hide_font_panel): Install handler here.
89 (install_menu_target_item_handler): Remove argument in extern.
90 [TARGET_API_MAC_CARBON] (mac_event_to_emacs_modifiers):
91 Also accept command events.
92 (do_keystroke): New function created from XTread_socket.
93 (init_command_handler): Remove functions.
94 [TARGET_API_MAC_CARBON] (mac_handle_window_event): Reposition window
95 and save window location by kEventWindowShowing and kEventWindowHiding
96 handlers here. Don't call next handler for window state change and
97 focus events.
98 (mac_handle_application_event, mac_handle_keyboard_event)
99 [TARGET_API_MAC_CARBON]: New functions.
100 (install_window_handler) [TARGET_API_MAC_CARBON]: Register handlers for
101 kEventWindowShowing and kEventWindowHiding events. Move installation
102 of mouse, font, text input and menu target item handlers to
103 install_application_handler.
104 (install_application_handler) [TARGET_API_MAC_CARBON]: New function.
105 (mac_handle_cg_display_reconfig) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
106 New function.
107 (init_dm_notification_handler) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
108 Register it.
109 (XTread_socket) [TARGET_API_MAC_CARBON]: Consolidate
110 SendEventToEventTarget calls. Use FRAME_OUTER_TO_INNER_DIFF_X and
111 FRAME_OUTER_TO_INNER_DIFF_Y. Move application activation handler
112 to mac_handle_application_event. Move keyboard handler to
113 mac_handle_keyboard_event.
114 (XTread_socket) [!TARGET_API_MAC_CARBON]: Use do_keystroke.
115 (mac_initialize) [TARGET_API_MAC_CARBON]: Don't call
116 init_command_handler. Call install_application_handler.
117
118 * macterm.h (mac_get_window_bounds): Move extern from macfns.c.
119 (FRAME_OUTER_TO_INNER_DIFF_X, FRAME_OUTER_TO_INNER_DIFF_Y): New macros.
120
1212007-06-07 Glenn Morris <rgm@gnu.org>
122
123 * emacs.c (main): Use `emacs-copyright' in --version output.
124
1252007-06-06 Chong Yidong <cyd@stupidchicken.com>
126
127 * image.c (xpm_load): Remove spurious call to
128 xpm_init_color_cache.
129
1302007-06-06 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
131
132 * macfns.c (mac_window): Replace WindowPtr with WindowRef.
133
134 * macgui.h: Replace WindowPtr with WindowRef.
135
136 * macmenu.c: Replace MenuHandle and GetMenuHandle with MenuRef and
137 GetMenuRef, respectively. Replace WindowPtr with WindowRef.
138 Replace ControlHandle with ControlRef.
139 (install_menu_quit_handler): Rename arg MENU_HANDLE to ROOT_MENU.
140
141 * macterm.c: Replace MenuHandle and GetMenuHandle with MenuRef and
142 GetMenuRef, respectively. Replace WindowPtr with WindowRef.
143 Replace ControlHandle with ControlRef.
144 (USE_CARBON_EVENTS): Remove. Use TARGET_API_MAC_CARBON instead.
145 [MAC_OS8] (do_get_menus): Rename variable `menu_handle' to `menu'.
146
147 * macterm.h (struct scroll_bar): Rename member control_handle_low
148 and control_handle_high to control_ref_low and control_ref_high.
149 All uses changed.
150 (SCROLL_BAR_CONTROL_REF, SET_SCROLL_BAR_CONTROL_REF): Rename from
151 SCROLL_BAR_CONTROL_HANDLE and SET_SCROLL_BAR_CONTROL_HANDLE,
152 respectively. All uses changed.
153 (XCreatePixmap, XCreatePixmapFromBitmapData, XSetWindowBackground)
154 (install_window_handler, remove_window_handler): Replace WindowPtr
155 with WindowRef in externs.
156
1572007-06-05 Juanma Barranquero <lekktu@gmail.com>
158
159 * xfaces.c (Finternal_lisp_face_p): Signal error for face alias loops.
160
1612007-06-03 Nick Roberts <nickrob@snap.net.nz>
162
163 * keyboard.c (discard_mouse_events): Add GPM_CLICK_EVENT case.
164
165 * frame.c (Fmouse_position, Fmouse_pixel_position):
166 Condition on HAVE_GPM too.
167
168 * term.c (term_mouse_highlight): Remove unused variables.
169 (Fterm_open_connection): Set gpm_zerobased to 1.
170 (term_mouse_movement, term_mouse_click, handle_one_term_event):
171 Use zero based co-ordinates.
172 (handle_one_term_event): Report a drag as mouse movement too.
173
174 * Makefile.in (MOUSE_SUPPORT): Define for HAVE_GPM.
175
1762007-06-03 Chong Yidong <cyd@stupidchicken.com>
177
178 * image.c (search_image_cache): New function. Require background
179 color match if background color is unspecified in the image spec.
180 (uncache_image, lookup_image): Use it.
181
1822007-06-01 Juanma Barranquero <lekktu@gmail.com>
183
184 * window.c (Fshrink_window): Reflow docstring.
185
1862007-06-02 Chong Yidong <cyd@stupidchicken.com>
187
188 * Version 22.1 released.
189
1902007-06-01 Richard Stallman <rms@gnu.org>
191
192 * xfns.c (x_encode_text): Add GCPRO.
193
1942007-06-01 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
195
196 * xfns.c (x_set_name_internal): Save encoded name before
197 x_encode_text in case string data is relocated.
198
1992007-05-31 Richard Stallman <rms@gnu.org>
200
201 * buffer.c (syms_of_buffer): Doc fix.
202
2032007-05-30 Nick Roberts <nickrob@snap.net.nz>
204
205 * sysdep.c (init_sys_modes): Add rather than replace with
206 O_NONBLOCK.
207
208 * frame.c [HAVE_GPM] (Fset_mouse_pixel_position): Add call to
209 term_mouse_moveto.
210
211 * termhooks.h (term_mouse_moveto): New extern.
212
213 * term.c (mouse_face_window): Rename...
214 (Qmouse_face_window): ...to this.
215 (term_show_mouse_face, term_clear_mouse_face)
216 (term_mouse_highlight): Use Qmouse_face_window.
217 (term_mouse_moveto): New function.
218 (term_mouse_position): Make it work.
219 (syms_of_term): Uncomment assignment to mouse_position_hook.
220 Staticpro Qmouse_face_window.
221
12007-05-28 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 2222007-05-28 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2 223
3 * xdisp.c (redisplay_internal): Bind inhibit-point-motion-hooks to t 224 * xdisp.c (redisplay_internal): Bind inhibit-point-motion-hooks to t
@@ -6,14 +227,14 @@
62007-05-26 Dan Nicolaescu <dann@ics.uci.edu> 2272007-05-26 Dan Nicolaescu <dann@ics.uci.edu>
7 228
8 * xfaces.c (syms_of_xfaces): Delete stray semicolon. 229 * xfaces.c (syms_of_xfaces): Delete stray semicolon.
9 * xdisp.c (next_element_from_buffer): 230 * xdisp.c (next_element_from_buffer):
10 * window.c (delete_window): 231 * window.c (delete_window):
11 * term.c (term_mouse_highlight): 232 * term.c (term_mouse_highlight):
12 * msdos.c (getdefdir): 233 * msdos.c (getdefdir):
13 * macterm.c (mac_create_bitmap_from_bitmap_data) 234 * macterm.c (mac_create_bitmap_from_bitmap_data)
14 (init_font_name_table): 235 (init_font_name_table):
15 * fns.c (Fsxhash): 236 * fns.c (Fsxhash):
16 * data.c (Fmake_local_variable): 237 * data.c (Fmake_local_variable):
17 * ccl.c (ccl_driver): Likewise. 238 * ccl.c (ccl_driver): Likewise.
18 239
192007-05-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 2402007-05-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
@@ -25,7 +246,7 @@
25 246
26 * image.c (uncache_image): Fix typo. 247 * image.c (uncache_image): Fix typo.
27 248
282007-05-23 Johannes Weiner <hannes@saeurebad.de> (tiny change) 2492007-05-23 Johannes Weiner <hannes@saeurebad.de> (tiny change)
29 250
30 * keyboard.c (make_lispy_movement): Condition on HAVE_GPM too. 251 * keyboard.c (make_lispy_movement): Condition on HAVE_GPM too.
31 252
@@ -78,7 +299,7 @@
78 299
79 * termhooks.h [HAVE_GPM_H] (enum event_kind): Add GPM_CLICK_EVENT. 300 * termhooks.h [HAVE_GPM_H] (enum event_kind): Add GPM_CLICK_EVENT.
80 Include gpm.h. 301 Include gpm.h.
81 (handle_one_term_event, term_gpm) New externs. 302 (handle_one_term_event, term_gpm): New externs.
82 303
83 * sysdep.c [HAVE_GPM_H] (init_sys_modes): Make gpm_fd nonblocking 304 * sysdep.c [HAVE_GPM_H] (init_sys_modes): Make gpm_fd nonblocking
84 and allow it to be interrupted by SIGIO. 305 and allow it to be interrupted by SIGIO.
@@ -144,11 +365,12 @@
144 365
1452007-05-07 Stefan Monnier <monnier@iro.umontreal.ca> 3662007-05-07 Stefan Monnier <monnier@iro.umontreal.ca>
146 367
147 * editfns.c (Ftranspose_regions): Yet another int/Lisp_Object mixup (YAILOM) 368 * editfns.c (Ftranspose_regions): Yet another int/Lisp_Object
369 mixup (YAILOM).
148 370
1492007-05-07 Andreas Schwab <schwab@suse.de> 3712007-05-07 Andreas Schwab <schwab@suse.de>
150 372
151 * keymap.c (Flookup_key): Fix typo in last change. 373 * keymap.c (Flookup_key): Fix typo in last change.
152 374
1532007-05-07 Stefan Monnier <monnier@iro.umontreal.ca> 3752007-05-07 Stefan Monnier <monnier@iro.umontreal.ca>
154 376
@@ -2599,7 +2821,7 @@
2599 for writing files. Call gtk_file_chooser_set_current_name to keep 2821 for writing files. Call gtk_file_chooser_set_current_name to keep
2600 default filename. 2822 default filename.
2601 2823
2602 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls 2824 * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls.
2603 2825
26042006-09-02 Jindrich Makovicka <makovick@gmail.com> (tiny change) 28262006-09-02 Jindrich Makovicka <makovick@gmail.com> (tiny change)
2605 2827
@@ -2856,7 +3078,7 @@
2856 * xterm.h (struct x_display_info): Add x_dnd_atoms* to keep track 3078 * xterm.h (struct x_display_info): Add x_dnd_atoms* to keep track
2857 of drag and drop Atoms. 3079 of drag and drop Atoms.
2858 3080
2859 * xterm.c (x_term_init): Initialize dpyinfo->x_dnd_atoms* 3081 * xterm.c (x_term_init): Initialize dpyinfo->x_dnd_atoms*.
2860 3082
28612006-08-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 30832006-08-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
2862 3084
@@ -4022,7 +4244,7 @@
4022 4244
40232006-05-23 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 42452006-05-23 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
4024 4246
4025 * xterm.c: Remove declarations already in xterm.h 4247 * xterm.c: Remove declarations already in xterm.h.
4026 4248
4027 * xterm.h: Add extern declarations for x_clear_errors, 4249 * xterm.h: Add extern declarations for x_clear_errors,
4028 x_fully_uncatch_errors, x_catching_errors and 4250 x_fully_uncatch_errors, x_catching_errors and
@@ -4763,7 +4985,8 @@
4763 4985
4764 * puresize.h (pure_write_error): Mark as NO_RETURN. 4986 * puresize.h (pure_write_error): Mark as NO_RETURN.
4765 4987
4766 * lisp.h (args_out_of_range, args_out_of_range_3) 4988 * lisp.h (args_out_of_range, args_out_of_range_3, Fkill_emacs):
4989 Likewise.
4767 4990
47682006-04-08 Eli Zaretskii <eliz@gnu.org> 49912006-04-08 Eli Zaretskii <eliz@gnu.org>
4769 4992
@@ -6380,7 +6603,7 @@
6380 6603
6381 * macterm.c (Qmac_ready_for_drag_n_drop, Qapplication, Qabout) 6604 * macterm.c (Qmac_ready_for_drag_n_drop, Qapplication, Qabout)
6382 (Qpreferences): Remove variables. 6605 (Qpreferences): Remove variables.
6383 (syms_of_macterm) : Don't initialize them. 6606 (syms_of_macterm): Don't initialize them.
6384 (Qhicommand) [USE_CARBON_EVENTS]: New variable. 6607 (Qhicommand) [USE_CARBON_EVENTS]: New variable.
6385 (syms_of_macterm) [USE_CARBON_EVENTS]: Initialize it. 6608 (syms_of_macterm) [USE_CARBON_EVENTS]: Initialize it.
6386 (init_required_apple_events, do_ae_open_application) 6609 (init_required_apple_events, do_ae_open_application)
@@ -7062,7 +7285,7 @@
7062 7285
7063 * mac.c [TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): 7286 * mac.c [TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp):
7064 Allow nil as argument. 7287 Allow nil as argument.
7065 [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Regard nil 7288 [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Regard nil
7066 for encoding arguments as UTF-16 in native byte order, no BOM. 7289 for encoding arguments as UTF-16 in native byte order, no BOM.
7067 7290
7068 * macfns.c (Fx_create_frame): Add debugging code. 7291 * macfns.c (Fx_create_frame): Add debugging code.
@@ -9998,7 +10221,7 @@
9998 (cfobject_desc_to_lisp, cfproperty_list_to_lisp): Likewise. 10221 (cfobject_desc_to_lisp, cfproperty_list_to_lisp): Likewise.
9999 10222
10000 * process.c (init_process): Change `#ifdef DARWIN' to `#if 10223 * process.c (init_process): Change `#ifdef DARWIN' to `#if
10001 defined (DARWIN) || defined (MAC_OSX)' 10224 defined (DARWIN) || defined (MAC_OSX)'.
10002 10225
10003 * s/darwin.h (DARWIN): Don't define. 10226 * s/darwin.h (DARWIN): Don't define.
10004 10227
@@ -10535,7 +10758,7 @@
105352005-02-03 Kim F. Storm <storm@cua.dk> 107582005-02-03 Kim F. Storm <storm@cua.dk>
10536 10759
10537 * dispnew.c (build_frame_matrix_from_leaf_window) 10760 * dispnew.c (build_frame_matrix_from_leaf_window)
10538 [!GLYPH_DEBUG]: Fix xassert. 10761 [!GLYPH_DEBUG]: Fix xassert.
10539 10762
10540 * xfaces.c (x_free_gc) [!GLYPH_DEBUG]: Fix xassert. 10763 * xfaces.c (x_free_gc) [!GLYPH_DEBUG]: Fix xassert.
10541 10764
@@ -11425,7 +11648,7 @@
11425 11648
114262004-12-20 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 116492004-12-20 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
11427 11650
11428 * macterm.c (mac_do_list_fonts): Fix memory leak 11651 * macterm.c (mac_do_list_fonts): Fix memory leak.
11429 11652
114302004-12-20 Richard M. Stallman <rms@gnu.org> 116532004-12-20 Richard M. Stallman <rms@gnu.org>
11431 11654
@@ -12205,7 +12428,7 @@
12205 * Makefile.in (SOME_MACHINE_OBJECTS): Add fringe.o, image.o 12428 * Makefile.in (SOME_MACHINE_OBJECTS): Add fringe.o, image.o
12206 and w32*.o. 12429 and w32*.o.
12207 (temacs${EXEEXT}): Generate buildobj.lst when temacs is linked. 12430 (temacs${EXEEXT}): Generate buildobj.lst when temacs is linked.
12208 (mostlyclean): Rm buildobj.lst 12431 (mostlyclean): Rm buildobj.lst.
12209 12432
12210 * makefile.w32-in ($(TEMACS)): Generate buildobj.lst when temacs 12433 * makefile.w32-in ($(TEMACS)): Generate buildobj.lst when temacs
12211 is linked. 12434 is linked.
@@ -12543,7 +12766,7 @@
12543 (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Increment it when malloc is used. 12766 (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Increment it when malloc is used.
12544 (SAFE_FREE): Test it to determine if we need to unwind to free. 12767 (SAFE_FREE): Test it to determine if we need to unwind to free.
12545 Remove size arg. All users changed. 12768 Remove size arg. All users changed.
12546 (SAFE_FREE_LISP) Remove. All users changed to use SAFE_FREE. 12769 (SAFE_FREE_LISP): Remove. All users changed to use SAFE_FREE.
12547 12770
125482004-10-26 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 127712004-10-26 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
12549 12772
@@ -13205,7 +13428,7 @@
13205 (single_submenu): Use ENCODE_MENU_STRING 13428 (single_submenu): Use ENCODE_MENU_STRING
13206 (mac_menu_show): Use ENCODE_MENU_STRING. Reset grabbed because 13429 (mac_menu_show): Use ENCODE_MENU_STRING. Reset grabbed because
13207 button release isn't passed to event loop 13430 button release isn't passed to event loop
13208 (add_menu_item): Use SetMenuItemWithCFString 13431 (add_menu_item): Use SetMenuItemWithCFString.
13209 13432
132102004-08-26 Steven Tamm <steventamm@mac.com> 134332004-08-26 Steven Tamm <steventamm@mac.com>
13211 13434
@@ -13474,7 +13697,7 @@
13474 blocking on event queue only by calling ReceiveNextEvent 13697 blocking on event queue only by calling ReceiveNextEvent
13475 instead of select (since GUI events aren't on an fd). 13698 instead of select (since GUI events aren't on an fd).
13476 (sys_read): Remove function 13699 (sys_read): Remove function
13477 * sysdep.c: Remove redefine of read to sys_read if HAVE_CARBON 13700 * sysdep.c: Remove redefine of read to sys_read if HAVE_CARBON.
13478 13701
134792004-07-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 137022004-07-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
13480 13703
@@ -13484,12 +13707,12 @@
13484 * macterm.c (x_make_frame_visible): Comment in polling on 13707 * macterm.c (x_make_frame_visible): Comment in polling on
13485 frame creation. 13708 frame creation.
13486 13709
13487 * keyboard.c: Undef SIGIO on Carbon 13710 * keyboard.c: Undef SIGIO on Carbon.
13488 13711
13489 * atimer.c (alarm_signal_handler): Call alarm handlers after 13712 * atimer.c (alarm_signal_handler): Call alarm handlers after
13490 scheduling. 13713 scheduling.
13491 13714
13492 * eval.c (Feval): Remove quit_char test 13715 * eval.c (Feval): Remove quit_char test.
13493 13716
13494 * process.c (wait_reading_process_input): Remove clearing 13717 * process.c (wait_reading_process_input): Remove clearing
13495 stdin for select call on process input. 13718 stdin for select call on process input.
@@ -14441,7 +14664,7 @@
144412004-05-11 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 146642004-05-11 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
14442 14665
14443 * macterm.c (x_flush, XTframe_up_to_date): Use FRAME_MAC_P 14666 * macterm.c (x_flush, XTframe_up_to_date): Use FRAME_MAC_P
14444 instead of FRAME_X_P 14667 instead of FRAME_X_P.
14445 14668
144462004-05-11 Kim F. Storm <storm@cua.dk> 146692004-05-11 Kim F. Storm <storm@cua.dk>
14447 14670
@@ -14611,7 +14834,7 @@
14611 14834
146122004-05-01 Jason Rumney <jasonr@gnu.org> 148352004-05-01 Jason Rumney <jasonr@gnu.org>
14613 14836
14614 * w32term.c (x_draw_hollow_cursor): Sync with xterm.c 14837 * w32term.c (x_draw_hollow_cursor): Sync with xterm.c.
14615 14838
146162004-04-30 Kim F. Storm <storm@cua.dk> 148392004-04-30 Kim F. Storm <storm@cua.dk>
14617 14840
@@ -17404,7 +17627,7 @@
17404 17627
17405 * makefile.w32-in (alloca.o): Remove. 17628 * makefile.w32-in (alloca.o): Remove.
17406 (coding.o): Depend on intervals.h 17629 (coding.o): Depend on intervals.h
17407 (emacs.o, bytecode.o): Depend on window.h 17630 (emacs.o, bytecode.o): Depend on window.h.
17408 17631
174092003-09-01 Dave Love <fx@gnu.org> 176322003-09-01 Dave Love <fx@gnu.org>
17410 17633
@@ -18185,7 +18408,7 @@
18185 * gtkutil.c: Include keyboard.h, charset.h, coding.h. 18408 * gtkutil.c: Include keyboard.h, charset.h, coding.h.
18186 (xg_create_frame_widgets): Use ENCODE_UTF_8. 18409 (xg_create_frame_widgets): Use ENCODE_UTF_8.
18187 18410
18188 * xterm.c (Qutf_8): Move to coding.c 18411 * xterm.c (Qutf_8): Move to coding.c.
18189 18412
18190 * xmenu.c (ENCODE_MENU_STRING): New. 18413 * xmenu.c (ENCODE_MENU_STRING): New.
18191 (list_of_panes, list_of_items, digest_single_submenu, xmenu_show): 18414 (list_of_panes, list_of_items, digest_single_submenu, xmenu_show):
@@ -20914,7 +21137,7 @@
20914 (redisplay_internal): Add check for USE_GTK and popup_activated. 21137 (redisplay_internal): Add check for USE_GTK and popup_activated.
20915 (redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_MENU_BAR. 21138 (redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_MENU_BAR.
20916 (redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_TOOL_BAR. 21139 (redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_TOOL_BAR.
20917 (display_menu_bar): Add check for USE_GTK 21140 (display_menu_bar): Add check for USE_GTK.
20918 21141
20919 * lisp.h (Vx_resource_name): Declare extern. 21142 * lisp.h (Vx_resource_name): Declare extern.
20920 21143
@@ -22032,7 +22255,7 @@
22032 22255
22033 * buffer.c (assoc_ignore_text_properties, Fother_buffer, Fkill_buffer) 22256 * buffer.c (assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
22034 (call_overlay_mod_hooks): Use CONSP and XCAR/XCDR. 22257 (call_overlay_mod_hooks): Use CONSP and XCAR/XCDR.
22035 (Fget_buffer_create, advance_to_char_boundary): Use BEG and BEG_BYTE; 22258 (Fget_buffer_create, advance_to_char_boundary): Use BEG and BEG_BYTE.
22036 22259
220372002-10-21 Stefan Monnier <monnier@cs.yale.edu> 222602002-10-21 Stefan Monnier <monnier@cs.yale.edu>
22038 22261
@@ -23731,8 +23954,8 @@
23731 * fns.c (Fstring_make_unibyte): Doc fix. 23954 * fns.c (Fstring_make_unibyte): Doc fix.
23732 23955
23733 * xselect.c (lisp_data_to_selection_data): If the requested type 23956 * xselect.c (lisp_data_to_selection_data): If the requested type
23734 is STRING, call string_make_unibyte to encode the selected text 23957 is STRING, call string_make_unibyte to encode the selected text
23735 as a string. 23958 as a string.
23736 23959
23737 * window.c (Fset_window_hscroll): Doc fix. 23960 * window.c (Fset_window_hscroll): Doc fix.
23738 23961
diff --git a/src/Makefile.in b/src/Makefile.in
index c8db387328d..93496ca1199 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -673,8 +673,12 @@ otherobj= $(termcapobj) lastfile.o $(mallocobj) $(allocaobj) $(widgetobj) $(LIBO
673#define MOUSE_SUPPORT ${lispsource}mouse.elc \ 673#define MOUSE_SUPPORT ${lispsource}mouse.elc \
674 ${lispsource}select.elc ${lispsource}scroll-bar.elc 674 ${lispsource}select.elc ${lispsource}scroll-bar.elc
675#else 675#else
676#ifdef HAVE_GPM
677#define MOUSE_SUPPORT ${lispsource}mouse.elc
678#else
676#define MOUSE_SUPPORT 679#define MOUSE_SUPPORT
677#endif 680#endif
681#endif
678 682
679#ifdef VMS 683#ifdef VMS
680#define VMS_SUPPORT ${lispsource}vmsproc.elc ${lispsource}vms-patch.elc 684#define VMS_SUPPORT ${lispsource}vmsproc.elc ${lispsource}vms-patch.elc
diff --git a/src/alloc.c b/src/alloc.c
index 574196059f8..cc6d1d55870 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -1759,6 +1759,8 @@ init_strings ()
1759 string_blocks = NULL; 1759 string_blocks = NULL;
1760 n_string_blocks = 0; 1760 n_string_blocks = 0;
1761 string_free_list = NULL; 1761 string_free_list = NULL;
1762 empty_unibyte_string = make_pure_string ("", 0, 0, 0);
1763 empty_multibyte_string = make_pure_string ("", 0, 0, 1);
1762} 1764}
1763 1765
1764 1766
@@ -2482,6 +2484,9 @@ make_uninit_string (length)
2482 int length; 2484 int length;
2483{ 2485{
2484 Lisp_Object val; 2486 Lisp_Object val;
2487
2488 if (!length)
2489 return empty_unibyte_string;
2485 val = make_uninit_multibyte_string (length, length); 2490 val = make_uninit_multibyte_string (length, length);
2486 STRING_SET_UNIBYTE (val); 2491 STRING_SET_UNIBYTE (val);
2487 return val; 2492 return val;
@@ -2500,6 +2505,8 @@ make_uninit_multibyte_string (nchars, nbytes)
2500 2505
2501 if (nchars < 0) 2506 if (nchars < 0)
2502 abort (); 2507 abort ();
2508 if (!nbytes)
2509 return empty_multibyte_string;
2503 2510
2504 s = allocate_string (); 2511 s = allocate_string ();
2505 allocate_string_data (s, nchars, nbytes); 2512 allocate_string_data (s, nchars, nbytes);
diff --git a/src/buffer.c b/src/buffer.c
index 15cb9f29356..dee7b04190a 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -6016,7 +6016,7 @@ same format as a regular save would use. */);
6016The default is t, which means that text is invisible 6016The default is t, which means that text is invisible
6017if it has a non-nil `invisible' property. 6017if it has a non-nil `invisible' property.
6018If the value is a list, a text character is invisible if its `invisible' 6018If the value is a list, a text character is invisible if its `invisible'
6019property is an element in that list. 6019property is an element in that list (or is a list with members in common).
6020If an element is a cons cell of the form (PROP . ELLIPSIS), 6020If an element is a cons cell of the form (PROP . ELLIPSIS),
6021then characters with property value PROP are invisible, 6021then characters with property value PROP are invisible,
6022and they have an ellipsis as well if ELLIPSIS is non-nil. */); 6022and they have an ellipsis as well if ELLIPSIS is non-nil. */);
diff --git a/src/callint.c b/src/callint.c
index 84626031b3c..85ee6722710 100644
--- a/src/callint.c
+++ b/src/callint.c
@@ -585,7 +585,7 @@ invoke it. If KEYS is omitted or nil, the return value of
585 case 'G': /* Possibly nonexistent file name, 585 case 'G': /* Possibly nonexistent file name,
586 default to directory alone. */ 586 default to directory alone. */
587 args[i] = Fread_file_name (callint_message, 587 args[i] = Fread_file_name (callint_message,
588 Qnil, Qnil, Qnil, build_string (""), Qnil); 588 Qnil, Qnil, Qnil, empty_unibyte_string, Qnil);
589 break; 589 break;
590 590
591 case 'i': /* Ignore an argument -- Does not do I/O */ 591 case 'i': /* Ignore an argument -- Does not do I/O */
diff --git a/src/editfns.c b/src/editfns.c
index 37498e3b6f7..aca3383943d 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -1974,6 +1974,7 @@ the data it can't find. */)
1974 int offset = tm_diff (t, &gmt); 1974 int offset = tm_diff (t, &gmt);
1975 char *s = 0; 1975 char *s = 0;
1976 char buf[6]; 1976 char buf[6];
1977
1977#ifdef HAVE_TM_ZONE 1978#ifdef HAVE_TM_ZONE
1978 if (t->tm_zone) 1979 if (t->tm_zone)
1979 s = (char *)t->tm_zone; 1980 s = (char *)t->tm_zone;
@@ -1984,19 +1985,6 @@ the data it can't find. */)
1984#endif 1985#endif
1985#endif /* not HAVE_TM_ZONE */ 1986#endif /* not HAVE_TM_ZONE */
1986 1987
1987#if defined HAVE_TM_ZONE || defined HAVE_TZNAME
1988 if (s)
1989 {
1990 /* On Japanese w32, we can get a Japanese string as time
1991 zone name. Don't accept that. */
1992 char *p;
1993 for (p = s; *p && (isalnum ((unsigned char)*p) || *p == ' '); ++p)
1994 ;
1995 if (p == s || *p)
1996 s = NULL;
1997 }
1998#endif
1999
2000 if (!s) 1988 if (!s)
2001 { 1989 {
2002 /* No local time zone name is available; use "+-NNNN" instead. */ 1990 /* No local time zone name is available; use "+-NNNN" instead. */
@@ -2004,6 +1992,7 @@ the data it can't find. */)
2004 sprintf (buf, "%c%02d%02d", (offset < 0 ? '-' : '+'), am/60, am%60); 1992 sprintf (buf, "%c%02d%02d", (offset < 0 ? '-' : '+'), am/60, am%60);
2005 s = buf; 1993 s = buf;
2006 } 1994 }
1995
2007 return Fcons (make_number (offset), Fcons (build_string (s), Qnil)); 1996 return Fcons (make_number (offset), Fcons (build_string (s), Qnil));
2008 } 1997 }
2009 else 1998 else
@@ -3042,7 +3031,7 @@ DEFUN ("delete-and-extract-region", Fdelete_and_extract_region,
3042{ 3031{
3043 validate_region (&start, &end); 3032 validate_region (&start, &end);
3044 if (XINT (start) == XINT (end)) 3033 if (XINT (start) == XINT (end))
3045 return build_string (""); 3034 return empty_unibyte_string;
3046 return del_range_1 (XINT (start), XINT (end), 1, 1); 3035 return del_range_1 (XINT (start), XINT (end), 1, 1);
3047} 3036}
3048 3037
diff --git a/src/emacs.c b/src/emacs.c
index ac62fc420b9..079f13b2d4f 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -134,8 +134,8 @@ Lisp_Object Vinstallation_directory;
134/* Hook run by `kill-emacs' before it does really anything. */ 134/* Hook run by `kill-emacs' before it does really anything. */
135Lisp_Object Vkill_emacs_hook; 135Lisp_Object Vkill_emacs_hook;
136 136
137/* An empty lisp string. To avoid having to build any other. */ 137/* Empty lisp strings. To avoid having to build any others. */
138Lisp_Object empty_string; 138Lisp_Object empty_unibyte_string, empty_multibyte_string;
139 139
140/* Search path separator. */ 140/* Search path separator. */
141Lisp_Object Vpath_separator; 141Lisp_Object Vpath_separator;
@@ -857,17 +857,23 @@ main (argc, argv
857 So ignore --version otherwise. */ 857 So ignore --version otherwise. */
858 && initialized) 858 && initialized)
859 { 859 {
860 Lisp_Object tem; 860 Lisp_Object tem, tem2;
861 tem = Fsymbol_value (intern ("emacs-version")); 861 tem = Fsymbol_value (intern ("emacs-version"));
862 tem2 = Fsymbol_value (intern ("emacs-copyright"));
862 if (!STRINGP (tem)) 863 if (!STRINGP (tem))
863 { 864 {
864 fprintf (stderr, "Invalid value of `emacs-version'\n"); 865 fprintf (stderr, "Invalid value of `emacs-version'\n");
865 exit (1); 866 exit (1);
866 } 867 }
868 if (!STRINGP (tem2))
869 {
870 fprintf (stderr, "Invalid value of `emacs-copyright'\n");
871 exit (1);
872 }
867 else 873 else
868 { 874 {
869 printf ("GNU Emacs %s\n", SDATA (tem)); 875 printf ("GNU Emacs %s\n", SDATA (tem));
870 printf ("Copyright (C) 2007 Free Software Foundation, Inc.\n"); 876 printf ("%s\n", SDATA(tem2));
871 printf ("GNU Emacs comes with ABSOLUTELY NO WARRANTY.\n"); 877 printf ("GNU Emacs comes with ABSOLUTELY NO WARRANTY.\n");
872 printf ("You may redistribute copies of Emacs\n"); 878 printf ("You may redistribute copies of Emacs\n");
873 printf ("under the terms of the GNU General Public License.\n"); 879 printf ("under the terms of the GNU General Public License.\n");
@@ -2471,9 +2477,6 @@ see `kill-emacs-query-functions' instead.
2471The hook is not run in batch mode, i.e., if `noninteractive' is non-nil. */); 2477The hook is not run in batch mode, i.e., if `noninteractive' is non-nil. */);
2472 Vkill_emacs_hook = Qnil; 2478 Vkill_emacs_hook = Qnil;
2473 2479
2474 empty_string = build_string ("");
2475 staticpro (&empty_string);
2476
2477 DEFVAR_INT ("emacs-priority", &emacs_priority, 2480 DEFVAR_INT ("emacs-priority", &emacs_priority,
2478 doc: /* Priority for Emacs to run at. 2481 doc: /* Priority for Emacs to run at.
2479This value is effective only if set before Emacs is dumped, 2482This value is effective only if set before Emacs is dumped,
diff --git a/src/fileio.c b/src/fileio.c
index b9f9334a062..cdbd35748f1 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -6432,7 +6432,7 @@ and `read-file-name-function'. */)
6432 if (! replace_in_history) 6432 if (! replace_in_history)
6433 add_to_history = 1; 6433 add_to_history = 1;
6434 6434
6435 val = empty_string; 6435 val = empty_unibyte_string;
6436 } 6436 }
6437 6437
6438 unbind_to (count, Qnil); 6438 unbind_to (count, Qnil);
diff --git a/src/fns.c b/src/fns.c
index 8adaa0d3ea6..c25e62951dd 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -3134,7 +3134,7 @@ SEQUENCE may be a list, a vector, a bool-vector, or a string. */)
3134 len = Flength (sequence); 3134 len = Flength (sequence);
3135 leni = XINT (len); 3135 leni = XINT (len);
3136 nargs = leni + leni - 1; 3136 nargs = leni + leni - 1;
3137 if (nargs < 0) return build_string (""); 3137 if (nargs < 0) return empty_unibyte_string;
3138 3138
3139 SAFE_ALLOCA_LISP (args, nargs); 3139 SAFE_ALLOCA_LISP (args, nargs);
3140 3140
diff --git a/src/frame.c b/src/frame.c
index 08379c7623c..a1b4e6bd85f 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -1706,7 +1706,7 @@ and returns whatever that function returns. */)
1706 f = SELECTED_FRAME (); 1706 f = SELECTED_FRAME ();
1707 x = y = Qnil; 1707 x = y = Qnil;
1708 1708
1709#ifdef HAVE_MOUSE 1709#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
1710 /* It's okay for the hook to refrain from storing anything. */ 1710 /* It's okay for the hook to refrain from storing anything. */
1711 if (FRAME_TERMINAL (f)->mouse_position_hook) 1711 if (FRAME_TERMINAL (f)->mouse_position_hook)
1712 (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, -1, 1712 (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, -1,
@@ -1750,7 +1750,7 @@ and nil for X and Y. */)
1750 f = SELECTED_FRAME (); 1750 f = SELECTED_FRAME ();
1751 x = y = Qnil; 1751 x = y = Qnil;
1752 1752
1753#ifdef HAVE_MOUSE 1753#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
1754 /* It's okay for the hook to refrain from storing anything. */ 1754 /* It's okay for the hook to refrain from storing anything. */
1755 if (FRAME_TERMINAL (f)->mouse_position_hook) 1755 if (FRAME_TERMINAL (f)->mouse_position_hook)
1756 (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, -1, 1756 (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, -1,
@@ -1837,6 +1837,13 @@ before calling this function on it, like this.
1837 Fselect_frame (frame); 1837 Fselect_frame (frame);
1838 mouse_moveto (XINT (x), XINT (y)); 1838 mouse_moveto (XINT (x), XINT (y));
1839 } 1839 }
1840#else
1841#ifdef HAVE_GPM
1842 {
1843 Fselect_frame (frame);
1844 term_mouse_moveto (XINT (x), XINT (y));
1845 }
1846#endif
1840#endif 1847#endif
1841#endif 1848#endif
1842 1849
diff --git a/src/image.c b/src/image.c
index fbd2f4e6a51..b53fe01d7f9 100644
--- a/src/image.c
+++ b/src/image.c
@@ -1609,6 +1609,7 @@ x_alloc_image_color (f, img, color_name, dflt)
1609 Image Cache 1609 Image Cache
1610 ***********************************************************************/ 1610 ***********************************************************************/
1611 1611
1612static struct image *search_image_cache P_ ((struct frame *, Lisp_Object, unsigned));
1612static void cache_image P_ ((struct frame *f, struct image *img)); 1613static void cache_image P_ ((struct frame *f, struct image *img));
1613static void postprocess_image P_ ((struct frame *, struct image *)); 1614static void postprocess_image P_ ((struct frame *, struct image *));
1614 1615
@@ -1631,24 +1632,47 @@ make_image_cache ()
1631} 1632}
1632 1633
1633 1634
1634/* Search frame F for an images with spec SPEC, and free it. */ 1635/* Find an image matching SPEC in the cache, and return it. If no
1635 1636 image is found, return NULL. */
1636static void 1637static struct image *
1637uncache_image (f, spec) 1638search_image_cache (f, spec, hash)
1638 struct frame *f; 1639 struct frame *f;
1639 Lisp_Object spec; 1640 Lisp_Object spec;
1641 unsigned hash;
1640{ 1642{
1641 struct image_cache *c = FRAME_X_IMAGE_CACHE (f);
1642 struct image *img; 1643 struct image *img;
1643 unsigned hash = sxhash (spec, 0); 1644 struct image_cache *c = FRAME_X_IMAGE_CACHE (f);
1645 Lisp_Object specified_bg = image_spec_value (spec, QCbackground, NULL);
1644 int i = hash % IMAGE_CACHE_BUCKETS_SIZE; 1646 int i = hash % IMAGE_CACHE_BUCKETS_SIZE;
1645 1647
1648 /* If the image spec does not specify a background color, the cached
1649 image must have the same background color as the current frame.
1650 The following code be improved. For example, jpeg does not
1651 support transparency, but currently a jpeg image spec won't match
1652 a cached spec created with a different frame background. The
1653 extra memory usage is probably negligible in practice. */
1654 if (!c) return NULL;
1655
1646 for (img = c->buckets[i]; img; img = img->next) 1656 for (img = c->buckets[i]; img; img = img->next)
1647 if (img->hash == hash && !NILP (Fequal (img->spec, spec))) 1657 if (img->hash == hash
1648 { 1658 && !NILP (Fequal (img->spec, spec))
1649 free_image (f, img); 1659 && (STRINGP (specified_bg)
1650 break; 1660 || img->background == FRAME_BACKGROUND_PIXEL (f)))
1651 } 1661 break;
1662 return img;
1663}
1664
1665
1666/* Search frame F for an image with spec SPEC, and free it. */
1667
1668static void
1669uncache_image (f, spec)
1670 struct frame *f;
1671 Lisp_Object spec;
1672{
1673 struct image *img = search_image_cache (f, spec, sxhash (spec, 0));
1674 if (img)
1675 free_image (f, img);
1652} 1676}
1653 1677
1654 1678
@@ -1877,7 +1901,6 @@ lookup_image (f, spec)
1877{ 1901{
1878 struct image_cache *c; 1902 struct image_cache *c;
1879 struct image *img; 1903 struct image *img;
1880 int i;
1881 unsigned hash; 1904 unsigned hash;
1882 struct gcpro gcpro1; 1905 struct gcpro gcpro1;
1883 EMACS_TIME now; 1906 EMACS_TIME now;
@@ -1893,12 +1916,7 @@ lookup_image (f, spec)
1893 1916
1894 /* Look up SPEC in the hash table of the image cache. */ 1917 /* Look up SPEC in the hash table of the image cache. */
1895 hash = sxhash (spec, 0); 1918 hash = sxhash (spec, 0);
1896 i = hash % IMAGE_CACHE_BUCKETS_SIZE; 1919 img = search_image_cache (f, spec, hash);
1897
1898 for (img = c->buckets[i]; img; img = img->next)
1899 if (img->hash == hash && !NILP (Fequal (img->spec, spec)))
1900 break;
1901
1902 if (img && img->load_failed_p) 1920 if (img && img->load_failed_p)
1903 { 1921 {
1904 free_image (f, img); 1922 free_image (f, img);
@@ -3963,9 +3981,6 @@ xpm_load (f, img)
3963 attrs.valuemask |= XpmCloseness; 3981 attrs.valuemask |= XpmCloseness;
3964#endif /* not XpmAllocCloseColors */ 3982#endif /* not XpmAllocCloseColors */
3965#endif /* ALLOC_XPM_COLORS */ 3983#endif /* ALLOC_XPM_COLORS */
3966#ifdef ALLOC_XPM_COLORS
3967 xpm_init_color_cache (f, &attrs);
3968#endif
3969 3984
3970 /* If image specification contains symbolic color definitions, add 3985 /* If image specification contains symbolic color definitions, add
3971 these to `attrs'. */ 3986 these to `attrs'. */
diff --git a/src/keyboard.c b/src/keyboard.c
index 576afd29843..9786449a003 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1327,7 +1327,7 @@ cmd_error_internal (data, context)
1327 /* Use user's specified output function if any. */ 1327 /* Use user's specified output function if any. */
1328 if (!NILP (Vcommand_error_function)) 1328 if (!NILP (Vcommand_error_function))
1329 call3 (Vcommand_error_function, data, 1329 call3 (Vcommand_error_function, data,
1330 build_string (context ? context : ""), 1330 context ? build_string (context) : empty_unibyte_string,
1331 Vsignaling_function); 1331 Vsignaling_function);
1332 /* If the window system or terminal frame hasn't been initialized 1332 /* If the window system or terminal frame hasn't been initialized
1333 yet, or we're not interactive, write the message to stderr and exit. */ 1333 yet, or we're not interactive, write the message to stderr and exit. */
@@ -4029,6 +4029,9 @@ discard_mouse_events ()
4029#ifdef WINDOWSNT 4029#ifdef WINDOWSNT
4030 || sp->kind == W32_SCROLL_BAR_CLICK_EVENT 4030 || sp->kind == W32_SCROLL_BAR_CLICK_EVENT
4031#endif 4031#endif
4032#ifdef HAVE_GPM
4033 || sp->kind == GPM_CLICK_EVENT
4034#endif
4032 || sp->kind == SCROLL_BAR_CLICK_EVENT) 4035 || sp->kind == SCROLL_BAR_CLICK_EVENT)
4033 { 4036 {
4034 sp->kind = NO_EVENT; 4037 sp->kind = NO_EVENT;
diff --git a/src/keymap.c b/src/keymap.c
index 47e3f50786b..904e3c89d55 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -2181,7 +2181,7 @@ spaces are put between sequence elements, etc. */)
2181 len += 2; 2181 len += 2;
2182 } 2182 }
2183 else if (len == 0) 2183 else if (len == 0)
2184 return empty_string; 2184 return empty_unibyte_string;
2185 return Fconcat (len - 1, args); 2185 return Fconcat (len - 1, args);
2186 } 2186 }
2187 2187
diff --git a/src/lisp.h b/src/lisp.h
index 82036f3030e..7bf59d0f55a 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -701,7 +701,10 @@ extern int string_bytes P_ ((struct Lisp_String *));
701#endif /* not GC_CHECK_STRING_BYTES */ 701#endif /* not GC_CHECK_STRING_BYTES */
702 702
703/* Mark STR as a unibyte string. */ 703/* Mark STR as a unibyte string. */
704#define STRING_SET_UNIBYTE(STR) (XSTRING (STR)->size_byte = -1) 704#define STRING_SET_UNIBYTE(STR) \
705 do { if (EQ (STR, empty_multibyte_string)) \
706 (STR) = empty_unibyte_string; \
707 else XSTRING (STR)->size_byte = -1; } while (0)
705 708
706/* Get text properties. */ 709/* Get text properties. */
707#define STRING_INTERVALS(STR) (XSTRING (STR)->intervals + 0) 710#define STRING_INTERVALS(STR) (XSTRING (STR)->intervals + 0)
@@ -3065,7 +3068,8 @@ extern void syms_of_frame P_ ((void));
3065/* defined in emacs.c */ 3068/* defined in emacs.c */
3066extern Lisp_Object decode_env_path P_ ((char *, char *)); 3069extern Lisp_Object decode_env_path P_ ((char *, char *));
3067extern Lisp_Object Vinvocation_name, Vinvocation_directory; 3070extern Lisp_Object Vinvocation_name, Vinvocation_directory;
3068extern Lisp_Object Vinstallation_directory, empty_string; 3071extern Lisp_Object Vinstallation_directory;
3072extern Lisp_Object empty_unibyte_string, empty_multibyte_string;
3069EXFUN (Fkill_emacs, 1); 3073EXFUN (Fkill_emacs, 1);
3070#if HAVE_SETLOCALE 3074#if HAVE_SETLOCALE
3071void fixup_locale P_ ((void)); 3075void fixup_locale P_ ((void));
diff --git a/src/lread.c b/src/lread.c
index 49a56a0e935..5f4d69a3312 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1201,7 +1201,7 @@ openp (path, str, suffixes, storeptr, predicate)
1201 fn = (char *) alloca (fn_size = 100 + want_size); 1201 fn = (char *) alloca (fn_size = 100 + want_size);
1202 1202
1203 /* Loop over suffixes. */ 1203 /* Loop over suffixes. */
1204 for (tail = NILP (suffixes) ? Fcons (build_string (""), Qnil) : suffixes; 1204 for (tail = NILP (suffixes) ? Fcons (empty_unibyte_string, Qnil) : suffixes;
1205 CONSP (tail); tail = XCDR (tail)) 1205 CONSP (tail); tail = XCDR (tail))
1206 { 1206 {
1207 int lsuffix = SBYTES (XCAR (tail)); 1207 int lsuffix = SBYTES (XCAR (tail));
@@ -4072,8 +4072,7 @@ and, if so, which suffixes they should try to append to the file name
4072in order to do so. However, if you want to customize which suffixes 4072in order to do so. However, if you want to customize which suffixes
4073the loading functions recognize as compression suffixes, you should 4073the loading functions recognize as compression suffixes, you should
4074customize `jka-compr-load-suffixes' rather than the present variable. */); 4074customize `jka-compr-load-suffixes' rather than the present variable. */);
4075 /* We don't use empty_string because it's not initialized yet. */ 4075 Vload_file_rep_suffixes = Fcons (empty_unibyte_string, Qnil);
4076 Vload_file_rep_suffixes = Fcons (build_string (""), Qnil);
4077 4076
4078 DEFVAR_BOOL ("load-in-progress", &load_in_progress, 4077 DEFVAR_BOOL ("load-in-progress", &load_in_progress,
4079 doc: /* Non-nil iff inside of `load'. */); 4078 doc: /* Non-nil iff inside of `load'. */);
diff --git a/src/mac.c b/src/mac.c
index 8e3f49d2bfe..d783243399d 100644
--- a/src/mac.c
+++ b/src/mac.c
@@ -1826,8 +1826,6 @@ xrm_get_preference_database (application)
1826 1826
1827 GCPRO3 (database, quarks, value); 1827 GCPRO3 (database, quarks, value);
1828 1828
1829 BLOCK_INPUT;
1830
1831 app_id = kCFPreferencesCurrentApplication; 1829 app_id = kCFPreferencesCurrentApplication;
1832 if (application) 1830 if (application)
1833 { 1831 {
@@ -1879,8 +1877,6 @@ xrm_get_preference_database (application)
1879 CFRelease (key_set); 1877 CFRelease (key_set);
1880 CFRelease (app_id); 1878 CFRelease (app_id);
1881 1879
1882 UNBLOCK_INPUT;
1883
1884 UNGCPRO; 1880 UNGCPRO;
1885 1881
1886 return database; 1882 return database;
diff --git a/src/macfns.c b/src/macfns.c
index 4c454399afb..cd02552df7a 100644
--- a/src/macfns.c
+++ b/src/macfns.c
@@ -217,9 +217,6 @@ void x_explicitly_set_name P_ ((struct frame *, Lisp_Object, Lisp_Object));
217void x_set_menu_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object)); 217void x_set_menu_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
218void x_set_title P_ ((struct frame *, Lisp_Object, Lisp_Object)); 218void x_set_title P_ ((struct frame *, Lisp_Object, Lisp_Object));
219void x_set_tool_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object)); 219void x_set_tool_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
220
221extern void mac_get_window_bounds P_ ((struct frame *, Rect *, Rect *));
222
223 220
224 221
225/* Store the screen positions of frame F into XPTR and YPTR. 222/* Store the screen positions of frame F into XPTR and YPTR.
@@ -2262,11 +2259,11 @@ mac_window (f, window_prompting, minibuffer_only)
2262 FRAME_MAC_WINDOW (f) = NULL; 2259 FRAME_MAC_WINDOW (f) = NULL;
2263 } 2260 }
2264 } 2261 }
2265#else 2262#else /* !TARGET_API_MAC_CARBON */
2266 FRAME_MAC_WINDOW (f) 2263 FRAME_MAC_WINDOW (f)
2267 = NewCWindow (NULL, &r, "\p", false, zoomDocProc, 2264 = NewCWindow (NULL, &r, "\p", false, zoomDocProc,
2268 (WindowPtr) -1, 1, (long) f->output_data.mac); 2265 (WindowRef) -1, 1, (long) f->output_data.mac);
2269#endif 2266#endif /* !TARGET_API_MAC_CARBON */
2270 /* so that update events can find this mac_output struct */ 2267 /* so that update events can find this mac_output struct */
2271 f->output_data.mac->mFP = f; /* point back to emacs frame */ 2268 f->output_data.mac->mFP = f; /* point back to emacs frame */
2272 2269
@@ -3123,7 +3120,7 @@ If omitted or nil, that stands for the selected frame's display. */)
3123 UNBLOCK_INPUT; 3120 UNBLOCK_INPUT;
3124 } 3121 }
3125#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020 3122#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
3126 else 3123 else /* CGDisplayScreenSize == NULL */
3127#endif 3124#endif
3128#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 */ 3125#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 */
3129#if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020 3126#if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020
@@ -3160,7 +3157,7 @@ If omitted or nil, that stands for the selected frame's display. */)
3160 UNBLOCK_INPUT; 3157 UNBLOCK_INPUT;
3161 } 3158 }
3162#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020 3159#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
3163 else 3160 else /* CGDisplayScreenSize == NULL */
3164#endif 3161#endif
3165#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 */ 3162#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 */
3166#if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020 3163#if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020
@@ -4069,8 +4066,12 @@ compute_tip_xy (f, parms, dx, dy, width, height, root_x, root_y)
4069 Point mouse_pos; 4066 Point mouse_pos;
4070 4067
4071 BLOCK_INPUT; 4068 BLOCK_INPUT;
4069#if TARGET_API_MAC_CARBON
4070 GetGlobalMouse (&mouse_pos);
4071#else
4072 GetMouse (&mouse_pos); 4072 GetMouse (&mouse_pos);
4073 LocalToGlobal (&mouse_pos); 4073 LocalToGlobal (&mouse_pos);
4074#endif
4074 *root_x = mouse_pos.h; 4075 *root_x = mouse_pos.h;
4075 *root_y = mouse_pos.v; 4076 *root_y = mouse_pos.v;
4076 UNBLOCK_INPUT; 4077 UNBLOCK_INPUT;
diff --git a/src/macgui.h b/src/macgui.h
index 1348fe479cb..990765593e1 100644
--- a/src/macgui.h
+++ b/src/macgui.h
@@ -71,7 +71,7 @@ typedef unsigned long Time;
71#undef Z 71#undef Z
72#define Z (current_buffer->text->z) 72#define Z (current_buffer->text->z)
73#else /* not HAVE_CARBON */ 73#else /* not HAVE_CARBON */
74#include <QuickDraw.h> /* for WindowPtr */ 74#include <QuickDraw.h> /* for WindowRef */
75#include <QDOffscreen.h> /* for GWorldPtr */ 75#include <QDOffscreen.h> /* for GWorldPtr */
76#include <Appearance.h> /* for ThemeCursor */ 76#include <Appearance.h> /* for ThemeCursor */
77#include <Windows.h> 77#include <Windows.h>
@@ -117,7 +117,7 @@ typedef unsigned long Time;
117#endif 117#endif
118#endif 118#endif
119 119
120typedef WindowPtr Window; 120typedef WindowRef Window;
121typedef GWorldPtr Pixmap; 121typedef GWorldPtr Pixmap;
122 122
123#define Cursor ThemeCursor 123#define Cursor ThemeCursor
diff --git a/src/macmenu.c b/src/macmenu.c
index a23e516dd07..1eb0b16cd95 100644
--- a/src/macmenu.c
+++ b/src/macmenu.c
@@ -200,7 +200,7 @@ static void list_of_items P_ ((Lisp_Object));
200 200
201static void find_and_call_menu_selection P_ ((FRAME_PTR, int, Lisp_Object, 201static void find_and_call_menu_selection P_ ((FRAME_PTR, int, Lisp_Object,
202 void *)); 202 void *));
203static int fill_menu P_ ((MenuHandle, widget_value *, enum mac_menu_kind, int)); 203static int fill_menu P_ ((MenuRef, widget_value *, enum mac_menu_kind, int));
204static void fill_menubar P_ ((widget_value *, int)); 204static void fill_menubar P_ ((widget_value *, int));
205static void dispose_menus P_ ((enum mac_menu_kind, int)); 205static void dispose_menus P_ ((enum mac_menu_kind, int));
206 206
@@ -1162,7 +1162,7 @@ x_activate_menubar (f)
1162#endif 1162#endif
1163 if (menu_id) 1163 if (menu_id)
1164 { 1164 {
1165 MenuHandle menu = GetMenuHandle (menu_id); 1165 MenuRef menu = GetMenuRef (menu_id);
1166 1166
1167 if (menu) 1167 if (menu)
1168 { 1168 {
@@ -1595,15 +1595,13 @@ menu_target_item_handler (next_handler, event, data)
1595 EventRef event; 1595 EventRef event;
1596 void *data; 1596 void *data;
1597{ 1597{
1598 OSStatus err, result; 1598 OSStatus err;
1599 MenuRef menu; 1599 MenuRef menu;
1600 MenuItemIndex menu_item; 1600 MenuItemIndex menu_item;
1601 Lisp_Object help; 1601 Lisp_Object help;
1602 GrafPtr port; 1602 GrafPtr port;
1603 int specpdl_count = SPECPDL_INDEX (); 1603 int specpdl_count = SPECPDL_INDEX ();
1604 1604
1605 result = CallNextEventHandler (next_handler, event);
1606
1607 err = GetEventParameter (event, kEventParamDirectObject, typeMenuRef, 1605 err = GetEventParameter (event, kEventParamDirectObject, typeMenuRef,
1608 NULL, sizeof (MenuRef), NULL, &menu); 1606 NULL, sizeof (MenuRef), NULL, &menu);
1609 if (err == noErr) 1607 if (err == noErr)
@@ -1626,30 +1624,21 @@ menu_target_item_handler (next_handler, event, data)
1626 SetPort (port); 1624 SetPort (port);
1627 unbind_to (specpdl_count, Qnil); 1625 unbind_to (specpdl_count, Qnil);
1628 1626
1629 return err == noErr ? noErr : result; 1627 return err == noErr ? noErr : eventNotHandledErr;
1630} 1628}
1631#endif
1632 1629
1633OSStatus 1630OSStatus
1634install_menu_target_item_handler (window) 1631install_menu_target_item_handler ()
1635 WindowPtr window;
1636{ 1632{
1637 OSStatus err = noErr;
1638#if TARGET_API_MAC_CARBON
1639 static const EventTypeSpec specs[] = 1633 static const EventTypeSpec specs[] =
1640 {{kEventClassMenu, kEventMenuTargetItem}}; 1634 {{kEventClassMenu, kEventMenuTargetItem}};
1641 static EventHandlerUPP menu_target_item_handlerUPP = NULL;
1642
1643 if (menu_target_item_handlerUPP == NULL)
1644 menu_target_item_handlerUPP =
1645 NewEventHandlerUPP (menu_target_item_handler);
1646 1635
1647 err = InstallWindowEventHandler (window, menu_target_item_handlerUPP, 1636 return InstallApplicationEventHandler (NewEventHandlerUPP
1648 GetEventTypeCount (specs), specs, 1637 (menu_target_item_handler),
1649 NULL, NULL); 1638 GetEventTypeCount (specs),
1650#endif 1639 specs, NULL, NULL);
1651 return err;
1652} 1640}
1641#endif /* TARGET_API_MAC_CARBON */
1653 1642
1654/* Event handler function that pops down a menu on C-g. We can only pop 1643/* Event handler function that pops down a menu on C-g. We can only pop
1655 down menus if CancelMenuTracking is present (OSX 10.3 or later). */ 1644 down menus if CancelMenuTracking is present (OSX 10.3 or later). */
@@ -1687,15 +1676,15 @@ menu_quit_handler (nextHandler, theEvent, userData)
1687} 1676}
1688#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 */ 1677#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 */
1689 1678
1690/* Add event handler to all menus that belong to KIND so we can detect C-g. 1679/* Add event handler to all menus that belong to KIND so we can detect
1691 MENU_HANDLE is the root menu of the tracking session to dismiss 1680 C-g. ROOT_MENU is the root menu of the tracking session to dismiss
1692 when C-g is detected. NULL means the menu bar. 1681 when C-g is detected. NULL means the menu bar. If
1693 If CancelMenuTracking isn't available, do nothing. */ 1682 CancelMenuTracking isn't available, do nothing. */
1694 1683
1695static void 1684static void
1696install_menu_quit_handler (kind, menu_handle) 1685install_menu_quit_handler (kind, root_menu)
1697 enum mac_menu_kind kind; 1686 enum mac_menu_kind kind;
1698 MenuHandle menu_handle; 1687 MenuRef root_menu;
1699{ 1688{
1700#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 1689#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
1701 static const EventTypeSpec typesList[] = 1690 static const EventTypeSpec typesList[] =
@@ -1708,13 +1697,13 @@ install_menu_quit_handler (kind, menu_handle)
1708#endif 1697#endif
1709 for (id = min_menu_id[kind]; id < min_menu_id[kind + 1]; id++) 1698 for (id = min_menu_id[kind]; id < min_menu_id[kind + 1]; id++)
1710 { 1699 {
1711 MenuHandle menu = GetMenuHandle (id); 1700 MenuRef menu = GetMenuRef (id);
1712 1701
1713 if (menu == NULL) 1702 if (menu == NULL)
1714 break; 1703 break;
1715 InstallMenuEventHandler (menu, menu_quit_handler, 1704 InstallMenuEventHandler (menu, menu_quit_handler,
1716 GetEventTypeCount (typesList), 1705 GetEventTypeCount (typesList),
1717 typesList, menu_handle, NULL); 1706 typesList, root_menu, NULL);
1718 } 1707 }
1719#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 */ 1708#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 */
1720} 1709}
@@ -1738,10 +1727,13 @@ set_frame_menubar (f, first_time, deep_p)
1738 1727
1739 XSETFRAME (Vmenu_updating_frame, f); 1728 XSETFRAME (Vmenu_updating_frame, f);
1740 1729
1730 /* This seems to be unnecessary for Carbon. */
1731#if 0
1741 if (! menubar_widget) 1732 if (! menubar_widget)
1742 deep_p = 1; 1733 deep_p = 1;
1743 else if (pending_menu_activation && !deep_p) 1734 else if (pending_menu_activation && !deep_p)
1744 deep_p = 1; 1735 deep_p = 1;
1736#endif
1745 1737
1746 if (deep_p) 1738 if (deep_p)
1747 { 1739 {
@@ -1978,7 +1970,7 @@ pop_down_menu (arg)
1978{ 1970{
1979 struct Lisp_Save_Value *p = XSAVE_VALUE (arg); 1971 struct Lisp_Save_Value *p = XSAVE_VALUE (arg);
1980 FRAME_PTR f = p->pointer; 1972 FRAME_PTR f = p->pointer;
1981 MenuHandle menu = GetMenuHandle (min_menu_id[MAC_MENU_POPUP]); 1973 MenuRef menu = GetMenuRef (min_menu_id[MAC_MENU_POPUP]);
1982 1974
1983 BLOCK_INPUT; 1975 BLOCK_INPUT;
1984 1976
@@ -2024,8 +2016,7 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error)
2024 int i; 2016 int i;
2025 int menu_item_choice; 2017 int menu_item_choice;
2026 UInt32 menu_item_selection; 2018 UInt32 menu_item_selection;
2027 MenuHandle menu; 2019 MenuRef menu;
2028 Point pos;
2029 widget_value *wv, *save_wv = 0, *first_wv = 0, *prev_wv = 0; 2020 widget_value *wv, *save_wv = 0, *first_wv = 0, *prev_wv = 0;
2030 widget_value **submenu_stack 2021 widget_value **submenu_stack
2031 = (widget_value **) alloca (menu_items_used * sizeof (widget_value *)); 2022 = (widget_value **) alloca (menu_items_used * sizeof (widget_value *));
@@ -2231,11 +2222,8 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error)
2231 free_menubar_widget_value_tree (first_wv); 2222 free_menubar_widget_value_tree (first_wv);
2232 2223
2233 /* Adjust coordinates to be root-window-relative. */ 2224 /* Adjust coordinates to be root-window-relative. */
2234 pos.h = x; 2225 x += f->left_pos + FRAME_OUTER_TO_INNER_DIFF_X (f);
2235 pos.v = y; 2226 y += f->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f);
2236
2237 SetPortWindowPort (FRAME_MAC_WINDOW (f));
2238 LocalToGlobal (&pos);
2239 2227
2240 /* No selection has been chosen yet. */ 2228 /* No selection has been chosen yet. */
2241 menu_item_selection = 0; 2229 menu_item_selection = 0;
@@ -2248,13 +2236,13 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error)
2248 2236
2249 /* Display the menu. */ 2237 /* Display the menu. */
2250 popup_activated_flag = 1; 2238 popup_activated_flag = 1;
2251 menu_item_choice = PopUpMenuSelect (menu, pos.v, pos.h, 0); 2239 menu_item_choice = PopUpMenuSelect (menu, y, x, 0);
2252 popup_activated_flag = 0; 2240 popup_activated_flag = 0;
2253 2241
2254 /* Get the refcon to find the correct item */ 2242 /* Get the refcon to find the correct item */
2255 if (menu_item_choice) 2243 if (menu_item_choice)
2256 { 2244 {
2257 MenuHandle sel_menu = GetMenuHandle (HiWord (menu_item_choice)); 2245 MenuRef sel_menu = GetMenuRef (HiWord (menu_item_choice));
2258 2246
2259 if (sel_menu) 2247 if (sel_menu)
2260 GetMenuItemRefCon (sel_menu, LoWord (menu_item_choice), 2248 GetMenuItemRefCon (sel_menu, LoWord (menu_item_choice),
@@ -2330,6 +2318,14 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error)
2330 2318
2331#if TARGET_API_MAC_CARBON 2319#if TARGET_API_MAC_CARBON
2332 2320
2321#define DIALOG_BUTTON_COMMAND_ID_OFFSET 'Bt\0\0'
2322#define DIALOG_BUTTON_COMMAND_ID_P(id) \
2323 (((id) & ~0xffff) == DIALOG_BUTTON_COMMAND_ID_OFFSET)
2324#define DIALOG_BUTTON_COMMAND_ID_VALUE(id) \
2325 ((id) - DIALOG_BUTTON_COMMAND_ID_OFFSET)
2326#define DIALOG_BUTTON_MAKE_COMMAND_ID(value) \
2327 ((value) + DIALOG_BUTTON_COMMAND_ID_OFFSET)
2328
2333static pascal OSStatus 2329static pascal OSStatus
2334mac_handle_dialog_event (next_handler, event, data) 2330mac_handle_dialog_event (next_handler, event, data)
2335 EventHandlerCallRef next_handler; 2331 EventHandlerCallRef next_handler;
@@ -2349,7 +2345,7 @@ mac_handle_dialog_event (next_handler, event, data)
2349 typeHICommand, NULL, sizeof (HICommand), 2345 typeHICommand, NULL, sizeof (HICommand),
2350 NULL, &command); 2346 NULL, &command);
2351 if (err == noErr) 2347 if (err == noErr)
2352 if ((command.commandID & ~0xffff) == 'Bt\0\0') 2348 if (DIALOG_BUTTON_COMMAND_ID_P (command.commandID))
2353 { 2349 {
2354 SetWRefCon (window, command.commandID); 2350 SetWRefCon (window, command.commandID);
2355 err = QuitAppModalLoopForWindow (window); 2351 err = QuitAppModalLoopForWindow (window);
@@ -2402,7 +2398,10 @@ mac_handle_dialog_event (next_handler, event, data)
2402 break; 2398 break;
2403 } 2399 }
2404 2400
2405 return err == noErr ? noErr : result; 2401 if (err == noErr)
2402 result = noErr;
2403
2404 return result;
2406 } 2405 }
2407 break; 2406 break;
2408 2407
@@ -2518,14 +2517,16 @@ create_and_show_dialog (f, first_wv)
2518 } 2517 }
2519 if (err == noErr) 2518 if (err == noErr)
2520 { 2519 {
2520 UInt32 command_id;
2521
2521 OffsetRect (&rects[i], -rects[i].left, -rects[i].top); 2522 OffsetRect (&rects[i], -rects[i].left, -rects[i].top);
2522 if (rects[i].right < DIALOG_BUTTON_MIN_WIDTH) 2523 if (rects[i].right < DIALOG_BUTTON_MIN_WIDTH)
2523 rects[i].right = DIALOG_BUTTON_MIN_WIDTH; 2524 rects[i].right = DIALOG_BUTTON_MIN_WIDTH;
2524 else if (rects[i].right > DIALOG_MAX_INNER_WIDTH) 2525 else if (rects[i].right > DIALOG_MAX_INNER_WIDTH)
2525 rects[i].right = DIALOG_MAX_INNER_WIDTH; 2526 rects[i].right = DIALOG_MAX_INNER_WIDTH;
2526 2527
2527 err = SetControlCommandID (buttons[i], 2528 command_id = DIALOG_BUTTON_MAKE_COMMAND_ID ((int) wv->call_data);
2528 'Bt\0\0' + (int) wv->call_data); 2529 err = SetControlCommandID (buttons[i], command_id);
2529 } 2530 }
2530 if (err != noErr) 2531 if (err != noErr)
2531 break; 2532 break;
@@ -2702,8 +2703,8 @@ create_and_show_dialog (f, first_wv)
2702 { 2703 {
2703 UInt32 command_id = GetWRefCon (window); 2704 UInt32 command_id = GetWRefCon (window);
2704 2705
2705 if ((command_id & ~0xffff) == 'Bt\0\0') 2706 if (DIALOG_BUTTON_COMMAND_ID_P (command_id))
2706 result = command_id - 'Bt\0\0'; 2707 result = DIALOG_BUTTON_COMMAND_ID_VALUE (command_id);
2707 } 2708 }
2708 2709
2709 if (window) 2710 if (window)
@@ -2724,8 +2725,8 @@ mac_dialog (widget_value *wv)
2724 int i; 2725 int i;
2725 int dialog_width; 2726 int dialog_width;
2726 Rect rect; 2727 Rect rect;
2727 WindowPtr window_ptr; 2728 WindowRef window_ptr;
2728 ControlHandle ch; 2729 ControlRef ch;
2729 int left; 2730 int left;
2730 EventRecord event_record; 2731 EventRecord event_record;
2731 SInt16 part_code; 2732 SInt16 part_code;
@@ -2754,7 +2755,7 @@ mac_dialog (widget_value *wv)
2754 wv = wv->next; 2755 wv = wv->next;
2755 } 2756 }
2756 2757
2757 window_ptr = GetNewCWindow (DIALOG_WINDOW_RESOURCE, NULL, (WindowPtr) -1); 2758 window_ptr = GetNewCWindow (DIALOG_WINDOW_RESOURCE, NULL, (WindowRef) -1);
2758 2759
2759 SetPortWindowPort (window_ptr); 2760 SetPortWindowPort (window_ptr);
2760 2761
@@ -3031,7 +3032,7 @@ name_is_separator (name)
3031 3032
3032static void 3033static void
3033add_menu_item (menu, pos, wv) 3034add_menu_item (menu, pos, wv)
3034 MenuHandle menu; 3035 MenuRef menu;
3035 int pos; 3036 int pos;
3036 widget_value *wv; 3037 widget_value *wv;
3037{ 3038{
@@ -3108,7 +3109,7 @@ add_menu_item (menu, pos, wv)
3108 3109
3109static int 3110static int
3110fill_menu (menu, wv, kind, submenu_id) 3111fill_menu (menu, wv, kind, submenu_id)
3111 MenuHandle menu; 3112 MenuRef menu;
3112 widget_value *wv; 3113 widget_value *wv;
3113 enum mac_menu_kind kind; 3114 enum mac_menu_kind kind;
3114 int submenu_id; 3115 int submenu_id;
@@ -3120,7 +3121,7 @@ fill_menu (menu, wv, kind, submenu_id)
3120 add_menu_item (menu, pos, wv); 3121 add_menu_item (menu, pos, wv);
3121 if (wv->contents && submenu_id < min_menu_id[kind + 1]) 3122 if (wv->contents && submenu_id < min_menu_id[kind + 1])
3122 { 3123 {
3123 MenuHandle submenu = NewMenu (submenu_id, "\pX"); 3124 MenuRef submenu = NewMenu (submenu_id, "\pX");
3124 3125
3125 InsertMenu (submenu, -1); 3126 InsertMenu (submenu, -1);
3126 SetMenuItemHierarchicalID (menu, pos, submenu_id); 3127 SetMenuItemHierarchicalID (menu, pos, submenu_id);
@@ -3139,8 +3140,6 @@ fill_menubar (wv, deep_p)
3139 int deep_p; 3140 int deep_p;
3140{ 3141{
3141 int id, submenu_id; 3142 int id, submenu_id;
3142 MenuHandle menu;
3143 Str255 title;
3144#if !TARGET_API_MAC_CARBON 3143#if !TARGET_API_MAC_CARBON
3145 int title_changed_p = 0; 3144 int title_changed_p = 0;
3146#endif 3145#endif
@@ -3162,45 +3161,75 @@ fill_menubar (wv, deep_p)
3162 wv != NULL && id < min_menu_id[MAC_MENU_MENU_BAR + 1]; 3161 wv != NULL && id < min_menu_id[MAC_MENU_MENU_BAR + 1];
3163 wv = wv->next, id++) 3162 wv = wv->next, id++)
3164 { 3163 {
3164 OSStatus err = noErr;
3165 MenuRef menu;
3166#if TARGET_API_MAC_CARBON
3167 CFStringRef title;
3168
3169 title = CFStringCreateWithCString (NULL, wv->name,
3170 kCFStringEncodingMacRoman);
3171#else
3172 Str255 title;
3173
3165 strncpy (title, wv->name, 255); 3174 strncpy (title, wv->name, 255);
3166 title[255] = '\0'; 3175 title[255] = '\0';
3167 c2pstr (title); 3176 c2pstr (title);
3177#endif
3168 3178
3169 menu = GetMenuHandle (id); 3179 menu = GetMenuRef (id);
3170 if (menu) 3180 if (menu)
3171 { 3181 {
3172#if TARGET_API_MAC_CARBON 3182#if TARGET_API_MAC_CARBON
3173 Str255 old_title; 3183 CFStringRef old_title;
3174 3184
3175 GetMenuTitle (menu, old_title); 3185 err = CopyMenuTitleAsCFString (menu, &old_title);
3176 if (!EqualString (title, old_title, false, false)) 3186 if (err == noErr)
3177 SetMenuTitle (menu, title); 3187 {
3188 if (CFStringCompare (title, old_title, 0) != kCFCompareEqualTo)
3189 err = SetMenuTitleWithCFString (menu, title);
3190 CFRelease (old_title);
3191 }
3192 else
3193 err = SetMenuTitleWithCFString (menu, title);
3178#else /* !TARGET_API_MAC_CARBON */ 3194#else /* !TARGET_API_MAC_CARBON */
3179 if (!EqualString (title, (*menu)->menuData, false, false)) 3195 if (!EqualString (title, (*menu)->menuData, false, false))
3180 { 3196 {
3181 DeleteMenu (id); 3197 DeleteMenu (id);
3182 DisposeMenu (menu); 3198 DisposeMenu (menu);
3183 menu = NewMenu (id, title); 3199 menu = NewMenu (id, title);
3184 InsertMenu (menu, GetMenuHandle (id + 1) ? id + 1 : 0); 3200 InsertMenu (menu, GetMenuRef (id + 1) ? id + 1 : 0);
3185 title_changed_p = 1; 3201 title_changed_p = 1;
3186 } 3202 }
3187#endif /* !TARGET_API_MAC_CARBON */ 3203#endif /* !TARGET_API_MAC_CARBON */
3188 } 3204 }
3189 else 3205 else
3190 { 3206 {
3207#if TARGET_API_MAC_CARBON
3208 err = CreateNewMenu (id, 0, &menu);
3209 if (err == noErr)
3210 err = SetMenuTitleWithCFString (menu, title);
3211#else
3191 menu = NewMenu (id, title); 3212 menu = NewMenu (id, title);
3192 InsertMenu (menu, 0); 3213#endif
3214 if (err == noErr)
3215 {
3216 InsertMenu (menu, 0);
3193#if !TARGET_API_MAC_CARBON 3217#if !TARGET_API_MAC_CARBON
3194 title_changed_p = 1; 3218 title_changed_p = 1;
3195#endif 3219#endif
3220 }
3196 } 3221 }
3222#if TARGET_API_MAC_CARBON
3223 CFRelease (title);
3224#endif
3197 3225
3198 if (wv->contents) 3226 if (err == noErr)
3199 submenu_id = fill_menu (menu, wv->contents, MAC_MENU_MENU_BAR_SUB, 3227 if (wv->contents)
3200 submenu_id); 3228 submenu_id = fill_menu (menu, wv->contents, MAC_MENU_MENU_BAR_SUB,
3229 submenu_id);
3201 } 3230 }
3202 3231
3203 if (id < min_menu_id[MAC_MENU_MENU_BAR + 1] && GetMenuHandle (id)) 3232 if (id < min_menu_id[MAC_MENU_MENU_BAR + 1] && GetMenuRef (id))
3204 { 3233 {
3205 dispose_menus (MAC_MENU_MENU_BAR, id); 3234 dispose_menus (MAC_MENU_MENU_BAR, id);
3206#if !TARGET_API_MAC_CARBON 3235#if !TARGET_API_MAC_CARBON
@@ -3224,7 +3253,7 @@ dispose_menus (kind, id)
3224{ 3253{
3225 for (id = max (id, min_menu_id[kind]); id < min_menu_id[kind + 1]; id++) 3254 for (id = max (id, min_menu_id[kind]); id < min_menu_id[kind + 1]; id++)
3226 { 3255 {
3227 MenuHandle menu = GetMenuHandle (id); 3256 MenuRef menu = GetMenuRef (id);
3228 3257
3229 if (menu == NULL) 3258 if (menu == NULL)
3230 break; 3259 break;
diff --git a/src/macselect.c b/src/macselect.c
index c6aa97d5be9..a34f58df0f0 100644
--- a/src/macselect.c
+++ b/src/macselect.c
@@ -1623,16 +1623,19 @@ remove_drag_handler (window)
1623 Services menu support 1623 Services menu support
1624***********************************************************************/ 1624***********************************************************************/
1625#ifdef MAC_OSX 1625#ifdef MAC_OSX
1626void 1626OSStatus
1627init_service_handler () 1627install_service_handler ()
1628{ 1628{
1629 static const EventTypeSpec specs[] = 1629 static const EventTypeSpec specs[] =
1630 {{kEventClassService, kEventServiceGetTypes}, 1630 {{kEventClassService, kEventServiceGetTypes},
1631 {kEventClassService, kEventServiceCopy}, 1631 {kEventClassService, kEventServiceCopy},
1632 {kEventClassService, kEventServicePaste}, 1632 {kEventClassService, kEventServicePaste},
1633 {kEventClassService, kEventServicePerform}}; 1633 {kEventClassService, kEventServicePerform}};
1634 InstallApplicationEventHandler (NewEventHandlerUPP (mac_handle_service_event), 1634
1635 GetEventTypeCount (specs), specs, NULL, NULL); 1635 return InstallApplicationEventHandler (NewEventHandlerUPP
1636 (mac_handle_service_event),
1637 GetEventTypeCount (specs),
1638 specs, NULL, NULL);
1636} 1639}
1637 1640
1638extern OSStatus mac_store_service_event P_ ((EventRef)); 1641extern OSStatus mac_store_service_event P_ ((EventRef));
diff --git a/src/macterm.c b/src/macterm.c
index 0b8fec3a089..f8c79d1c865 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -35,12 +35,7 @@ Boston, MA 02110-1301, USA. */
35#include <alloca.h> 35#include <alloca.h>
36#endif 36#endif
37 37
38#if TARGET_API_MAC_CARBON 38#if !TARGET_API_MAC_CARBON
39/* USE_CARBON_EVENTS determines if the Carbon Event Manager is used to
40 obtain events from the event queue. If set to 0, WaitNextEvent is
41 used instead. */
42#define USE_CARBON_EVENTS 1
43#else /* not TARGET_API_MAC_CARBON */
44#include <Quickdraw.h> 39#include <Quickdraw.h>
45#include <ToolUtils.h> 40#include <ToolUtils.h>
46#include <Sound.h> 41#include <Sound.h>
@@ -263,7 +258,7 @@ static void x_scroll_bar_report_motion P_ ((struct frame **, Lisp_Object *,
263 Lisp_Object *, Lisp_Object *, 258 Lisp_Object *, Lisp_Object *,
264 unsigned long *)); 259 unsigned long *));
265 260
266static int is_emacs_window P_ ((WindowPtr)); 261static int is_emacs_window P_ ((WindowRef));
267static XCharStruct *mac_per_char_metric P_ ((XFontStruct *, XChar2b *, int)); 262static XCharStruct *mac_per_char_metric P_ ((XFontStruct *, XChar2b *, int));
268static void XSetFont P_ ((Display *, GC, XFontStruct *)); 263static void XSetFont P_ ((Display *, GC, XFontStruct *));
269static struct terminal *mac_create_terminal P_ ((struct mac_display_info *dpyinfo)); 264static struct terminal *mac_create_terminal P_ ((struct mac_display_info *dpyinfo));
@@ -418,7 +413,8 @@ mac_prepare_for_quickdraw (f)
418static RgnHandle saved_port_clip_region = NULL; 413static RgnHandle saved_port_clip_region = NULL;
419 414
420static void 415static void
421mac_begin_clip (gc) 416mac_begin_clip (f, gc)
417 struct frame *f;
422 GC gc; 418 GC gc;
423{ 419{
424 static RgnHandle new_region = NULL; 420 static RgnHandle new_region = NULL;
@@ -428,6 +424,11 @@ mac_begin_clip (gc)
428 if (new_region == NULL) 424 if (new_region == NULL)
429 new_region = NewRgn (); 425 new_region = NewRgn ();
430 426
427#if USE_CG_DRAWING
428 mac_prepare_for_quickdraw (f);
429#endif
430 SetPortWindowPort (FRAME_MAC_WINDOW (f));
431
431 if (gc->n_clip_rects) 432 if (gc->n_clip_rects)
432 { 433 {
433 GetClip (saved_port_clip_region); 434 GetClip (saved_port_clip_region);
@@ -447,15 +448,6 @@ mac_end_clip (gc)
447 448
448/* X display function emulation */ 449/* X display function emulation */
449 450
450void
451XFreePixmap (display, pixmap)
452 Display *display; /* not used */
453 Pixmap pixmap;
454{
455 DisposeGWorld (pixmap);
456}
457
458
459/* Mac version of XDrawLine. */ 451/* Mac version of XDrawLine. */
460 452
461static void 453static void
@@ -497,11 +489,8 @@ mac_draw_line (f, gc, x1, y1, x2, y2)
497 x2--; 489 x2--;
498 } 490 }
499 491
500 SetPortWindowPort (FRAME_MAC_WINDOW (f)); 492 mac_begin_clip (f, gc);
501
502 RGBForeColor (GC_FORE_COLOR (gc)); 493 RGBForeColor (GC_FORE_COLOR (gc));
503
504 mac_begin_clip (gc);
505 MoveTo (x1, y1); 494 MoveTo (x1, y1);
506 LineTo (x2, y2); 495 LineTo (x2, y2);
507 mac_end_clip (gc); 496 mac_end_clip (gc);
@@ -557,25 +546,25 @@ mac_erase_rectangle (f, gc, x, y, width, height)
557 unsigned int width, height; 546 unsigned int width, height;
558{ 547{
559#if USE_CG_DRAWING 548#if USE_CG_DRAWING
560 CGContextRef context; 549 {
550 CGContextRef context;
561 551
562 context = mac_begin_cg_clip (f, gc); 552 context = mac_begin_cg_clip (f, gc);
563 CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc); 553 CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc);
564 CGContextFillRect (context, CGRectMake (x, y, width, height)); 554 CGContextFillRect (context, CGRectMake (x, y, width, height));
565 mac_end_cg_clip (f); 555 mac_end_cg_clip (f);
556 }
566#else 557#else
567 Rect r; 558 {
568 559 Rect r;
569 SetPortWindowPort (FRAME_MAC_WINDOW (f));
570
571 RGBBackColor (GC_BACK_COLOR (gc));
572 SetRect (&r, x, y, x + width, y + height);
573
574 mac_begin_clip (gc);
575 EraseRect (&r);
576 mac_end_clip (gc);
577 560
578 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f))); 561 mac_begin_clip (f, gc);
562 RGBBackColor (GC_BACK_COLOR (gc));
563 SetRect (&r, x, y, x + width, y + height);
564 EraseRect (&r);
565 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
566 mac_end_clip (gc);
567 }
579#endif 568#endif
580} 569}
581 570
@@ -598,15 +587,17 @@ mac_clear_window (f)
598 struct frame *f; 587 struct frame *f;
599{ 588{
600#if USE_CG_DRAWING 589#if USE_CG_DRAWING
601 CGContextRef context; 590 {
602 GC gc = FRAME_NORMAL_GC (f); 591 CGContextRef context;
603 592 GC gc = FRAME_NORMAL_GC (f);
604 context = mac_begin_cg_clip (f, NULL); 593
605 CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc); 594 context = mac_begin_cg_clip (f, NULL);
606 CGContextFillRect (context, CGRectMake (0, 0, FRAME_PIXEL_WIDTH (f), 595 CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc);
607 FRAME_PIXEL_HEIGHT (f))); 596 CGContextFillRect (context, CGRectMake (0, 0, FRAME_PIXEL_WIDTH (f),
608 mac_end_cg_clip (f); 597 FRAME_PIXEL_HEIGHT (f)));
609#else 598 mac_end_cg_clip (f);
599 }
600#else /* !USE_CG_DRAWING */
610 SetPortWindowPort (FRAME_MAC_WINDOW (f)); 601 SetPortWindowPort (FRAME_MAC_WINDOW (f));
611 602
612 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f))); 603 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
@@ -680,13 +671,10 @@ mac_draw_bitmap (f, gc, x, y, width, height, bits, overlay_p)
680 bitmap.baseAddr = (char *)bits; 671 bitmap.baseAddr = (char *)bits;
681 SetRect (&(bitmap.bounds), 0, 0, width, height); 672 SetRect (&(bitmap.bounds), 0, 0, width, height);
682 673
683 SetPortWindowPort (FRAME_MAC_WINDOW (f)); 674 mac_begin_clip (f, gc);
684
685 RGBForeColor (GC_FORE_COLOR (gc)); 675 RGBForeColor (GC_FORE_COLOR (gc));
686 RGBBackColor (GC_BACK_COLOR (gc)); 676 RGBBackColor (GC_BACK_COLOR (gc));
687 SetRect (&r, x, y, x + width, y + height); 677 SetRect (&r, x, y, x + width, y + height);
688
689 mac_begin_clip (gc);
690#if TARGET_API_MAC_CARBON 678#if TARGET_API_MAC_CARBON
691 { 679 {
692 CGrafPtr port; 680 CGrafPtr port;
@@ -701,9 +689,8 @@ mac_draw_bitmap (f, gc, x, y, width, height, bits, overlay_p)
701 CopyBits (&bitmap, &(FRAME_MAC_WINDOW (f)->portBits), &(bitmap.bounds), &r, 689 CopyBits (&bitmap, &(FRAME_MAC_WINDOW (f)->portBits), &(bitmap.bounds), &r,
702 overlay_p ? srcOr : srcCopy, 0); 690 overlay_p ? srcOr : srcCopy, 0);
703#endif /* not TARGET_API_MAC_CARBON */ 691#endif /* not TARGET_API_MAC_CARBON */
704 mac_end_clip (gc);
705
706 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f))); 692 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
693 mac_end_clip (gc);
707} 694}
708#endif /* !USE_CG_DRAWING */ 695#endif /* !USE_CG_DRAWING */
709 696
@@ -754,8 +741,8 @@ mac_free_bitmap (bitmap)
754 741
755Pixmap 742Pixmap
756XCreatePixmap (display, w, width, height, depth) 743XCreatePixmap (display, w, width, height, depth)
757 Display *display; /* not used */ 744 Display *display;
758 WindowPtr w; 745 WindowRef w;
759 unsigned int width, height; 746 unsigned int width, height;
760 unsigned int depth; 747 unsigned int depth;
761{ 748{
@@ -783,8 +770,8 @@ XCreatePixmap (display, w, width, height, depth)
783 770
784Pixmap 771Pixmap
785XCreatePixmapFromBitmapData (display, w, data, width, height, fg, bg, depth) 772XCreatePixmapFromBitmapData (display, w, data, width, height, fg, bg, depth)
786 Display *display; /* not used */ 773 Display *display;
787 WindowPtr w; 774 WindowRef w;
788 char *data; 775 char *data;
789 unsigned int width, height; 776 unsigned int width, height;
790 unsigned long fg, bg; 777 unsigned long fg, bg;
@@ -794,7 +781,7 @@ XCreatePixmapFromBitmapData (display, w, data, width, height, fg, bg, depth)
794 BitMap bitmap; 781 BitMap bitmap;
795 CGrafPtr old_port; 782 CGrafPtr old_port;
796 GDHandle old_gdh; 783 GDHandle old_gdh;
797 static GC gc = NULL; /* not reentrant */ 784 static GC gc = NULL;
798 785
799 if (gc == NULL) 786 if (gc == NULL)
800 gc = XCreateGC (display, w, 0, NULL); 787 gc = XCreateGC (display, w, 0, NULL);
@@ -826,6 +813,15 @@ XCreatePixmapFromBitmapData (display, w, data, width, height, fg, bg, depth)
826} 813}
827 814
828 815
816void
817XFreePixmap (display, pixmap)
818 Display *display;
819 Pixmap pixmap;
820{
821 DisposeGWorld (pixmap);
822}
823
824
829/* Mac replacement for XFillRectangle. */ 825/* Mac replacement for XFillRectangle. */
830 826
831static void 827static void
@@ -845,12 +841,9 @@ mac_fill_rectangle (f, gc, x, y, width, height)
845#else 841#else
846 Rect r; 842 Rect r;
847 843
848 SetPortWindowPort (FRAME_MAC_WINDOW (f)); 844 mac_begin_clip (f, gc);
849
850 RGBForeColor (GC_FORE_COLOR (gc)); 845 RGBForeColor (GC_FORE_COLOR (gc));
851 SetRect (&r, x, y, x + width, y + height); 846 SetRect (&r, x, y, x + width, y + height);
852
853 mac_begin_clip (gc);
854 PaintRect (&r); /* using foreground color of gc */ 847 PaintRect (&r); /* using foreground color of gc */
855 mac_end_clip (gc); 848 mac_end_clip (gc);
856#endif 849#endif
@@ -877,18 +870,34 @@ mac_draw_rectangle (f, gc, x, y, width, height)
877#else 870#else
878 Rect r; 871 Rect r;
879 872
880 SetPortWindowPort (FRAME_MAC_WINDOW (f)); 873 mac_begin_clip (f, gc);
881
882 RGBForeColor (GC_FORE_COLOR (gc)); 874 RGBForeColor (GC_FORE_COLOR (gc));
883 SetRect (&r, x, y, x + width + 1, y + height + 1); 875 SetRect (&r, x, y, x + width + 1, y + height + 1);
884
885 mac_begin_clip (gc);
886 FrameRect (&r); /* using foreground color of gc */ 876 FrameRect (&r); /* using foreground color of gc */
887 mac_end_clip (gc); 877 mac_end_clip (gc);
888#endif 878#endif
889} 879}
890 880
891 881
882static void
883mac_invert_rectangle (f, x, y, width, height)
884 struct frame *f;
885 int x, y;
886 unsigned int width, height;
887{
888 Rect r;
889
890#if USE_CG_DRAWING
891 mac_prepare_for_quickdraw (f);
892#endif
893 SetPortWindowPort (FRAME_MAC_WINDOW (f));
894
895 SetRect (&r, x, y, x + width, y + height);
896
897 InvertRect (&r);
898}
899
900
892#if USE_ATSUI 901#if USE_ATSUI
893static OSStatus 902static OSStatus
894atsu_get_text_layout_with_text_ptr (text, text_length, style, text_layout) 903atsu_get_text_layout_with_text_ptr (text, text_length, style, text_layout)
@@ -898,7 +907,7 @@ atsu_get_text_layout_with_text_ptr (text, text_length, style, text_layout)
898 ATSUTextLayout *text_layout; 907 ATSUTextLayout *text_layout;
899{ 908{
900 OSStatus err; 909 OSStatus err;
901 static ATSUTextLayout saved_text_layout = NULL; /* not reentrant */ 910 static ATSUTextLayout saved_text_layout = NULL;
902 911
903 if (saved_text_layout == NULL) 912 if (saved_text_layout == NULL)
904 { 913 {
@@ -925,7 +934,6 @@ atsu_get_text_layout_with_text_ptr (text, text_length, style, text_layout)
925 err = ATSUSetLayoutControls (saved_text_layout, 934 err = ATSUSetLayoutControls (saved_text_layout,
926 sizeof (tags) / sizeof (tags[0]), 935 sizeof (tags) / sizeof (tags[0]),
927 tags, sizes, values); 936 tags, sizes, values);
928 /* XXX: Should we do this? */
929 if (err == noErr) 937 if (err == noErr)
930 err = ATSUSetTransientFontMatching (saved_text_layout, true); 938 err = ATSUSetTransientFontMatching (saved_text_layout, true);
931 } 939 }
@@ -944,224 +952,224 @@ atsu_get_text_layout_with_text_ptr (text, text_length, style, text_layout)
944 *text_layout = saved_text_layout; 952 *text_layout = saved_text_layout;
945 return err; 953 return err;
946} 954}
947#endif
948 955
949 956
950static void 957static void
951mac_invert_rectangle (f, x, y, width, height) 958mac_draw_image_string_atsui (f, gc, x, y, buf, nchars, bg_width,
952 struct frame *f; 959 overstrike_p, bytes_per_char)
953 int x, y;
954 unsigned int width, height;
955{
956 Rect r;
957
958#if USE_CG_DRAWING
959 mac_prepare_for_quickdraw (f);
960#endif
961 SetPortWindowPort (FRAME_MAC_WINDOW (f));
962
963 SetRect (&r, x, y, x + width, y + height);
964
965 InvertRect (&r);
966}
967
968
969static void
970mac_draw_string_common (f, gc, x, y, buf, nchars, bg_width,
971 overstrike_p, bytes_per_char)
972 struct frame *f; 960 struct frame *f;
973 GC gc; 961 GC gc;
974 int x, y; 962 int x, y;
975 char *buf; 963 char *buf;
976 int nchars, bg_width, overstrike_p, bytes_per_char; 964 int nchars, bg_width, overstrike_p, bytes_per_char;
977{ 965{
978 SetPortWindowPort (FRAME_MAC_WINDOW (f)); 966 OSStatus err;
979 967 ATSUTextLayout text_layout;
980#if USE_ATSUI
981 if (GC_FONT (gc)->mac_style)
982 {
983 OSStatus err;
984 ATSUTextLayout text_layout;
985 968
986 xassert (bytes_per_char == 2); 969 xassert (bytes_per_char == 2);
987 970
988#ifndef WORDS_BIG_ENDIAN 971#ifndef WORDS_BIG_ENDIAN
989 { 972 {
990 int i; 973 int i;
991 UniChar *text = (UniChar *)buf; 974 UniChar *text = (UniChar *)buf;
992 975
993 for (i = 0; i < nchars; i++) 976 for (i = 0; i < nchars; i++)
994 text[i] = EndianU16_BtoN (text[i]); 977 text[i] = EndianU16_BtoN (text[i]);
995 } 978 }
996#endif 979#endif
997 err = atsu_get_text_layout_with_text_ptr ((ConstUniCharArrayPtr)buf, 980 err = atsu_get_text_layout_with_text_ptr ((ConstUniCharArrayPtr)buf,
998 nchars, 981 nchars,
999 GC_FONT (gc)->mac_style, 982 GC_FONT (gc)->mac_style,
1000 &text_layout); 983 &text_layout);
1001 if (err != noErr) 984 if (err != noErr)
1002 return; 985 return;
1003#ifdef MAC_OSX 986#ifdef MAC_OSX
1004 if (!mac_use_core_graphics) 987 if (!mac_use_core_graphics)
1005 { 988 {
1006#endif
1007#if USE_CG_DRAWING
1008 mac_prepare_for_quickdraw (f);
1009#endif 989#endif
1010 mac_begin_clip (gc); 990 mac_begin_clip (f, gc);
1011 RGBForeColor (GC_FORE_COLOR (gc)); 991 RGBForeColor (GC_FORE_COLOR (gc));
1012 if (bg_width) 992 if (bg_width)
1013 { 993 {
1014 Rect r; 994 Rect r;
1015 995
1016 SetRect (&r, x, y - FONT_BASE (GC_FONT (gc)), 996 SetRect (&r, x, y - FONT_BASE (GC_FONT (gc)),
1017 x + bg_width, y + FONT_DESCENT (GC_FONT (gc))); 997 x + bg_width, y + FONT_DESCENT (GC_FONT (gc)));
1018 RGBBackColor (GC_BACK_COLOR (gc)); 998 RGBBackColor (GC_BACK_COLOR (gc));
1019 EraseRect (&r); 999 EraseRect (&r);
1020 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f))); 1000 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
1021 } 1001 }
1022 MoveTo (x, y); 1002 MoveTo (x, y);
1003 ATSUDrawText (text_layout,
1004 kATSUFromTextBeginning, kATSUToTextEnd,
1005 kATSUUseGrafPortPenLoc, kATSUUseGrafPortPenLoc);
1006 if (overstrike_p)
1007 {
1008 MoveTo (x + 1, y);
1023 ATSUDrawText (text_layout, 1009 ATSUDrawText (text_layout,
1024 kATSUFromTextBeginning, kATSUToTextEnd, 1010 kATSUFromTextBeginning, kATSUToTextEnd,
1025 kATSUUseGrafPortPenLoc, kATSUUseGrafPortPenLoc); 1011 kATSUUseGrafPortPenLoc, kATSUUseGrafPortPenLoc);
1026 if (overstrike_p)
1027 {
1028 MoveTo (x + 1, y);
1029 ATSUDrawText (text_layout,
1030 kATSUFromTextBeginning, kATSUToTextEnd,
1031 kATSUUseGrafPortPenLoc, kATSUUseGrafPortPenLoc);
1032 }
1033 mac_end_clip (gc);
1034#ifdef MAC_OSX
1035 } 1012 }
1036 else 1013 mac_end_clip (gc);
1037 { 1014#ifdef MAC_OSX
1038 CGrafPtr port; 1015 }
1039 static CGContextRef context; 1016 else
1040 float port_height = FRAME_PIXEL_HEIGHT (f); 1017 {
1041 static const ATSUAttributeTag tags[] = {kATSUCGContextTag}; 1018 static CGContextRef context;
1042 static const ByteCount sizes[] = {sizeof (CGContextRef)}; 1019 float port_height = FRAME_PIXEL_HEIGHT (f);
1043 static const ATSUAttributeValuePtr values[] = {&context}; 1020 static const ATSUAttributeTag tags[] = {kATSUCGContextTag};
1021 static const ByteCount sizes[] = {sizeof (CGContextRef)};
1022 static const ATSUAttributeValuePtr values[] = {&context};
1044 1023
1045#if USE_CG_DRAWING 1024#if USE_CG_DRAWING
1046 context = mac_begin_cg_clip (f, gc); 1025 context = mac_begin_cg_clip (f, gc);
1047#else 1026#else
1048 GetPort (&port); 1027 CGrafPtr port;
1049 QDBeginCGContext (port, &context); 1028
1050 if (gc->n_clip_rects || bg_width) 1029 GetPort (&port);
1051 { 1030 QDBeginCGContext (port, &context);
1052 CGContextTranslateCTM (context, 0, port_height); 1031 if (gc->n_clip_rects || bg_width)
1053 CGContextScaleCTM (context, 1, -1); 1032 {
1054 if (gc->n_clip_rects) 1033 CGContextTranslateCTM (context, 0, port_height);
1055 CGContextClipToRects (context, gc->clip_rects, 1034 CGContextScaleCTM (context, 1, -1);
1056 gc->n_clip_rects); 1035 if (gc->n_clip_rects)
1057#endif 1036 CGContextClipToRects (context, gc->clip_rects,
1058 if (bg_width) 1037 gc->n_clip_rects);
1059 {
1060 CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc);
1061 CGContextFillRect
1062 (context,
1063 CGRectMake (x, y - FONT_BASE (GC_FONT (gc)),
1064 bg_width, FONT_HEIGHT (GC_FONT (gc))));
1065 }
1066 CGContextScaleCTM (context, 1, -1);
1067 CGContextTranslateCTM (context, 0, -port_height);
1068#if !USE_CG_DRAWING
1069 }
1070#endif 1038#endif
1071 CG_SET_FILL_COLOR_WITH_GC_FOREGROUND (context, gc); 1039 if (bg_width)
1072 err = ATSUSetLayoutControls (text_layout,
1073 sizeof (tags) / sizeof (tags[0]),
1074 tags, sizes, values);
1075 if (err == noErr)
1076 { 1040 {
1077 ATSUDrawText (text_layout, 1041 CG_SET_FILL_COLOR_WITH_GC_BACKGROUND (context, gc);
1078 kATSUFromTextBeginning, kATSUToTextEnd, 1042 CGContextFillRect (context,
1079 Long2Fix (x), Long2Fix (port_height - y)); 1043 CGRectMake (x, y - FONT_BASE (GC_FONT (gc)),
1080 if (overstrike_p) 1044 bg_width,
1081 ATSUDrawText (text_layout, 1045 FONT_HEIGHT (GC_FONT (gc))));
1082 kATSUFromTextBeginning, kATSUToTextEnd,
1083 Long2Fix (x + 1), Long2Fix (port_height - y));
1084 } 1046 }
1047 CGContextScaleCTM (context, 1, -1);
1048 CGContextTranslateCTM (context, 0, -port_height);
1049#if !USE_CG_DRAWING
1050 }
1051#endif
1052 CG_SET_FILL_COLOR_WITH_GC_FOREGROUND (context, gc);
1053 err = ATSUSetLayoutControls (text_layout,
1054 sizeof (tags) / sizeof (tags[0]),
1055 tags, sizes, values);
1056 if (err == noErr)
1057 {
1058 ATSUDrawText (text_layout,
1059 kATSUFromTextBeginning, kATSUToTextEnd,
1060 Long2Fix (x), Long2Fix (port_height - y));
1061 if (overstrike_p)
1062 ATSUDrawText (text_layout,
1063 kATSUFromTextBeginning, kATSUToTextEnd,
1064 Long2Fix (x + 1), Long2Fix (port_height - y));
1065 }
1085#if USE_CG_DRAWING 1066#if USE_CG_DRAWING
1086 mac_end_cg_clip (f); 1067 mac_end_cg_clip (f);
1087 context = NULL; 1068 context = NULL;
1088#else 1069#else
1089 CGContextSynchronize (context); 1070 CGContextSynchronize (context);
1090 QDEndCGContext (port, &context); 1071 QDEndCGContext (port, &context);
1091#endif 1072#endif
1092#if 0 1073#if 0
1093 /* This doesn't work on Mac OS X 10.1. */ 1074 /* This doesn't work on Mac OS X 10.1. */
1094 ATSUClearLayoutControls (text_layout, 1075 ATSUClearLayoutControls (text_layout,
1095 sizeof (tags) / sizeof (tags[0]), tags); 1076 sizeof (tags) / sizeof (tags[0]), tags);
1096#else 1077#else
1097 ATSUSetLayoutControls (text_layout, 1078 ATSUSetLayoutControls (text_layout,
1098 sizeof (tags) / sizeof (tags[0]), 1079 sizeof (tags) / sizeof (tags[0]),
1099 tags, sizes, values); 1080 tags, sizes, values);
1100#endif 1081#endif
1101 }
1102#endif /* MAC_OSX */
1103 } 1082 }
1104 else 1083#endif /* MAC_OSX */
1084}
1105#endif /* USE_ATSUI */ 1085#endif /* USE_ATSUI */
1106 {
1107#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
1108 UInt32 savedFlags;
1109 1086
1110 if (mac_use_core_graphics) 1087
1111 savedFlags = SwapQDTextFlags (kQDUseCGTextRendering); 1088static void
1089mac_draw_image_string_qd (f, gc, x, y, buf, nchars, bg_width,
1090 overstrike_p, bytes_per_char)
1091 struct frame *f;
1092 GC gc;
1093 int x, y;
1094 char *buf;
1095 int nchars, bg_width, overstrike_p, bytes_per_char;
1096{
1097#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
1098 UInt32 savedFlags;
1112#endif 1099#endif
1113#if USE_CG_DRAWING 1100
1114 mac_prepare_for_quickdraw (f); 1101 mac_begin_clip (f, gc);
1102#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
1103 if (mac_use_core_graphics)
1104 savedFlags = SwapQDTextFlags (kQDUseCGTextRendering);
1115#endif 1105#endif
1116 mac_begin_clip (gc); 1106 RGBForeColor (GC_FORE_COLOR (gc));
1117 RGBForeColor (GC_FORE_COLOR (gc));
1118#ifdef MAC_OS8 1107#ifdef MAC_OS8
1119 if (bg_width) 1108 if (bg_width)
1120 { 1109 {
1121 RGBBackColor (GC_BACK_COLOR (gc)); 1110 RGBBackColor (GC_BACK_COLOR (gc));
1122 TextMode (srcCopy); 1111 TextMode (srcCopy);
1123 } 1112 }
1124 else 1113 else
1125 TextMode (srcOr); 1114 TextMode (srcOr);
1126#else 1115#else
1127 /* We prefer not to use srcCopy text transfer mode on Mac OS X 1116 /* We prefer not to use srcCopy text transfer mode on Mac OS X
1128 because: 1117 because:
1129 - Screen is double-buffered. (In srcCopy mode, a text is 1118 - Screen is double-buffered. (In srcCopy mode, a text is drawn
1130 drawn into an offscreen graphics world first. So 1119 into an offscreen graphics world first. So performance gain
1131 performance gain cannot be expected.) 1120 cannot be expected.)
1132 - It lowers rendering quality. 1121 - It lowers rendering quality.
1133 - Some fonts leave garbage on cursor movement. */ 1122 - Some fonts leave garbage on cursor movement. */
1134 if (bg_width) 1123 if (bg_width)
1135 { 1124 {
1136 Rect r; 1125 Rect r;
1137 1126
1138 RGBBackColor (GC_BACK_COLOR (gc)); 1127 RGBBackColor (GC_BACK_COLOR (gc));
1139 SetRect (&r, x, y - FONT_BASE (GC_FONT (gc)), 1128 SetRect (&r, x, y - FONT_BASE (GC_FONT (gc)),
1140 x + bg_width, y + FONT_DESCENT (GC_FONT (gc))); 1129 x + bg_width, y + FONT_DESCENT (GC_FONT (gc)));
1141 EraseRect (&r); 1130 EraseRect (&r);
1142 } 1131 }
1143 TextMode (srcOr); 1132 TextMode (srcOr);
1144#endif 1133#endif
1145 TextFont (GC_FONT (gc)->mac_fontnum); 1134 TextFont (GC_FONT (gc)->mac_fontnum);
1146 TextSize (GC_FONT (gc)->mac_fontsize); 1135 TextSize (GC_FONT (gc)->mac_fontsize);
1147 TextFace (GC_FONT (gc)->mac_fontface); 1136 TextFace (GC_FONT (gc)->mac_fontface);
1148 MoveTo (x, y); 1137 MoveTo (x, y);
1138 DrawText (buf, 0, nchars * bytes_per_char);
1139 if (overstrike_p)
1140 {
1141 TextMode (srcOr);
1142 MoveTo (x + 1, y);
1149 DrawText (buf, 0, nchars * bytes_per_char); 1143 DrawText (buf, 0, nchars * bytes_per_char);
1150 if (overstrike_p) 1144 }
1151 { 1145 if (bg_width)
1152 TextMode (srcOr); 1146 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
1153 MoveTo (x + 1, y); 1147 mac_end_clip (gc);
1154 DrawText (buf, 0, nchars * bytes_per_char);
1155 }
1156 if (bg_width)
1157 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
1158 mac_end_clip (gc);
1159 1148
1160#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020 1149#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
1161 if (mac_use_core_graphics) 1150 if (mac_use_core_graphics)
1162 SwapQDTextFlags(savedFlags); 1151 SwapQDTextFlags(savedFlags);
1163#endif 1152#endif
1164 } 1153}
1154
1155
1156static INLINE void
1157mac_draw_string_common (f, gc, x, y, buf, nchars, bg_width,
1158 overstrike_p, bytes_per_char)
1159 struct frame *f;
1160 GC gc;
1161 int x, y;
1162 char *buf;
1163 int nchars, bg_width, overstrike_p, bytes_per_char;
1164{
1165#if USE_ATSUI
1166 if (GC_FONT (gc)->mac_style)
1167 mac_draw_image_string_atsui (f, gc, x, y, buf, nchars, bg_width,
1168 overstrike_p, bytes_per_char);
1169 else
1170#endif /* USE_ATSUI */
1171 mac_draw_image_string_qd (f, gc, x, y, buf, nchars, bg_width,
1172 overstrike_p, bytes_per_char);
1165} 1173}
1166 1174
1167 1175
@@ -1378,7 +1386,6 @@ mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
1378 XChar2b *buf; 1386 XChar2b *buf;
1379 int nchars, bg_width, overstrike_p; 1387 int nchars, bg_width, overstrike_p;
1380{ 1388{
1381 CGrafPtr port;
1382 float port_height, gx, gy; 1389 float port_height, gx, gy;
1383 int i; 1390 int i;
1384 CGContextRef context; 1391 CGContextRef context;
@@ -1388,7 +1395,6 @@ mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
1388 if (!mac_use_core_graphics || GC_FONT (gc)->cg_font == NULL) 1395 if (!mac_use_core_graphics || GC_FONT (gc)->cg_font == NULL)
1389 return 0; 1396 return 0;
1390 1397
1391 port = GetWindowPort (FRAME_MAC_WINDOW (f));
1392 port_height = FRAME_PIXEL_HEIGHT (f); 1398 port_height = FRAME_PIXEL_HEIGHT (f);
1393 gx = x; 1399 gx = x;
1394 gy = port_height - y; 1400 gy = port_height - y;
@@ -1409,7 +1415,7 @@ mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
1409#if USE_CG_DRAWING 1415#if USE_CG_DRAWING
1410 context = mac_begin_cg_clip (f, gc); 1416 context = mac_begin_cg_clip (f, gc);
1411#else 1417#else
1412 QDBeginCGContext (port, &context); 1418 QDBeginCGContext (GetWindowPort (FRAME_MAC_WINDOW (f)), &context);
1413 if (gc->n_clip_rects || bg_width) 1419 if (gc->n_clip_rects || bg_width)
1414 { 1420 {
1415 CGContextTranslateCTM (context, 0, port_height); 1421 CGContextTranslateCTM (context, 0, port_height);
@@ -1449,7 +1455,7 @@ mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
1449 } 1455 }
1450 } 1456 }
1451#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020 1457#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
1452 else 1458 else /* CGContextShowGlyphsWithAdvances == NULL */
1453#endif 1459#endif
1454#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 */ 1460#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 */
1455#if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020 1461#if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020
@@ -1467,7 +1473,7 @@ mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
1467 mac_end_cg_clip (f); 1473 mac_end_cg_clip (f);
1468#else 1474#else
1469 CGContextSynchronize (context); 1475 CGContextSynchronize (context);
1470 QDEndCGContext (port, &context); 1476 QDEndCGContext (GetWindowPort (FRAME_MAC_WINDOW (f)), &context);
1471#endif 1477#endif
1472 1478
1473 return 1; 1479 return 1;
@@ -1489,7 +1495,7 @@ mac_copy_area (src, f, gc, src_x, src_y, width, height, dest_x, dest_y)
1489{ 1495{
1490 Rect src_r, dest_r; 1496 Rect src_r, dest_r;
1491 1497
1492 SetPortWindowPort (FRAME_MAC_WINDOW (f)); 1498 mac_begin_clip (f, gc);
1493 1499
1494 SetRect (&src_r, src_x, src_y, src_x + width, src_y + height); 1500 SetRect (&src_r, src_x, src_y, src_x + width, src_y + height);
1495 SetRect (&dest_r, dest_x, dest_y, dest_x + width, dest_y + height); 1501 SetRect (&dest_r, dest_x, dest_y, dest_x + width, dest_y + height);
@@ -1497,7 +1503,6 @@ mac_copy_area (src, f, gc, src_x, src_y, width, height, dest_x, dest_y)
1497 ForeColor (blackColor); 1503 ForeColor (blackColor);
1498 BackColor (whiteColor); 1504 BackColor (whiteColor);
1499 1505
1500 mac_begin_clip (gc);
1501 LockPixels (GetGWorldPixMap (src)); 1506 LockPixels (GetGWorldPixMap (src));
1502#if TARGET_API_MAC_CARBON 1507#if TARGET_API_MAC_CARBON
1503 { 1508 {
@@ -1515,9 +1520,10 @@ mac_copy_area (src, f, gc, src_x, src_y, width, height, dest_x, dest_y)
1515 &src_r, &dest_r, srcCopy, 0); 1520 &src_r, &dest_r, srcCopy, 0);
1516#endif /* not TARGET_API_MAC_CARBON */ 1521#endif /* not TARGET_API_MAC_CARBON */
1517 UnlockPixels (GetGWorldPixMap (src)); 1522 UnlockPixels (GetGWorldPixMap (src));
1518 mac_end_clip (gc);
1519 1523
1520 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f))); 1524 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
1525
1526 mac_end_clip (gc);
1521} 1527}
1522 1528
1523 1529
@@ -1533,7 +1539,7 @@ mac_copy_area_with_mask (src, mask, f, gc, src_x, src_y,
1533{ 1539{
1534 Rect src_r, dest_r; 1540 Rect src_r, dest_r;
1535 1541
1536 SetPortWindowPort (FRAME_MAC_WINDOW (f)); 1542 mac_begin_clip (f, gc);
1537 1543
1538 SetRect (&src_r, src_x, src_y, src_x + width, src_y + height); 1544 SetRect (&src_r, src_x, src_y, src_x + width, src_y + height);
1539 SetRect (&dest_r, dest_x, dest_y, dest_x + width, dest_y + height); 1545 SetRect (&dest_r, dest_x, dest_y, dest_x + width, dest_y + height);
@@ -1541,7 +1547,6 @@ mac_copy_area_with_mask (src, mask, f, gc, src_x, src_y,
1541 ForeColor (blackColor); 1547 ForeColor (blackColor);
1542 BackColor (whiteColor); 1548 BackColor (whiteColor);
1543 1549
1544 mac_begin_clip (gc);
1545 LockPixels (GetGWorldPixMap (src)); 1550 LockPixels (GetGWorldPixMap (src));
1546 LockPixels (GetGWorldPixMap (mask)); 1551 LockPixels (GetGWorldPixMap (mask));
1547#if TARGET_API_MAC_CARBON 1552#if TARGET_API_MAC_CARBON
@@ -1561,9 +1566,10 @@ mac_copy_area_with_mask (src, mask, f, gc, src_x, src_y,
1561#endif /* not TARGET_API_MAC_CARBON */ 1566#endif /* not TARGET_API_MAC_CARBON */
1562 UnlockPixels (GetGWorldPixMap (mask)); 1567 UnlockPixels (GetGWorldPixMap (mask));
1563 UnlockPixels (GetGWorldPixMap (src)); 1568 UnlockPixels (GetGWorldPixMap (src));
1564 mac_end_clip (gc);
1565 1569
1566 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f))); 1570 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
1571
1572 mac_end_clip (gc);
1567} 1573}
1568#endif /* !USE_CG_DRAWING */ 1574#endif /* !USE_CG_DRAWING */
1569 1575
@@ -1592,9 +1598,9 @@ mac_scroll_area (f, gc, src_x, src_y, width, height, dest_x, dest_y)
1592 DisposeRgn (dummy); 1598 DisposeRgn (dummy);
1593#else /* not TARGET_API_MAC_CARBON */ 1599#else /* not TARGET_API_MAC_CARBON */
1594 Rect src_r, dest_r; 1600 Rect src_r, dest_r;
1595 WindowPtr w = FRAME_MAC_WINDOW (f); 1601 WindowRef w = FRAME_MAC_WINDOW (f);
1596 1602
1597 SetPort (w); 1603 mac_begin_clip (f, gc);
1598 1604
1599 SetRect (&src_r, src_x, src_y, src_x + width, src_y + height); 1605 SetRect (&src_r, src_x, src_y, src_x + width, src_y + height);
1600 SetRect (&dest_r, dest_x, dest_y, dest_x + width, dest_y + height); 1606 SetRect (&dest_r, dest_x, dest_y, dest_x + width, dest_y + height);
@@ -1603,11 +1609,11 @@ mac_scroll_area (f, gc, src_x, src_y, width, height, dest_x, dest_y)
1603 color mapping in CopyBits. Otherwise, it will be slow. */ 1609 color mapping in CopyBits. Otherwise, it will be slow. */
1604 ForeColor (blackColor); 1610 ForeColor (blackColor);
1605 BackColor (whiteColor); 1611 BackColor (whiteColor);
1606 mac_begin_clip (gc);
1607 CopyBits (&(w->portBits), &(w->portBits), &src_r, &dest_r, srcCopy, 0); 1612 CopyBits (&(w->portBits), &(w->portBits), &src_r, &dest_r, srcCopy, 0);
1608 mac_end_clip (gc);
1609 1613
1610 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f))); 1614 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
1615
1616 mac_end_clip (gc);
1611#endif /* not TARGET_API_MAC_CARBON */ 1617#endif /* not TARGET_API_MAC_CARBON */
1612} 1618}
1613 1619
@@ -1852,7 +1858,7 @@ mac_reset_clip_rectangles (display, gc)
1852void 1858void
1853XSetWindowBackground (display, w, color) 1859XSetWindowBackground (display, w, color)
1854 Display *display; 1860 Display *display;
1855 WindowPtr w; 1861 WindowRef w;
1856 unsigned long color; 1862 unsigned long color;
1857{ 1863{
1858#if !TARGET_API_MAC_CARBON 1864#if !TARGET_API_MAC_CARBON
@@ -4368,7 +4374,7 @@ x_detect_focus_change (dpyinfo, event, bufp)
4368{ 4374{
4369 struct frame *frame; 4375 struct frame *frame;
4370 4376
4371 frame = mac_window_to_frame ((WindowPtr) event->message); 4377 frame = mac_window_to_frame ((WindowRef) event->message);
4372 if (! frame) 4378 if (! frame)
4373 return; 4379 return;
4374 4380
@@ -4608,8 +4614,14 @@ XTmouse_position (fp, insist, bar_window, part, x, y, time)
4608 the frame are divided into. */ 4614 the frame are divided into. */
4609 Point mouse_pos; 4615 Point mouse_pos;
4610 4616
4617#if TARGET_API_MAC_CARBON
4618 GetGlobalMouse (&mouse_pos);
4619 mouse_pos.h -= f1->left_pos + FRAME_OUTER_TO_INNER_DIFF_X (f1);
4620 mouse_pos.v -= f1->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f1);
4621#else
4611 SetPortWindowPort (FRAME_MAC_WINDOW (f1)); 4622 SetPortWindowPort (FRAME_MAC_WINDOW (f1));
4612 GetMouse (&mouse_pos); 4623 GetMouse (&mouse_pos);
4624#endif
4613 remember_mouse_glyph (f1, mouse_pos.h, mouse_pos.v, 4625 remember_mouse_glyph (f1, mouse_pos.h, mouse_pos.v,
4614 &last_mouse_glyph); 4626 &last_mouse_glyph);
4615 last_mouse_glyph_frame = f1; 4627 last_mouse_glyph_frame = f1;
@@ -4639,14 +4651,14 @@ static OSStatus set_scroll_bar_timer P_ ((EventTimerInterval));
4639static int control_part_code_to_scroll_bar_part P_ ((ControlPartCode)); 4651static int control_part_code_to_scroll_bar_part P_ ((ControlPartCode));
4640static void construct_scroll_bar_click P_ ((struct scroll_bar *, int, 4652static void construct_scroll_bar_click P_ ((struct scroll_bar *, int,
4641 struct input_event *)); 4653 struct input_event *));
4642static OSStatus get_control_part_bounds P_ ((ControlHandle, ControlPartCode, 4654static OSStatus get_control_part_bounds P_ ((ControlRef, ControlPartCode,
4643 Rect *)); 4655 Rect *));
4644static void x_scroll_bar_handle_press P_ ((struct scroll_bar *, 4656static void x_scroll_bar_handle_press P_ ((struct scroll_bar *,
4645 ControlPartCode, Point, 4657 ControlPartCode, Point,
4646 struct input_event *)); 4658 struct input_event *));
4647static void x_scroll_bar_handle_release P_ ((struct scroll_bar *, 4659static void x_scroll_bar_handle_release P_ ((struct scroll_bar *,
4648 struct input_event *)); 4660 struct input_event *));
4649static void x_scroll_bar_handle_drag P_ ((WindowPtr, struct scroll_bar *, 4661static void x_scroll_bar_handle_drag P_ ((WindowRef, struct scroll_bar *,
4650 Point, struct input_event *)); 4662 Point, struct input_event *));
4651static void x_set_toolkit_scroll_bar_thumb P_ ((struct scroll_bar *, 4663static void x_set_toolkit_scroll_bar_thumb P_ ((struct scroll_bar *,
4652 int, int, int)); 4664 int, int, int));
@@ -4739,7 +4751,7 @@ construct_scroll_bar_click (bar, part, bufp)
4739 4751
4740static OSStatus 4752static OSStatus
4741get_control_part_bounds (ch, part_code, rect) 4753get_control_part_bounds (ch, part_code, rect)
4742 ControlHandle ch; 4754 ControlRef ch;
4743 ControlPartCode part_code; 4755 ControlPartCode part_code;
4744 Rect *rect; 4756 Rect *rect;
4745{ 4757{
@@ -4769,7 +4781,7 @@ x_scroll_bar_handle_press (bar, part_code, mouse_pos, bufp)
4769 if (part != scroll_bar_handle) 4781 if (part != scroll_bar_handle)
4770 { 4782 {
4771 construct_scroll_bar_click (bar, part, bufp); 4783 construct_scroll_bar_click (bar, part, bufp);
4772 HiliteControl (SCROLL_BAR_CONTROL_HANDLE (bar), part_code); 4784 HiliteControl (SCROLL_BAR_CONTROL_REF (bar), part_code);
4773 set_scroll_bar_timer (SCROLL_BAR_FIRST_DELAY); 4785 set_scroll_bar_timer (SCROLL_BAR_FIRST_DELAY);
4774 bar->dragging = Qnil; 4786 bar->dragging = Qnil;
4775 } 4787 }
@@ -4777,7 +4789,7 @@ x_scroll_bar_handle_press (bar, part_code, mouse_pos, bufp)
4777 { 4789 {
4778 Rect r; 4790 Rect r;
4779 4791
4780 get_control_part_bounds (SCROLL_BAR_CONTROL_HANDLE (bar), 4792 get_control_part_bounds (SCROLL_BAR_CONTROL_REF (bar),
4781 kControlIndicatorPart, &r); 4793 kControlIndicatorPart, &r);
4782 XSETINT (bar->dragging, - (mouse_pos.v - r.top) - 1); 4794 XSETINT (bar->dragging, - (mouse_pos.v - r.top) - 1);
4783 } 4795 }
@@ -4795,7 +4807,7 @@ x_scroll_bar_handle_release (bar, bufp)
4795 || (INTEGERP (bar->dragging) && XINT (bar->dragging) >= 0)) 4807 || (INTEGERP (bar->dragging) && XINT (bar->dragging) >= 0))
4796 construct_scroll_bar_click (bar, scroll_bar_end_scroll, bufp); 4808 construct_scroll_bar_click (bar, scroll_bar_end_scroll, bufp);
4797 4809
4798 HiliteControl (SCROLL_BAR_CONTROL_HANDLE (bar), 0); 4810 HiliteControl (SCROLL_BAR_CONTROL_REF (bar), 0);
4799 set_scroll_bar_timer (kEventDurationForever); 4811 set_scroll_bar_timer (kEventDurationForever);
4800 4812
4801 last_scroll_bar_part = -1; 4813 last_scroll_bar_part = -1;
@@ -4805,19 +4817,19 @@ x_scroll_bar_handle_release (bar, bufp)
4805 4817
4806static void 4818static void
4807x_scroll_bar_handle_drag (win, bar, mouse_pos, bufp) 4819x_scroll_bar_handle_drag (win, bar, mouse_pos, bufp)
4808 WindowPtr win; 4820 WindowRef win;
4809 struct scroll_bar *bar; 4821 struct scroll_bar *bar;
4810 Point mouse_pos; 4822 Point mouse_pos;
4811 struct input_event *bufp; 4823 struct input_event *bufp;
4812{ 4824{
4813 ControlHandle ch = SCROLL_BAR_CONTROL_HANDLE (bar); 4825 ControlRef ch = SCROLL_BAR_CONTROL_REF (bar);
4814 4826
4815 if (last_scroll_bar_part == scroll_bar_handle) 4827 if (last_scroll_bar_part == scroll_bar_handle)
4816 { 4828 {
4817 int top, top_range; 4829 int top, top_range;
4818 Rect r; 4830 Rect r;
4819 4831
4820 get_control_part_bounds (SCROLL_BAR_CONTROL_HANDLE (bar), 4832 get_control_part_bounds (SCROLL_BAR_CONTROL_REF (bar),
4821 kControlIndicatorPart, &r); 4833 kControlIndicatorPart, &r);
4822 4834
4823 if (INTEGERP (bar->dragging) && XINT (bar->dragging) < 0) 4835 if (INTEGERP (bar->dragging) && XINT (bar->dragging) < 0)
@@ -4865,13 +4877,13 @@ x_scroll_bar_handle_drag (win, bar, mouse_pos, bufp)
4865 } 4877 }
4866 4878
4867 if (unhilite_p) 4879 if (unhilite_p)
4868 HiliteControl (SCROLL_BAR_CONTROL_HANDLE (bar), 0); 4880 HiliteControl (SCROLL_BAR_CONTROL_REF (bar), 0);
4869 else if (part != last_scroll_bar_part 4881 else if (part != last_scroll_bar_part
4870 || scroll_bar_timer_event_posted_p) 4882 || scroll_bar_timer_event_posted_p)
4871 { 4883 {
4872 construct_scroll_bar_click (bar, part, bufp); 4884 construct_scroll_bar_click (bar, part, bufp);
4873 last_scroll_bar_part = part; 4885 last_scroll_bar_part = part;
4874 HiliteControl (SCROLL_BAR_CONTROL_HANDLE (bar), part_code); 4886 HiliteControl (SCROLL_BAR_CONTROL_REF (bar), part_code);
4875 set_scroll_bar_timer (SCROLL_BAR_CONTINUOUS_DELAY); 4887 set_scroll_bar_timer (SCROLL_BAR_CONTINUOUS_DELAY);
4876 } 4888 }
4877 } 4889 }
@@ -4885,7 +4897,7 @@ x_set_toolkit_scroll_bar_thumb (bar, portion, position, whole)
4885 struct scroll_bar *bar; 4897 struct scroll_bar *bar;
4886 int portion, position, whole; 4898 int portion, position, whole;
4887{ 4899{
4888 ControlHandle ch = SCROLL_BAR_CONTROL_HANDLE (bar); 4900 ControlRef ch = SCROLL_BAR_CONTROL_REF (bar);
4889 int value, viewsize, maximum; 4901 int value, viewsize, maximum;
4890 4902
4891 if (XINT (bar->track_height) == 0) 4903 if (XINT (bar->track_height) == 0)
@@ -4944,7 +4956,7 @@ x_scroll_bar_create (w, top, left, width, height, disp_top, disp_height)
4944 struct scroll_bar *bar 4956 struct scroll_bar *bar
4945 = XSCROLL_BAR (Fmake_vector (make_number (SCROLL_BAR_VEC_SIZE), Qnil)); 4957 = XSCROLL_BAR (Fmake_vector (make_number (SCROLL_BAR_VEC_SIZE), Qnil));
4946 Rect r; 4958 Rect r;
4947 ControlHandle ch; 4959 ControlRef ch;
4948 4960
4949 BLOCK_INPUT; 4961 BLOCK_INPUT;
4950 4962
@@ -4968,7 +4980,7 @@ x_scroll_bar_create (w, top, left, width, height, disp_top, disp_height)
4968 ch = NewControl (FRAME_MAC_WINDOW (f), &r, "\p", width < disp_height, 4980 ch = NewControl (FRAME_MAC_WINDOW (f), &r, "\p", width < disp_height,
4969 0, 0, 0, scrollBarProc, (long) bar); 4981 0, 0, 0, scrollBarProc, (long) bar);
4970#endif 4982#endif
4971 SET_SCROLL_BAR_CONTROL_HANDLE (bar, ch); 4983 SET_SCROLL_BAR_CONTROL_REF (bar, ch);
4972 4984
4973 XSETWINDOW (bar->window, w); 4985 XSETWINDOW (bar->window, w);
4974 XSETINT (bar->top, top); 4986 XSETINT (bar->top, top);
@@ -5018,7 +5030,7 @@ x_scroll_bar_set_handle (bar, start, end, rebuild)
5018 int rebuild; 5030 int rebuild;
5019{ 5031{
5020 int dragging = ! NILP (bar->dragging); 5032 int dragging = ! NILP (bar->dragging);
5021 ControlHandle ch = SCROLL_BAR_CONTROL_HANDLE (bar); 5033 ControlRef ch = SCROLL_BAR_CONTROL_REF (bar);
5022 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); 5034 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)));
5023 int top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)); 5035 int top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height));
5024 int length = end - start; 5036 int length = end - start;
@@ -5087,7 +5099,7 @@ x_scroll_bar_remove (bar)
5087 mac_prepare_for_quickdraw (f); 5099 mac_prepare_for_quickdraw (f);
5088#endif 5100#endif
5089 /* Destroy the Mac scroll bar control */ 5101 /* Destroy the Mac scroll bar control */
5090 DisposeControl (SCROLL_BAR_CONTROL_HANDLE (bar)); 5102 DisposeControl (SCROLL_BAR_CONTROL_REF (bar));
5091 5103
5092 /* Disassociate this scroll bar from its window. */ 5104 /* Disassociate this scroll bar from its window. */
5093 XWINDOW (bar->window)->vertical_scroll_bar = Qnil; 5105 XWINDOW (bar->window)->vertical_scroll_bar = Qnil;
@@ -5165,10 +5177,10 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
5165 else 5177 else
5166 { 5178 {
5167 /* It may just need to be moved and resized. */ 5179 /* It may just need to be moved and resized. */
5168 ControlHandle ch; 5180 ControlRef ch;
5169 5181
5170 bar = XSCROLL_BAR (w->vertical_scroll_bar); 5182 bar = XSCROLL_BAR (w->vertical_scroll_bar);
5171 ch = SCROLL_BAR_CONTROL_HANDLE (bar); 5183 ch = SCROLL_BAR_CONTROL_REF (bar);
5172 5184
5173 BLOCK_INPUT; 5185 BLOCK_INPUT;
5174 5186
@@ -5224,7 +5236,7 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
5224 } 5236 }
5225 else 5237 else
5226 { 5238 {
5227 ControlHandle ch = SCROLL_BAR_CONTROL_HANDLE (bar); 5239 ControlRef ch = SCROLL_BAR_CONTROL_REF (bar);
5228 Rect r0, r1; 5240 Rect r0, r1;
5229 5241
5230 BLOCK_INPUT; 5242 BLOCK_INPUT;
@@ -5501,19 +5513,24 @@ x_scroll_bar_report_motion (fp, bar_window, part, x, y, time)
5501 unsigned long *time; 5513 unsigned long *time;
5502{ 5514{
5503 struct scroll_bar *bar = XSCROLL_BAR (last_mouse_scroll_bar); 5515 struct scroll_bar *bar = XSCROLL_BAR (last_mouse_scroll_bar);
5504 ControlHandle ch = SCROLL_BAR_CONTROL_HANDLE (bar); 5516 ControlRef ch = SCROLL_BAR_CONTROL_REF (bar);
5505#if TARGET_API_MAC_CARBON 5517#if TARGET_API_MAC_CARBON
5506 WindowPtr wp = GetControlOwner (ch); 5518 WindowRef wp = GetControlOwner (ch);
5507#else 5519#else
5508 WindowPtr wp = (*ch)->contrlOwner; 5520 WindowRef wp = (*ch)->contrlOwner;
5509#endif 5521#endif
5510 Point mouse_pos; 5522 Point mouse_pos;
5511 struct frame *f = mac_window_to_frame (wp); 5523 struct frame *f = mac_window_to_frame (wp);
5512 int win_y, top_range; 5524 int win_y, top_range;
5513 5525
5526#if TARGET_API_MAC_CARBON
5527 GetGlobalMouse (&mouse_pos);
5528 mouse_pos.h -= f->left_pos + FRAME_OUTER_TO_INNER_DIFF_X (f);
5529 mouse_pos.v -= f->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f);
5530#else
5514 SetPortWindowPort (wp); 5531 SetPortWindowPort (wp);
5515
5516 GetMouse (&mouse_pos); 5532 GetMouse (&mouse_pos);
5533#endif
5517 5534
5518 win_y = mouse_pos.v - XINT (bar->top); 5535 win_y = mouse_pos.v - XINT (bar->top);
5519 top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)); 5536 top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height));
@@ -6141,9 +6158,7 @@ x_set_offset (f, xoff, yoff, change_gravity)
6141 ConstrainWindowToScreen (FRAME_MAC_WINDOW (f), kWindowTitleBarRgn, 6158 ConstrainWindowToScreen (FRAME_MAC_WINDOW (f), kWindowTitleBarRgn,
6142 kWindowConstrainMoveRegardlessOfFit 6159 kWindowConstrainMoveRegardlessOfFit
6143 | kWindowConstrainAllowPartial, NULL, NULL); 6160 | kWindowConstrainAllowPartial, NULL, NULL);
6144#if USE_CARBON_EVENTS
6145 if (!NILP (tip_frame) && XFRAME (tip_frame) == f) 6161 if (!NILP (tip_frame) && XFRAME (tip_frame) == f)
6146#endif
6147 mac_handle_origin_change (f); 6162 mac_handle_origin_change (f);
6148#else 6163#else
6149 { 6164 {
@@ -6219,7 +6234,7 @@ x_set_window_size (f, change_gravity, cols, rows)
6219 6234
6220 SizeWindow (FRAME_MAC_WINDOW (f), pixelwidth, pixelheight, 0); 6235 SizeWindow (FRAME_MAC_WINDOW (f), pixelwidth, pixelheight, 0);
6221 6236
6222#if USE_CARBON_EVENTS 6237#if TARGET_API_MAC_CARBON
6223 if (!NILP (tip_frame) && f == XFRAME (tip_frame)) 6238 if (!NILP (tip_frame) && f == XFRAME (tip_frame))
6224#endif 6239#endif
6225 mac_handle_size_change (f, pixelwidth, pixelheight); 6240 mac_handle_size_change (f, pixelwidth, pixelheight);
@@ -6266,17 +6281,11 @@ x_set_mouse_pixel_position (f, pix_x, pix_y)
6266 int pix_x, pix_y; 6281 int pix_x, pix_y;
6267{ 6282{
6268#ifdef MAC_OSX 6283#ifdef MAC_OSX
6269 Point p; 6284 pix_x += f->left_pos + FRAME_OUTER_TO_INNER_DIFF_X (f);
6270 CGPoint point; 6285 pix_y += f->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f);
6271 6286
6272 BLOCK_INPUT; 6287 BLOCK_INPUT;
6273 SetPortWindowPort (FRAME_MAC_WINDOW (f)); 6288 CGWarpMouseCursorPosition (CGPointMake (pix_x, pix_y));
6274 p.h = pix_x;
6275 p.v = pix_y;
6276 LocalToGlobal (&p);
6277 point.x = p.h;
6278 point.y = p.v;
6279 CGWarpMouseCursorPosition (point);
6280 UNBLOCK_INPUT; 6289 UNBLOCK_INPUT;
6281#else 6290#else
6282#if 0 /* MAC_TODO: LMSetMouseLocation and CursorDeviceMoveTo are non-Carbon */ 6291#if 0 /* MAC_TODO: LMSetMouseLocation and CursorDeviceMoveTo are non-Carbon */
@@ -6358,7 +6367,7 @@ static void
6358mac_handle_visibility_change (f) 6367mac_handle_visibility_change (f)
6359 struct frame *f; 6368 struct frame *f;
6360{ 6369{
6361 WindowPtr wp = FRAME_MAC_WINDOW (f); 6370 WindowRef wp = FRAME_MAC_WINDOW (f);
6362 int visible = 0, iconified = 0; 6371 int visible = 0, iconified = 0;
6363 struct input_event buf; 6372 struct input_event buf;
6364 6373
@@ -6426,32 +6435,7 @@ x_make_frame_visible (f)
6426 before the window gets really visible. */ 6435 before the window gets really visible. */
6427 if (! FRAME_ICONIFIED_P (f) 6436 if (! FRAME_ICONIFIED_P (f)
6428 && ! f->output_data.mac->asked_for_visible) 6437 && ! f->output_data.mac->asked_for_visible)
6429 { 6438 x_set_offset (f, f->left_pos, f->top_pos, 0);
6430#if TARGET_API_MAC_CARBON
6431 if (!(FRAME_SIZE_HINTS (f)->flags & (USPosition | PPosition)))
6432 {
6433 struct frame *sf = SELECTED_FRAME ();
6434 if (!FRAME_MAC_P (sf))
6435 RepositionWindow (FRAME_MAC_WINDOW (f), NULL,
6436 kWindowCenterOnMainScreen);
6437 else
6438 RepositionWindow (FRAME_MAC_WINDOW (f),
6439 FRAME_MAC_WINDOW (sf),
6440#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
6441 kWindowCascadeStartAtParentWindowScreen
6442#else
6443 kWindowCascadeOnParentWindowScreen
6444#endif
6445 );
6446#if USE_CARBON_EVENTS
6447 if (!NILP (tip_frame) && f == XFRAME (tip_frame))
6448#endif
6449 mac_handle_origin_change (f);
6450 }
6451 else
6452#endif
6453 x_set_offset (f, f->left_pos, f->top_pos, 0);
6454 }
6455 6439
6456 f->output_data.mac->asked_for_visible = 1; 6440 f->output_data.mac->asked_for_visible = 1;
6457 6441
@@ -6525,18 +6509,20 @@ x_make_frame_invisible (f)
6525 6509
6526 BLOCK_INPUT; 6510 BLOCK_INPUT;
6527 6511
6512#if !TARGET_API_MAC_CARBON
6528 /* Before unmapping the window, update the WM_SIZE_HINTS property to claim 6513 /* Before unmapping the window, update the WM_SIZE_HINTS property to claim
6529 that the current position of the window is user-specified, rather than 6514 that the current position of the window is user-specified, rather than
6530 program-specified, so that when the window is mapped again, it will be 6515 program-specified, so that when the window is mapped again, it will be
6531 placed at the same location, without forcing the user to position it 6516 placed at the same location, without forcing the user to position it
6532 by hand again (they have already done that once for this window.) */ 6517 by hand again (they have already done that once for this window.) */
6533 x_wm_set_size_hint (f, (long) 0, 1); 6518 x_wm_set_size_hint (f, (long) 0, 1);
6519#endif
6534 6520
6535 HideWindow (FRAME_MAC_WINDOW (f)); 6521 HideWindow (FRAME_MAC_WINDOW (f));
6536 6522
6537 UNBLOCK_INPUT; 6523 UNBLOCK_INPUT;
6538 6524
6539#if !USE_CARBON_EVENTS 6525#if !TARGET_API_MAC_CARBON
6540 mac_handle_visibility_change (f); 6526 mac_handle_visibility_change (f);
6541#endif 6527#endif
6542} 6528}
@@ -6575,7 +6561,7 @@ x_iconify_frame (f)
6575 if (err != noErr) 6561 if (err != noErr)
6576 error ("Can't notify window manager of iconification"); 6562 error ("Can't notify window manager of iconification");
6577 6563
6578#if !USE_CARBON_EVENTS 6564#if !TARGET_API_MAC_CARBON
6579 mac_handle_visibility_change (f); 6565 mac_handle_visibility_change (f);
6580#endif 6566#endif
6581} 6567}
@@ -6588,7 +6574,7 @@ x_free_frame_resources (f)
6588 struct frame *f; 6574 struct frame *f;
6589{ 6575{
6590 struct mac_display_info *dpyinfo = FRAME_MAC_DISPLAY_INFO (f); 6576 struct mac_display_info *dpyinfo = FRAME_MAC_DISPLAY_INFO (f);
6591 WindowPtr wp = FRAME_MAC_WINDOW (f); 6577 WindowRef wp = FRAME_MAC_WINDOW (f);
6592 6578
6593 BLOCK_INPUT; 6579 BLOCK_INPUT;
6594 6580
@@ -8723,16 +8709,93 @@ x_find_ccl_program (fontp)
8723 possible. */ 8709 possible. */
8724static int font_panel_shown_p = 0; 8710static int font_panel_shown_p = 0;
8725 8711
8712extern Lisp_Object Qfont;
8713static Lisp_Object Qpanel_closed, Qselection;
8714
8715static OSStatus mac_store_event_ref_as_apple_event P_ ((AEEventClass, AEEventID,
8716 Lisp_Object,
8717 Lisp_Object,
8718 EventRef, UInt32,
8719 const EventParamName *,
8720 const EventParamType *));
8721
8726int 8722int
8727mac_font_panel_visible_p () 8723mac_font_panel_visible_p ()
8728{ 8724{
8729 return font_panel_shown_p && FPIsFontPanelVisible (); 8725 return font_panel_shown_p && FPIsFontPanelVisible ();
8730} 8726}
8731 8727
8728static pascal OSStatus
8729mac_handle_font_event (next_handler, event, data)
8730 EventHandlerCallRef next_handler;
8731 EventRef event;
8732 void *data;
8733{
8734 OSStatus result, err;
8735 Lisp_Object id_key;
8736 int num_params;
8737 const EventParamName *names;
8738 const EventParamType *types;
8739 static const EventParamName names_sel[] = {kEventParamATSUFontID,
8740 kEventParamATSUFontSize,
8741 kEventParamFMFontFamily,
8742 kEventParamFMFontSize,
8743 kEventParamFontColor};
8744 static const EventParamType types_sel[] = {typeATSUFontID,
8745 typeATSUSize,
8746 typeFMFontFamily,
8747 typeFMFontSize,
8748 typeFontColor};
8749
8750 result = CallNextEventHandler (next_handler, event);
8751 if (result != eventNotHandledErr)
8752 return result;
8753
8754 switch (GetEventKind (event))
8755 {
8756 case kEventFontPanelClosed:
8757 id_key = Qpanel_closed;
8758 num_params = 0;
8759 names = NULL;
8760 types = NULL;
8761 break;
8762
8763 case kEventFontSelection:
8764 id_key = Qselection;
8765 num_params = sizeof (names_sel) / sizeof (names_sel[0]);
8766 names = names_sel;
8767 types = types_sel;
8768 break;
8769 }
8770
8771 err = mac_store_event_ref_as_apple_event (0, 0, Qfont, id_key,
8772 event, num_params,
8773 names, types);
8774 if (err == noErr)
8775 result = noErr;
8776
8777 return result;
8778}
8779
8732OSStatus 8780OSStatus
8733mac_show_hide_font_panel () 8781mac_show_hide_font_panel ()
8734{ 8782{
8735 font_panel_shown_p = 1; 8783 if (!font_panel_shown_p)
8784 {
8785 OSStatus err;
8786
8787 static const EventTypeSpec specs[] =
8788 {{kEventClassFont, kEventFontPanelClosed},
8789 {kEventClassFont, kEventFontSelection}};
8790
8791 err = InstallApplicationEventHandler (mac_handle_font_event,
8792 GetEventTypeCount (specs),
8793 specs, NULL, NULL);
8794 if (err != noErr)
8795 return err;
8796
8797 font_panel_shown_p = 1;
8798 }
8736 8799
8737 return FPShowHideFontPanel (); 8800 return FPShowHideFontPanel ();
8738} 8801}
@@ -8848,7 +8911,7 @@ Lisp_Object Vmac_function_modifier;
8848 a three button mouse */ 8911 a three button mouse */
8849Lisp_Object Vmac_emulate_three_button_mouse; 8912Lisp_Object Vmac_emulate_three_button_mouse;
8850 8913
8851#if USE_CARBON_EVENTS 8914#if TARGET_API_MAC_CARBON
8852/* Non-zero if the mouse wheel button (i.e. button 4) should map to 8915/* Non-zero if the mouse wheel button (i.e. button 4) should map to
8853 mouse-2, instead of mouse-3. */ 8916 mouse-2, instead of mouse-3. */
8854int mac_wheel_button_is_mouse_2; 8917int mac_wheel_button_is_mouse_2;
@@ -8873,16 +8936,12 @@ static int mac_screen_config_changed = 0;
8873Point saved_menu_event_location; 8936Point saved_menu_event_location;
8874 8937
8875/* Apple Events */ 8938/* Apple Events */
8876#if USE_CARBON_EVENTS 8939#if TARGET_API_MAC_CARBON
8877static Lisp_Object Qhi_command; 8940static Lisp_Object Qhi_command;
8878#ifdef MAC_OSX 8941#ifdef MAC_OSX
8879extern Lisp_Object Qwindow; 8942extern Lisp_Object Qwindow;
8880static Lisp_Object Qtoolbar_switch_mode; 8943static Lisp_Object Qtoolbar_switch_mode;
8881#endif 8944#endif
8882#if USE_MAC_FONT_PANEL
8883extern Lisp_Object Qfont;
8884static Lisp_Object Qpanel_closed, Qselection;
8885#endif
8886#if USE_MAC_TSM 8945#if USE_MAC_TSM
8887static TSMDocumentID tsm_document_id; 8946static TSMDocumentID tsm_document_id;
8888static Lisp_Object Qtext_input; 8947static Lisp_Object Qtext_input;
@@ -8894,7 +8953,7 @@ static Lisp_Object saved_ts_script_language_on_focus;
8894static ScriptLanguageRecord saved_ts_language; 8953static ScriptLanguageRecord saved_ts_language;
8895static Component saved_ts_component; 8954static Component saved_ts_component;
8896#endif 8955#endif
8897#endif 8956#endif /* TARGET_API_MAC_CARBON */
8898extern int mac_ready_for_apple_events; 8957extern int mac_ready_for_apple_events;
8899extern Lisp_Object Qundefined; 8958extern Lisp_Object Qundefined;
8900extern void init_apple_event_handler P_ ((void)); 8959extern void init_apple_event_handler P_ ((void));
@@ -8907,20 +8966,15 @@ extern OSErr init_coercion_handler P_ ((void));
8907extern OSErr install_drag_handler P_ ((WindowRef)); 8966extern OSErr install_drag_handler P_ ((WindowRef));
8908extern void remove_drag_handler P_ ((WindowRef)); 8967extern void remove_drag_handler P_ ((WindowRef));
8909 8968
8969#if TARGET_API_MAC_CARBON
8910/* Showing help echo string during menu tracking */ 8970/* Showing help echo string during menu tracking */
8911extern OSStatus install_menu_target_item_handler P_ ((WindowPtr)); 8971extern OSStatus install_menu_target_item_handler P_ ((void));
8912 8972
8913#if USE_CARBON_EVENTS
8914#ifdef MAC_OSX 8973#ifdef MAC_OSX
8915extern void init_service_handler (); 8974extern OSStatus install_service_handler ();
8916static Lisp_Object Qservice, Qpaste, Qperform; 8975static Lisp_Object Qservice, Qpaste, Qperform;
8917#endif 8976#endif
8918
8919/* Window Event Handler */
8920static pascal OSStatus mac_handle_window_event (EventHandlerCallRef,
8921 EventRef, void *);
8922#endif 8977#endif
8923OSStatus install_window_handler (WindowPtr);
8924 8978
8925extern void init_emacs_passwd_dir (); 8979extern void init_emacs_passwd_dir ();
8926extern int emacs_main (int, char **, char **); 8980extern int emacs_main (int, char **, char **);
@@ -9004,7 +9058,7 @@ static const unsigned char fn_keycode_to_keycode_table[] = {
9004#endif /* MAC_OSX */ 9058#endif /* MAC_OSX */
9005 9059
9006static int 9060static int
9007#if USE_CARBON_EVENTS 9061#if TARGET_API_MAC_CARBON
9008mac_to_emacs_modifiers (UInt32 mods) 9062mac_to_emacs_modifiers (UInt32 mods)
9009#else 9063#else
9010mac_to_emacs_modifiers (EventModifiers mods) 9064mac_to_emacs_modifiers (EventModifiers mods)
@@ -9113,17 +9167,19 @@ mac_quit_char_key_p (modifiers, key_code)
9113} 9167}
9114#endif 9168#endif
9115 9169
9116#if USE_CARBON_EVENTS 9170#if TARGET_API_MAC_CARBON
9117/* Obtains the event modifiers from the event ref and then calls 9171/* Obtains the event modifiers from the event ref and then calls
9118 mac_to_emacs_modifiers. */ 9172 mac_to_emacs_modifiers. */
9119static int 9173static int
9120mac_event_to_emacs_modifiers (EventRef eventRef) 9174mac_event_to_emacs_modifiers (EventRef eventRef)
9121{ 9175{
9122 UInt32 mods = 0; 9176 UInt32 mods = 0, class;
9177
9123 GetEventParameter (eventRef, kEventParamKeyModifiers, typeUInt32, NULL, 9178 GetEventParameter (eventRef, kEventParamKeyModifiers, typeUInt32, NULL,
9124 sizeof (UInt32), NULL, &mods); 9179 sizeof (UInt32), NULL, &mods);
9180 class = GetEventClass (eventRef);
9125 if (!NILP (Vmac_emulate_three_button_mouse) && 9181 if (!NILP (Vmac_emulate_three_button_mouse) &&
9126 GetEventClass(eventRef) == kEventClassMouse) 9182 (class == kEventClassMouse || class == kEventClassCommand))
9127 { 9183 {
9128 mods &= ~(optionKey | cmdKey); 9184 mods &= ~(optionKey | cmdKey);
9129 } 9185 }
@@ -9262,7 +9318,7 @@ static void
9262do_get_menus (void) 9318do_get_menus (void)
9263{ 9319{
9264 Handle menubar_handle; 9320 Handle menubar_handle;
9265 MenuHandle menu_handle; 9321 MenuRef menu;
9266 9322
9267 menubar_handle = GetNewMBar (128); 9323 menubar_handle = GetNewMBar (128);
9268 if(menubar_handle == NULL) 9324 if(menubar_handle == NULL)
@@ -9271,9 +9327,9 @@ do_get_menus (void)
9271 DrawMenuBar (); 9327 DrawMenuBar ();
9272 9328
9273#if !TARGET_API_MAC_CARBON 9329#if !TARGET_API_MAC_CARBON
9274 menu_handle = GetMenuHandle (M_APPLE); 9330 menu = GetMenuRef (M_APPLE);
9275 if(menu_handle != NULL) 9331 if (menu != NULL)
9276 AppendResMenu (menu_handle,'DRVR'); 9332 AppendResMenu (menu, 'DRVR');
9277 else 9333 else
9278 abort (); 9334 abort ();
9279#endif 9335#endif
@@ -9322,7 +9378,7 @@ do_check_ram_size (void)
9322#endif /* MAC_OS8 */ 9378#endif /* MAC_OS8 */
9323 9379
9324static void 9380static void
9325do_window_update (WindowPtr win) 9381do_window_update (WindowRef win)
9326{ 9382{
9327 struct frame *f = mac_window_to_frame (win); 9383 struct frame *f = mac_window_to_frame (win);
9328 9384
@@ -9367,7 +9423,7 @@ do_window_update (WindowPtr win)
9367} 9423}
9368 9424
9369static int 9425static int
9370is_emacs_window (WindowPtr win) 9426is_emacs_window (WindowRef win)
9371{ 9427{
9372 Lisp_Object tail, frame; 9428 Lisp_Object tail, frame;
9373 9429
@@ -9480,7 +9536,7 @@ do_apple_menu (SInt16 menu_item)
9480 NoteAlert (ABOUT_ALERT_ID, NULL); 9536 NoteAlert (ABOUT_ALERT_ID, NULL);
9481 else 9537 else
9482 { 9538 {
9483 GetMenuItemText (GetMenuHandle (M_APPLE), menu_item, item_name); 9539 GetMenuItemText (GetMenuRef (M_APPLE), menu_item, item_name);
9484 da_driver_refnum = OpenDeskAcc (item_name); 9540 da_driver_refnum = OpenDeskAcc (item_name);
9485 } 9541 }
9486} 9542}
@@ -9491,7 +9547,7 @@ do_apple_menu (SInt16 menu_item)
9491 9547
9492static void 9548static void
9493do_grow_window (w, e) 9549do_grow_window (w, e)
9494 WindowPtr w; 9550 WindowRef w;
9495 const EventRecord *e; 9551 const EventRecord *e;
9496{ 9552{
9497 Rect limit_rect; 9553 Rect limit_rect;
@@ -9543,7 +9599,7 @@ mac_get_ideal_size (f)
9543 struct frame *f; 9599 struct frame *f;
9544{ 9600{
9545 struct mac_display_info *dpyinfo = FRAME_MAC_DISPLAY_INFO (f); 9601 struct mac_display_info *dpyinfo = FRAME_MAC_DISPLAY_INFO (f);
9546 WindowPtr w = FRAME_MAC_WINDOW (f); 9602 WindowRef w = FRAME_MAC_WINDOW (f);
9547 Point ideal_size; 9603 Point ideal_size;
9548 Rect standard_rect; 9604 Rect standard_rect;
9549 int height, width, columns, rows; 9605 int height, width, columns, rows;
@@ -9569,7 +9625,7 @@ mac_get_ideal_size (f)
9569 wide (DEFAULT_NUM_COLS) and as tall as will fit on the screen. */ 9625 wide (DEFAULT_NUM_COLS) and as tall as will fit on the screen. */
9570 9626
9571static void 9627static void
9572do_zoom_window (WindowPtr w, int zoom_in_or_out) 9628do_zoom_window (WindowRef w, int zoom_in_or_out)
9573{ 9629{
9574 Rect zoom_rect, port_rect; 9630 Rect zoom_rect, port_rect;
9575 int width, height; 9631 int width, height;
@@ -9632,13 +9688,9 @@ do_zoom_window (WindowPtr w, int zoom_in_or_out)
9632 SetPort (save_port); 9688 SetPort (save_port);
9633#endif /* not TARGET_API_MAC_CARBON */ 9689#endif /* not TARGET_API_MAC_CARBON */
9634 9690
9635#if !USE_CARBON_EVENTS 9691#if !TARGET_API_MAC_CARBON
9636 /* retrieve window size and update application values */ 9692 /* retrieve window size and update application values */
9637#if TARGET_API_MAC_CARBON
9638 GetWindowPortBounds (w, &port_rect);
9639#else
9640 port_rect = w->portRect; 9693 port_rect = w->portRect;
9641#endif
9642 height = port_rect.bottom - port_rect.top; 9694 height = port_rect.bottom - port_rect.top;
9643 width = port_rect.right - port_rect.left; 9695 width = port_rect.right - port_rect.left;
9644 9696
@@ -9647,6 +9699,210 @@ do_zoom_window (WindowPtr w, int zoom_in_or_out)
9647#endif 9699#endif
9648} 9700}
9649 9701
9702static void
9703mac_set_unicode_keystroke_event (code, buf)
9704 UniChar code;
9705 struct input_event *buf;
9706{
9707 int charset_id, c1, c2;
9708
9709 if (code < 0x80)
9710 {
9711 buf->kind = ASCII_KEYSTROKE_EVENT;
9712 buf->code = code;
9713 }
9714 else if (code < 0x100)
9715 {
9716 if (code < 0xA0)
9717 charset_id = CHARSET_8_BIT_CONTROL;
9718 else
9719 charset_id = charset_latin_iso8859_1;
9720 buf->kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
9721 buf->code = MAKE_CHAR (charset_id, code, 0);
9722 }
9723 else
9724 {
9725 if (code < 0x2500)
9726 charset_id = charset_mule_unicode_0100_24ff,
9727 code -= 0x100;
9728 else if (code < 0x33FF)
9729 charset_id = charset_mule_unicode_2500_33ff,
9730 code -= 0x2500;
9731 else if (code >= 0xE000)
9732 charset_id = charset_mule_unicode_e000_ffff,
9733 code -= 0xE000;
9734 c1 = (code / 96) + 32, c2 = (code % 96) + 32;
9735 buf->kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
9736 buf->code = MAKE_CHAR (charset_id, c1, c2);
9737 }
9738}
9739
9740static void
9741do_keystroke (action, char_code, key_code, modifiers, timestamp, buf)
9742 EventKind action;
9743 unsigned char char_code;
9744 UInt32 key_code, modifiers;
9745 unsigned long timestamp;
9746 struct input_event *buf;
9747{
9748 static SInt16 last_key_script = -1;
9749 SInt16 current_key_script = GetScriptManagerVariable (smKeyScript);
9750 UInt32 mapped_modifiers = mac_mapped_modifiers (modifiers);
9751
9752#ifdef MAC_OSX
9753 if (mapped_modifiers & kEventKeyModifierFnMask
9754 && key_code <= 0x7f
9755 && fn_keycode_to_keycode_table[key_code])
9756 key_code = fn_keycode_to_keycode_table[key_code];
9757#endif
9758
9759 if (key_code <= 0x7f && keycode_to_xkeysym_table[key_code])
9760 {
9761 buf->kind = NON_ASCII_KEYSTROKE_EVENT;
9762 buf->code = 0xff00 | keycode_to_xkeysym_table[key_code];
9763#ifdef MAC_OSX
9764 if (modifiers & kEventKeyModifierFnMask
9765 && key_code <= 0x7f
9766 && fn_keycode_to_keycode_table[key_code] == key_code)
9767 modifiers &= ~kEventKeyModifierFnMask;
9768#endif
9769 }
9770 else if (mapped_modifiers)
9771 {
9772 /* translate the keycode back to determine the original key */
9773#ifdef MAC_OSX
9774 UCKeyboardLayout *uchr_ptr = NULL;
9775#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
9776 OSStatus err;
9777 KeyboardLayoutRef layout;
9778
9779 err = KLGetCurrentKeyboardLayout (&layout);
9780 if (err == noErr)
9781 err = KLGetKeyboardLayoutProperty (layout, kKLuchrData,
9782 (const void **) &uchr_ptr);
9783#else
9784 static SInt16 last_key_layout_id = 0;
9785 static Handle uchr_handle = (Handle)-1;
9786 SInt16 current_key_layout_id =
9787 GetScriptVariable (current_key_script, smScriptKeys);
9788
9789 if (uchr_handle == (Handle)-1
9790 || last_key_layout_id != current_key_layout_id)
9791 {
9792 uchr_handle = GetResource ('uchr', current_key_layout_id);
9793 last_key_layout_id = current_key_layout_id;
9794 }
9795 if (uchr_handle)
9796 uchr_ptr = (UCKeyboardLayout *)*uchr_handle;
9797#endif
9798
9799 if (uchr_ptr)
9800 {
9801 OSStatus status;
9802 UInt16 key_action = action - keyDown;
9803 UInt32 modifier_key_state = (modifiers & ~mapped_modifiers) >> 8;
9804 UInt32 keyboard_type = LMGetKbdType ();
9805 SInt32 dead_key_state = 0;
9806 UniChar code;
9807 UniCharCount actual_length;
9808
9809 status = UCKeyTranslate (uchr_ptr, key_code, key_action,
9810 modifier_key_state, keyboard_type,
9811 kUCKeyTranslateNoDeadKeysMask,
9812 &dead_key_state,
9813 1, &actual_length, &code);
9814 if (status == noErr && actual_length == 1)
9815 mac_set_unicode_keystroke_event (code, buf);
9816 }
9817#endif /* MAC_OSX */
9818
9819 if (buf->kind == NO_EVENT)
9820 {
9821 /* This code comes from Keyboard Resource, Appendix C of IM
9822 - Text. This is necessary since shift is ignored in KCHR
9823 table translation when option or command is pressed. It
9824 also does not translate correctly control-shift chars
9825 like C-% so mask off shift here also. */
9826 /* Mask off modifier keys that are mapped to some Emacs
9827 modifiers. */
9828 int new_modifiers = modifiers & ~mapped_modifiers;
9829 /* set high byte of keycode to modifier high byte*/
9830 int new_key_code = key_code | new_modifiers;
9831 Ptr kchr_ptr = (Ptr) GetScriptManagerVariable (smKCHRCache);
9832 unsigned long some_state = 0;
9833 UInt32 new_char_code;
9834
9835 new_char_code = KeyTranslate (kchr_ptr, new_key_code, &some_state);
9836 if (new_char_code == 0)
9837 /* Seems like a dead key. Append up-stroke. */
9838 new_char_code = KeyTranslate (kchr_ptr, new_key_code | 0x80,
9839 &some_state);
9840 if (new_char_code)
9841 {
9842 buf->kind = ASCII_KEYSTROKE_EVENT;
9843 buf->code = new_char_code & 0xff;
9844 }
9845 }
9846 }
9847
9848 if (buf->kind == NO_EVENT)
9849 {
9850 buf->kind = ASCII_KEYSTROKE_EVENT;
9851 buf->code = char_code;
9852 }
9853
9854 buf->modifiers = mac_to_emacs_modifiers (modifiers);
9855 buf->modifiers |= (extra_keyboard_modifiers
9856 & (meta_modifier | alt_modifier
9857 | hyper_modifier | super_modifier));
9858
9859#if TARGET_API_MAC_CARBON
9860 if (buf->kind == ASCII_KEYSTROKE_EVENT
9861 && buf->code >= 0x80 && buf->modifiers)
9862 {
9863 OSStatus err;
9864 TextEncoding encoding = kTextEncodingMacRoman;
9865 TextToUnicodeInfo ttu_info;
9866
9867 UpgradeScriptInfoToTextEncoding (current_key_script,
9868 kTextLanguageDontCare,
9869 kTextRegionDontCare,
9870 NULL, &encoding);
9871 err = CreateTextToUnicodeInfoByEncoding (encoding, &ttu_info);
9872 if (err == noErr)
9873 {
9874 UniChar code;
9875 Str255 pstr;
9876 ByteCount unicode_len;
9877
9878 pstr[0] = 1;
9879 pstr[1] = buf->code;
9880 err = ConvertFromPStringToUnicode (ttu_info, pstr,
9881 sizeof (UniChar),
9882 &unicode_len, &code);
9883 if (err == noErr && unicode_len == sizeof (UniChar))
9884 mac_set_unicode_keystroke_event (code, buf);
9885 DisposeTextToUnicodeInfo (&ttu_info);
9886 }
9887 }
9888#endif
9889
9890 if (buf->kind == ASCII_KEYSTROKE_EVENT
9891 && buf->code >= 0x80
9892 && last_key_script != current_key_script)
9893 {
9894 struct input_event event;
9895
9896 EVENT_INIT (event);
9897 event.kind = LANGUAGE_CHANGE_EVENT;
9898 event.arg = Qnil;
9899 event.code = current_key_script;
9900 event.timestamp = timestamp;
9901 kbd_buffer_store_event (&event);
9902 last_key_script = current_key_script;
9903 }
9904}
9905
9650void 9906void
9651mac_store_apple_event (class, id, desc) 9907mac_store_apple_event (class, id, desc)
9652 Lisp_Object class, id; 9908 Lisp_Object class, id;
@@ -9725,54 +9981,49 @@ mac_store_drag_event (window, mouse_pos, modifiers, desc)
9725 buf.arg = mac_aedesc_to_lisp (desc); 9981 buf.arg = mac_aedesc_to_lisp (desc);
9726 kbd_buffer_store_event (&buf); 9982 kbd_buffer_store_event (&buf);
9727} 9983}
9728#endif
9729 9984
9730#if USE_CARBON_EVENTS 9985#ifdef MAC_OSX
9731static pascal OSStatus 9986OSStatus
9732mac_handle_command_event (next_handler, event, data) 9987mac_store_service_event (event)
9733 EventHandlerCallRef next_handler;
9734 EventRef event; 9988 EventRef event;
9735 void *data;
9736{ 9989{
9737 OSStatus result, err; 9990 OSStatus err;
9738 HICommand command; 9991 Lisp_Object id_key;
9739 static const EventParamName names[] = 9992 int num_params;
9740 {kEventParamDirectObject, kEventParamKeyModifiers}; 9993 const EventParamName *names;
9741 static const EventParamType types[] = 9994 const EventParamType *types;
9742 {typeHICommand, typeUInt32}; 9995 static const EventParamName names_pfm[] =
9743 int num_params = sizeof (names) / sizeof (names[0]); 9996 {kEventParamServiceMessageName, kEventParamServiceUserData};
9744 9997 static const EventParamType types_pfm[] =
9745 result = CallNextEventHandler (next_handler, event); 9998 {typeCFStringRef, typeCFStringRef};
9746 if (result != eventNotHandledErr)
9747 return result;
9748 9999
9749 err = GetEventParameter (event, kEventParamDirectObject, typeHICommand, 10000 switch (GetEventKind (event))
9750 NULL, sizeof (HICommand), NULL, &command); 10001 {
10002 case kEventServicePaste:
10003 id_key = Qpaste;
10004 num_params = 0;
10005 names = NULL;
10006 types = NULL;
10007 break;
9751 10008
9752 if (err != noErr || command.commandID == 0) 10009 case kEventServicePerform:
9753 return eventNotHandledErr; 10010 id_key = Qperform;
10011 num_params = sizeof (names_pfm) / sizeof (names_pfm[0]);
10012 names = names_pfm;
10013 types = types_pfm;
10014 break;
9754 10015
9755 /* A HI command event is mapped to an Apple event whose event class 10016 default:
9756 symbol is `hi-command' and event ID is its command ID. */ 10017 abort ();
9757 err = mac_store_event_ref_as_apple_event (0, command.commandID, 10018 }
9758 Qhi_command, Qnil,
9759 event, num_params, names, types);
9760 return err == noErr ? noErr : eventNotHandledErr;
9761}
9762 10019
9763static OSStatus 10020 err = mac_store_event_ref_as_apple_event (0, 0, Qservice, id_key,
9764init_command_handler () 10021 event, num_params,
9765{ 10022 names, types);
9766 static const EventTypeSpec specs[] =
9767 {{kEventClassCommand, kEventCommandProcess}};
9768 static EventHandlerUPP handle_command_eventUPP = NULL;
9769 10023
9770 if (handle_command_eventUPP == NULL) 10024 return err;
9771 handle_command_eventUPP = NewEventHandlerUPP (mac_handle_command_event);
9772 return InstallApplicationEventHandler (handle_command_eventUPP,
9773 GetEventTypeCount (specs), specs,
9774 NULL, NULL);
9775} 10025}
10026#endif /* MAC_OSX */
9776 10027
9777static pascal OSStatus 10028static pascal OSStatus
9778mac_handle_window_event (next_handler, event, data) 10029mac_handle_window_event (next_handler, event, data)
@@ -9780,47 +10031,78 @@ mac_handle_window_event (next_handler, event, data)
9780 EventRef event; 10031 EventRef event;
9781 void *data; 10032 void *data;
9782{ 10033{
9783 WindowPtr wp; 10034 WindowRef wp;
9784 OSStatus result, err; 10035 OSStatus err, result = eventNotHandledErr;
9785 struct frame *f; 10036 struct frame *f;
9786 UInt32 attributes; 10037 UInt32 attributes;
9787 XSizeHints *size_hints; 10038 XSizeHints *size_hints;
9788 10039
9789 err = GetEventParameter (event, kEventParamDirectObject, typeWindowRef, 10040 err = GetEventParameter (event, kEventParamDirectObject, typeWindowRef,
9790 NULL, sizeof (WindowPtr), NULL, &wp); 10041 NULL, sizeof (WindowRef), NULL, &wp);
9791 if (err != noErr) 10042 if (err != noErr)
9792 return eventNotHandledErr; 10043 return eventNotHandledErr;
9793 10044
9794 f = mac_window_to_frame (wp); 10045 f = mac_window_to_frame (wp);
9795 switch (GetEventKind (event)) 10046 switch (GetEventKind (event))
9796 { 10047 {
10048 /* -- window refresh events -- */
10049
9797 case kEventWindowUpdate: 10050 case kEventWindowUpdate:
9798 result = CallNextEventHandler (next_handler, event); 10051 result = CallNextEventHandler (next_handler, event);
9799 if (result != eventNotHandledErr) 10052 if (result != eventNotHandledErr)
9800 return result; 10053 break;
9801 10054
9802 do_window_update (wp); 10055 do_window_update (wp);
9803 return noErr; 10056 result = noErr;
10057 break;
9804 10058
9805 case kEventWindowGetIdealSize: 10059 /* -- window state change events -- */
9806 result = CallNextEventHandler (next_handler, event);
9807 if (result != eventNotHandledErr)
9808 return result;
9809 10060
9810 { 10061 case kEventWindowShowing:
9811 Point ideal_size = mac_get_ideal_size (f); 10062 size_hints = FRAME_SIZE_HINTS (f);
10063 if (!(size_hints->flags & (USPosition | PPosition)))
10064 {
10065 struct frame *sf = SELECTED_FRAME ();
9812 10066
9813 err = SetEventParameter (event, kEventParamDimensions, 10067 if (!(FRAME_MAC_P (sf)))
9814 typeQDPoint, sizeof (Point), &ideal_size); 10068 RepositionWindow (wp, NULL, kWindowCenterOnMainScreen);
9815 if (err == noErr) 10069 else
9816 return noErr; 10070 {
9817 } 10071 RepositionWindow (wp, FRAME_MAC_WINDOW (sf),
10072#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
10073 kWindowCascadeStartAtParentWindowScreen
10074#else
10075 kWindowCascadeOnParentWindowScreen
10076#endif
10077 );
10078 }
10079 result = noErr;
10080 }
10081 break;
10082
10083 case kEventWindowHiding:
10084 /* Before unmapping the window, update the WM_SIZE_HINTS
10085 property to claim that the current position of the window is
10086 user-specified, rather than program-specified, so that when
10087 the window is mapped again, it will be placed at the same
10088 location, without forcing the user to position it by hand
10089 again (they have already done that once for this window.) */
10090 x_wm_set_size_hint (f, (long) 0, 1);
10091 result = noErr;
10092 break;
10093
10094 case kEventWindowShown:
10095 case kEventWindowHidden:
10096 case kEventWindowCollapsed:
10097 case kEventWindowExpanded:
10098 mac_handle_visibility_change (f);
10099 result = noErr;
9818 break; 10100 break;
9819 10101
9820 case kEventWindowBoundsChanging: 10102 case kEventWindowBoundsChanging:
9821 result = CallNextEventHandler (next_handler, event); 10103 result = CallNextEventHandler (next_handler, event);
9822 if (result != eventNotHandledErr) 10104 if (result != eventNotHandledErr)
9823 return result; 10105 break;
9824 10106
9825 err = GetEventParameter (event, kEventParamAttributes, typeUInt32, 10107 err = GetEventParameter (event, kEventParamAttributes, typeUInt32,
9826 NULL, sizeof (UInt32), NULL, &attributes); 10108 NULL, sizeof (UInt32), NULL, &attributes);
@@ -9864,7 +10146,7 @@ mac_handle_window_event (next_handler, event, data)
9864 bounds.bottom = bounds.top + height; 10146 bounds.bottom = bounds.top + height;
9865 SetEventParameter (event, kEventParamCurrentBounds, 10147 SetEventParameter (event, kEventParamCurrentBounds,
9866 typeQDRectangle, sizeof (Rect), &bounds); 10148 typeQDRectangle, sizeof (Rect), &bounds);
9867 return noErr; 10149 result = noErr;
9868 } 10150 }
9869 break; 10151 break;
9870 10152
@@ -9895,21 +10177,12 @@ mac_handle_window_event (next_handler, event, data)
9895 if (attributes & kWindowBoundsChangeOriginChanged) 10177 if (attributes & kWindowBoundsChangeOriginChanged)
9896 mac_handle_origin_change (f); 10178 mac_handle_origin_change (f);
9897 10179
9898 return noErr; 10180 result = noErr;
9899
9900 case kEventWindowShown:
9901 case kEventWindowHidden:
9902 case kEventWindowExpanded:
9903 case kEventWindowCollapsed:
9904 result = CallNextEventHandler (next_handler, event);
9905
9906 mac_handle_visibility_change (f);
9907 return noErr;
9908
9909 break; 10181 break;
9910 10182
10183 /* -- window action events -- */
10184
9911 case kEventWindowClose: 10185 case kEventWindowClose:
9912 result = CallNextEventHandler (next_handler, event);
9913 { 10186 {
9914 struct input_event buf; 10187 struct input_event buf;
9915 10188
@@ -9919,11 +10192,26 @@ mac_handle_window_event (next_handler, event, data)
9919 buf.arg = Qnil; 10192 buf.arg = Qnil;
9920 kbd_buffer_store_event (&buf); 10193 kbd_buffer_store_event (&buf);
9921 } 10194 }
9922 return noErr; 10195 result = noErr;
10196 break;
10197
10198 case kEventWindowGetIdealSize:
10199 result = CallNextEventHandler (next_handler, event);
10200 if (result != eventNotHandledErr)
10201 break;
10202
10203 {
10204 Point ideal_size = mac_get_ideal_size (f);
10205
10206 err = SetEventParameter (event, kEventParamDimensions,
10207 typeQDPoint, sizeof (Point), &ideal_size);
10208 if (err == noErr)
10209 result = noErr;
10210 }
10211 break;
9923 10212
9924#ifdef MAC_OSX 10213#ifdef MAC_OSX
9925 case kEventWindowToolbarSwitchMode: 10214 case kEventWindowToolbarSwitchMode:
9926 result = CallNextEventHandler (next_handler, event);
9927 { 10215 {
9928 static const EventParamName names[] = {kEventParamDirectObject, 10216 static const EventParamName names[] = {kEventParamDirectObject,
9929 kEventParamWindowMouseLocation, 10217 kEventParamWindowMouseLocation,
@@ -9945,23 +10233,195 @@ mac_handle_window_event (next_handler, event, data)
9945 event, num_params, 10233 event, num_params,
9946 names, types); 10234 names, types);
9947 } 10235 }
9948 return err == noErr ? noErr : result; 10236 if (err == noErr)
10237 result = noErr;
10238 break;
9949#endif 10239#endif
9950 10240
9951#if USE_MAC_TSM 10241#if USE_MAC_TSM
10242 /* -- window focus events -- */
10243
9952 case kEventWindowFocusAcquired: 10244 case kEventWindowFocusAcquired:
9953 result = CallNextEventHandler (next_handler, event);
9954 err = mac_tsm_resume (); 10245 err = mac_tsm_resume ();
9955 return err == noErr ? noErr : result; 10246 if (err == noErr)
10247 result = noErr;
10248 break;
9956 10249
9957 case kEventWindowFocusRelinquish: 10250 case kEventWindowFocusRelinquish:
9958 result = CallNextEventHandler (next_handler, event);
9959 err = mac_tsm_suspend (); 10251 err = mac_tsm_suspend ();
9960 return err == noErr ? noErr : result; 10252 if (err == noErr)
10253 result = noErr;
10254 break;
10255#endif
10256
10257 default:
10258 abort ();
10259 }
10260
10261 return result;
10262}
10263
10264static pascal OSStatus
10265mac_handle_application_event (next_handler, event, data)
10266 EventHandlerCallRef next_handler;
10267 EventRef event;
10268 void *data;
10269{
10270 OSStatus err, result = eventNotHandledErr;
10271
10272 switch (GetEventKind (event))
10273 {
10274#if USE_MAC_TSM
10275 case kEventAppActivated:
10276 err = mac_tsm_resume ();
10277 break;
10278
10279 case kEventAppDeactivated:
10280 err = mac_tsm_suspend ();
10281 break;
9961#endif 10282#endif
10283
10284 default:
10285 abort ();
9962 } 10286 }
9963 10287
9964 return eventNotHandledErr; 10288 if (err == noErr)
10289 result = noErr;
10290
10291 return result;
10292}
10293
10294static pascal OSStatus
10295mac_handle_keyboard_event (next_handler, event, data)
10296 EventHandlerCallRef next_handler;
10297 EventRef event;
10298 void *data;
10299{
10300 OSStatus err, result = eventNotHandledErr;
10301 UInt32 event_kind, key_code, modifiers, mapped_modifiers;
10302 unsigned char char_code;
10303
10304 event_kind = GetEventKind (event);
10305 switch (event_kind)
10306 {
10307 case kEventRawKeyDown:
10308 case kEventRawKeyRepeat:
10309 case kEventRawKeyUp:
10310 if (read_socket_inev == NULL)
10311 {
10312 result = CallNextEventHandler (next_handler, event);
10313 break;
10314 }
10315
10316 err = GetEventParameter (event, kEventParamKeyModifiers,
10317 typeUInt32, NULL,
10318 sizeof (UInt32), NULL, &modifiers);
10319 if (err != noErr)
10320 break;
10321
10322 mapped_modifiers = mac_mapped_modifiers (modifiers);
10323
10324 /* When using Carbon Events, we need to pass raw keyboard events
10325 to the TSM ourselves. If TSM handles it, it will pass back
10326 noErr, otherwise it will pass back "eventNotHandledErr" and
10327 we can process it normally. */
10328 if (!(mapped_modifiers
10329 & ~(mac_pass_command_to_system ? cmdKey : 0)
10330 & ~(mac_pass_control_to_system ? controlKey : 0)))
10331 {
10332 result = CallNextEventHandler (next_handler, event);
10333 if (result != eventNotHandledErr)
10334 break;
10335 }
10336
10337#if USE_MAC_TSM
10338 if (read_socket_inev->kind != NO_EVENT)
10339 {
10340 result = noErr;
10341 break;
10342 }
10343#endif
10344
10345 if (event_kind == kEventRawKeyUp)
10346 break;
10347
10348 err = GetEventParameter (event, kEventParamKeyMacCharCodes,
10349 typeChar, NULL,
10350 sizeof (char), NULL, &char_code);
10351 if (err != noErr)
10352 break;
10353
10354 err = GetEventParameter (event, kEventParamKeyCode,
10355 typeUInt32, NULL,
10356 sizeof (UInt32), NULL, &key_code);
10357 if (err != noErr)
10358 break;
10359
10360 do_keystroke ((GetEventKind (event) == kEventRawKeyDown
10361 ? keyDown : autoKey),
10362 char_code, key_code, modifiers,
10363 ((unsigned long)
10364 (GetEventTime (event) / kEventDurationMillisecond)),
10365 read_socket_inev);
10366 result = noErr;
10367 break;
10368
10369 default:
10370 abort ();
10371 }
10372
10373 return result;
10374}
10375
10376static pascal OSStatus
10377mac_handle_command_event (next_handler, event, data)
10378 EventHandlerCallRef next_handler;
10379 EventRef event;
10380 void *data;
10381{
10382 OSStatus err, result = eventNotHandledErr;
10383 HICommand command;
10384 static const EventParamName names[] =
10385 {kEventParamDirectObject, kEventParamKeyModifiers};
10386 static const EventParamType types[] =
10387 {typeHICommand, typeUInt32};
10388 int num_params = sizeof (names) / sizeof (names[0]);
10389
10390 err = GetEventParameter (event, kEventParamDirectObject, typeHICommand,
10391 NULL, sizeof (HICommand), NULL, &command);
10392 if (err != noErr)
10393 return eventNotHandledErr;
10394
10395 switch (GetEventKind (event))
10396 {
10397 case kEventCommandProcess:
10398 result = CallNextEventHandler (next_handler, event);
10399 if (result != eventNotHandledErr)
10400 break;
10401
10402 err = GetEventParameter (event, kEventParamDirectObject,
10403 typeHICommand, NULL,
10404 sizeof (HICommand), NULL, &command);
10405
10406 if (err != noErr || command.commandID == 0)
10407 break;
10408
10409 /* A HI command event is mapped to an Apple event whose event
10410 class symbol is `hi-command' and event ID is its command
10411 ID. */
10412 err = mac_store_event_ref_as_apple_event (0, command.commandID,
10413 Qhi_command, Qnil,
10414 event, num_params,
10415 names, types);
10416 if (err == noErr)
10417 result = noErr;
10418 break;
10419
10420 default:
10421 abort ();
10422 }
10423
10424 return result;
9965} 10425}
9966 10426
9967static pascal OSStatus 10427static pascal OSStatus
@@ -9970,13 +10430,13 @@ mac_handle_mouse_event (next_handler, event, data)
9970 EventRef event; 10430 EventRef event;
9971 void *data; 10431 void *data;
9972{ 10432{
9973 OSStatus result, err; 10433 OSStatus err, result = eventNotHandledErr;
9974 10434
9975 switch (GetEventKind (event)) 10435 switch (GetEventKind (event))
9976 { 10436 {
9977 case kEventMouseWheelMoved: 10437 case kEventMouseWheelMoved:
9978 { 10438 {
9979 WindowPtr wp; 10439 WindowRef wp;
9980 struct frame *f; 10440 struct frame *f;
9981 EventMouseWheelAxis axis; 10441 EventMouseWheelAxis axis;
9982 SInt32 delta; 10442 SInt32 delta;
@@ -9984,15 +10444,14 @@ mac_handle_mouse_event (next_handler, event, data)
9984 10444
9985 result = CallNextEventHandler (next_handler, event); 10445 result = CallNextEventHandler (next_handler, event);
9986 if (result != eventNotHandledErr || read_socket_inev == NULL) 10446 if (result != eventNotHandledErr || read_socket_inev == NULL)
9987 return result; 10447 break;
10448
10449 f = mac_focus_frame (&one_mac_display_info);
9988 10450
9989 err = GetEventParameter (event, kEventParamWindowRef, typeWindowRef, 10451 err = GetEventParameter (event, kEventParamWindowRef, typeWindowRef,
9990 NULL, sizeof (WindowRef), NULL, &wp); 10452 NULL, sizeof (WindowRef), NULL, &wp);
9991 if (err != noErr) 10453 if (err != noErr
9992 break; 10454 || wp != FRAME_MAC_WINDOW (f))
9993
9994 f = mac_window_to_frame (wp);
9995 if (f != mac_focus_frame (&one_mac_display_info))
9996 break; 10455 break;
9997 10456
9998 err = GetEventParameter (event, kEventParamMouseWheelAxis, 10457 err = GetEventParameter (event, kEventParamMouseWheelAxis,
@@ -10007,8 +10466,8 @@ mac_handle_mouse_event (next_handler, event, data)
10007 if (err != noErr) 10466 if (err != noErr)
10008 break; 10467 break;
10009 10468
10010 SetPortWindowPort (wp); 10469 point.h -= f->left_pos + FRAME_OUTER_TO_INNER_DIFF_X (f);
10011 GlobalToLocal (&point); 10470 point.v -= f->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f);
10012 if (point.h < 0 || point.v < 0 10471 if (point.h < 0 || point.v < 0
10013 || EQ (window_from_coordinates (f, point.h, point.v, 0, 0, 0, 1), 10472 || EQ (window_from_coordinates (f, point.h, point.v, 0, 0, 0, 1),
10014 f->tool_bar_window)) 10473 f->tool_bar_window))
@@ -10029,68 +10488,16 @@ mac_handle_mouse_event (next_handler, event, data)
10029 XSETINT (read_socket_inev->y, point.v); 10488 XSETINT (read_socket_inev->y, point.v);
10030 XSETFRAME (read_socket_inev->frame_or_window, f); 10489 XSETFRAME (read_socket_inev->frame_or_window, f);
10031 10490
10032 return noErr; 10491 result = noErr;
10033 } 10492 }
10034 break; 10493 break;
10035 10494
10036 default: 10495 default:
10037 break; 10496 abort ();
10038 }
10039
10040 return eventNotHandledErr;
10041}
10042
10043#if USE_MAC_FONT_PANEL
10044static pascal OSStatus
10045mac_handle_font_event (next_handler, event, data)
10046 EventHandlerCallRef next_handler;
10047 EventRef event;
10048 void *data;
10049{
10050 OSStatus result, err;
10051 Lisp_Object id_key;
10052 int num_params;
10053 const EventParamName *names;
10054 const EventParamType *types;
10055 static const EventParamName names_sel[] = {kEventParamATSUFontID,
10056 kEventParamATSUFontSize,
10057 kEventParamFMFontFamily,
10058 kEventParamFMFontSize,
10059 kEventParamFontColor};
10060 static const EventParamType types_sel[] = {typeATSUFontID,
10061 typeATSUSize,
10062 typeFMFontFamily,
10063 typeFMFontSize,
10064 typeFontColor};
10065
10066 result = CallNextEventHandler (next_handler, event);
10067 if (result != eventNotHandledErr)
10068 return result;
10069
10070 switch (GetEventKind (event))
10071 {
10072 case kEventFontPanelClosed:
10073 id_key = Qpanel_closed;
10074 num_params = 0;
10075 names = NULL;
10076 types = NULL;
10077 break;
10078
10079 case kEventFontSelection:
10080 id_key = Qselection;
10081 num_params = sizeof (names_sel) / sizeof (names_sel[0]);
10082 names = names_sel;
10083 types = types_sel;
10084 break;
10085 } 10497 }
10086 10498
10087 err = mac_store_event_ref_as_apple_event (0, 0, Qfont, id_key, 10499 return result;
10088 event, num_params,
10089 names, types);
10090
10091 return err == noErr ? noErr : eventNotHandledErr;
10092} 10500}
10093#endif
10094 10501
10095#if USE_MAC_TSM 10502#if USE_MAC_TSM
10096static pascal OSStatus 10503static pascal OSStatus
@@ -10147,6 +10554,8 @@ mac_handle_text_input_event (next_handler, event, data)
10147 typeUnicodeText}; 10554 typeUnicodeText};
10148 10555
10149 result = CallNextEventHandler (next_handler, event); 10556 result = CallNextEventHandler (next_handler, event);
10557 if (result != eventNotHandledErr)
10558 return result;
10150 10559
10151 switch (GetEventKind (event)) 10560 switch (GetEventKind (event))
10152 { 10561 {
@@ -10174,7 +10583,7 @@ mac_handle_text_input_event (next_handler, event, data)
10174 sizeof (UInt32), NULL, &modifiers); 10583 sizeof (UInt32), NULL, &modifiers);
10175 if (err == noErr && mac_mapped_modifiers (modifiers)) 10584 if (err == noErr && mac_mapped_modifiers (modifiers))
10176 /* There're mapped modifier keys. Process it in 10585 /* There're mapped modifier keys. Process it in
10177 XTread_socket. */ 10586 do_keystroke. */
10178 return eventNotHandledErr; 10587 return eventNotHandledErr;
10179 if (err == noErr) 10588 if (err == noErr)
10180 err = GetEventParameter (kbd_event, kEventParamKeyUnicodes, 10589 err = GetEventParameter (kbd_event, kEventParamKeyUnicodes,
@@ -10189,7 +10598,7 @@ mac_handle_text_input_event (next_handler, event, data)
10189 sizeof (UniChar), NULL, &code); 10598 sizeof (UniChar), NULL, &code);
10190 if (err == noErr && code < 0x80) 10599 if (err == noErr && code < 0x80)
10191 { 10600 {
10192 /* ASCII character. Process it in XTread_socket. */ 10601 /* ASCII character. Process it in do_keystroke. */
10193 if (read_socket_inev && code >= 0x20 && code <= 0x7e) 10602 if (read_socket_inev && code >= 0x20 && code <= 0x7e)
10194 { 10603 {
10195 UInt32 key_code; 10604 UInt32 key_code;
@@ -10251,11 +10660,11 @@ mac_handle_text_input_event (next_handler, event, data)
10251 } 10660 }
10252 10661
10253 p.h = (WINDOW_TO_FRAME_PIXEL_X (w, w->cursor.x) 10662 p.h = (WINDOW_TO_FRAME_PIXEL_X (w, w->cursor.x)
10254 + WINDOW_LEFT_FRINGE_WIDTH (w)); 10663 + WINDOW_LEFT_FRINGE_WIDTH (w)
10664 + f->left_pos + FRAME_OUTER_TO_INNER_DIFF_X (f));
10255 p.v = (WINDOW_TO_FRAME_PIXEL_Y (w, w->cursor.y) 10665 p.v = (WINDOW_TO_FRAME_PIXEL_Y (w, w->cursor.y)
10256 + FONT_BASE (FRAME_FONT (f))); 10666 + FONT_BASE (FRAME_FONT (f))
10257 SetPortWindowPort (FRAME_MAC_WINDOW (f)); 10667 + f->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f));
10258 LocalToGlobal (&p);
10259 err = SetEventParameter (event, kEventParamTextInputReplyPoint, 10668 err = SetEventParameter (event, kEventParamTextInputReplyPoint,
10260 typeQDPoint, sizeof (typeQDPoint), &p); 10669 typeQDPoint, sizeof (typeQDPoint), &p);
10261 } 10670 }
@@ -10269,146 +10678,155 @@ mac_handle_text_input_event (next_handler, event, data)
10269 err = mac_store_event_ref_as_apple_event (0, 0, Qtext_input, id_key, 10678 err = mac_store_event_ref_as_apple_event (0, 0, Qtext_input, id_key,
10270 event, num_params, 10679 event, num_params,
10271 names, types); 10680 names, types);
10681 if (err == noErr)
10682 result = noErr;
10272 10683
10273 return err == noErr ? noErr : result; 10684 return result;
10274} 10685}
10275#endif 10686#endif
10687#endif /* TARGET_API_MAC_CARBON */
10688
10276 10689
10277#ifdef MAC_OSX
10278OSStatus 10690OSStatus
10279mac_store_service_event (event) 10691install_window_handler (window)
10280 EventRef event; 10692 WindowRef window;
10281{ 10693{
10282 OSStatus err; 10694 OSStatus err = noErr;
10283 Lisp_Object id_key;
10284 int num_params;
10285 const EventParamName *names;
10286 const EventParamType *types;
10287 static const EventParamName names_pfm[] =
10288 {kEventParamServiceMessageName, kEventParamServiceUserData};
10289 static const EventParamType types_pfm[] =
10290 {typeCFStringRef, typeCFStringRef};
10291 10695
10292 switch (GetEventKind (event)) 10696#if TARGET_API_MAC_CARBON
10697 if (err == noErr)
10293 { 10698 {
10294 case kEventServicePaste: 10699 static const EventTypeSpec specs[] =
10295 id_key = Qpaste; 10700 {
10296 num_params = 0; 10701 /* -- window refresh events -- */
10297 names = NULL; 10702 {kEventClassWindow, kEventWindowUpdate},
10298 types = NULL; 10703 /* -- window state change events -- */
10299 break; 10704 {kEventClassWindow, kEventWindowShowing},
10705 {kEventClassWindow, kEventWindowHiding},
10706 {kEventClassWindow, kEventWindowShown},
10707 {kEventClassWindow, kEventWindowHidden},
10708 {kEventClassWindow, kEventWindowCollapsed},
10709 {kEventClassWindow, kEventWindowExpanded},
10710 {kEventClassWindow, kEventWindowBoundsChanging},
10711 {kEventClassWindow, kEventWindowBoundsChanged},
10712 /* -- window action events -- */
10713 {kEventClassWindow, kEventWindowClose},
10714 {kEventClassWindow, kEventWindowGetIdealSize},
10715#ifdef MAC_OSX
10716 {kEventClassWindow, kEventWindowToolbarSwitchMode},
10717#endif
10718#if USE_MAC_TSM
10719 /* -- window focus events -- */
10720 {kEventClassWindow, kEventWindowFocusAcquired},
10721 {kEventClassWindow, kEventWindowFocusRelinquish},
10722#endif
10723 };
10724 static EventHandlerUPP handle_window_eventUPP = NULL;
10300 10725
10301 case kEventServicePerform: 10726 if (handle_window_eventUPP == NULL)
10302 id_key = Qperform; 10727 handle_window_eventUPP = NewEventHandlerUPP (mac_handle_window_event);
10303 num_params = sizeof (names_pfm) / sizeof (names_pfm[0]);
10304 names = names_pfm;
10305 types = types_pfm;
10306 break;
10307 10728
10308 default: 10729 err = InstallWindowEventHandler (window, handle_window_eventUPP,
10309 abort (); 10730 GetEventTypeCount (specs),
10731 specs, NULL, NULL);
10310 } 10732 }
10733#endif
10311 10734
10312 err = mac_store_event_ref_as_apple_event (0, 0, Qservice, id_key, 10735 if (err == noErr)
10313 event, num_params, 10736 err = install_drag_handler (window);
10314 names, types);
10315 10737
10316 return err; 10738 return err;
10317} 10739}
10318#endif /* MAC_OSX */
10319#endif /* USE_CARBON_EVENTS */
10320 10740
10741void
10742remove_window_handler (window)
10743 WindowRef window;
10744{
10745 remove_drag_handler (window);
10746}
10321 10747
10322OSStatus 10748#if TARGET_API_MAC_CARBON
10323install_window_handler (window) 10749static OSStatus
10324 WindowPtr window; 10750install_application_handler ()
10325{ 10751{
10326 OSStatus err = noErr; 10752 OSStatus err = noErr;
10327#if USE_CARBON_EVENTS
10328 static const EventTypeSpec specs_window[] =
10329 {{kEventClassWindow, kEventWindowUpdate},
10330 {kEventClassWindow, kEventWindowGetIdealSize},
10331 {kEventClassWindow, kEventWindowBoundsChanging},
10332 {kEventClassWindow, kEventWindowBoundsChanged},
10333 {kEventClassWindow, kEventWindowShown},
10334 {kEventClassWindow, kEventWindowHidden},
10335 {kEventClassWindow, kEventWindowExpanded},
10336 {kEventClassWindow, kEventWindowCollapsed},
10337 {kEventClassWindow, kEventWindowClose},
10338#ifdef MAC_OSX
10339 {kEventClassWindow, kEventWindowToolbarSwitchMode},
10340#endif
10341#if USE_MAC_TSM
10342 {kEventClassWindow, kEventWindowFocusAcquired},
10343 {kEventClassWindow, kEventWindowFocusRelinquish},
10344#endif
10345 };
10346 static const EventTypeSpec specs_mouse[] =
10347 {{kEventClassMouse, kEventMouseWheelMoved}};
10348 static EventHandlerUPP handle_window_eventUPP = NULL;
10349 static EventHandlerUPP handle_mouse_eventUPP = NULL;
10350#if USE_MAC_FONT_PANEL
10351 static const EventTypeSpec specs_font[] =
10352 {{kEventClassFont, kEventFontPanelClosed},
10353 {kEventClassFont, kEventFontSelection}};
10354 static EventHandlerUPP handle_font_eventUPP = NULL;
10355#endif
10356#if USE_MAC_TSM
10357 static const EventTypeSpec specs_text_input[] =
10358 {{kEventClassTextInput, kEventTextInputUpdateActiveInputArea},
10359 {kEventClassTextInput, kEventTextInputUnicodeForKeyEvent},
10360 {kEventClassTextInput, kEventTextInputOffsetToPos}};
10361 static EventHandlerUPP handle_text_input_eventUPP = NULL;
10362#endif
10363 10753
10364 if (handle_window_eventUPP == NULL) 10754 if (err == noErr)
10365 handle_window_eventUPP = NewEventHandlerUPP (mac_handle_window_event); 10755 {
10366 if (handle_mouse_eventUPP == NULL) 10756 static const EventTypeSpec specs[] = {
10367 handle_mouse_eventUPP = NewEventHandlerUPP (mac_handle_mouse_event);
10368#if USE_MAC_FONT_PANEL
10369 if (handle_font_eventUPP == NULL)
10370 handle_font_eventUPP = NewEventHandlerUPP (mac_handle_font_event);
10371#endif
10372#if USE_MAC_TSM 10757#if USE_MAC_TSM
10373 if (handle_text_input_eventUPP == NULL) 10758 {kEventClassApplication, kEventAppActivated},
10374 handle_text_input_eventUPP = 10759 {kEventClassApplication, kEventAppDeactivated},
10375 NewEventHandlerUPP (mac_handle_text_input_event);
10376#endif 10760#endif
10377 err = InstallWindowEventHandler (window, handle_window_eventUPP, 10761 };
10378 GetEventTypeCount (specs_window), 10762
10379 specs_window, NULL, NULL); 10763 err = InstallApplicationEventHandler (NewEventHandlerUPP
10764 (mac_handle_application_event),
10765 GetEventTypeCount (specs),
10766 specs, NULL, NULL);
10767 }
10768
10380 if (err == noErr) 10769 if (err == noErr)
10381 err = InstallWindowEventHandler (window, handle_mouse_eventUPP, 10770 {
10382 GetEventTypeCount (specs_mouse), 10771 static const EventTypeSpec specs[] =
10383 specs_mouse, NULL, NULL); 10772 {{kEventClassKeyboard, kEventRawKeyDown},
10384#if USE_MAC_FONT_PANEL 10773 {kEventClassKeyboard, kEventRawKeyRepeat},
10774 {kEventClassKeyboard, kEventRawKeyUp}};
10775
10776 err = InstallApplicationEventHandler (NewEventHandlerUPP
10777 (mac_handle_keyboard_event),
10778 GetEventTypeCount (specs),
10779 specs, NULL, NULL);
10780 }
10781
10385 if (err == noErr) 10782 if (err == noErr)
10386 err = InstallWindowEventHandler (window, handle_font_eventUPP, 10783 {
10387 GetEventTypeCount (specs_font), 10784 static const EventTypeSpec specs[] =
10388 specs_font, NULL, NULL); 10785 {{kEventClassCommand, kEventCommandProcess}};
10389#endif 10786
10787 err = InstallApplicationEventHandler (NewEventHandlerUPP
10788 (mac_handle_command_event),
10789 GetEventTypeCount (specs),
10790 specs, NULL, NULL);
10791 }
10792
10793 if (err == noErr)
10794 {
10795 static const EventTypeSpec specs[] =
10796 {{kEventClassMouse, kEventMouseWheelMoved}};
10797
10798 err = InstallApplicationEventHandler (NewEventHandlerUPP
10799 (mac_handle_mouse_event),
10800 GetEventTypeCount (specs),
10801 specs, NULL, NULL);
10802 }
10803
10390#if USE_MAC_TSM 10804#if USE_MAC_TSM
10391 if (err == noErr) 10805 if (err == noErr)
10392 err = InstallWindowEventHandler (window, handle_text_input_eventUPP, 10806 {
10393 GetEventTypeCount (specs_text_input), 10807 static const EventTypeSpec spec[] =
10394 specs_text_input, window, NULL); 10808 {{kEventClassTextInput, kEventTextInputUpdateActiveInputArea},
10395#endif 10809 {kEventClassTextInput, kEventTextInputUnicodeForKeyEvent},
10810 {kEventClassTextInput, kEventTextInputOffsetToPos}};
10811
10812 err = InstallApplicationEventHandler (NewEventHandlerUPP
10813 (mac_handle_text_input_event),
10814 GetEventTypeCount (spec),
10815 spec, NULL, NULL);
10816 }
10396#endif 10817#endif
10818
10397 if (err == noErr) 10819 if (err == noErr)
10398 err = install_drag_handler (window); 10820 err = install_menu_target_item_handler ();
10821
10822#ifdef MAC_OSX
10399 if (err == noErr) 10823 if (err == noErr)
10400 err = install_menu_target_item_handler (window); 10824 err = install_service_handler ();
10825#endif
10401 10826
10402 return err; 10827 return err;
10403} 10828}
10404 10829#endif
10405void
10406remove_window_handler (window)
10407 WindowPtr window;
10408{
10409 remove_drag_handler (window);
10410}
10411
10412 10830
10413static pascal void 10831static pascal void
10414mac_handle_dm_notification (event) 10832mac_handle_dm_notification (event)
@@ -10417,20 +10835,48 @@ mac_handle_dm_notification (event)
10417 mac_screen_config_changed = 1; 10835 mac_screen_config_changed = 1;
10418} 10836}
10419 10837
10838#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
10839static void
10840mac_handle_cg_display_reconfig (display, flags, user_info)
10841 CGDirectDisplayID display;
10842 CGDisplayChangeSummaryFlags flags;
10843 void *user_info;
10844{
10845 mac_screen_config_changed = 1;
10846}
10847#endif
10848
10420static OSErr 10849static OSErr
10421init_dm_notification_handler () 10850init_dm_notification_handler ()
10422{ 10851{
10423 OSErr err; 10852 OSErr err = noErr;
10424 static DMNotificationUPP handle_dm_notificationUPP = NULL;
10425 ProcessSerialNumber psn;
10426 10853
10427 if (handle_dm_notificationUPP == NULL) 10854#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
10428 handle_dm_notificationUPP = 10855#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
10429 NewDMNotificationUPP (mac_handle_dm_notification); 10856 if (CGDisplayRegisterReconfigurationCallback != NULL)
10857#endif
10858 {
10859 CGDisplayRegisterReconfigurationCallback (mac_handle_cg_display_reconfig,
10860 NULL);
10861 }
10862#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
10863 else /* CGDisplayRegisterReconfigurationCallback == NULL */
10864#endif
10865#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 */
10866#if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020
10867 {
10868 static DMNotificationUPP handle_dm_notificationUPP = NULL;
10869 ProcessSerialNumber psn;
10430 10870
10431 err = GetCurrentProcess (&psn); 10871 if (handle_dm_notificationUPP == NULL)
10432 if (err == noErr) 10872 handle_dm_notificationUPP =
10433 err = DMRegisterNotifyProc (handle_dm_notificationUPP, &psn); 10873 NewDMNotificationUPP (mac_handle_dm_notification);
10874
10875 err = GetCurrentProcess (&psn);
10876 if (err == noErr)
10877 err = DMRegisterNotifyProc (handle_dm_notificationUPP, &psn);
10878 }
10879#endif
10434 10880
10435 return err; 10881 return err;
10436} 10882}
@@ -10575,7 +11021,7 @@ main (void)
10575} 11021}
10576#endif 11022#endif
10577 11023
10578#if !USE_CARBON_EVENTS 11024#if !TARGET_API_MAC_CARBON
10579static RgnHandle mouse_region = NULL; 11025static RgnHandle mouse_region = NULL;
10580 11026
10581Boolean 11027Boolean
@@ -10612,7 +11058,7 @@ mac_wait_next_event (er, sleep_time, dequeue)
10612 er_buf.what = nullEvent; 11058 er_buf.what = nullEvent;
10613 return true; 11059 return true;
10614} 11060}
10615#endif /* not USE_CARBON_EVENTS */ 11061#endif /* not TARGET_API_MAC_CARBON */
10616 11062
10617#if TARGET_API_MAC_CARBON 11063#if TARGET_API_MAC_CARBON
10618OSStatus 11064OSStatus
@@ -10646,44 +11092,6 @@ mac_post_mouse_moved_event ()
10646 11092
10647 return err; 11093 return err;
10648} 11094}
10649
10650static void
10651mac_set_unicode_keystroke_event (code, buf)
10652 UniChar code;
10653 struct input_event *buf;
10654{
10655 int charset_id, c1, c2;
10656
10657 if (code < 0x80)
10658 {
10659 buf->kind = ASCII_KEYSTROKE_EVENT;
10660 buf->code = code;
10661 }
10662 else if (code < 0x100)
10663 {
10664 if (code < 0xA0)
10665 charset_id = CHARSET_8_BIT_CONTROL;
10666 else
10667 charset_id = charset_latin_iso8859_1;
10668 buf->kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
10669 buf->code = MAKE_CHAR (charset_id, code, 0);
10670 }
10671 else
10672 {
10673 if (code < 0x2500)
10674 charset_id = charset_mule_unicode_0100_24ff,
10675 code -= 0x100;
10676 else if (code < 0x33FF)
10677 charset_id = charset_mule_unicode_2500_33ff,
10678 code -= 0x2500;
10679 else if (code >= 0xE000)
10680 charset_id = charset_mule_unicode_e000_ffff,
10681 code -= 0xE000;
10682 c1 = (code / 96) + 32, c2 = (code % 96) + 32;
10683 buf->kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
10684 buf->code = MAKE_CHAR (charset_id, c1, c2);
10685 }
10686}
10687#endif 11095#endif
10688 11096
10689/* Emacs calls this whenever it wants to read an input event from the 11097/* Emacs calls this whenever it wants to read an input event from the
@@ -10695,7 +11103,7 @@ XTread_socket (sd, expected, hold_quit)
10695{ 11103{
10696 struct input_event inev; 11104 struct input_event inev;
10697 int count = 0; 11105 int count = 0;
10698#if USE_CARBON_EVENTS 11106#if TARGET_API_MAC_CARBON
10699 EventRef eventRef; 11107 EventRef eventRef;
10700 EventTargetRef toolbox_dispatcher; 11108 EventTargetRef toolbox_dispatcher;
10701#endif 11109#endif
@@ -10716,7 +11124,7 @@ XTread_socket (sd, expected, hold_quit)
10716 11124
10717 ++handling_signal; 11125 ++handling_signal;
10718 11126
10719#if USE_CARBON_EVENTS 11127#if TARGET_API_MAC_CARBON
10720 toolbox_dispatcher = GetEventDispatcherTarget (); 11128 toolbox_dispatcher = GetEventDispatcherTarget ();
10721 11129
10722 while ( 11130 while (
@@ -10725,9 +11133,9 @@ XTread_socket (sd, expected, hold_quit)
10725#endif 11133#endif
10726 !ReceiveNextEvent (0, NULL, kEventDurationNoWait, 11134 !ReceiveNextEvent (0, NULL, kEventDurationNoWait,
10727 kEventRemoveFromQueue, &eventRef)) 11135 kEventRemoveFromQueue, &eventRef))
10728#else /* !USE_CARBON_EVENTS */ 11136#else /* !TARGET_API_MAC_CARBON */
10729 while (mac_wait_next_event (&er, 0, true)) 11137 while (mac_wait_next_event (&er, 0, true))
10730#endif /* !USE_CARBON_EVENTS */ 11138#endif /* !TARGET_API_MAC_CARBON */
10731 { 11139 {
10732 int do_help = 0; 11140 int do_help = 0;
10733 struct frame *f; 11141 struct frame *f;
@@ -10737,44 +11145,33 @@ XTread_socket (sd, expected, hold_quit)
10737 inev.kind = NO_EVENT; 11145 inev.kind = NO_EVENT;
10738 inev.arg = Qnil; 11146 inev.arg = Qnil;
10739 11147
10740#if USE_CARBON_EVENTS 11148#if TARGET_API_MAC_CARBON
10741 timestamp = GetEventTime (eventRef) / kEventDurationMillisecond; 11149 timestamp = GetEventTime (eventRef) / kEventDurationMillisecond;
10742#else
10743 timestamp = er.when * (1000 / 60); /* ticks to milliseconds */
10744#endif
10745 11150
10746#if USE_CARBON_EVENTS
10747 /* Handle new events */
10748 if (!mac_convert_event_ref (eventRef, &er)) 11151 if (!mac_convert_event_ref (eventRef, &er))
10749 { 11152 goto OTHER;
10750 /* There used to be a handler for the kEventMouseWheelMoved 11153#else /* !TARGET_API_MAC_CARBON */
10751 event here. But as of Mac OS X 10.4, this kind of event 11154 timestamp = er.when * (1000 / 60); /* ticks to milliseconds */
10752 is not directly posted to the main event queue by 11155#endif /* !TARGET_API_MAC_CARBON */
10753 two-finger scrolling on the trackpad. Instead, some 11156
10754 private event is posted and it is converted to a wheel
10755 event by the default handler for the application target.
10756 The converted one can be received by a Carbon event
10757 handler installed on a window target. */
10758 read_socket_inev = &inev;
10759 SendEventToEventTarget (eventRef, toolbox_dispatcher);
10760 read_socket_inev = NULL;
10761 }
10762 else
10763#endif /* USE_CARBON_EVENTS */
10764 switch (er.what) 11157 switch (er.what)
10765 { 11158 {
10766 case mouseDown: 11159 case mouseDown:
10767 case mouseUp: 11160 case mouseUp:
10768 { 11161 {
10769 WindowPtr window_ptr; 11162 WindowRef window_ptr;
10770 ControlPartCode part_code; 11163 ControlPartCode part_code;
10771 int tool_bar_p = 0; 11164 int tool_bar_p = 0;
10772 11165
10773#if USE_CARBON_EVENTS 11166#if TARGET_API_MAC_CARBON
11167 OSStatus err;
11168
10774 /* This is needed to send mouse events like aqua window 11169 /* This is needed to send mouse events like aqua window
10775 buttons to the correct handler. */ 11170 buttons to the correct handler. */
10776 if (SendEventToEventTarget (eventRef, toolbox_dispatcher) 11171 read_socket_inev = &inev;
10777 != eventNotHandledErr) 11172 err = SendEventToEventTarget (eventRef, toolbox_dispatcher);
11173 read_socket_inev = NULL;
11174 if (err != eventNotHandledErr)
10778 break; 11175 break;
10779#endif 11176#endif
10780 last_mouse_glyph_frame = 0; 11177 last_mouse_glyph_frame = 0;
@@ -10822,17 +11219,20 @@ XTread_socket (sd, expected, hold_quit)
10822 else 11219 else
10823 { 11220 {
10824 ControlPartCode control_part_code; 11221 ControlPartCode control_part_code;
10825 ControlHandle ch; 11222 ControlRef ch;
10826 Point mouse_loc = er.where; 11223 Point mouse_loc;
10827#ifdef MAC_OSX 11224#ifdef MAC_OSX
10828 ControlKind control_kind; 11225 ControlKind control_kind;
10829#endif 11226#endif
10830 11227
10831 f = mac_window_to_frame (window_ptr); 11228 f = mac_window_to_frame (window_ptr);
10832 /* convert to local coordinates of new window */ 11229 /* convert to local coordinates of new window */
10833 SetPortWindowPort (window_ptr); 11230 mouse_loc.h = (er.where.h
10834 11231 - (f->left_pos
10835 GlobalToLocal (&mouse_loc); 11232 + FRAME_OUTER_TO_INNER_DIFF_X (f)));
11233 mouse_loc.v = (er.where.v
11234 - (f->top_pos
11235 + FRAME_OUTER_TO_INNER_DIFF_Y (f)));
10836#if TARGET_API_MAC_CARBON 11236#if TARGET_API_MAC_CARBON
10837 ch = FindControlUnderMouse (mouse_loc, window_ptr, 11237 ch = FindControlUnderMouse (mouse_loc, window_ptr,
10838 &control_part_code); 11238 &control_part_code);
@@ -10845,7 +11245,7 @@ XTread_socket (sd, expected, hold_quit)
10845 &ch); 11245 &ch);
10846#endif 11246#endif
10847 11247
10848#if USE_CARBON_EVENTS 11248#if TARGET_API_MAC_CARBON
10849 inev.code = mac_get_mouse_btn (eventRef); 11249 inev.code = mac_get_mouse_btn (eventRef);
10850 inev.modifiers = mac_event_to_emacs_modifiers (eventRef); 11250 inev.modifiers = mac_event_to_emacs_modifiers (eventRef);
10851#else 11251#else
@@ -10981,16 +11381,14 @@ XTread_socket (sd, expected, hold_quit)
10981 DragWindow (window_ptr, er.where, NULL); 11381 DragWindow (window_ptr, er.where, NULL);
10982#else /* not TARGET_API_MAC_CARBON */ 11382#else /* not TARGET_API_MAC_CARBON */
10983 DragWindow (window_ptr, er.where, &qd.screenBits.bounds); 11383 DragWindow (window_ptr, er.where, &qd.screenBits.bounds);
10984#endif /* not TARGET_API_MAC_CARBON */
10985 /* Update the frame parameters. */ 11384 /* Update the frame parameters. */
10986#if !USE_CARBON_EVENTS
10987 { 11385 {
10988 struct frame *f = mac_window_to_frame (window_ptr); 11386 struct frame *f = mac_window_to_frame (window_ptr);
10989 11387
10990 if (f && !f->async_iconified) 11388 if (f && !f->async_iconified)
10991 mac_handle_origin_change (f); 11389 mac_handle_origin_change (f);
10992 } 11390 }
10993#endif 11391#endif /* not TARGET_API_MAC_CARBON */
10994 break; 11392 break;
10995 11393
10996 case inGoAway: 11394 case inGoAway:
@@ -11020,35 +11418,17 @@ XTread_socket (sd, expected, hold_quit)
11020 } 11418 }
11021 break; 11419 break;
11022 11420
11421#if !TARGET_API_MAC_CARBON
11023 case updateEvt: 11422 case updateEvt:
11024#if USE_CARBON_EVENTS 11423 do_window_update ((WindowRef) er.message);
11025 if (SendEventToEventTarget (eventRef, toolbox_dispatcher)
11026 != eventNotHandledErr)
11027 break;
11028#else
11029 do_window_update ((WindowPtr) er.message);
11030#endif
11031 break; 11424 break;
11425#endif
11032 11426
11033 case osEvt: 11427 case osEvt:
11034#if USE_CARBON_EVENTS
11035 if (SendEventToEventTarget (eventRef, toolbox_dispatcher)
11036 != eventNotHandledErr)
11037 break;
11038#endif
11039 switch ((er.message >> 24) & 0x000000FF) 11428 switch ((er.message >> 24) & 0x000000FF)
11040 { 11429 {
11041 case suspendResumeMessage:
11042#if USE_MAC_TSM
11043 if (er.message & resumeFlag)
11044 mac_tsm_resume ();
11045 else
11046 mac_tsm_suspend ();
11047#endif
11048 break;
11049
11050 case mouseMovedMessage: 11430 case mouseMovedMessage:
11051#if !USE_CARBON_EVENTS 11431#if !TARGET_API_MAC_CARBON
11052 SetRectRgn (mouse_region, er.where.h, er.where.v, 11432 SetRectRgn (mouse_region, er.where.h, er.where.v,
11053 er.where.h + 1, er.where.v + 1); 11433 er.where.h + 1, er.where.v + 1);
11054#endif 11434#endif
@@ -11069,13 +11449,15 @@ XTread_socket (sd, expected, hold_quit)
11069 11449
11070 if (f) 11450 if (f)
11071 { 11451 {
11072 WindowPtr wp = FRAME_MAC_WINDOW (f); 11452 WindowRef wp = FRAME_MAC_WINDOW (f);
11073 Point mouse_pos = er.where; 11453 Point mouse_pos;
11074 11454
11075 SetPortWindowPort (wp); 11455 mouse_pos.h = (er.where.h
11076 11456 - (f->left_pos
11077 GlobalToLocal (&mouse_pos); 11457 + FRAME_OUTER_TO_INNER_DIFF_X (f)));
11078 11458 mouse_pos.v = (er.where.v
11459 - (f->top_pos
11460 + FRAME_OUTER_TO_INNER_DIFF_Y (f)));
11079 if (dpyinfo->grabbed && tracked_scroll_bar) 11461 if (dpyinfo->grabbed && tracked_scroll_bar)
11080#ifdef USE_TOOLKIT_SCROLL_BARS 11462#ifdef USE_TOOLKIT_SCROLL_BARS
11081 x_scroll_bar_handle_drag (wp, tracked_scroll_bar, 11463 x_scroll_bar_handle_drag (wp, tracked_scroll_bar,
@@ -11123,18 +11505,16 @@ XTread_socket (sd, expected, hold_quit)
11123 if (!NILP (help_echo_string) || !NILP (previous_help_echo_string)) 11505 if (!NILP (help_echo_string) || !NILP (previous_help_echo_string))
11124 do_help = 1; 11506 do_help = 1;
11125 break; 11507 break;
11508
11509 default:
11510 goto OTHER;
11126 } 11511 }
11127 break; 11512 break;
11128 11513
11129 case activateEvt: 11514 case activateEvt:
11130 { 11515 {
11131 WindowPtr window_ptr = (WindowPtr) er.message; 11516 WindowRef window_ptr = (WindowRef) er.message;
11132 11517
11133#if USE_CARBON_EVENTS
11134 if (SendEventToEventTarget (eventRef, toolbox_dispatcher)
11135 != eventNotHandledErr)
11136 break;
11137#endif
11138 if (window_ptr == tip_window) 11518 if (window_ptr == tip_window)
11139 { 11519 {
11140 HideWindow (tip_window); 11520 HideWindow (tip_window);
@@ -11142,21 +11522,26 @@ XTread_socket (sd, expected, hold_quit)
11142 } 11522 }
11143 11523
11144 if (!is_emacs_window (window_ptr)) 11524 if (!is_emacs_window (window_ptr))
11145 break; 11525 goto OTHER;
11526
11527 f = mac_window_to_frame (window_ptr);
11146 11528
11147 if ((er.modifiers & activeFlag) != 0) 11529 if ((er.modifiers & activeFlag) != 0)
11148 { 11530 {
11149 /* A window has been activated */ 11531 /* A window has been activated */
11150 Point mouse_loc = er.where; 11532 Point mouse_loc;
11151 11533
11152 x_detect_focus_change (dpyinfo, &er, &inev); 11534 x_detect_focus_change (dpyinfo, &er, &inev);
11153 11535
11154 SetPortWindowPort (window_ptr); 11536 mouse_loc.h = (er.where.h
11155 GlobalToLocal (&mouse_loc); 11537 - (f->left_pos
11538 + FRAME_OUTER_TO_INNER_DIFF_X (f)));
11539 mouse_loc.v = (er.where.v
11540 - (f->top_pos
11541 + FRAME_OUTER_TO_INNER_DIFF_Y (f)));
11156 /* Window-activated event counts as mouse movement, 11542 /* Window-activated event counts as mouse movement,
11157 so update things that depend on mouse position. */ 11543 so update things that depend on mouse position. */
11158 note_mouse_movement (mac_window_to_frame (window_ptr), 11544 note_mouse_movement (f, &mouse_loc);
11159 &mouse_loc);
11160 } 11545 }
11161 else 11546 else
11162 { 11547 {
@@ -11181,7 +11566,6 @@ XTread_socket (sd, expected, hold_quit)
11181 11566
11182 x_detect_focus_change (dpyinfo, &er, &inev); 11567 x_detect_focus_change (dpyinfo, &er, &inev);
11183 11568
11184 f = mac_window_to_frame (window_ptr);
11185 if (f == dpyinfo->mouse_face_mouse_frame) 11569 if (f == dpyinfo->mouse_face_mouse_frame)
11186 { 11570 {
11187 /* If we move outside the frame, then we're 11571 /* If we move outside the frame, then we're
@@ -11204,218 +11588,26 @@ XTread_socket (sd, expected, hold_quit)
11204 case keyDown: 11588 case keyDown:
11205 case keyUp: 11589 case keyUp:
11206 case autoKey: 11590 case autoKey:
11207 { 11591 ObscureCursor ();
11208 int keycode = (er.message & keyCodeMask) >> 8;
11209 static SInt16 last_key_script = -1;
11210 SInt16 current_key_script;
11211 UInt32 modifiers = er.modifiers, mapped_modifiers;
11212 11592
11213#if USE_CARBON_EVENTS && defined (MAC_OSX) 11593 f = mac_focus_frame (dpyinfo);
11214 GetEventParameter (eventRef, kEventParamKeyModifiers, 11594 XSETFRAME (inev.frame_or_window, f);
11215 typeUInt32, NULL,
11216 sizeof (UInt32), NULL, &modifiers);
11217#endif
11218 mapped_modifiers = mac_mapped_modifiers (modifiers);
11219
11220#if USE_CARBON_EVENTS && (defined (MAC_OSX) || USE_MAC_TSM)
11221 /* When using Carbon Events, we need to pass raw keyboard
11222 events to the TSM ourselves. If TSM handles it, it
11223 will pass back noErr, otherwise it will pass back
11224 "eventNotHandledErr" and we can process it
11225 normally. */
11226 if (!(mapped_modifiers
11227 & ~(mac_pass_command_to_system ? cmdKey : 0)
11228 & ~(mac_pass_control_to_system ? controlKey : 0)))
11229 {
11230 OSStatus err;
11231
11232 read_socket_inev = &inev;
11233 err = SendEventToEventTarget (eventRef, toolbox_dispatcher);
11234 read_socket_inev = NULL;
11235 if (err != eventNotHandledErr)
11236 break;
11237 }
11238#endif
11239 if (er.what == keyUp)
11240 break;
11241
11242 ObscureCursor ();
11243
11244 f = mac_focus_frame (dpyinfo);
11245
11246 if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight)
11247 && !EQ (f->tool_bar_window, dpyinfo->mouse_face_window))
11248 {
11249 clear_mouse_face (dpyinfo);
11250 dpyinfo->mouse_face_hidden = 1;
11251 }
11252
11253 current_key_script = GetScriptManagerVariable (smKeyScript);
11254 if (last_key_script != current_key_script)
11255 {
11256 struct input_event event;
11257
11258 EVENT_INIT (event);
11259 event.kind = LANGUAGE_CHANGE_EVENT;
11260 event.arg = Qnil;
11261 event.code = current_key_script;
11262 event.timestamp = timestamp;
11263 kbd_buffer_store_event (&event);
11264 count++;
11265 last_key_script = current_key_script;
11266 }
11267
11268#if USE_MAC_TSM
11269 if (inev.kind != NO_EVENT)
11270 break;
11271#endif
11272
11273#ifdef MAC_OSX
11274 if (mapped_modifiers & kEventKeyModifierFnMask
11275 && keycode <= 0x7f
11276 && fn_keycode_to_keycode_table[keycode])
11277 keycode = fn_keycode_to_keycode_table[keycode];
11278#endif
11279 if (keycode <= 0x7f && keycode_to_xkeysym_table [keycode])
11280 {
11281 inev.kind = NON_ASCII_KEYSTROKE_EVENT;
11282 inev.code = 0xff00 | keycode_to_xkeysym_table [keycode];
11283#ifdef MAC_OSX
11284 if (modifiers & kEventKeyModifierFnMask
11285 && keycode <= 0x7f
11286 && fn_keycode_to_keycode_table[keycode] == keycode)
11287 modifiers &= ~kEventKeyModifierFnMask;
11288#endif
11289 }
11290 else if (mapped_modifiers)
11291 {
11292 /* translate the keycode back to determine the
11293 original key */
11294#ifdef MAC_OSX
11295 UCKeyboardLayout *uchr_ptr = NULL;
11296#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
11297 OSStatus err;
11298 KeyboardLayoutRef layout;
11299
11300 err = KLGetCurrentKeyboardLayout (&layout);
11301 if (err == noErr)
11302 KLGetKeyboardLayoutProperty (layout, kKLuchrData,
11303 (const void **) &uchr_ptr);
11304#else
11305 static SInt16 last_key_layout_id = 0;
11306 static Handle uchr_handle = (Handle)-1;
11307 SInt16 current_key_layout_id =
11308 GetScriptVariable (current_key_script, smScriptKeys);
11309
11310 if (uchr_handle == (Handle)-1
11311 || last_key_layout_id != current_key_layout_id)
11312 {
11313 uchr_handle = GetResource ('uchr', current_key_layout_id);
11314 last_key_layout_id = current_key_layout_id;
11315 }
11316 if (uchr_handle)
11317 uchr_ptr = (UCKeyboardLayout *)*uchr_handle;
11318#endif
11319
11320 if (uchr_ptr)
11321 {
11322 OSStatus status;
11323 UInt16 key_action = er.what - keyDown;
11324 UInt32 modifier_key_state =
11325 (modifiers & ~mapped_modifiers) >> 8;
11326 UInt32 keyboard_type = LMGetKbdType ();
11327 SInt32 dead_key_state = 0;
11328 UniChar code;
11329 UniCharCount actual_length;
11330
11331 status = UCKeyTranslate (uchr_ptr,
11332 keycode, key_action,
11333 modifier_key_state,
11334 keyboard_type,
11335 kUCKeyTranslateNoDeadKeysMask,
11336 &dead_key_state,
11337 1, &actual_length, &code);
11338 if (status == noErr && actual_length == 1)
11339 mac_set_unicode_keystroke_event (code, &inev);
11340 }
11341#endif /* MAC_OSX */
11342
11343 if (inev.kind == NO_EVENT)
11344 {
11345 /* This code comes from Keyboard Resource,
11346 Appendix C of IM - Text. This is necessary
11347 since shift is ignored in KCHR table
11348 translation when option or command is pressed.
11349 It also does not translate correctly
11350 control-shift chars like C-% so mask off shift
11351 here also. */
11352 /* Mask off modifier keys that are mapped to some
11353 Emacs modifiers. */
11354 int new_modifiers = er.modifiers & ~mapped_modifiers;
11355 /* set high byte of keycode to modifier high byte*/
11356 int new_keycode = keycode | new_modifiers;
11357 Ptr kchr_ptr = (Ptr) GetScriptManagerVariable (smKCHRCache);
11358 unsigned long some_state = 0;
11359 UInt32 new_char_code;
11360
11361 new_char_code = KeyTranslate (kchr_ptr, new_keycode,
11362 &some_state);
11363 if (new_char_code == 0)
11364 /* Seems like a dead key. Append up-stroke. */
11365 new_char_code = KeyTranslate (kchr_ptr,
11366 new_keycode | 0x80,
11367 &some_state);
11368 if (new_char_code)
11369 {
11370 inev.kind = ASCII_KEYSTROKE_EVENT;
11371 inev.code = new_char_code & 0xff;
11372 }
11373 }
11374 }
11375
11376 if (inev.kind == NO_EVENT)
11377 {
11378 inev.kind = ASCII_KEYSTROKE_EVENT;
11379 inev.code = er.message & charCodeMask;
11380 }
11381
11382 inev.modifiers = mac_to_emacs_modifiers (modifiers);
11383 inev.modifiers |= (extra_keyboard_modifiers
11384 & (meta_modifier | alt_modifier
11385 | hyper_modifier | super_modifier));
11386 XSETFRAME (inev.frame_or_window, f);
11387 11595
11596 /* If mouse-highlight is an integer, input clears out mouse
11597 highlighting. */
11598 if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight)
11599 && !EQ (f->tool_bar_window, dpyinfo->mouse_face_window))
11600 {
11601 clear_mouse_face (dpyinfo);
11602 dpyinfo->mouse_face_hidden = 1;
11603 }
11388#if TARGET_API_MAC_CARBON 11604#if TARGET_API_MAC_CARBON
11389 if (inev.kind == ASCII_KEYSTROKE_EVENT 11605 goto OTHER;
11390 && inev.code >= 0x80 && inev.modifiers) 11606#else
11391 { 11607 do_keystroke (er.what, er.message & charCodeMask,
11392 OSStatus err; 11608 (er.message & keyCodeMask) >> 8,
11393 TextEncoding encoding = kTextEncodingMacRoman; 11609 er.modifiers, timestamp, &inev);
11394 TextToUnicodeInfo ttu_info;
11395
11396 UpgradeScriptInfoToTextEncoding (current_key_script,
11397 kTextLanguageDontCare,
11398 kTextRegionDontCare,
11399 NULL, &encoding);
11400 err = CreateTextToUnicodeInfoByEncoding (encoding, &ttu_info);
11401 if (err == noErr)
11402 {
11403 UniChar code;
11404 Str255 pstr;
11405 ByteCount unicode_len;
11406
11407 pstr[0] = 1;
11408 pstr[1] = inev.code;
11409 err = ConvertFromPStringToUnicode (ttu_info, pstr,
11410 sizeof (UniChar),
11411 &unicode_len, &code);
11412 if (err == noErr && unicode_len == sizeof (UniChar))
11413 mac_set_unicode_keystroke_event (code, &inev);
11414 DisposeTextToUnicodeInfo (&ttu_info);
11415 }
11416 }
11417#endif 11610#endif
11418 }
11419 break; 11611 break;
11420 11612
11421 case kHighLevelEvent: 11613 case kHighLevelEvent:
@@ -11423,9 +11615,19 @@ XTread_socket (sd, expected, hold_quit)
11423 break; 11615 break;
11424 11616
11425 default: 11617 default:
11618 OTHER:
11619#if TARGET_API_MAC_CARBON
11620 {
11621 OSStatus err;
11622
11623 read_socket_inev = &inev;
11624 err = SendEventToEventTarget (eventRef, toolbox_dispatcher);
11625 read_socket_inev = NULL;
11626 }
11627#endif
11426 break; 11628 break;
11427 } 11629 }
11428#if USE_CARBON_EVENTS 11630#if TARGET_API_MAC_CARBON
11429 ReleaseEvent (eventRef); 11631 ReleaseEvent (eventRef);
11430#endif 11632#endif
11431 11633
@@ -11477,7 +11679,7 @@ XTread_socket (sd, expected, hold_quit)
11477 mac_screen_config_changed = 0; 11679 mac_screen_config_changed = 0;
11478 } 11680 }
11479 11681
11480#if !USE_CARBON_EVENTS 11682#if !TARGET_API_MAC_CARBON
11481 /* Check which frames are still visible. We do this here because 11683 /* Check which frames are still visible. We do this here because
11482 there doesn't seem to be any direct notification from the Window 11684 there doesn't seem to be any direct notification from the Window
11483 Manager that the visibility of a window has changed (at least, 11685 Manager that the visibility of a window has changed (at least,
@@ -11582,7 +11784,7 @@ make_mac_terminal_frame (struct frame *f)
11582 11784
11583 if (!(FRAME_MAC_WINDOW (f) = 11785 if (!(FRAME_MAC_WINDOW (f) =
11584 NewCWindow (NULL, &r, "\p", true, dBoxProc, 11786 NewCWindow (NULL, &r, "\p", true, dBoxProc,
11585 (WindowPtr) -1, 1, (long) f->output_data.mac))) 11787 (WindowRef) -1, 1, (long) f->output_data.mac)))
11586 abort (); 11788 abort ();
11587 /* so that update events can find this mac_output struct */ 11789 /* so that update events can find this mac_output struct */
11588 f->output_data.mac->mFP = f; /* point back to emacs frame */ 11790 f->output_data.mac->mFP = f; /* point back to emacs frame */
@@ -11780,7 +11982,6 @@ init_menu_bar ()
11780 &menu, &menu_index); 11982 &menu, &menu_index);
11781 if (err == noErr) 11983 if (err == noErr)
11782 SetMenuItemCommandKey (menu, menu_index, false, 0); 11984 SetMenuItemCommandKey (menu, menu_index, false, 0);
11783#if USE_CARBON_EVENTS
11784 EnableMenuCommand (NULL, kHICommandPreferences); 11985 EnableMenuCommand (NULL, kHICommandPreferences);
11785 err = GetIndMenuItemWithCommandID (NULL, kHICommandPreferences, 1, 11986 err = GetIndMenuItemWithCommandID (NULL, kHICommandPreferences, 1,
11786 &menu, &menu_index); 11987 &menu, &menu_index);
@@ -11792,10 +11993,9 @@ init_menu_bar ()
11792 InsertMenuItemTextWithCFString (menu, CFSTR ("About Emacs"), 11993 InsertMenuItemTextWithCFString (menu, CFSTR ("About Emacs"),
11793 0, 0, kHICommandAbout); 11994 0, 0, kHICommandAbout);
11794 } 11995 }
11795#endif /* USE_CARBON_EVENTS */
11796#else /* !MAC_OSX */ 11996#else /* !MAC_OSX */
11797#if USE_CARBON_EVENTS 11997#if TARGET_API_MAC_CARBON
11798 SetMenuItemCommandID (GetMenuHandle (M_APPLE), I_ABOUT, kHICommandAbout); 11998 SetMenuItemCommandID (GetMenuRef (M_APPLE), I_ABOUT, kHICommandAbout);
11799#endif 11999#endif
11800#endif 12000#endif
11801} 12001}
@@ -11929,19 +12129,13 @@ mac_initialize ()
11929 12129
11930#if TARGET_API_MAC_CARBON 12130#if TARGET_API_MAC_CARBON
11931 12131
11932#if USE_CARBON_EVENTS 12132 install_application_handler ();
11933#ifdef MAC_OSX
11934 init_service_handler ();
11935#endif /* MAC_OSX */
11936
11937 init_command_handler ();
11938 12133
11939 init_menu_bar (); 12134 init_menu_bar ();
11940 12135
11941#if USE_MAC_TSM 12136#if USE_MAC_TSM
11942 init_tsm (); 12137 init_tsm ();
11943#endif 12138#endif
11944#endif /* USE_CARBON_EVENTS */
11945 12139
11946#ifdef MAC_OSX 12140#ifdef MAC_OSX
11947 init_coercion_handler (); 12141 init_coercion_handler ();
@@ -11992,7 +12186,7 @@ syms_of_macterm ()
11992 Fput (Qhyper, Qmodifier_value, make_number (hyper_modifier)); 12186 Fput (Qhyper, Qmodifier_value, make_number (hyper_modifier));
11993 Fput (Qsuper, Qmodifier_value, make_number (super_modifier)); 12187 Fput (Qsuper, Qmodifier_value, make_number (super_modifier));
11994 12188
11995#if USE_CARBON_EVENTS 12189#if TARGET_API_MAC_CARBON
11996 Qhi_command = intern ("hi-command"); staticpro (&Qhi_command); 12190 Qhi_command = intern ("hi-command"); staticpro (&Qhi_command);
11997#ifdef MAC_OSX 12191#ifdef MAC_OSX
11998 Qtoolbar_switch_mode = intern ("toolbar-switch-mode"); 12192 Qtoolbar_switch_mode = intern ("toolbar-switch-mode");
@@ -12117,7 +12311,7 @@ The symbol `reverse' means that the option-key will register for
12117mouse-3 and the command-key will register for mouse-2. */); 12311mouse-3 and the command-key will register for mouse-2. */);
12118 Vmac_emulate_three_button_mouse = Qnil; 12312 Vmac_emulate_three_button_mouse = Qnil;
12119 12313
12120#if USE_CARBON_EVENTS 12314#if TARGET_API_MAC_CARBON
12121 DEFVAR_BOOL ("mac-wheel-button-is-mouse-2", &mac_wheel_button_is_mouse_2, 12315 DEFVAR_BOOL ("mac-wheel-button-is-mouse-2", &mac_wheel_button_is_mouse_2,
12122 doc: /* *Non-nil if the wheel button is mouse-2 and the right click mouse-3. 12316 doc: /* *Non-nil if the wheel button is mouse-2 and the right click mouse-3.
12123Otherwise, the right click will be treated as mouse-2 and the wheel 12317Otherwise, the right click will be treated as mouse-2 and the wheel
diff --git a/src/macterm.h b/src/macterm.h
index fe61674f30f..c880143634e 100644
--- a/src/macterm.h
+++ b/src/macterm.h
@@ -369,6 +369,12 @@ typedef struct mac_output mac_output;
369/* This is the 'font_info *' which frame F has. */ 369/* This is the 'font_info *' which frame F has. */
370#define FRAME_MAC_FONT_TABLE(f) (FRAME_MAC_DISPLAY_INFO (f)->font_table) 370#define FRAME_MAC_FONT_TABLE(f) (FRAME_MAC_DISPLAY_INFO (f)->font_table)
371 371
372/* The difference in pixels between the top left corner of the
373 Emacs window (including possible window manager decorations)
374 and FRAME_MAC_WINDOW (f). */
375#define FRAME_OUTER_TO_INNER_DIFF_X(f) ((f)->x_pixels_diff)
376#define FRAME_OUTER_TO_INNER_DIFF_Y(f) ((f)->y_pixels_diff)
377
372/* Value is the smallest width of any character in any font on frame F. */ 378/* Value is the smallest width of any character in any font on frame F. */
373 379
374#define FRAME_SMALLEST_CHAR_WIDTH(F) \ 380#define FRAME_SMALLEST_CHAR_WIDTH(F) \
@@ -406,9 +412,9 @@ struct scroll_bar {
406 /* The next and previous in the chain of scroll bars in this frame. */ 412 /* The next and previous in the chain of scroll bars in this frame. */
407 Lisp_Object next, prev; 413 Lisp_Object next, prev;
408 414
409 /* The Mac control handle of this scroll bar. Since this is a 415 /* The Mac control reference of this scroll bar. Since this is a
410 pointer value, we store it split into two Lisp integers. */ 416 pointer value, we store it split into two Lisp integers. */
411 Lisp_Object control_handle_low, control_handle_high; 417 Lisp_Object control_ref_low, control_ref_high;
412 418
413 /* The position and size of the scroll bar in pixels, relative to the 419 /* The position and size of the scroll bar in pixels, relative to the
414 frame. */ 420 frame. */
@@ -466,14 +472,14 @@ struct scroll_bar {
466 472
467/* Extract the Mac control handle of the scroll bar from a struct 473/* Extract the Mac control handle of the scroll bar from a struct
468 scroll_bar. */ 474 scroll_bar. */
469#define SCROLL_BAR_CONTROL_HANDLE(ptr) \ 475#define SCROLL_BAR_CONTROL_REF(ptr) \
470 ((ControlHandle) SCROLL_BAR_PACK ((ptr)->control_handle_low, \ 476 ((ControlRef) SCROLL_BAR_PACK ((ptr)->control_ref_low, \
471 (ptr)->control_handle_high)) 477 (ptr)->control_ref_high))
472 478
473/* Store a Mac control handle in a struct scroll_bar. */ 479/* Store a Mac control handle in a struct scroll_bar. */
474#define SET_SCROLL_BAR_CONTROL_HANDLE(ptr, handle) \ 480#define SET_SCROLL_BAR_CONTROL_REF(ptr, ref) \
475 (SCROLL_BAR_UNPACK ((ptr)->control_handle_low, \ 481 (SCROLL_BAR_UNPACK ((ptr)->control_ref_low, \
476 (ptr)->control_handle_high, (unsigned long) (handle))) 482 (ptr)->control_ref_high, (unsigned long) (ref)))
477 483
478/* Return the inside width of a vertical scroll bar, given the outside 484/* Return the inside width of a vertical scroll bar, given the outside
479 width. */ 485 width. */
@@ -614,9 +620,10 @@ extern void x_free_frame_resources P_ ((struct frame *));
614extern void x_destroy_window P_ ((struct frame *)); 620extern void x_destroy_window P_ ((struct frame *));
615extern void x_wm_set_size_hint P_ ((struct frame *, long, int)); 621extern void x_wm_set_size_hint P_ ((struct frame *, long, int));
616extern void x_delete_display P_ ((struct x_display_info *)); 622extern void x_delete_display P_ ((struct x_display_info *));
617extern Pixmap XCreatePixmap P_ ((Display *, WindowPtr, unsigned int, 623extern void mac_initialize P_ ((void));
624extern Pixmap XCreatePixmap P_ ((Display *, WindowRef, unsigned int,
618 unsigned int, unsigned int)); 625 unsigned int, unsigned int));
619extern Pixmap XCreatePixmapFromBitmapData P_ ((Display *, WindowPtr, char *, 626extern Pixmap XCreatePixmapFromBitmapData P_ ((Display *, WindowRef, char *,
620 unsigned int, unsigned int, 627 unsigned int, unsigned int,
621 unsigned long, unsigned long, 628 unsigned long, unsigned long,
622 unsigned int)); 629 unsigned int));
@@ -625,7 +632,7 @@ extern GC XCreateGC P_ ((Display *, void *, unsigned long, XGCValues *));
625extern void XFreeGC P_ ((Display *, GC)); 632extern void XFreeGC P_ ((Display *, GC));
626extern void XSetForeground P_ ((Display *, GC, unsigned long)); 633extern void XSetForeground P_ ((Display *, GC, unsigned long));
627extern void XSetBackground P_ ((Display *, GC, unsigned long)); 634extern void XSetBackground P_ ((Display *, GC, unsigned long));
628extern void XSetWindowBackground P_ ((Display *, WindowPtr, unsigned long)); 635extern void XSetWindowBackground P_ ((Display *, WindowRef, unsigned long));
629extern void XDrawLine P_ ((Display *, Pixmap, GC, int, int, int, int)); 636extern void XDrawLine P_ ((Display *, Pixmap, GC, int, int, int, int));
630extern void mac_clear_area P_ ((struct frame *, int, int, 637extern void mac_clear_area P_ ((struct frame *, int, int,
631 unsigned int, unsigned int)); 638 unsigned int, unsigned int));
@@ -633,8 +640,8 @@ extern void mac_unload_font P_ ((struct mac_display_info *, XFontStruct *));
633extern int mac_font_panel_visible_p P_ ((void)); 640extern int mac_font_panel_visible_p P_ ((void));
634extern OSStatus mac_show_hide_font_panel P_ ((void)); 641extern OSStatus mac_show_hide_font_panel P_ ((void));
635extern OSStatus mac_set_font_info_for_selection P_ ((struct frame *, int, int)); 642extern OSStatus mac_set_font_info_for_selection P_ ((struct frame *, int, int));
636extern OSStatus install_window_handler P_ ((WindowPtr)); 643extern OSStatus install_window_handler P_ ((WindowRef));
637extern void remove_window_handler P_ ((WindowPtr)); 644extern void remove_window_handler P_ ((WindowRef));
638extern OSStatus mac_post_mouse_moved_event P_ ((void)); 645extern OSStatus mac_post_mouse_moved_event P_ ((void));
639#if !TARGET_API_MAC_CARBON 646#if !TARGET_API_MAC_CARBON
640extern void do_apple_menu P_ ((SInt16)); 647extern void do_apple_menu P_ ((SInt16));
@@ -642,6 +649,7 @@ extern void do_apple_menu P_ ((SInt16));
642#if USE_CG_DRAWING 649#if USE_CG_DRAWING
643extern void mac_prepare_for_quickdraw P_ ((struct frame *)); 650extern void mac_prepare_for_quickdraw P_ ((struct frame *));
644#endif 651#endif
652extern void mac_get_window_bounds P_ ((struct frame *, Rect *, Rect *));
645extern int mac_quit_char_key_p P_ ((UInt32, UInt32)); 653extern int mac_quit_char_key_p P_ ((UInt32, UInt32));
646 654
647#define FONT_TYPE_FOR_UNIBYTE(font, ch) 0 655#define FONT_TYPE_FOR_UNIBYTE(font, ch) 0
diff --git a/src/minibuf.c b/src/minibuf.c
index 34caf2b430f..698a3478eb7 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -529,7 +529,7 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
529 GCPRO5 (map, initial, val, ambient_dir, input_method); 529 GCPRO5 (map, initial, val, ambient_dir, input_method);
530 530
531 if (!STRINGP (prompt)) 531 if (!STRINGP (prompt))
532 prompt = empty_string; 532 prompt = empty_unibyte_string;
533 533
534 if (!enable_recursive_minibuffers 534 if (!enable_recursive_minibuffers
535 && minibuf_level > 0) 535 && minibuf_level > 0)
diff --git a/src/s/ms-w32.h b/src/s/ms-w32.h
index 75888f2df2a..57c3cdfcd43 100644
--- a/src/s/ms-w32.h
+++ b/src/s/ms-w32.h
@@ -255,7 +255,6 @@ Boston, MA 02110-1301, USA. */
255 255
256#undef TM_IN_SYS_TIME 256#undef TM_IN_SYS_TIME
257#undef HAVE_TM_ZONE 257#undef HAVE_TM_ZONE
258#define HAVE_TZNAME 1
259 258
260#define HAVE_LONG_FILE_NAMES 1 259#define HAVE_LONG_FILE_NAMES 1
261 260
diff --git a/src/search.c b/src/search.c
index abc28619199..c9c6dfdd242 100644
--- a/src/search.c
+++ b/src/search.c
@@ -2095,7 +2095,7 @@ wordify (string)
2095 if (SYNTAX (prev_c) == Sword) 2095 if (SYNTAX (prev_c) == Sword)
2096 word_count++; 2096 word_count++;
2097 if (!word_count) 2097 if (!word_count)
2098 return empty_string; 2098 return empty_unibyte_string;
2099 2099
2100 adjust = - punct_count + 5 * (word_count - 1) + 4; 2100 adjust = - punct_count + 5 * (word_count - 1) + 4;
2101 if (STRING_MULTIBYTE (string)) 2101 if (STRING_MULTIBYTE (string))
diff --git a/src/sunfns.c b/src/sunfns.c
index c532ae7f849..2d96ac66aef 100644
--- a/src/sunfns.c
+++ b/src/sunfns.c
@@ -287,7 +287,7 @@ sel_read (sel, file)
287 register int i, n; 287 register int i, n;
288 register char *cp; 288 register char *cp;
289 289
290 Current_Selection = make_string ("", 0); 290 Current_Selection = empty_unibyte_string;
291 if (sel->sel_items <= 0) 291 if (sel->sel_items <= 0)
292 return (0); 292 return (0);
293 cp = (char *) malloc(sel->sel_items); 293 cp = (char *) malloc(sel->sel_items);
diff --git a/src/term.c b/src/term.c
index 3a7490a2a30..ceeac103e85 100644
--- a/src/term.c
+++ b/src/term.c
@@ -208,11 +208,6 @@ static int mouse_face_past_end;
208static Lisp_Object Qmouse_face_window; 208static Lisp_Object Qmouse_face_window;
209static int mouse_face_face_id; 209static int mouse_face_face_id;
210 210
211/* FRAME and X, Y position of mouse when last checked for
212 highlighting. X and Y can be negative or out of range for the frame. */
213struct frame *mouse_face_mouse_frame;
214int mouse_face_mouse_x, mouse_face_mouse_y;
215
216static int pos_x, pos_y; 211static int pos_x, pos_y;
217static int last_mouse_x, last_mouse_y; 212static int last_mouse_x, last_mouse_y;
218#endif /* HAVE_GPM */ 213#endif /* HAVE_GPM */
@@ -2344,17 +2339,18 @@ the currently selected frame. */)
2344 ***********************************************************************/ 2339 ***********************************************************************/
2345 2340
2346#ifdef HAVE_GPM 2341#ifdef HAVE_GPM
2347void term_mouse_moveto (int x, int y) 2342void
2343term_mouse_moveto (int x, int y)
2348{ 2344{
2349 const char *name; 2345 const char *name;
2350 int fd; 2346 int fd;
2347 /* TODO: how to set mouse position?
2351 name = (const char *) ttyname (0); 2348 name = (const char *) ttyname (0);
2352 fd = open (name, O_WRONLY); 2349 fd = open (name, O_WRONLY);
2353 /* TODO: how to set mouse position? 2350 SOME_FUNCTION (x, y, fd);
2354 SOME_FUNCTION (x, y, fd); */
2355 close (fd); 2351 close (fd);
2356 last_mouse_x = x; 2352 last_mouse_x = x;
2357 last_mouse_y = y; 2353 last_mouse_y = y; */
2358} 2354}
2359 2355
2360static void 2356static void
@@ -2534,10 +2530,6 @@ term_mouse_highlight (struct frame *f, int x, int y)
2534 || !f->glyphs_initialized_p) 2530 || !f->glyphs_initialized_p)
2535 return; 2531 return;
2536 2532
2537 mouse_face_mouse_x = x;
2538 mouse_face_mouse_y = y;
2539 mouse_face_mouse_frame = f;
2540
2541 /* Which window is that in? */ 2533 /* Which window is that in? */
2542 window = window_from_coordinates (f, x, y, &part, &x, &y, 0); 2534 window = window_from_coordinates (f, x, y, &part, &x, &y, 0);
2543 2535
@@ -2779,7 +2771,7 @@ term_mouse_movement (FRAME_PTR frame, Gpm_Event *event)
2779 if (event->x != last_mouse_x || event->y != last_mouse_y) 2771 if (event->x != last_mouse_x || event->y != last_mouse_y)
2780 { 2772 {
2781 frame->mouse_moved = 1; 2773 frame->mouse_moved = 1;
2782 term_mouse_highlight (frame, event->x - 1, event->y - 1); 2774 term_mouse_highlight (frame, event->x, event->y);
2783 /* Remember which glyph we're now on. */ 2775 /* Remember which glyph we're now on. */
2784 last_mouse_x = event->x; 2776 last_mouse_x = event->x;
2785 last_mouse_y = event->y; 2777 last_mouse_y = event->y;
@@ -2799,7 +2791,7 @@ term_mouse_movement (FRAME_PTR frame, Gpm_Event *event)
2799 2791
2800 Set *time to the time the mouse was at the returned position. 2792 Set *time to the time the mouse was at the returned position.
2801 2793
2802 This should clear mouse_moved until the next motion 2794 This clears mouse_moved until the next motion
2803 event arrives. */ 2795 event arrives. */
2804static void 2796static void
2805term_mouse_position (FRAME_PTR *fp, int insist, Lisp_Object *bar_window, 2797term_mouse_position (FRAME_PTR *fp, int insist, Lisp_Object *bar_window,
@@ -2807,8 +2799,6 @@ term_mouse_position (FRAME_PTR *fp, int insist, Lisp_Object *bar_window,
2807 Lisp_Object *y, unsigned long *time) 2799 Lisp_Object *y, unsigned long *time)
2808{ 2800{
2809 struct timeval now; 2801 struct timeval now;
2810 Lisp_Object frame, window;
2811 struct window *w;
2812 2802
2813 *fp = SELECTED_FRAME (); 2803 *fp = SELECTED_FRAME ();
2814 (*fp)->mouse_moved = 0; 2804 (*fp)->mouse_moved = 0;
@@ -2816,13 +2806,8 @@ term_mouse_position (FRAME_PTR *fp, int insist, Lisp_Object *bar_window,
2816 *bar_window = Qnil; 2806 *bar_window = Qnil;
2817 *part = 0; 2807 *part = 0;
2818 2808
2819 XSETINT (*x, last_mouse_x); 2809 XSETINT (*x, last_mouse_x);
2820 XSETINT (*y, last_mouse_y); 2810 XSETINT (*y, last_mouse_y);
2821 XSETFRAME (frame, *fp);
2822 window = Fwindow_at (*x, *y, frame);
2823
2824 XSETINT (*x, last_mouse_x - WINDOW_LEFT_EDGE_COL (XWINDOW (window)));
2825 XSETINT (*y, last_mouse_y - WINDOW_TOP_EDGE_LINE (XWINDOW (window)));
2826 gettimeofday(&now, 0); 2811 gettimeofday(&now, 0);
2827 *time = (now.tv_sec * 1000) + (now.tv_usec / 1000); 2812 *time = (now.tv_sec * 1000) + (now.tv_usec / 1000);
2828} 2813}
@@ -2869,7 +2854,7 @@ term_mouse_click (struct input_event *result, Gpm_Event *event,
2869 if (event->type & GPM_DRAG) 2854 if (event->type & GPM_DRAG)
2870 result->modifiers |= drag_modifier; 2855 result->modifiers |= drag_modifier;
2871 2856
2872 if (!(event->type & (GPM_MOVE|GPM_DRAG))) { 2857 if (!(event->type & (GPM_MOVE | GPM_DRAG))) {
2873 2858
2874 /* 1 << KG_SHIFT */ 2859 /* 1 << KG_SHIFT */
2875 if (event->modifiers & (1 << 0)) 2860 if (event->modifiers & (1 << 0))
@@ -2885,8 +2870,8 @@ term_mouse_click (struct input_event *result, Gpm_Event *event,
2885 result->modifiers |= meta_modifier; 2870 result->modifiers |= meta_modifier;
2886 } 2871 }
2887 2872
2888 XSETINT (result->x, event->x - 1); 2873 XSETINT (result->x, event->x);
2889 XSETINT (result->y, event->y - 1); 2874 XSETINT (result->y, event->y);
2890 XSETFRAME (result->frame_or_window, f); 2875 XSETFRAME (result->frame_or_window, f);
2891 result->arg = Qnil; 2876 result->arg = Qnil;
2892 return Qnil; 2877 return Qnil;
@@ -2905,7 +2890,7 @@ handle_one_term_event (struct tty_display_info *tty, Gpm_Event *event, struct in
2905 ie.kind = NO_EVENT; 2890 ie.kind = NO_EVENT;
2906 ie.arg = Qnil; 2891 ie.arg = Qnil;
2907 2892
2908 if (event->type & GPM_MOVE) { 2893 if (event->type & (GPM_MOVE | GPM_DRAG)) {
2909 unsigned char buf[6 * sizeof (short)]; 2894 unsigned char buf[6 * sizeof (short)];
2910 unsigned short *arg = (unsigned short *) buf + 1; 2895 unsigned short *arg = (unsigned short *) buf + 1;
2911 const char *name; 2896 const char *name;
@@ -2916,8 +2901,8 @@ handle_one_term_event (struct tty_display_info *tty, Gpm_Event *event, struct in
2916 /* Display mouse pointer */ 2901 /* Display mouse pointer */
2917 buf[sizeof(short) - 1] = 2; /* set selection */ 2902 buf[sizeof(short) - 1] = 2; /* set selection */
2918 2903
2919 arg[0] = arg[2] = (unsigned short) event->x; 2904 arg[0] = arg[2] = (unsigned short) event->x + gpm_zerobased;
2920 arg[1] = arg[3] = (unsigned short) event->y; 2905 arg[1] = arg[3] = (unsigned short) event->y + gpm_zerobased;
2921 arg[4] = (unsigned short) 3; 2906 arg[4] = (unsigned short) 3;
2922 2907
2923 name = (const char *) ttyname (0); 2908 name = (const char *) ttyname (0);
@@ -2925,7 +2910,8 @@ handle_one_term_event (struct tty_display_info *tty, Gpm_Event *event, struct in
2925 ioctl (fd, TIOCLINUX, buf + sizeof (short) - 1); 2910 ioctl (fd, TIOCLINUX, buf + sizeof (short) - 1);
2926 close (fd); 2911 close (fd);
2927 2912
2928 term_mouse_movement (f, event); 2913 if (!term_mouse_movement (f, event))
2914 help_echo_string = previous_help_echo_string;
2929 2915
2930 /* If the contents of the global variable help_echo_string 2916 /* If the contents of the global variable help_echo_string
2931 has changed, generate a HELP_EVENT. */ 2917 has changed, generate a HELP_EVENT. */
@@ -2977,6 +2963,7 @@ DEFUN ("term-open-connection", Fterm_open_connection, Sterm_open_connection,
2977 connection.defaultMask = ~GPM_HARD; 2963 connection.defaultMask = ~GPM_HARD;
2978 connection.maxMod = ~0; 2964 connection.maxMod = ~0;
2979 connection.minMod = 0; 2965 connection.minMod = 0;
2966 gpm_zerobased = 1;
2980 2967
2981 /* We only support GPM on the controlling tty. */ 2968 /* We only support GPM on the controlling tty. */
2982 if (term_gpm || tty->terminal->id > 1 2969 if (term_gpm || tty->terminal->id > 1
diff --git a/src/w32fns.c b/src/w32fns.c
index 0306804f14c..e76ca2ddc62 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -7925,9 +7925,9 @@ If ONLY-DIR-P is non-nil, the user can only select directories. */)
7925 /* Apparently NT4 crashes if you give it an unexpected size. 7925 /* Apparently NT4 crashes if you give it an unexpected size.
7926 I'm not sure about Windows 9x, so play it safe. */ 7926 I'm not sure about Windows 9x, so play it safe. */
7927 if (w32_major_version > 4 && w32_major_version < 95) 7927 if (w32_major_version > 4 && w32_major_version < 95)
7928 file_details->lStructSize = sizeof (new_file_details); 7928 file_details->lStructSize = sizeof (NEWOPENFILENAME);
7929 else 7929 else
7930 file_details->lStructSize = sizeof (file_details); 7930 file_details->lStructSize = sizeof (OPENFILENAME);
7931 7931
7932 file_details->hwndOwner = FRAME_W32_WINDOW (f); 7932 file_details->hwndOwner = FRAME_W32_WINDOW (f);
7933 /* Undocumented Bug in Common File Dialog: 7933 /* Undocumented Bug in Common File Dialog:
diff --git a/src/window.c b/src/window.c
index 90fdbf6c9b5..70cb04fa63d 100644
--- a/src/window.c
+++ b/src/window.c
@@ -4112,8 +4112,8 @@ too small. */)
4112DEFUN ("shrink-window", Fshrink_window, Sshrink_window, 1, 2, "p", 4112DEFUN ("shrink-window", Fshrink_window, Sshrink_window, 1, 2, "p",
4113 doc: /* Make current window ARG lines smaller. 4113 doc: /* Make current window ARG lines smaller.
4114From program, optional second arg non-nil means shrink sideways arg columns. 4114From program, optional second arg non-nil means shrink sideways arg columns.
4115Interactively, if an argument is not given, make the window one line smaller. Only 4115Interactively, if an argument is not given, make the window one line smaller.
4116siblings to the right or below are changed. */) 4116Only siblings to the right or below are changed. */)
4117 (arg, side) 4117 (arg, side)
4118 Lisp_Object arg, side; 4118 Lisp_Object arg, side;
4119{ 4119{
diff --git a/src/xdisp.c b/src/xdisp.c
index 268f1ec8b8c..afa7f92a1cc 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -17354,7 +17354,7 @@ are the selected window and the window's buffer). */)
17354 CHECK_BUFFER (buffer); 17354 CHECK_BUFFER (buffer);
17355 17355
17356 if (NILP (format)) 17356 if (NILP (format))
17357 return build_string (""); 17357 return empty_unibyte_string;
17358 17358
17359 if (no_props) 17359 if (no_props)
17360 face = Qnil; 17360 face = Qnil;
@@ -17412,7 +17412,7 @@ are the selected window and the window's buffer). */)
17412 { 17412 {
17413 mode_line_string_list = Fnreverse (mode_line_string_list); 17413 mode_line_string_list = Fnreverse (mode_line_string_list);
17414 str = Fmapconcat (intern ("identity"), mode_line_string_list, 17414 str = Fmapconcat (intern ("identity"), mode_line_string_list,
17415 make_string ("", 0)); 17415 empty_unibyte_string);
17416 } 17416 }
17417 17417
17418 unbind_to (count, Qnil); 17418 unbind_to (count, Qnil);
@@ -24097,7 +24097,7 @@ and is used only on frames for which no explicit name has been set
24097 = Vframe_title_format 24097 = Vframe_title_format
24098 = Fcons (intern ("multiple-frames"), 24098 = Fcons (intern ("multiple-frames"),
24099 Fcons (build_string ("%b"), 24099 Fcons (build_string ("%b"),
24100 Fcons (Fcons (empty_string, 24100 Fcons (Fcons (empty_unibyte_string,
24101 Fcons (intern ("invocation-name"), 24101 Fcons (intern ("invocation-name"),
24102 Fcons (build_string ("@"), 24102 Fcons (build_string ("@"),
24103 Fcons (intern ("system-name"), 24103 Fcons (intern ("system-name"),
diff --git a/src/xfaces.c b/src/xfaces.c
index 86a40078919..75c8b3c7f49 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -3952,6 +3952,8 @@ Otherwise check for the existence of a global face. */)
3952{ 3952{
3953 Lisp_Object lface; 3953 Lisp_Object lface;
3954 3954
3955 face = resolve_face_name (face, 1);
3956
3955 if (!NILP (frame)) 3957 if (!NILP (frame))
3956 { 3958 {
3957 CHECK_LIVE_FRAME (frame); 3959 CHECK_LIVE_FRAME (frame);
diff --git a/src/xfns.c b/src/xfns.c
index f2c85814847..e51dea84118 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -1525,6 +1525,8 @@ x_set_scroll_bar_background (f, value, oldval)
1525/* Encode Lisp string STRING as a text in a format appropriate for 1525/* Encode Lisp string STRING as a text in a format appropriate for
1526 XICCC (X Inter Client Communication Conventions). 1526 XICCC (X Inter Client Communication Conventions).
1527 1527
1528 This can call Lisp code, so callers must GCPRO.
1529
1528 If STRING contains only ASCII characters, do no conversion and 1530 If STRING contains only ASCII characters, do no conversion and
1529 return the string data of STRING. Otherwise, encode the text by 1531 return the string data of STRING. Otherwise, encode the text by
1530 CODING_SYSTEM, and return a newly allocated memory area which 1532 CODING_SYSTEM, and return a newly allocated memory area which
@@ -1572,7 +1574,11 @@ x_encode_text (string, coding_system, selectionp, text_bytes, stringp, freep)
1572 && SYMBOLP (coding.pre_write_conversion) 1574 && SYMBOLP (coding.pre_write_conversion)
1573 && !NILP (Ffboundp (coding.pre_write_conversion))) 1575 && !NILP (Ffboundp (coding.pre_write_conversion)))
1574 { 1576 {
1577 struct gcpro gcpro1;
1578 /* We don't need to GCPRO string. */
1579 GCPRO1 (coding_system);
1575 string = run_pre_post_conversion_on_str (string, &coding, 1); 1580 string = run_pre_post_conversion_on_str (string, &coding, 1);
1581 UNGCPRO;
1576 str = SDATA (string); 1582 str = SDATA (string);
1577 chars = SCHARS (string); 1583 chars = SCHARS (string);
1578 bytes = SBYTES (string); 1584 bytes = SBYTES (string);
@@ -1614,6 +1620,16 @@ x_set_name_internal (f, name)
1614 int bytes, stringp; 1620 int bytes, stringp;
1615 int do_free_icon_value = 0, do_free_text_value = 0; 1621 int do_free_icon_value = 0, do_free_text_value = 0;
1616 Lisp_Object coding_system; 1622 Lisp_Object coding_system;
1623#ifdef USE_GTK
1624 Lisp_Object encoded_name;
1625 struct gcpro gcpro1;
1626
1627 /* As ENCODE_UTF_8 may cause GC and relocation of string data,
1628 we use it before x_encode_text that may return string data. */
1629 GCPRO1 (name);
1630 encoded_name = ENCODE_UTF_8 (name);
1631 UNGCPRO;
1632#endif
1617 1633
1618 coding_system = Qcompound_text; 1634 coding_system = Qcompound_text;
1619 /* Note: Encoding strategy 1635 /* Note: Encoding strategy
@@ -1654,7 +1670,7 @@ x_set_name_internal (f, name)
1654 1670
1655#ifdef USE_GTK 1671#ifdef USE_GTK
1656 gtk_window_set_title (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), 1672 gtk_window_set_title (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
1657 (char *) SDATA (ENCODE_UTF_8 (name))); 1673 (char *) SDATA (encoded_name));
1658#else /* not USE_GTK */ 1674#else /* not USE_GTK */
1659 XSetWMName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &text); 1675 XSetWMName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &text);
1660#endif /* not USE_GTK */ 1676#endif /* not USE_GTK */
@@ -1840,9 +1856,9 @@ x_default_scroll_bar_color_parameter (f, alist, prop, xprop, xclass,
1840 build_string (foreground_p 1856 build_string (foreground_p
1841 ? "foreground" 1857 ? "foreground"
1842 : "background"), 1858 : "background"),
1843 empty_string, 1859 empty_unibyte_string,
1844 build_string ("verticalScrollBar"), 1860 build_string ("verticalScrollBar"),
1845 empty_string); 1861 empty_unibyte_string);
1846 if (!STRINGP (tem)) 1862 if (!STRINGP (tem))
1847 { 1863 {
1848 /* If nothing has been specified, scroll bars will use a 1864 /* If nothing has been specified, scroll bars will use a
diff --git a/src/xmenu.c b/src/xmenu.c
index 228c89f9aa4..4390d9429af 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -325,7 +325,7 @@ restore_menu_items (saved)
325 menu_items_used = XINT (XCAR (saved)); 325 menu_items_used = XINT (XCAR (saved));
326 saved = XCDR (saved); 326 saved = XCDR (saved);
327 menu_items_n_panes = XINT (XCAR (saved)); 327 menu_items_n_panes = XINT (XCAR (saved));
328 saved = XCDR (saved); 328 saved = XCDR (saved);
329 menu_items_submenu_depth = XINT (XCAR (saved)); 329 menu_items_submenu_depth = XINT (XCAR (saved));
330 return Qnil; 330 return Qnil;
331} 331}
@@ -3470,7 +3470,7 @@ menu_help_callback (help_string, pane, item)
3470 pane_name = first_item[MENU_ITEMS_PANE_NAME]; 3470 pane_name = first_item[MENU_ITEMS_PANE_NAME];
3471 else if (EQ (first_item[0], Qquote)) 3471 else if (EQ (first_item[0], Qquote))
3472 /* This shouldn't happen, see xmenu_show. */ 3472 /* This shouldn't happen, see xmenu_show. */
3473 pane_name = empty_string; 3473 pane_name = empty_unibyte_string;
3474 else 3474 else
3475 pane_name = first_item[MENU_ITEMS_ITEM_NAME]; 3475 pane_name = first_item[MENU_ITEMS_ITEM_NAME];
3476 3476
diff --git a/src/xselect.c b/src/xselect.c
index 5ce6763cd30..e491e5b661e 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -2712,7 +2712,7 @@ If the value is 0 or the atom is not known, return the empty string. */)
2712 ret = make_string (name, strlen (name)); 2712 ret = make_string (name, strlen (name));
2713 2713
2714 if (atom && name) XFree (name); 2714 if (atom && name) XFree (name);
2715 if (NILP (ret)) ret = make_string ("", 0); 2715 if (NILP (ret)) ret = empty_unibyte_string;
2716 2716
2717 UNBLOCK_INPUT; 2717 UNBLOCK_INPUT;
2718 2718
diff --git a/src/xterm.c b/src/xterm.c
index 6fcaa3d1294..9f392710270 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -8397,7 +8397,7 @@ wm_supports (f, atomname)
8397 prop_atom, 0, max_len, False, target_type, 8397 prop_atom, 0, max_len, False, target_type,
8398 &actual_type, &actual_format, &actual_size, 8398 &actual_type, &actual_format, &actual_size,
8399 &bytes_remaining, &tmp_data); 8399 &bytes_remaining, &tmp_data);
8400 8400
8401 if (rc != Success || actual_type != XA_WINDOW || x_had_errors_p (dpy)) 8401 if (rc != Success || actual_type != XA_WINDOW || x_had_errors_p (dpy))
8402 { 8402 {
8403 if (tmp_data) XFree (tmp_data); 8403 if (tmp_data) XFree (tmp_data);
@@ -8452,7 +8452,7 @@ wm_supports (f, atomname)
8452 rc = 0; 8452 rc = 0;
8453 want_atom = XInternAtom (dpy, atomname, False); 8453 want_atom = XInternAtom (dpy, atomname, False);
8454 8454
8455 for (i = 0; rc == 0 && i < dpyinfo->nr_net_supported_atoms; ++i) 8455 for (i = 0; rc == 0 && i < dpyinfo->nr_net_supported_atoms; ++i)
8456 rc = dpyinfo->net_supported_atoms[i] == want_atom; 8456 rc = dpyinfo->net_supported_atoms[i] == want_atom;
8457 8457
8458 x_uncatch_errors (); 8458 x_uncatch_errors ();
@@ -10699,7 +10699,7 @@ x_term_init (display_name, xrm_option, resource_name)
10699 UNBLOCK_INPUT; 10699 UNBLOCK_INPUT;
10700 terminal->kboard->Vsystem_key_alist 10700 terminal->kboard->Vsystem_key_alist
10701 = call1 (Qvendor_specific_keysyms, 10701 = call1 (Qvendor_specific_keysyms,
10702 build_string (vendor ? vendor : "")); 10702 vendor ? build_string (vendor) : empty_unibyte_string);
10703 BLOCK_INPUT; 10703 BLOCK_INPUT;
10704 } 10704 }
10705 10705