aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/emacs/ChangeLog617
-rw-r--r--doc/emacs/Makefile.in127
-rw-r--r--doc/emacs/abbrevs.texi8
-rw-r--r--doc/emacs/ack.texi72
-rw-r--r--doc/emacs/anti.texi6
-rw-r--r--doc/emacs/arevert-xtra.texi7
-rw-r--r--doc/emacs/basic.texi33
-rw-r--r--doc/emacs/buffers.texi7
-rw-r--r--doc/emacs/building.texi234
-rw-r--r--doc/emacs/cal-xtra.texi24
-rw-r--r--doc/emacs/calendar.texi13
-rw-r--r--doc/emacs/cmdargs.texi17
-rw-r--r--doc/emacs/commands.texi8
-rw-r--r--doc/emacs/custom.texi131
-rw-r--r--doc/emacs/dired-xtra.texi7
-rw-r--r--doc/emacs/dired.texi35
-rw-r--r--doc/emacs/display.texi79
-rw-r--r--doc/emacs/doclicense.texi4
-rw-r--r--doc/emacs/emacs-xtra.texi6
-rw-r--r--doc/emacs/emacs.texi162
-rw-r--r--doc/emacs/emacsver.texi4
-rw-r--r--doc/emacs/emerge-xtra.texi7
-rw-r--r--doc/emacs/entering.texi8
-rw-r--r--doc/emacs/files.texi9
-rw-r--r--doc/emacs/fixit.texi16
-rw-r--r--doc/emacs/fortran-xtra.texi7
-rw-r--r--doc/emacs/frames.texi29
-rw-r--r--doc/emacs/glossary.texi8
-rw-r--r--doc/emacs/gnu.texi8
-rw-r--r--doc/emacs/gpl.texi4
-rw-r--r--doc/emacs/help.texi7
-rw-r--r--doc/emacs/indent.texi8
-rw-r--r--doc/emacs/killing.texi36
-rw-r--r--doc/emacs/kmacro.texi8
-rw-r--r--doc/emacs/m-x.texi8
-rw-r--r--doc/emacs/macos.texi3
-rw-r--r--doc/emacs/maintaining.texi52
-rw-r--r--doc/emacs/major.texi8
-rw-r--r--doc/emacs/makefile.w32-in15
-rw-r--r--doc/emacs/mark.texi7
-rw-r--r--doc/emacs/mini.texi7
-rw-r--r--doc/emacs/misc.texi59
-rw-r--r--doc/emacs/msdog-xtra.texi6
-rw-r--r--doc/emacs/msdog.texi18
-rw-r--r--doc/emacs/mule.texi166
-rw-r--r--doc/emacs/picture-xtra.texi6
-rw-r--r--doc/emacs/programs.texi7
-rw-r--r--doc/emacs/regs.texi10
-rw-r--r--doc/emacs/rmail.texi10
-rw-r--r--doc/emacs/screen.texi7
-rw-r--r--doc/emacs/search.texi49
-rw-r--r--doc/emacs/sending.texi7
-rw-r--r--doc/emacs/text.texi7
-rw-r--r--doc/emacs/trouble.texi4
-rw-r--r--doc/emacs/vc-xtra.texi7
-rw-r--r--doc/emacs/vc1-xtra.texi7
-rw-r--r--doc/emacs/windows.texi8
-rw-r--r--doc/emacs/xresources.texi56
-rw-r--r--doc/lispintro/ChangeLog90
-rw-r--r--doc/lispintro/Makefile.in91
-rw-r--r--doc/lispintro/README3
-rw-r--r--doc/lispintro/cons-1.eps3
-rw-r--r--doc/lispintro/cons-2.eps3
-rw-r--r--doc/lispintro/cons-2a.eps3
-rw-r--r--doc/lispintro/cons-3.eps3
-rw-r--r--doc/lispintro/cons-4.eps3
-rw-r--r--doc/lispintro/cons-5.eps3
-rw-r--r--doc/lispintro/doclicense.texi4
-rw-r--r--doc/lispintro/drawers.eps3
-rw-r--r--doc/lispintro/emacs-lisp-intro.texi151
-rw-r--r--doc/lispintro/lambda-1.eps3
-rw-r--r--doc/lispintro/lambda-2.eps3
-rw-r--r--doc/lispintro/lambda-3.eps3
-rw-r--r--doc/lispintro/makefile.w32-in3
-rw-r--r--doc/lispref/.arch-inventory4
-rw-r--r--doc/lispref/ChangeLog499
-rw-r--r--doc/lispref/Makefile.in88
-rw-r--r--doc/lispref/README3
-rw-r--r--doc/lispref/abbrevs.texi8
-rw-r--r--doc/lispref/advice.texi7
-rw-r--r--doc/lispref/anti.texi9
-rw-r--r--doc/lispref/back.texi7
-rw-r--r--doc/lispref/backups.texi7
-rw-r--r--doc/lispref/book-spine.texi (renamed from doc/lispref/book-spine.texinfo)8
-rw-r--r--doc/lispref/buffers.texi19
-rw-r--r--doc/lispref/commands.texi39
-rw-r--r--doc/lispref/compile.texi13
-rw-r--r--doc/lispref/control.texi9
-rw-r--r--doc/lispref/customize.texi9
-rw-r--r--doc/lispref/debugging.texi7
-rw-r--r--doc/lispref/display.texi156
-rw-r--r--doc/lispref/doclicense.texi4
-rw-r--r--doc/lispref/edebug.texi7
-rw-r--r--doc/lispref/elisp-covers.texi7
-rw-r--r--doc/lispref/elisp.texi22
-rw-r--r--doc/lispref/errors.texi7
-rw-r--r--doc/lispref/eval.texi17
-rw-r--r--doc/lispref/files.texi52
-rw-r--r--doc/lispref/frames.texi121
-rw-r--r--doc/lispref/front-cover-1.texi4
-rw-r--r--doc/lispref/functions.texi7
-rw-r--r--doc/lispref/gpl.texi4
-rw-r--r--doc/lispref/hash.texi7
-rw-r--r--doc/lispref/help.texi13
-rw-r--r--doc/lispref/hooks.texi7
-rw-r--r--doc/lispref/internals.texi28
-rw-r--r--doc/lispref/intro.texi11
-rw-r--r--doc/lispref/keymaps.texi84
-rw-r--r--doc/lispref/lay-flat.texi7
-rw-r--r--doc/lispref/lists.texi13
-rw-r--r--doc/lispref/loading.texi21
-rw-r--r--doc/lispref/locals.texi13
-rw-r--r--doc/lispref/macros.texi7
-rw-r--r--doc/lispref/makefile.w32-in22
-rw-r--r--doc/lispref/maps.texi5
-rw-r--r--doc/lispref/markers.texi7
-rw-r--r--doc/lispref/minibuf.texi52
-rw-r--r--doc/lispref/modes.texi192
-rw-r--r--doc/lispref/nonascii.texi36
-rw-r--r--doc/lispref/numbers.texi14
-rw-r--r--doc/lispref/objects.texi7
-rw-r--r--doc/lispref/os.texi71
-rw-r--r--doc/lispref/package.texi319
-rw-r--r--doc/lispref/positions.texi7
-rw-r--r--doc/lispref/processes.texi67
-rw-r--r--doc/lispref/searching.texi13
-rw-r--r--doc/lispref/sequences.texi7
-rw-r--r--doc/lispref/streams.texi7
-rw-r--r--doc/lispref/strings.texi7
-rw-r--r--doc/lispref/symbols.texi7
-rw-r--r--doc/lispref/syntax.texi98
-rw-r--r--doc/lispref/text.texi115
-rwxr-xr-xdoc/lispref/tindex.pl4
-rw-r--r--doc/lispref/tips.texi38
-rw-r--r--doc/lispref/two-volume-cross-refs.txt5
-rw-r--r--doc/lispref/two-volume.make3
-rw-r--r--doc/lispref/two.el4
-rw-r--r--doc/lispref/variables.texi177
-rw-r--r--doc/lispref/vol1.texi17
-rw-r--r--doc/lispref/vol2.texi17
-rw-r--r--doc/lispref/windows.texi13
-rw-r--r--doc/man/ChangeLog25
-rw-r--r--doc/man/b2m.164
-rw-r--r--doc/man/ctags.12
-rw-r--r--doc/man/ebrowse.11
-rw-r--r--doc/man/emacs.13
-rw-r--r--doc/man/emacsclient.11
-rw-r--r--doc/man/etags.13
-rw-r--r--doc/man/grep-changelog.11
-rw-r--r--doc/man/rcs-checkin.11
-rw-r--r--doc/misc/ChangeLog1319
-rw-r--r--doc/misc/Makefile.in603
-rw-r--r--doc/misc/ada-mode.texi8
-rw-r--r--doc/misc/auth.texi284
-rw-r--r--doc/misc/autotype.texi7
-rw-r--r--doc/misc/calc.texi537
-rw-r--r--doc/misc/cc-mode.texi102
-rw-r--r--doc/misc/cl.texi15
-rw-r--r--doc/misc/dbus.texi271
-rw-r--r--doc/misc/dired-x.texi192
-rw-r--r--doc/misc/doclicense.texi4
-rw-r--r--doc/misc/ebrowse.texi8
-rw-r--r--doc/misc/ede.texi27
-rw-r--r--doc/misc/ediff.texi12
-rw-r--r--doc/misc/edt.texi3
-rw-r--r--doc/misc/eieio.texi6
-rw-r--r--doc/misc/emacs-mime.texi50
-rw-r--r--doc/misc/epa.texi155
-rw-r--r--doc/misc/erc.texi6
-rw-r--r--doc/misc/ert.texi841
-rw-r--r--doc/misc/eshell.texi18
-rw-r--r--doc/misc/eudc.texi4
-rw-r--r--doc/misc/faq.texi61
-rw-r--r--doc/misc/flymake.texi6
-rw-r--r--doc/misc/forms.texi7
-rw-r--r--doc/misc/gnus-coding.texi40
-rw-r--r--doc/misc/gnus-faq.texi40
-rw-r--r--doc/misc/gnus-news.el6
-rw-r--r--doc/misc/gnus-news.texi50
-rw-r--r--doc/misc/gnus-overrides.texi0
-rw-r--r--doc/misc/gnus.texi4476
-rw-r--r--doc/misc/gpl.texi4
-rw-r--r--doc/misc/idlwave.texi8
-rw-r--r--doc/misc/info.texi7
-rw-r--r--doc/misc/mairix-el.texi6
-rw-r--r--doc/misc/makefile.w32-in129
-rw-r--r--doc/misc/message.texi101
-rw-r--r--doc/misc/mh-e.texi3
-rw-r--r--doc/misc/newsticker.texi6
-rw-r--r--doc/misc/nxml-mode.texi2
-rw-r--r--doc/misc/org.texi6106
-rw-r--r--doc/misc/pcl-cvs.texi7
-rw-r--r--doc/misc/pgg.texi15
-rw-r--r--doc/misc/rcirc.texi6
-rw-r--r--doc/misc/reftex.texi8
-rw-r--r--doc/misc/remember.texi6
-rw-r--r--doc/misc/sasl.texi14
-rw-r--r--doc/misc/sc.texi8
-rw-r--r--doc/misc/sem-user.texi7
-rw-r--r--doc/misc/semantic.texi7
-rw-r--r--doc/misc/ses.texi7
-rw-r--r--doc/misc/sieve.texi19
-rw-r--r--doc/misc/smtpmail.texi6
-rw-r--r--doc/misc/speedbar.texi8
-rw-r--r--doc/misc/texinfo.tex1350
-rw-r--r--doc/misc/tramp.texi256
-rw-r--r--doc/misc/trampver.texi12
-rw-r--r--doc/misc/url.texi51
-rw-r--r--doc/misc/vip.texi7
-rw-r--r--doc/misc/viper.texi7
-rw-r--r--doc/misc/widget.texi7
-rw-r--r--doc/misc/woman.texi11
212 files changed, 14495 insertions, 8303 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 5196706f6c..89a78263e9 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,4 +1,25 @@
-2011-05-15 Chong Yidong <[email protected]>
+2011-05-28 Chong Yidong <[email protected]>
+
+ * custom.texi (Hooks): Reorganize. Mention Prog mode.
+
+ * fixit.texi (Spelling): Mention using prog-mode-hook for flypsell
+ prog mode (Bug#8240).
+
+2011-05-27 Glenn Morris <[email protected]>
+
+ * custom.texi (Specifying File Variables):
+ Major modes no longer need come first.
+
+2011-05-22 Chong Yidong <[email protected]>
+
+ * mule.texi (Specify Coding, Text Coding, Communication Coding):
+ (File Name Coding, Terminal Coding): Add command names (Bug#8312).
+
+2011-05-18 Glenn Morris <[email protected]>
+
+ * ack.texi (Acknowledgments): Remove fakemail.c.
+
+2011-05-17 Chong Yidong <[email protected]>
Fixes for fitting text into 7x9 printed manual.
* building.texi (Flymake, Breakpoints Buffer):
@@ -28,25 +49,116 @@
* macos.texi (Mac / GNUstep Events):
* xresources.texi (Lucid Resources): Remove extraneous examples.
-2011-04-13 Juanma Barranquero <[email protected]>
+2011-05-10 Glenn Morris <[email protected]>
+
+ * custom.texi (Specifying File Variables):
+ Deprecate using mode: for minor modes.
+
+2011-05-07 Glenn Morris <[email protected]>
+
+ * cal-xtra.texi (Sexp Diary Entries): Mention diary-hebrew-birthday.
+
+2011-05-06 Glenn Morris <[email protected]>
+
+ * calendar.texi (Appointments): Mention appt-warning-time-regexp.
+
+ * cal-xtra.texi (Fancy Diary Display): Mention diary comments.
+
+2011-05-02 Lars Magne Ingebrigtsen <[email protected]>
+
+ * misc.texi (Emacs Server): Document `server-eval-at'.
+
+2011-04-24 Chong Yidong <[email protected]>
+
+ * maintaining.texi (List Tags): Document next-file. Suggested by
+ Uday S Reddy.
+
+2011-04-23 Juanma Barranquero <[email protected]>
* mini.texi (Minibuffer Edit):
* screen.texi (Mode Line): Fix typo.
+2011-04-20 Christoph Scholtes <[email protected]>
+
+ * maintaining.texi (Old Revisions): Mention new function vc-ediff.
+
2011-03-26 Chong Yidong <[email protected]>
* display.texi (Auto Scrolling): Fix scroll-up/scroll-down confusion.
-2011-03-11 Eli Zaretskii <[email protected]>
+2011-03-30 Eli Zaretskii <[email protected]>
+
+ * display.texi (Auto Scrolling): Document the limit of 100 lines
+ for never-recentering scrolling with `scroll-conservatively'.
+ (Bug#6671)
+
+2011-03-12 Eli Zaretskii <[email protected]>
* msdog.texi (Windows HOME): Fix the wording to clarify how Emacs sets
HOME on Windows and where it looks for init files. (Bug#8221)
+2011-03-10 Eli Zaretskii <[email protected]>
+
+ * search.texi (Regexp Example):
+ * mule.texi (International Chars):
+ * building.texi (External Lisp): Don't use characters outside
+ ISO-8859-1.
+
+2011-03-09 Eli Zaretskii <[email protected]>
+
+ * ack.texi (Acknowledgments): Convert to ISO-8859-1 encoding.
+ Use Texinfo @-commands for non Latin-1 characters.
+
+ * makefile.w32-in (MAKEINFO_OPTS): Add --enable-encoding.
+
+ * custom.texi (Init File): Add index entries for ".emacs".
+ (Bug#8210)
+
+2011-03-08 Jan Djärv <[email protected]>
+
+ * xresources.texi (GTK resources): ~/.emacs.d/gtkrc does not work
+ for Gtk+ 3.
+
+2011-03-08 Glenn Morris <[email protected]>
+
+ * Makefile.in (MAKEINFO_OPTS): Add --enable-encoding.
+ * emacs.texi (Acknowledgments):
+ * ack.texi (Acknowledgments): Names to UTF-8.
+ * emacs.texi: Set documentencoding.
+
+ * display.texi (Optional Mode Line): Don't mention exactly where
+ display-time appears. (Bug#8193)
+
2011-03-07 Chong Yidong <[email protected]>
* Version 23.3 released.
-2011-02-25 Eli Zaretskii <[email protected]>
+2011-03-06 Chong Yidong <[email protected]>
+
+ * search.texi (Isearch Yank): C-y now bound to isearch-yank-kill.
+
+2011-03-03 Drake Wilson <[email protected]> (tiny change)
+
+ * misc.texi (emacsclient Options): Add q/quiet.
+
+2011-03-02 Glenn Morris <[email protected]>
+
+ * mule.texi (Communication Coding) <x-select-request-type>:
+ Remove duplicate (essentially) paragraph. (Bug#8148)
+
+2011-03-01 Christoph Scholtes <[email protected]>
+
+ * maintaining.texi (Format of ChangeLog): Add reference to
+ add-log-full-name.
+ (Change Log Commands): Add documentation for combining multiple
+ symbols in one change.
+
+2011-03-01 Glenn Morris <[email protected]>
+
+ * custom.texi (Directory Variables):
+ Give an example of excluding subdirectories.
+
+2011-02-28 Eli Zaretskii <[email protected]>
* search.texi (Regexp Search): Move index entries about regexps to the
"Regexps" node. Add index entries for regexp search. (Bug#8096)
@@ -55,6 +167,11 @@
* dired.texi (Dired): Dired-X version number was dropped.
+2011-02-14 Jan Djärv <[email protected]>
+
+ * xresources.texi (X Resources): Remove *faceName and replace it with
+ *font for Lucid.
+
2011-02-05 Chong Yidong <[email protected]>
* rmail.texi (Rmail Display): Document Rmail MIME support more
@@ -64,11 +181,11 @@
vc-log-outgoing.
(Merging): Document vc-find-conflicted-file.
-2011-02-04 Glenn Morris <[email protected]>
+2011-02-05 Glenn Morris <[email protected]>
* custom.texi (Variables): Fix typo.
-2011-01-28 Chong Yidong <[email protected]>
+2011-01-31 Chong Yidong <[email protected]>
* search.texi (Regexps): Copyedits. Mention character classes
(Bug#7809).
@@ -76,6 +193,26 @@
* files.texi (File Aliases): Restore explanatory text from Eli
Zaretskii, accidentally removed in 2011-01-08 commit.
+2011-01-29 Eli Zaretskii <[email protected]>
+
+ * makefile.w32-in (MAKEINFO): Remove options, leave only program name.
+ (MAKEINFO_OPTS): New variable.
+ (ENVADD, $(infodir)/emacs): Use $(MAKEINFO_OPTS).
+ (emacs.html): New target.
+ (clean): Remove emacs.html.
+
+2011-01-23 Werner Lemberg <[email protected]>
+
+ * Makefile.in (MAKEINFO): Now controlled by `configure'.
+ (MAKEINFO_OPTS): New variable. Use it where appropriate.
+ (ENVADD): Updated.
+
+2011-01-18 Glenn Morris <[email protected]>
+
+ * ack.texi, emacs.texi (Acknowledgments): Update for ERT addition.
+
+ * ack.texi (Acknowledgments): Remove mention of replaced prolog.el.
+
2011-01-15 Chong Yidong <[email protected]>
* building.texi (Compilation): Improve instructions for running two
@@ -84,26 +221,24 @@
* files.texi (Backup Names): Document the new location of the
last-resort backup file.
-2011-01-08 Chong Yidong <[email protected]>
-
* files.texi (File Aliases): Move directory-abbrev-alist doc from Lisp
manual. Explain why directory-abbrev-alist elements should be anchored
(Bug#7777).
-2011-01-07 Eli Zaretskii <[email protected]>
+2011-01-15 Eli Zaretskii <[email protected]>
* msdog.texi (Windows Startup): Correct inaccurate description of
differences between emacsclient.exe and emacsclientw.exe.
-2010-12-30 Chong Yidong <[email protected]>
+2011-01-02 Chong Yidong <[email protected]>
* rmail.texi (Rmail Display): Edit for grammar and conciseness.
-2010-12-27 Kenichi Handa <[email protected]>
+2011-01-02 Kenichi Handa <[email protected]>
* rmail.texi (Rmail Display): Describe new features of Rmail in Info.
-2010-12-25 Eli Zaretskii <[email protected]>
+2011-01-02 Eli Zaretskii <[email protected]>
* frames.texi (Cut and Paste): Modify the section's name and text:
don't mix "cut/paste" with "kill/yank".
@@ -112,34 +247,45 @@
* trouble.texi (Checklist): Mention debug-on-quit. (Bug#7667)
-2010-12-18 Glenn Morris <[email protected]>
+2011-01-02 Glenn Morris <[email protected]>
* maintaining.texi: Move inclusion of emerge after EDE, so that it
matches its position in the menu. (Bug#7674)
-2010-12-14 Glenn Morris <[email protected]>
+2011-01-02 Glenn Morris <[email protected]>
* trouble.texi (Checklist): Mention not replying via news either.
-2010-12-11 Eli Zaretskii <[email protected]>
+2010-12-30 Tassilo Horn <[email protected]>
+
+ * misc.texi (Document View): Update DocView section with newly
+ supported document formats.
+
+2010-12-21 Chong Yidong <[email protected]>
+
+ * killing.texi: Resection the Info version to conform to the
+ printed manual, to avoid making sections on Accumulating Text, CUA
+ and Rectangles into full chapters.
+
+2010-12-13 Eli Zaretskii <[email protected]>
* custom.texi (Init Syntax): Add index entries for "character syntax".
(Bug#7576)
-2010-12-11 Karel Klíč <[email protected]>
+2010-12-13 Karel Klíč <[email protected]>
* text.texi (HTML Mode): Small fixes. (Bug#7607)
-2010-12-10 Glenn Morris <[email protected]>
+2010-12-13 Glenn Morris <[email protected]>
* trouble.texi (Checklist): Fix typo in newsgroup name.
-2010-12-05 Chong Yidong <[email protected]>
+2010-12-13 Chong Yidong <[email protected]>
* search.texi (Word Search): Note that the lazy highlight always
matches to whole words (Bug#7470).
-2010-12-04 Eli Zaretskii <[email protected]>
+2010-12-13 Eli Zaretskii <[email protected]>
* display.texi (Optional Mode Line): Make the description of
load-average more accurate.
@@ -149,17 +295,17 @@
(Windows Startup): New node. Move the stuff about the current
directory from "Windows HOME".
-2010-11-23 Bob Rogers <[email protected]>
+2010-11-27 Bob Rogers <[email protected]>
* maintaining.texi (VC With A Locking VCS, VC Directory Commands):
* vc1-xtra.texi (Customizing VC, General VC Options): Small fixes.
-2010-11-21 Chong Yidong <[email protected]>
+2010-11-27 Chong Yidong <[email protected]>
* maintaining.texi (Version Control Systems): Fix repeated sentence.
Suggested by Štěpán Němec.
-2010-11-20 Chong Yidong <[email protected]>
+2010-11-27 Chong Yidong <[email protected]>
* maintaining.texi (Version Control): Say "commit", not "check in".
(Version Control Systems): Simplify descriptions.
@@ -169,16 +315,127 @@
(Old Revisions): Document revert-buffer for vc-diff.
(Log Buffer): Promote to a subsection. Document header lines.
- * macos.texi (Mac / GNUstep Basics): Document
- ns-right-alternate-modifier.
+ * macos.texi (Mac / GNUstep Basics):
+ Document ns-right-alternate-modifier.
* emacs.texi (Top): Update node listing.
-2010-11-06 Eli Zaretskii <[email protected]>
+2010-11-13 Eli Zaretskii <[email protected]>
+
+ * rmail.texi (Rmail Coding): Characters with no fonts are not
+ necessarily displayed as empty boxes.
+
+ * mule.texi (Language Environments, Fontsets): Characters with no
+ fonts are not necessarily displayed as empty boxes.
+
+ * display.texi (Text Display): Document display of glyphless
+ characters.
+
+2010-11-13 Glenn Morris <[email protected]>
+
+ * basic.texi (Position Info): Add M-x count-words-region.
+
+2010-11-11 Glenn Morris <[email protected]>
+
+ * msdog.texi (ls in Lisp): Update for ls-lisp changes.
+
+2010-11-09 Eli Zaretskii <[email protected]>
* msdog.texi (Windows HOME): Add information regarding startup
directory when invoking Emacs from a desktop shortcut. (bug#7300)
+2010-10-11 Glenn Morris <[email protected]>
+
+ * Makefile.in (MAKEINFO): Add explicit -I$srcdir.
+
+ * Makefile.in (.texi.dvi): Remove unnecessary suffix rule.
+ (DVIPS): New variable.
+ (.PHONY): Add html, ps.
+ (html, emacs.html, ps, emacs.ps, emacs-xtra.ps): New targets.
+ (clean): Delete html, ps files.
+
+2010-10-09 Eli Zaretskii <[email protected]>
+
+ * makefile.w32-in (EMACSSOURCES): Add emacsver.texi.
+
+2010-10-09 Glenn Morris <[email protected]>
+
+ * Makefile.in (VPATH): Remove.
+ (infodir): Make it absolute.
+ (mkinfodir, $(infodir)/emacs, infoclean): No need to cd $srcdir.
+
+ * Makefile.in (dist): Anchor regexps.
+
+ * Makefile.in (EMACSSOURCES): Put emacs.texi first.
+ ($(infodir)/emacs, emacs.dvi, emacs.pdf, emacs-xtra.dvi)
+ (emacs-xtra.pdf): Use $<.
+
+ * Makefile.in (infoclean): Remove harmless, long-standing error.
+
+ * Makefile.in ($(infodir)): Delete rule.
+ (mkinfodir): New.
+ ($(infodir)/emacs): Use $mkinfodir instead of infodir.
+
+ * Makefile.in (distclean): Do not delete emacsver.texi.
+ (dist): Remove reference to emacsver.texi.in.
+ * emacsver.texi: New file, replacing emacsver.texi.in.
+
+2010-10-09 Glenn Morris <[email protected]>
+
+ * emacsver.texi.in: New file.
+ * emacs.texi: Set EMACSVER by including emacsver.texi.
+ * Makefile.in (distclean): Delete emacsver.texi.
+ (dist): Copy emacsver.texi.
+ (EMACSSOURCES): Add emacsver.texi.
+
+ * ack.texi (Acknowledgments): No more b2m.c.
+
+ * Makefile.in (.PHONY): Declare info, dvi, pdf, dist.
+ (emacs): Remove rule.
+ (dist): No need to deal with the emacs rule any more.
+
+2010-10-07 Glenn Morris <[email protected]>
+
+ * Makefile.in (version): New, set by configure.
+ (clean): Delete dist tar file.
+ (dist): Use version in tar name.
+
+2010-10-06 Glenn Morris <[email protected]>
+
+ * Makefile.in (EMACS_XTRA): Add the main source file.
+ (emacs-xtra.dvi, emacs-xtra.pdf): Remove explicit emacs-xtra.texi.
+ (mostlyclean): No core files, reorder other files.
+ (clean): Delete specific dvi and pdf files.
+ (infoclean, dist): New rules.
+ (maintainer-clean): Use infoclean.
+ ($(infodir)): Add parallel build workaround.
+
+2010-10-04 Glenn Morris <[email protected]>
+
+ * Makefile.in (SHELL): Set it.
+ (INFO_TARGETS, DVI_TARGETS): Remove variables.
+ (info, dvi): Replace above variables with their expansions.
+ (info): Move mkdir from here...
+ ($(infodir)/emacs): ... to here (for parallel builds).
+ (pdf): New target.
+ ($(infodir)/emacs): Pass -o option to makeinfo.
+ (.PHONY): Declare clean rules.
+ (maintainer-clean): Delete dvi and pdf files.
+ Guard against cd failures. Use a more restrictive delete.
+
+2010-10-02 Glenn Morris <[email protected]>
+
+ * misc.texi (Shell Mode): Remove reference to old function name.
+
+2010-09-30 Eli Zaretskii <[email protected]>
+
+ * maintaining.texi (VC Mode Line): Mention all the possible VC status
+ indicator characters.
+
+2010-09-29 Glenn Morris <[email protected]>
+
+ * Makefile.in (top_srcdir): Remove unused variable.
+
2010-09-14 Glenn Morris <[email protected]>
* cal-xtra.texi (Fancy Diary Display): Emphasize that sort should be
@@ -187,7 +444,7 @@
* calendar.texi (Appointments): Also updated when a diary include file
is saved.
-2010-09-12 Glenn Morris <[email protected]>
+2010-09-14 Glenn Morris <[email protected]>
* trouble.texi (Bugs): Update the section intro.
(Known Problems): New section.
@@ -195,18 +452,35 @@
(Sending Patches): Bug fixes are best as responses to existing bugs.
* emacs.texi (Known Problems): Add menu entry for new section.
-2010-09-04 Chong Yidong <[email protected]>
+2010-09-09 Glenn Morris <[email protected]>
+
+ * xresources.texi: Untabify.
+
+2010-09-06 Chong Yidong <[email protected]>
* dired.texi (Dired Enter): Minor doc fix (Bug#6982).
-2010-09-02 Glenn Morris <[email protected]>
+2010-09-06 Glenn Morris <[email protected]>
* misc.texi (Saving Emacs Sessions): Mention desktop-path. (Bug#6948)
+2010-09-02 Jan Djärv <[email protected]>
+
+ * frames.texi (Cut/Paste Other App): Remove vut-buffer text.
+
2010-08-21 Glenn Morris <[email protected]>
* misc.texi (Amusements): Mention bubbles and animate.
+2010-07-31 Eli Zaretskii <[email protected]>
+
+ * files.texi (Visiting): Add more index entries for
+ large-file-warning-threshold.
+
+2010-07-29 Jan Djärv <[email protected]>
+
+ * frames.texi (Tool Bars): Add doc for tool-bar-position.
+
2010-06-23 Glenn Morris <[email protected]>
* abbrevs.texi, basic.texi, buffers.texi, building.texi, calendar.texi:
@@ -223,31 +497,67 @@
* basic.texi (Inserting Text): Fix typo.
-2010-05-07 Chong Yidong <[email protected]>
+2010-06-10 Glenn Morris <[email protected]>
- * Version 23.2 released.
+ * ack.texi (Acknowledgments):
+ * emacs.texi (Acknowledgments): Update for notifications.el.
-2010-05-07 Chong Yidong <[email protected]>
+2010-05-31 Daiki Ueno <[email protected]>
+
+ * dired.texi (Operating on Files): Mention encryption commands
+ (Bug#6315).
+
+2010-05-29 Eli Zaretskii <[email protected]>
+
+ * basic.texi (Moving Point): Update due to renaming of commands bound
+ to arrows. Document bidi-aware behavior of C-<right> and C-<left>.
+
+2010-05-18 Eli Zaretskii <[email protected]>
+
+ * display.texi (Fringes): Document reversal of fringe arrows for R2L
+ paragraphs.
+ (Line Truncation): Fix wording for bidi display.
+
+ * basic.texi (Moving Point): Document bidi-aware behavior of the arrow
+ keys.
+
+2010-05-08 Chong Yidong <[email protected]>
* building.texi (GDB Graphical Interface): Remove misleading comparison
to an IDE (Bug#6128).
-2010-05-03 Štěpán Němec <[email protected]> (tiny change)
+2010-05-08 Štěpán Němec <[email protected]> (tiny change)
* programs.texi (Man Page):
* misc.texi (Invoking emacsclient):
* mini.texi (Repetition):
* mark.texi (Setting Mark): Fix typos.
-2010-04-25 Chong Yidong <[email protected]>
+2010-05-08 Chong Yidong <[email protected]>
* misc.texi (Printing): Document htmlfontify-buffer.
-2010-04-21 Glenn Morris <[email protected]>
+2010-05-08 Glenn Morris <[email protected]>
* calendar.texi (Displaying the Diary, Format of Diary File):
Fix external cross-references for TeX format output.
+2010-05-07 Chong Yidong <[email protected]>
+
+ * Version 23.2 released.
+
+2010-05-02 Jan Djärv <[email protected]>
+
+ * cmdargs.texi (Initial Options): Mention --chdir.
+
+2010-04-21 Jan Djärv <[email protected]>
+
+ * frames.texi (Tool Bars): Add tool-bar-style.
+
+2010-04-21 Glenn Morris <[email protected]>
+
+ * ack.texi, emacs.texi (Acknowledgments): Add SELinux support.
+
2010-04-18 Chong Yidong <[email protected]>
* programs.texi (Semantic): New node.
@@ -258,13 +568,13 @@
* misc.texi (Gnus): Use the `C-h i' keybinding for info.
-2010-04-16 Glenn Morris <[email protected]>
+2010-04-18 Glenn Morris <[email protected]>
* emacs.texi (Acknowledgments): Remove duplicate.
* maintaining.texi (VC Directory Commands): Mention stashes and shelves.
-2010-04-15 Glenn Morris <[email protected]>
+2010-04-18 Glenn Morris <[email protected]>
* dired.texi (Misc Dired Features): Mention VC diff and log.
* maintaining.texi (Old Revisions, VC Change Log):
@@ -277,16 +587,28 @@
* custom.texi (Specifying File Variables, Directory Variables):
Document new commands for manipulating local variable lists.
-2010-04-09 Glenn Morris <[email protected]>
+2010-04-18 Glenn Morris <[email protected]>
* trouble.texi (Contributing): Add cindex entry.
Mention etc/CONTRIBUTE.
-2010-04-06 Chong Yidong <[email protected]>
+2010-04-18 Chong Yidong <[email protected]>
* mark.texi (Persistent Mark): Copyedits. Replace undo example with
query-replace (Bug#5774).
+2010-04-16 Glenn Morris <[email protected]>
+
+ * ack.texi, emacs.texi (Acknowledgments): Update for Org changes.
+
+2010-04-11 Jan Djärv <[email protected]>
+
+ * xresources.texi (Lucid Resources): Mention faceName for dialogs.
+
+2010-04-08 Jan Djärv <[email protected]>
+
+ * xresources.texi (Lucid Resources): Mention faceName to set Xft fonts.
+
2010-03-30 Eli Zaretskii <[email protected]>
* mule.texi (Input Methods): Mention "C-x 8 RET" and add a
@@ -295,13 +617,13 @@
* basic.texi (Inserting Text): Add an index entry for "C-x 8 RET".
Mention completion provided by `ucs-insert'.
-2010-03-28 Chong Yidong <[email protected]>
+2010-03-30 Chong Yidong <[email protected]>
* sending.texi (Sending Mail): Note variables that may need
customizing.
(Mail Sending): Expand discussion of send-mail-function.
-2010-03-28 Chong Yidong <[email protected]>
+2010-03-30 Chong Yidong <[email protected]>
Document Message mode as the default mail mode.
@@ -315,8 +637,8 @@
mail-self-blind, mail-default-reply-to, and mail-archive-file-name in
favor of mail-default-headers. Ad index entries for user-full-name and
user-mail-address.
- (Citing Mail): Update changes in Message mode behavior. Document
- mail-yank-prefix.
+ (Citing Mail): Update changes in Message mode behavior.
+ Document mail-yank-prefix.
(Mail Signature): New node, moved from Mail Misc.
(Mail Aliases): Mail abbrevs are the default with Message mode.
(Mail Methods): Note that Message mode is now the default.
@@ -330,7 +652,7 @@
* emacs.texi (Top): Fix xrefs.
-2010-03-25 Chong Yidong <[email protected]>
+2010-03-30 Chong Yidong <[email protected]>
* maintaining.texi (VC With A Merging VCS): C-x v v now creates a
repository if there is none.
@@ -346,6 +668,25 @@
* misc.texi (Navigation): Document doc-view-continuous.
(Shell Ring): Document new M-r binding. M-s is no longer bound.
+2010-03-30 Juri Linkov <[email protected]>
+
+ * search.texi (Other Repeating Search): Remove line that `occur'
+ can not handle multiline matches.
+
+2010-03-30 Eli Zaretskii <[email protected]>
+
+ * mule.texi (International): Mention support of bidirectional editing.
+ (Bidirectional Editing): New section.
+
+2010-03-28 Nick Roberts <[email protected]>
+
+ * emacs.texi (Top): Update node names to those in building.texi.
+
+2010-03-27 Nick Roberts <[email protected]>
+
+ doc/emacs/building.texi: Describe restored GDB/MI fuctionality removed by 2009-12-29T07:15:[email protected].
+ doc/emacs/emacs.texi: Update node names for building.texi.
+
2010-03-24 Glenn Morris <[email protected]>
* ack.texi (Acknowledgments):
@@ -378,6 +719,10 @@
* xresources.texi (Table of Resources):
* mule.texi (Defining Fontsets, Charsets): Update xrefs.
+2010-03-10 Chong Yidong <[email protected]>
+
+ * Branch for 23.2.
+
2010-03-06 Chong Yidong <[email protected]>
* custom.texi (Init Examples): Add xref to Locals.
@@ -463,8 +808,8 @@
* files.texi (Visiting):
* buffers.texi (Buffers): Max buffer size is now 512 MB.
- * frames.texi (Cut/Paste Other App): Document
- save-interprogram-paste-before-kill.
+ * frames.texi (Cut/Paste Other App):
+ Document save-interprogram-paste-before-kill.
* killing.texi (Kill Options): New node.
@@ -552,8 +897,8 @@
* entering.texi (Exiting): C-z is now bound to suspend-frame.
* custom.texi (Init Examples): Replace Rumseld with Cheny (Bug#3519).
- (Key Bindings): Reference Init Rebinding in introductory text. Shift
- some of the introduction to Keymaps node.
+ (Key Bindings): Reference Init Rebinding in introductory text.
+ Shift some of the introduction to Keymaps node.
(Keymaps): Simplify.
(Local Keymaps): Simplify. Move binding example to Init Rebinding.
(Minibuffer Maps): Remove mention of Mocklisp.
@@ -744,7 +1089,7 @@
2009-06-23 Miles Bader <[email protected]>
- * display.texi (Scrolling): Document `recenter-redisplay'
+ * display.texi (Scrolling): Document `recenter-redisplay'.
(Temporary Face Changes): Document `text-scale-set'.
2009-06-21 Chong Yidong <[email protected]>
@@ -819,8 +1164,8 @@
* misc.texi (Interactive Shell, Saving Emacs Sessions)
(Shell History Copying, Terminal emulator): Copyedits.
- * xresources.texi (Resources): Simplify descriptions. Shorten
- description of editres, which is not very useful these days.
+ * xresources.texi (Resources): Simplify descriptions.
+ Shorten description of editres, which is not very useful these days.
(Table of Resources): Document fontBackend resource.
* trouble.texi (Quitting): Add other undo bindings to table.
@@ -841,8 +1186,8 @@
(Enabling Multibyte): Remove obsolete discussion. Copyedits.
(Language Environments): Add language environments new to Emacs 23.
(Multibyte Conversion): Node deleted.
- (Coding Systems): Remove obsolete unify-8859-on-decoding-mode. Don't
- mention obsolete emacs-mule coding system.
+ (Coding Systems): Remove obsolete unify-8859-on-decoding-mode.
+ Don't mention obsolete emacs-mule coding system.
(Output Coding): Copyedits.
* emacs.texi (Top): Update node listing.
@@ -898,8 +1243,8 @@
* mini.texi (Completion Commands): Describe Emacs 23 completion rules.
(Completion Options): Document read-file-name-completion-ignore-case,
- read-buffer-completion-ignore-case, and completion-styles. Remove
- description of partial-completion-mode.
+ read-buffer-completion-ignore-case, and completion-styles.
+ Remove description of partial-completion-mode.
2009-03-14 Glenn Morris <[email protected]>
@@ -1321,8 +1666,8 @@
* files.texi (Visiting): Document new behavior of
confirm-nonexistent-file-or-buffer.
- * buffers.texi (Select Buffer): Document
- confirm-nonexistent-file-or-buffer.
+ * buffers.texi (Select Buffer):
+ Document confirm-nonexistent-file-or-buffer.
* picture-xtra.texi (Picture Mode): Use picture-mode instead of
edit-picture.
@@ -1447,8 +1792,8 @@
* dired.texi (Dired): Mention C-x C-d too.
(Dired Enter): Document M-n in the Dired minibuffer.
- (Dired Navigation): Explain dired-goto-file more clearly. Document
- dired-isearch-filenames.
+ (Dired Navigation): Explain dired-goto-file more clearly.
+ Document dired-isearch-filenames.
(Dired Deletion): Remove unnecessary "expunged" terminology.
(Flagging Many Files): & is now rebound to `% &'.
(Shell Commands in Dired): Document dired-do-async-shell-command.
@@ -1470,8 +1815,8 @@
open-paren-in-column-0-is-defun-start more concisely.
(Which Function, Program Indent, Info Lookup): Minor edits.
(Basic Indent): If region is active, TAB indents the region.
- (Multi-line Indent): If region is active, TAB indents the region. Note
- that indent-region is useful when Transient Mark mode is off.
+ (Multi-line Indent): If region is active, TAB indents the region.
+ Note that indent-region is useful when Transient Mark mode is off.
(Matching): The delimiter at the cursor is highlighted---the character
changes color.
(Symbol Completion): Link to Completion node.
@@ -1500,12 +1845,12 @@
2008-10-31 Chong Yidong <[email protected]>
- * misc.texi (Document View): Renamed from Document Files, moved here
+ * misc.texi (Document View): Rename from Document Files, moved here
from files.texi.
- * files.texi (Version Control): Moved to maintaining.texi. Subnodes
- moved as well.
- (Document Files): Moved to misc.texi.
+ * files.texi (Version Control): Move to maintaining.texi.
+ Subnodes moved as well.
+ (Document Files): Move to misc.texi.
* maintaining.texi (Change Log): Document log-edit-insert-changelog and
vc-update-change-log.
@@ -1521,8 +1866,8 @@
2008-10-31 Chong Yidong <[email protected]>
- * building.texi (Compilation Mode): Document
- compilation-auto-jump-to-first-error.
+ * building.texi (Compilation Mode):
+ Document compilation-auto-jump-to-first-error.
(Debuggers): Lower GUD subsections to subsubsections.
(Starting GUD): Add cindex.
(Lisp Interaction): Note that scratch is no longer the initial buffer.
@@ -1540,8 +1885,8 @@
* emacs.texi (Top): Update node listings.
- * misc.texi (Emacs Server): Rewrite. Document daemon-mode. Don't
- mention obsolete emacs.bash script.
+ * misc.texi (Emacs Server): Rewrite. Document daemon-mode.
+ Don't mention obsolete emacs.bash script.
(Invoking emacsclient): Rewrite, moving optional arguments to
emacsclient Options.
(emacsclient Options): New node. Document server-use-tcp and
@@ -1581,7 +1926,7 @@
2008-10-22 Tassilo Horn <[email protected]>
- * emacs.texi (Acknowledgments): Added myself to Acknowledgments
+ * emacs.texi (Acknowledgments): Add myself to Acknowledgments
section.
2008-10-21 Chong Yidong <[email protected]>
@@ -1616,15 +1961,15 @@
crucial to using distributed version control systems.
(Comparing Files): Note that diff uses the minibuffer, and that the
output is shown using Diff mode.
- (Diff Mode): Explain what "patch" and "hunk" mean. Document
- diff-update-on-the-fly, diff-refine-hunk, and
+ (Diff Mode): Explain what "patch" and "hunk" mean.
+ Document diff-update-on-the-fly, diff-refine-hunk, and
diff-show-trailing-whitespaces.
(File Archives): Add rar support.
* major.texi (Choosing Modes): Make mode selection sequence more
obvious by describing the steps in order of priority. Note that
- magic-mode-alist is nil by default. Document
- magic-fallback-mode-alist.
+ magic-mode-alist is nil by default.
+ Document magic-fallback-mode-alist.
2008-10-20 Chong Yidong <[email protected]>
@@ -1683,8 +2028,8 @@
2008-10-12 Chong Yidong <[email protected]>
* mini.texi (Minibuffer File): Add xref to File Names.
- (Minibuffer File): Add discussion of `~' in file names. Add
- insert-default-directory index reference.
+ (Minibuffer File): Add discussion of `~' in file names.
+ Add insert-default-directory index reference.
* files.texi (File Names): Reorganize description.
(Visiting): Add xref to Mode Line. Copyedits.
@@ -1729,8 +2074,8 @@
* msdog-xtra.texi (MS-DOS Printing, MS-DOS and MULE): No need to create
cpNNN coding systems anymore.
(MS-DOS and MULE): Don't mention code-pages.el. Don't mention support
- for unibyte mode. Don't mention line-drawing characters. Don't
- mention dos-unsupported-char-glyph.
+ for unibyte mode. Don't mention line-drawing characters.
+ Don't mention dos-unsupported-char-glyph.
2008-09-25 Chong Yidong <[email protected]>
@@ -1761,12 +2106,12 @@
* kmacro.texi (Basic Keyboard Macro): Make F3 and F4 the preferred
interface for defining macros. Simplify examples. Note that C-g quits
macro definitions.
- (Keyboard Macro Counter): Document using F3 to insert counter. Give
- usage example.
+ (Keyboard Macro Counter): Document using F3 to insert counter.
+ Give usage example.
(Keyboard Macro Query): Organize query responses in a table.
- * fixit.texi (Fixit): Favor C-/ keybinding for undo throughout. Link
- to Erasing node.
+ * fixit.texi (Fixit): Favor C-/ keybinding for undo throughout.
+ Link to Erasing node.
(Undo): Reorganize paragraphs for logical flow. Move keybinding
rationale to a footnote.
(Kill Errors): Remove node, due to redundancy with Erasing.
@@ -1873,7 +2218,7 @@
(Fortran Columns): Mention font-locking.
(Fortran Abbrev): Word syntax not relevant with new-style abbrev.
-2008-08-23 Johan Bockgard <bojohan@muon>
+2008-08-23 Johan Bockgård <bojohan@muon>
* basic.texi (Moving Point): Fix <prior>/<next> confusion.
@@ -1968,8 +2313,8 @@
* display.texi (Visual Line Mode): New node.
* basic.texi (Inserting Text): Move DEL to deletion node.
- (Moving Point): Add additional alternative key bindings. Describe
- line-move-visual.
+ (Moving Point): Add additional alternative key bindings.
+ Describe line-move-visual.
(Erasing): Describe DEL.
(Basic Undo, Blank Lines, Arguments): Copyedit.
(Continuation Lines): Mention Visual Line mode.
@@ -2088,8 +2433,8 @@
2008-06-04 Miles Bader <[email protected]>
- * display.texi (Temporary Face Changes): Add
- `adjust-buffer-face-height'. Rewrite description of
+ * display.texi (Temporary Face Changes):
+ Add `adjust-buffer-face-height'. Rewrite description of
`increase-buffer-face-height' and `decrease-default-face-height' now
that they aren't bound by default.
@@ -2253,8 +2598,8 @@
(Replace, Unconditional Replace, Other Repeating Search):
Describe Transient Mark mode as the default.
- * text.texi (Words, Pages, Fill Commands, HTML Mode): Describe
- Transient Mark mode as the default.
+ * text.texi (Words, Pages, Fill Commands, HTML Mode):
+ Describe Transient Mark mode as the default.
(Paragraphs): Describe how M-h behaves when region is active.
* trouble.texi (Quitting): Clarify effects of C-g.
@@ -2400,8 +2745,8 @@
2007-11-10 Paul Pogonyshev <[email protected]>
- * search.texi (Query Replace): Mention
- `query-replace-show-replacement'.
+ * search.texi (Query Replace):
+ Mention `query-replace-show-replacement'.
2007-11-09 Nick Roberts <[email protected]>
@@ -2754,8 +3099,8 @@
2007-04-20 David Koppelman <[email protected]>
- * display.texi (Highlight Interactively): Document
- hi-lock-file-patterns-policy.
+ * display.texi (Highlight Interactively):
+ Document hi-lock-file-patterns-policy.
2007-04-20 Martin Rudalics <[email protected]>
@@ -3313,8 +3658,8 @@
2006-08-10 Richard Stallman <[email protected]>
* text.texi (Format Faces): Substantial rewrites to deal
- with face merging. Empty regions don't count. Clarify
- face property inheritance.
+ with face merging. Empty regions don't count.
+ Clarify face property inheritance.
2006-08-08 Romain Francoise <[email protected]>
@@ -3773,7 +4118,7 @@
of emacs-xtra.texi. Convert each @chapter into @section, @section
into @subsection, etc.
- * emacs-xtra.texi (MS-DOS): Renamed from "MS-DOG". All references
+ * emacs-xtra.texi (MS-DOS): Rename from "MS-DOG". All references
updated.
* msdog.texi (Microsoft Windows): Rename from "Emacs and Microsoft
@@ -3810,7 +4155,7 @@
(Comparing Files): Delete what duplicates new node.
(Files): Put Diff Mode in menu.
- * misc.texi (Diff Mode): Moved to files.texi.
+ * misc.texi (Diff Mode): Move to files.texi.
* emacs.texi (Top): Update menu for Diff Mode.
@@ -4736,8 +5081,8 @@
2005-11-01 Nick Roberts <[email protected]>
- * building.texi (Other GDB User Interface Buffers): Describe
- the command gdb-use-inferior-io-buffer.
+ * building.texi (Other GDB User Interface Buffers):
+ Describe the command gdb-use-inferior-io-buffer.
2005-10-31 Romain Francoise <[email protected]>
@@ -4775,8 +5120,8 @@
2005-10-25 Nick Roberts <[email protected]>
- * building.texi (GDB Graphical Interface): Describe
- gdb-mouse-until.
+ * building.texi (GDB Graphical Interface):
+ Describe gdb-mouse-until.
2005-10-23 Richard M. Stallman <[email protected]>
@@ -4843,7 +5188,7 @@
2005-10-09 Jan Djärv <[email protected]>
- * cmdargs.texi (Icons X): Removed options -i, -itype, --icon-type,
+ * cmdargs.texi (Icons X): Remove options -i, -itype, --icon-type,
added -nb, --no-bitmap-icon.
2005-10-07 Nick Roberts <[email protected]>
@@ -4880,16 +5225,16 @@
emulation and related variables.
(Mac International): Mention Central European and Cyrillic
support. Now `keyboard-coding-system' is dynamically changed.
- Add description about coding system for selection. Add
- description about language environment.
- (Mac Environment Variables): Mention
- `~/.MacOSX/environment.plist'. Give example of command line
+ Add description about coding system for selection.
+ Add description about language environment.
+ (Mac Environment Variables):
+ Mention `~/.MacOSX/environment.plist'. Give example of command line
arguments. Add Preferences support.
(Mac Directories): Explicitly state that this node is for Mac OS
Classic only.
- (Mac Font Specs): Mention specification for scalable fonts. List
- supported charsets. Add preferred way of creating fontsets. Add
- description about `mac-allow-anti-aliasing'.
+ (Mac Font Specs): Mention specification for scalable fonts.
+ List supported charsets. Add preferred way of creating fontsets.
+ Add description about `mac-allow-anti-aliasing'.
(Mac Functions): Add descriptions about `mac-set-file-creator',
`mac-get-file-creator', `mac-set-file-type', `mac-get-file-type',
and `mac-get-preference'.
@@ -5051,8 +5396,8 @@
2005-07-16 Eli Zaretskii <[email protected]>
* display.texi (Standard Faces): Explain that customization of
- `menu' face has no effect on w32 and with GTK. Add
- cross-references.
+ `menu' face has no effect on w32 and with GTK.
+ Add cross-references.
* cmdargs.texi (General Variables): Clarify the default location
of $HOME on w32 systems.
@@ -5064,8 +5409,8 @@
2005-07-08 Kenichi Handa <[email protected]>
- * mule.texi (Recognize Coding): Recommend
- revert-buffer-with-coding-system instead of revert-buffer.
+ * mule.texi (Recognize Coding):
+ Recommend revert-buffer-with-coding-system instead of revert-buffer.
2005-07-07 Richard M. Stallman <[email protected]>
@@ -5113,12 +5458,12 @@
2005-06-23 Richard M. Stallman <[email protected]>
- * anti.texi (Antinews): Renamed show-nonbreak-escape to
+ * anti.texi (Antinews): Rename show-nonbreak-escape to
nobreak-char-display.
* emacs.texi (Top): Update detailed node listing.
- * display.texi (Text Display): Renamed show-nonbreak-escape
+ * display.texi (Text Display): Rename show-nonbreak-escape
to nobreak-char-display and no-break-space to nobreak-space.
(Standard Faces): Split up the list of standard faces
and put it in a separate node. Add nobreak-space and
@@ -5130,8 +5475,8 @@
2005-06-23 Kenichi Handa <[email protected]>
- * mule.texi (International): List all supported scripts. Adjust
- text for that leim is now included in the normal Emacs
+ * mule.texi (International): List all supported scripts.
+ Adjust text for that leim is now included in the normal Emacs
distribution.
(Language Environments): List all language environments.
Intlfonts contains fonts for most supported scripts, not all..
@@ -5373,8 +5718,8 @@
* ack.texi (Acknowledgments): Delete info about iso-acc.el.
- * dired.texi (Misc Dired Features): Document
- dired-compare-directories.
+ * dired.texi (Misc Dired Features):
+ Document dired-compare-directories.
* files.texi (Filesets): New node.
(File Conveniences): Document Image mode.
@@ -5762,8 +6107,8 @@
2005-03-19 Eli Zaretskii <[email protected]>
- * anti.texi (Antinews): Refer to Emacs 21.4, not 21.3. Update
- copyright years.
+ * anti.texi (Antinews): Refer to Emacs 21.4, not 21.3.
+ Update copyright years.
2005-03-14 Nick Roberts <[email protected]>
@@ -5842,7 +6187,7 @@
2005-03-05 Juri Linkov <[email protected]>
* cmdargs.texi (Emacs Invocation): Add cindex
- "invocation (command line arguments)"
+ "invocation (command line arguments)".
(Misc X): Add -nbc, --no-blinking-cursor.
2005-03-04 Ulf Jasper <[email protected]>
@@ -5970,7 +6315,7 @@
(Scrolling): For C-l, don't presume text terminal.
(Horizontal Scrolling): Simplify intro.
(Follow Mode): Clarify.
- (Cursor Display): Moved before Display Custom.
+ (Cursor Display): Move before Display Custom.
(Display Custom): Explain no-redraw-on-reenter is for text terminals.
Doc default-tab-width. Doc line truncation more thoroughly.
@@ -6140,8 +6485,8 @@
cross-references to mailutils documentation.
Describe various methods of specifying mailbox names,
user names and user passwords for rmail.
- (Remote Mailboxes): New section. Describe
- how movemail handles remote mailboxes. Describe configuration
+ (Remote Mailboxes): New section.
+ Describe how movemail handles remote mailboxes. Describe configuration
options used to control its behavior.
(Other Mailbox Formats): Explain handling of various mailbox
formats.
@@ -6315,8 +6660,8 @@
2004-11-10 Andre Spiegel <[email protected]>
* files.texi (Version Control): Rewrite the introduction about
- version systems, mentioning the new ones that we support. Thanks
- to Alex Ott, Karl Fogel, Stefan Monnier, and David Kastrup for
+ version systems, mentioning the new ones that we support.
+ Thanks to Alex Ott, Karl Fogel, Stefan Monnier, and David Kastrup for
suggestions.
2004-11-03 Jan Djärv <[email protected]>
@@ -6811,8 +7156,8 @@
2004-02-21 Juri Linkov <[email protected]>
- * cmdargs.texi (Action Arguments): Add alias --find-file. Add
- --directory, --help, --version. Move text about command-line-args
+ * cmdargs.texi (Action Arguments): Add alias --find-file.
+ Add --directory, --help, --version. Move text about command-line-args
to Command Arguments.
(Initial Options): Add @cindex for --script. Fix @cindex for -q.
Add --no-desktop. Add alias --no-multibyte, --no-unibyte.
@@ -6832,7 +7177,7 @@
2004-01-24 Richard M. Stallman <[email protected]>
- * emacs.texi (Acknowledgments): Renamed from Acknowledgements.
+ * emacs.texi (Acknowledgments): Rename from Acknowledgements.
Include it only @ifnotinfo. Patch the preceding and following
node headers to point to each other.
@@ -6915,8 +7260,8 @@
2003-09-24 Luc Teirlinck <[email protected]>
- * cmdargs.texi (Font X): Mention new default font. More
- fully describe long font names, wildcard patterns and the
+ * cmdargs.texi (Font X): Mention new default font.
+ More fully describe long font names, wildcard patterns and the
problems involved. (Result of discussion on emacs-devel.)
2003-09-22 Luc Teirlinck <[email protected]>
@@ -6938,8 +7283,8 @@
* screen.texi (Mode Line): Say that POS comes before LINE.
Mention `size-indication-mode'.
- * display.texi (Optional Mode Line): Document
- `size-indication-mode'.
+ * display.texi (Optional Mode Line):
+ Document `size-indication-mode'.
* basic.texi (Position Info): Mention `size-indication-mode'.
2003-09-07 Luc Teirlinck <[email protected]>
@@ -7424,12 +7769,9 @@
;; Local Variables:
;; coding: utf-8
-;; fill-column: 79
;; End:
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 1993-1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -7445,4 +7787,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in
index 3f2f635dc7..aca17ce817 100644
--- a/doc/emacs/Makefile.in
+++ b/doc/emacs/Makefile.in
@@ -1,7 +1,6 @@
#### Makefile for the Emacs Manual
-# Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-# 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1996-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -18,42 +17,40 @@
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+SHELL = /bin/sh
-# Where to find the source code. $(srcdir) will be the man
-# subdirectory of the source tree. This is
-# set by the configure script's `--srcdir' option.
+# Where to find the source code. $(srcdir) will be the doc/emacs subdirectory
+# of the source tree. This is set by configure's `--srcdir' option.
srcdir=@srcdir@
-top_srcdir=@top_srcdir@
-# Tell make where to find source files; this is needed for the makefiles.
-VPATH=@srcdir@
+# Only for make dist.
+version=@version@
## Where the output files go.
## Note that the setfilename command in the .texi files assumes this.
-infodir=../../info
+## This is a bit funny. Because the info files are in the
+## distribution tarfiles, they are always made in $scrdir/../../info,
+## even for out-of-tree builds.
+infodir = $(srcdir)/../../info
# Directory with the (customized) texinfo.tex file.
texinfodir = $(srcdir)/../misc
# The makeinfo program is part of the Texinfo distribution.
# Use --force so that it generates output even if there are errors.
-MAKEINFO = makeinfo --force
-
-INFO_TARGETS = $(infodir)/emacs
-DVI_TARGETS = emacs.dvi
-
+MAKEINFO = @MAKEINFO@
+MAKEINFO_OPTS = --force --enable-encoding -I $(srcdir)
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
+DVIPS = dvips
-# The following rule does not work with all versions of `make'.
-.SUFFIXES: .texi .dvi
-.texi.dvi:
- $(TEXI2DVI) $<
-ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) -I$(srcdir)"
+ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(TEXINPUTS)" \
+ MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)"
-EMACS_XTRA=\
+EMACS_XTRA= \
+ ${srcdir}/emacs-xtra.texi \
$(srcdir)/arevert-xtra.texi \
$(srcdir)/cal-xtra.texi \
$(srcdir)/dired-xtra.texi \
@@ -66,6 +63,7 @@ EMACS_XTRA=\
EMACSSOURCES= \
${srcdir}/emacs.texi \
+ ${srcdir}/emacsver.texi \
${srcdir}/doclicense.texi \
${srcdir}/gpl.texi \
${srcdir}/screen.texi \
@@ -111,56 +109,85 @@ EMACSSOURCES= \
${srcdir}/kmacro.texi \
$(EMACS_XTRA)
-info: $(infodir) $(INFO_TARGETS)
+## This seems pointless. The info/ directory exists in both the
+## repository and the release tarfiles. We do not use any
+## equivalent of mkdir -p/install-sh -d, so this is not a general
+## solution anyway. The second test -d is for parallel builds.
+mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir}
-$(infodir):
- mkdir $@
+.PHONY: info dvi html pdf ps
-dvi: $(DVI_TARGETS)
+info: $(infodir)/emacs
+dvi: emacs.dvi
+html: emacs.html
+pdf: emacs.pdf
+ps: emacs.ps
-# Note that all the Info targets build the Info files
-# in srcdir. There is no provision for Info files
-# to exist in the build directory.
+# Note that all the Info targets build the Info files in srcdir.
+# There is no provision for Info files to exist in the build directory.
# In a distribution of Emacs, the Info files should be up to date.
-emacs : $(infodir)/emacs
-
$(infodir)/emacs: ${EMACSSOURCES}
- cd $(srcdir); $(MAKEINFO) emacs.texi
+ $(mkinfodir)
+ $(MAKEINFO) $(MAKEINFO_OPTS) -o $@ $<
emacs.dvi: ${EMACSSOURCES}
- $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs.texi
+ $(ENVADD) $(TEXI2DVI) $<
+
+emacs.ps: emacs.dvi
+ $(DVIPS) -o $@ $<
emacs.pdf: ${EMACSSOURCES}
- $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs.texi
+ $(ENVADD) $(TEXI2PDF) $<
+emacs.html: ${EMACSSOURCES}
+ $(MAKEINFO) $(MAKEINFO_OPTS) --html -o $@ $<
-emacs-xtra.dvi: emacs-xtra.texi $(EMACS_XTRA)
- $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-xtra.texi
+emacs-xtra.dvi: $(EMACS_XTRA)
+ $(ENVADD) $(TEXI2DVI) $<
-emacs-xtra.pdf: emacs-xtra.texi $(EMACS_XTRA)
- $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-xtra.texi
+emacs-xtra.ps: emacs-xtra.dvi
+ $(DVIPS) -o $@ $<
+emacs-xtra.pdf: $(EMACS_XTRA)
+ $(ENVADD) $(TEXI2PDF) $<
+.PHONY: mostlyclean clean distclean maintainer-clean infoclean
+
+## Temp files.
mostlyclean:
- rm -f *.log *.cp *.fn *.ky *.op *.ops *.pg *.vr core *.tp *.core
- rm -f *.aux *.cps *.fns *.kys *.pgs *.vrs *.toc
+ rm -f *.aux *.log *.toc *.cp *.cps *.fn *.fns *.ky *.kys \
+ *.op *.ops *.pg *.pgs *.tp *.tps *.vr *.vrs
+## Products not in the release tarfiles.
clean: mostlyclean
- rm -f *.dvi
+ rm -f emacs.dvi emacs-xtra.dvi emacs.pdf emacs-xtra.pdf \
+ emacs.ps emacs-xtra.ps
+ rm -rf emacs.html/
+ rm -f emacs-manual-${version}.tar*
distclean: clean
-# rm -f Makefile
-
-maintainer-clean: distclean
- for file in $(INFO_TARGETS); do rm -f $${file}*; done
-
-
-# Formerly this directory had texindex.c and getopt.c in it
-# and this makefile built them to make texindex.
-# That caused trouble because this is run entirely in the source directory.
-# Since we expect to get texi2dvi from elsewhere,
-# it is ok to expect texindex from elsewhere also.
+## In the standalone tarfile, the clean rule runs this.
+infoclean:
+ -cd $(infodir) && rm -f emacs emacs-[1-9] emacs-[1-9][0-9]
+
+maintainer-clean: distclean infoclean
+
+.PHONY: dist
+
+## Make a standalone tarfile of the Emacs manual sources.
+## The [c] is a dumb way to prevent configure expanding it.
+dist:
+ rm -rf emacs-manual-${version}
+ mkdir emacs-manual-${version}
+ cp ${srcdir}/*.texi ${texinfodir}/texinfo.tex \
+ ${srcdir}/ChangeLog* emacs-manual-${version}/
+ sed -e 's/@sr[c]dir@/./' -e 's/^\(texinfodir *=\).*/\1 ./' \
+ -e 's/^\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \
+ -e "s/@ver[s]ion@/${version}/" \
+ ${srcdir}/Makefile.in > emacs-manual-${version}/Makefile
+ tar -cf emacs-manual-${version}.tar emacs-manual-${version}
+ rm -rf emacs-manual-${version}
### Makefile ends here
diff --git a/doc/emacs/abbrevs.texi b/doc/emacs/abbrevs.texi
index 160c70471d..d0833ea085 100644
--- a/doc/emacs/abbrevs.texi
+++ b/doc/emacs/abbrevs.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Abbrevs
@chapter Abbrevs
@@ -455,7 +455,3 @@ customize dynamic abbrev expansion to handle optional prefixes by setting
the variable @code{dabbrev-abbrev-skip-leading-regexp}. Its value
should be a regular expression that matches the optional prefix that
dynamic abbrev expression should ignore.
-
-@ignore
- arch-tag: 638e0079-9540-48ec-9166-414083e16445
-@end ignore
diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi
index ff76beb349..e554c71703 100644
--- a/doc/emacs/ack.texi
+++ b/doc/emacs/ack.texi
@@ -1,7 +1,6 @@
+@c -*- coding: iso-latin-1 -*-
@c This is part of the Emacs manual.
-@c Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1994-1997, 1999-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@node Acknowledgments, Screen, Concept Index, Top
@@ -53,7 +52,7 @@ files.
Michael Albinus wrote @file{dbus.el}, a package that implements the
D-Bus message bus protocol; @file{zeroconf.el}, a mode for browsing
Avahi services; and @file{xesam.el}, a Xesam-based search engine
-interface. He and Kai Gro@ss{}johann wrote the Tramp package, which
+interface. He and Kai Gro�johann wrote the Tramp package, which
provides transparent remote file editing using rcp, ssh, ftp, and
other network protocols. He and Daniel Pittman wrote
@file{tramp-cache.el}.
@@ -192,7 +191,7 @@ prior to Emacs 23 for Mac OS.
@item
Chong Yidong was the Emacs co-maintainer for Emacs 23. He made many
improvements to the Emacs display engine; and, together with Kai
-Gro@ss{}johann and Alex Schroeder, wrote @file{longlines.el}, a minor
+Gro�johann and Alex Schroeder, wrote @file{longlines.el}, a minor
mode for wrapping long lines.
@item
@@ -227,6 +226,10 @@ Mathias Dahl wrote @file{image-dired.el}, a package for viewing image
files as ``thumbnails.''
@item
+Julien Danjou wrote an implementation of ``Desktop Notifications''
+(@file{notifications.el}).
+
+@item
Vivek Dasmohapatra wrote @file{htmlfontify.el}, to convert a buffer or
source tree to HTML.
@@ -246,17 +249,17 @@ text replace the current selection.
Eric Ding wrote @file{goto-addr.el},
@item
-Jan Dj@"{a}rv added support for the GTK+ toolkit and X drag-and-drop.
+Jan Dj�rv added support for the GTK+ toolkit and X drag-and-drop.
@item
Carsten Dominik wrote Ref@TeX{}, a package for setting up labels and
cross-references in La@TeX{} documents; and co-wrote IDLWAVE mode
(q.v.@:). He was the main author of Org mode, for maintaining notes,
-todo lists, and project planning. Thomas Baumann, Lennart Borgman,
-Baoqiu Cui, Daniel German, Bastien Guerry, Tassilo Horn, Philip Jackson,
-Tokuya Kameshima, Ross Patterson, Sebastian Rose, Eric Schulte, Andy
-Stewart, David O'Toole, John Wiegley, and Piotr Zielinski also wrote
-various Org mode components.
+todo lists, and project planning. Thomas Baumann, Jan B�cker, Lennart
+Borgman, Baoqiu Cui, Daniel German, Bastien Guerry, Tassilo Horn, Philip
+Jackson, Tokuya Kameshima, Ross Patterson, Sebastian Rose, Eric Schulte,
+Paul Sexton, Ulf Stegemann, Andy Stewart, David O'Toole, John Wiegley,
+and Piotr Zielinski also wrote various Org mode components.
@item
Scott Draves wrote @file{tq.el}, help functions for maintaining
@@ -281,7 +284,7 @@ folders have mail waiting in them; and @file{iswitchb.el}, a feature
for incremental reading and completion of buffer names.
@item
-Torbj@"orn Einarsson wrote @file{f90.el}, a mode for Fortran 90 files.
+Torbj�rn Einarsson wrote @file{f90.el}, a mode for Fortran 90 files.
@item
Tsugutomo Enami co-wrote the support for international character sets.
@@ -347,7 +350,7 @@ Kevin Gallo added multiple-frame support for Windows NT and wrote
@file{w32-win.el}, support functions for the MS-Windows window system.
@item
-Juan Le@'{o}n Lahoz Garc@'{i}a wrote @file{wdired.el}, a package for
+Juan Le�n Lahoz Garc�a wrote @file{wdired.el}, a package for
performing file operations by directly editing Dired buffers.
@item
@@ -481,8 +484,8 @@ Emacs: @file{dns.el} for Domain Name Service lookups;
@file{netrc.el} for parsing of @file{.netrc} files; and
@file{time-date.el} for general date and time handling. Components of
Gnus have also been written by: Nagy Andras, David Blacka, Scott Byer,
-Kevin Greiner, Kai Gro@ss{}johann, Joe Hildebrand, Paul Jarc, Sascha
-L@"{u}decke, David Moore, Jim Radford, Benjamin Rutt, Raymond Scholz,
+Kevin Greiner, Kai Gro�johann, Joe Hildebrand, Paul Jarc, Sascha
+L�decke, David Moore, Jim Radford, Benjamin Rutt, Raymond Scholz,
Thomas Steffen, Reiner Steib, Didier Verna, Ilja Weis, Katsumi Yamaoka,
Teodor Zlatanov, and others (@pxref{Contributors,,,gnus, the Gnus Manual}).
@@ -522,7 +525,7 @@ S/MIME and Sieve components; and @file{tls.el} and @file{starttls.el}
for the Transport Layer Security protocol.
@item
-Arne J@o{}rgensen wrote @file{latexenc.el}, a package to
+Arne J�rgensen wrote @file{latexenc.el}, a package to
automatically guess the correct coding system in LaTeX files.
@item
@@ -574,6 +577,10 @@ files and running a PostScript interpreter interactively from within
Emacs.
@item
+Karel Kl�@v{c} contributed SELinux support, for preserving the
+Security-Enchanced Linux context of files on backup and copy.
+
+@item
Shuhei Kobayashi wrote @file{hex-util.el}, for operating on hexadecimal
strings; support for HMAC (Keyed-Hashing for Message Authentication);
and a Lisp implementation of the SHA1 Secure Hash Algorithm.
@@ -661,9 +668,8 @@ directory-local variables; and the @code{info-finder} feature that
creates a virtual Info manual of package keywords.
@item
-K@'{a}roly L@H{o}rentey wrote the ``multi-terminal'' code, which
-allows Emacs to run on graphical and text-only terminals
-simultaneously.
+K�roly L@H{o}rentey wrote the ``multi-terminal'' code, which allows Emacs to
+run on graphical and text-only terminals simultaneously.
@item
Martin Lorentzon wrote @file{vc-annotate.el}, support for version
@@ -862,6 +868,10 @@ generating JSON files.
Kentaro Ohkouchi created the Emacs icons used beginning with Emacs 23.
@item
+Christian Ohler wrote @file{ert.el}, a library for automated regression
+testing.
+
+@item
Alexandre Oliva wrote @file{gnus-mlspl.el}, a group params-based mail
splitting mechanism.
@@ -923,7 +933,7 @@ Fred Pierresteguy and Paul Reilly made Emacs work with X Toolkit
widgets.
@item
-Fran@,{c}ois Pinard, Greg McGary, and Bruno Haible wrote @file{po.el},
+Fran�ois Pinard, Greg McGary, and Bruno Haible wrote @file{po.el},
support for PO translation files.
@item
@@ -1006,7 +1016,7 @@ Markus Rost wrote @file{cus-test.el}, a testing framework for customize.
@item
Guillermo J.@: Rozas wrote @file{scheme.el}, a mode for editing Scheme and
-DSSSL code, and @file{fakemail.c}, an interface to the System V mailer.
+DSSSL code.
@item
Ivar Rummelhoff wrote @file{winner.el}, which records recent window
@@ -1231,12 +1241,12 @@ package, for GnuPG and PGP support.
@item
Masanobu Umeda wrote GNUS, a feature-rich reader for Usenet news that
was the ancestor of the current Gnus package. He also wrote
-@file{prolog.el}, a mode for editing Prolog code; @file{rmailsort.el}, a
-package for sorting messages in RMAIL folders; @file{metamail.el}, an
-interface to the Metamail program; @file{gnus-kill.el}, the Kill File
-mode for Gnus; @file{gnus-mh.el}, an mh-e interface for Gnus;
-@file{gnus-msg.el}, a mail and post interface for Gnus; and
-@file{timezone.el}, providing functions for dealing with time zones.
+@file{rmailsort.el}, a package for sorting messages in RMAIL folders;
+@file{metamail.el}, an interface to the Metamail program;
+@file{gnus-kill.el}, the Kill File mode for Gnus; @file{gnus-mh.el}, an
+mh-e interface for Gnus; @file{gnus-msg.el}, a mail and post interface
+for Gnus; and @file{timezone.el}, providing functions for dealing with
+time zones.
@item
Neil W.@: Van Dyke wrote @file{webjump.el}, a ``hot links'' package.
@@ -1313,10 +1323,6 @@ Directory Client; and @code{eshell}, a command shell implemented
entirely in Emacs Lisp. He also contributed to Org mode (q.v.@:).
@item
-Ed Wilkinson wrote @file{b2m.c}, a program to convert mail files from
-RMAIL format to Unix @code{mbox} format.
-
-@item
Mike Williams wrote @file{mouse-sel.el}, providing enhanced mouse
selection; and @file{thingatpt.el}, a library of functions for finding
the ``thing'' (word, line, s-expression) containing point.
@@ -1410,7 +1416,3 @@ Detlev Zundel wrote @file{re-builder.el}, a package for building regexps
with visual feedback.
@end itemize
-
-@ignore
- arch-tag: bb1d0fa4-0240-4992-b5d4-8602d1e3d4ba
-@end ignore
diff --git a/doc/emacs/anti.texi b/doc/emacs/anti.texi
index fd54aea4eb..1ee93362ae 100644
--- a/doc/emacs/anti.texi
+++ b/doc/emacs/anti.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 2005-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Antinews, Mac OS / GNUstep, X Resources, Top
@@ -135,7 +135,3 @@ Support for Sun windows has been added.
To keep up with decreasing computer memory capacity and disk space, many
other functions and files have been eliminated in Emacs 22.3.
@end itemize
-
-@ignore
- arch-tag: 32932bd9-46f5-41b2-8a0e-fb0cc4caeb29
-@end ignore
diff --git a/doc/emacs/arevert-xtra.texi b/doc/emacs/arevert-xtra.texi
index c19fd3a5cc..374886cd95 100644
--- a/doc/emacs/arevert-xtra.texi
+++ b/doc/emacs/arevert-xtra.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@@ -186,7 +185,3 @@ should at the very least make clear whether enabling auto-reverting
for the buffer reliably assures that all information in the buffer is
completely up to date (or will be after @code{auto-revert-interval}
seconds).
-
-@ignore
- arch-tag: 2983e613-a272-45f6-9593-3010ad7f865e
-@end ignore
diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi
index abe6081a33..edf07859e5 100644
--- a/doc/emacs/basic.texi
+++ b/doc/emacs/basic.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Basic, Minibuffer, Exiting, Top
@@ -147,6 +146,8 @@ keyboard commands that move point in more sophisticated ways.
@findex move-end-of-line
@findex forward-char
@findex backward-char
+@findex right-char
+@findex left-char
@findex next-line
@findex previous-line
@findex beginning-of-buffer
@@ -162,19 +163,33 @@ Move to the beginning of the line (@code{move-beginning-of-line}).
@itemx @key{End}
Move to the end of the line (@code{move-end-of-line}).
@item C-f
-@itemx @key{right}
Move forward one character (@code{forward-char}).
+@item @key{right}
+Move one character to the right (@code{right-char}). This
+moves one character forward in text that is read in the usual
+left-to-right direction, but one character @emph{backward} if the text
+is read right-to-left, as needed for right-to-left scripts such as
+Arabic. @xref{Bidirectional Editing}.
@item C-b
-@itemx @key{left}
Move backward one character (@code{backward-char}).
+@item @key{left}
+Move one character to the left (@code{left-char}). This
+moves one character backward in left-to-right text and one character
+forward in right-to-left text.
@item M-f
@itemx M-@key{right}
-@itemx C-@key{right}
Move forward one word (@code{forward-word}).
+@item C-@key{right}
+Move one word to the right (@code{right-word}). This moves one word
+forward in left-to-right text and one word backward in right-to-left
+text.
@item M-b
@itemx M-@key{left}
-@itemx C-@key{left}
Move backward one word (@code{backward-word}).
+@item C-@key{left}
+Move one word to the left (@code{left-word}). This moves one word
+backward in left-to-right text and one word forward in right-to-left
+text.
@item C-n
@itemx @key{down}
Move down one screen line (@code{next-line}). This command attempts
@@ -521,6 +536,8 @@ Toggle automatic display of the current line number or column number.
Display the number of lines in the current region. Normally bound to
@kbd{M-=}, except in a few specialist modes. @xref{Mark}, for
information about the region.
+@item M-x count-words-region
+Display the number of words in the current region.
@item C-x =
Display the character code of character after point, character position of
point, and column of point (@code{what-cursor-position}).
@@ -726,7 +743,3 @@ characters. You can repeat that command (including its argument) three
additional times, to delete a total of 80 characters, by typing @kbd{C-x
z z z}. The first @kbd{C-x z} repeats the command once, and each
subsequent @kbd{z} repeats it once again.
-
-@ignore
- arch-tag: cda8952a-c439-41c1-aecf-4bc0d6482956
-@end ignore
diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi
index 7cee61db71..ae0d85f249 100644
--- a/doc/emacs/buffers.texi
+++ b/doc/emacs/buffers.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Buffers, Windows, Files, Top
@@ -674,7 +673,3 @@ provides a different and customizable mouse buffer menu which you may
prefer. It replaces the bindings of @code{mouse-buffer-menu},
normally on @kbd{C-Down-Mouse-1}, and the menu bar buffer menu. You
can customize the menu in the @code{msb} Custom group.
-
-@ignore
- arch-tag: 08c43460-f4f4-4b43-9cb5-1ea9ad991695
-@end ignore
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi
index bad64b4c69..cca9e441ed 100644
--- a/doc/emacs/building.texi
+++ b/doc/emacs/building.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Building, Maintaining, Programs, Top
@@ -853,18 +852,19 @@ use @kbd{M-x gud-gdb}. You need to use text command mode to debug
multiple programs within one Emacs session.
@menu
-* GDB-UI Layout:: Control the number of displayed buffers.
+* GDB User Interface Layout:: Control the number of displayed buffers.
* Source Buffers:: Use the mouse in the fringe/margin to
control your program.
* Breakpoints Buffer:: A breakpoint control panel.
+* Threads Buffer:: Displays your threads.
* Stack Buffer:: Select a frame from the call stack.
-* Other GDB-UI Buffers:: Input/output, locals, registers,
+* Other GDB Buffers:: Input/output, locals, registers,
assembler, threads and memory buffers.
* Watch Expressions:: Monitor variable values in the speedbar.
-* Reverse Debugging:: Execute and reverse debug your program.
+* Multithreaded Debugging:: Debugging programs with several threads.
@end menu
-@node GDB-UI Layout
+@node GDB User Interface Layout
@subsubsection GDB User Interface Layout
@cindex GDB User Interface layout
@@ -1014,10 +1014,92 @@ Visit the source line for the current breakpoint
Visit the source line for the breakpoint you click on.
@end table
+@vindex gdb-show-threads-by-default
When @code{gdb-many-windows} is non-@code{nil}, the breakpoints buffer
shares its window with the threads buffer. To switch from one to the
other click with @kbd{Mouse-1} on the relevant button in the header
-line.
+line. If @code{gdb-show-threads-by-default} is non-@code{nil}, the
+threads buffer, rather than the breakpoints buffer, is shown at start
+up.
+
+@node Threads Buffer
+@subsubsection Threads Buffer
+
+@findex gdb-select-thread
+The threads buffer displays a summary of all threads currently in your
+program (@pxref{Threads, Threads, Debugging programs with multiple
+threads, gdb, The GNU debugger}). Move point to any thread in the list
+and press @key{RET} to select it (@code{gdb-select-thread}) and
+display the associated source in the primary source buffer.
+Alternatively, click @kbd{Mouse-2} on a thread to select it. Contents
+of all GDB buffers are updated whenever you select a thread.
+
+ You can customize variables under @code{gdb-buffers} group to select
+fields included in threads buffer.
+
+@table @code
+@item gdb-thread-buffer-verbose-names
+@vindex gdb-thread-buffer-verbose-names
+Show long thread names like @samp{Thread 0x4e2ab70 (LWP 1983)} in
+threads buffer.
+
+@item gdb-thread-buffer-arguments
+@vindex gdb-thread-buffer-arguments
+Show arguments of thread top frames in threads buffer.
+
+@item gdb-thread-buffer-locations
+@vindex gdb-thread-buffer-locations
+Show file information or library names in threads buffer.
+
+@item gdb-thread-buffer-addresses
+@vindex gdb-thread-buffer-addresses
+Show addresses for thread frames in threads buffer.
+@end table
+
+ It's possible to observe information for several threads
+simultaneously (in addition to buffers which show information for
+currently selected thread) using the following keys from the threads
+buffer.
+
+@table @kbd
+@item d
+@kindex d @r{(GDB threads buffer)}
+@findex gdb-display-disassembly-for-thread
+Display disassembly buffer for the thread at current line.
+(@code{gdb-display-disassembly-for-thread})
+
+@item f
+@kindex f @r{(GDB threads buffer)}
+@findex gdb-display-stack-for-thread
+Display stack buffer for the thread at current line.
+(@code{gdb-display-stack-for-thread}).
+
+@item l
+@kindex l @r{(GDB threads buffer)}
+@findex gdb-display-locals-for-thread
+Display locals buffer for the thread at current line.
+(@code{gdb-display-locals-for-thread}).
+
+@item r
+@kindex r @r{(GDB threads buffer)}
+@findex gdb-display-registers-for-thread
+Display registers buffer for the thread at current line.
+(@code{gdb-display-registers-for-thread}).
+@end table
+
+Pressing their upper-case counterparts, @kbd{D}, @kbd{F} ,@kbd{L} and
+@kbd{R} displays the corresponding buffer in a new frame.
+
+ When you create a buffer showing information about some specific
+thread, it becomes bound to that thread and keeps showing actual
+information while you debug your program. Every GDB buffer contains a
+number of thread it shows information for in its mode name. Thread
+number is also included in the buffer name of bound buffers to prevent
+buffer names clashing.
+
+Further commands are available in the threads buffer which depend on the
+mode of GDB that is used for controlling execution of your program.
+(@pxref{Multithreaded Debugging, Stopping and Starting Multi-threaded Programs}).
@node Stack Buffer
@subsubsection Stack Buffer
@@ -1035,7 +1117,7 @@ that stack frame and type @key{RET} (@code{gdb-frames-select}), or click
selecting a stack frame updates it to display the local variables of the
new frame.
-@node Other GDB-UI Buffers
+@node Other GDB Buffers
@subsubsection Other Buffers
@table @asis
@@ -1079,21 +1161,6 @@ arrow points to the current instruction, and you can set and remove
breakpoints as in a source buffer. Breakpoint icons also appear in
the fringe or margin.
-@item Threads Buffer
-@findex gdb-threads-select
-The threads buffer displays a summary of all threads currently in your
-program (@pxref{Threads, Threads, Debugging programs with multiple
-threads, gdb, The GNU debugger}). Move point to any thread in the
-list and press @key{RET} to select it (@code{gdb-threads-select}) and
-display the associated source in the primary source buffer.
-Alternatively, click @kbd{Mouse-2} on a thread to select it. If the
-locals buffer is visible, its contents update to display the variables
-that are local in the new thread.
-
-When there is more than one main thread and the threads buffer is
-present, Emacs displays the selected thread number in the mode line of
-many of the GDB-UI Buffers.
-
@item Memory Buffer
The memory buffer lets you examine sections of program memory
(@pxref{Memory, Memory, Examining memory, gdb, The GNU debugger}).
@@ -1104,9 +1171,9 @@ displays. Alternatively, use @kbd{S} or @kbd{N} respectively. Click
size for these data items.
@end table
-When @code{gdb-many-windows} is non-@code{nil}, the threads buffer
-shares its window with the breakpoints buffer, and the locals buffer
-with the registers buffer. To switch from one to the other click with
+When @code{gdb-many-windows} is non-@code{nil}, the locals buffer
+shares its window with the registers buffer, just like breakpoints
+and threads buffers. To switch from one to the other click with
@kbd{Mouse-1} on the relevant button in the header line.
@node Watch Expressions
@@ -1175,26 +1242,96 @@ expressions updates, set @code{gdb-speedbar-auto-raise} to
non-@code{nil}. This can be useful if you are debugging with a full
screen Emacs frame.
-@node Reverse Debugging
-@subsubsection Reverse Debugging
-
- The GDB tool bar shares many buttons with the other GUD debuggers
-for tasks like stepping and printing expressions. It also has a
-further set of buttons that allow reverse debugging (@pxref{Process
-Record and Replay, , ,gdb, The GNU debugger}). This is useful when it
-takes a long time to reproduce the conditions where your program fails
-or for transient problems, like race conditions in multi-threaded
-programs, where a failure might otherwise be hard to reproduce.
-
-To use reverse debugging, set a breakpoint slightly before the
-location of interest and run your program to that point. Enable
-process recording by clicking on the record button. At this point, a
-new set of buttons appear. These buttons allow program execution in
-the reverse direction. Run your program over the code where the
-problem occurs, and then use the new set of buttons to retrace your
-steps, examine values, and analyze the problem. When analysis is
-complete, turn off process recording by clicking on the record button
-again.
+@node Multithreaded Debugging
+@subsubsection Stopping and Starting Multi-threaded Programs
+@cindex Multithreaded debugging in GDB
+
+@subsubheading All-stop Debugging
+
+In all-stop mode, whenever your program stops, @emph{all} threads of
+execution stop. Likewise, whenever you restart the program, all
+threads start executing. @xref{All-Stop Mode, , All-Stop Mode, gdb,
+The GNU debugger}. You can enable this behaviour in Emacs by setting
+@code{gdb-non-stop-setting} to @code{nil} before starting a debugging
+session.
+
+@subsubheading Non-stop Debugging
+@cindex Non-stop debugging in GDB
+
+For some multi-threaded targets, GDB supports a further mode of
+operation in which you can examine stopped program threads in the
+debugger while other threads continue to execute freely.
+@xref{Non-Stop Mode, , Non-Stop Mode, gdb, The GNU debugger}.
+This is referred to as @dfn{non-stop} mode.
+
+Versions of GDB prior to 7.0 do not support non-stop mode and it does
+not work on all targets. In such cases, Emacs uses all-stop mode
+regardless of the value of @code{gdb-non-stop-setting}.
+
+@vindex gdb-non-stop-setting
+If the variable @code{gdb-non-stop-setting} is non-@code{nil} (the
+default value), Emacs tries to start GDB in non-stop mode. Note that
+GDB debugging session needs to be restarted for change of this setting
+to take effect.
+
+@vindex gdb-switch-when-another-stopped
+When a thread stops in non-stop mode, Emacs automatically switches to
+that thread. It may be undesirable to allow switching of current
+thread when some other stopped thread is already selected. Set
+@code{gdb-switch-when-another-stopped} to @code{nil} to prevent this.
+
+@vindex gdb-switch-reasons
+Emacs can decide whether or not to switch to the stopped thread
+depending on the reason which caused the stop. Customize
+@code{gdb-switch-reasons} to select stop reasons which make Emacs
+switch thread.
+
+@vindex gdb-stopped-hooks
+The variable @code{gdb-stopped-hooks} allows you to execute your
+functions whenever some thread stops.
+
+ In non-stop mode, you can switch between different modes for GUD
+execution control commands.
+
+@vindex gdb-gud-control-all-threads
+@table @dfn
+@item Non-stop/A
+
+When @code{gdb-gud-control-all-threads} is @code{t} (the default
+value), interruption and continuation commands apply to all threads,
+so you can halt or continue all your threads with one command using
+@code{gud-stop-subjob} and @code{gud-cont}, respectively. The
+@samp{Go} button is shown on the toolbar when at least one thread is
+stopped, whereas @samp{Stop} button is shown when at least one thread
+is running.
+
+@item Non-stop/T
+
+When @code{gdb-gud-control-all-threads} is @code{nil}, only the
+current thread is stopped/continued. @samp{Go} and @samp{Stop}
+buttons on the GUD toolbar are shown depending on the state of current
+thread.
+@end table
+
+You can change the current value of @code{gdb-gud-control-all-threads}
+from the tool bar or from @samp{GUD->GDB-MI} menu.
+
+ Stepping commands always apply to the current thread.
+
+@subsubheading Fine Thread Control
+
+ In non-stop mode, you can interrupt/continue your threads without
+selecting them. Hitting @kbd{i} in threads buffer interrupts thread
+under point, @kbd{c} continues it, @kbd{s} steps through. More such
+commands may be added in the future.
+
+Combined with creating bound buffers for any thread, this allows you
+to change and track state of many threads in the same time.
+
+ Note that when you interrupt a thread, it stops with @samp{signal
+received} reason. If that reason is included in your
+@code{gdb-switch-reasons} (it is by default), Emacs will switch to
+that thread.
@node Executing Lisp
@section Executing Lisp Expressions
@@ -1502,8 +1639,3 @@ editing Lisp programs to be run in Emacs; see @pxref{Lisp Eval}): in
both modes it has the effect of installing the function definition
that point is in, but the way of doing so is different according to
where the relevant Lisp environment is found.
-
-
-@ignore
- arch-tag: 9c3c2f71-b332-4144-8500-3ff9945a50ed
-@end ignore
diff --git a/doc/emacs/cal-xtra.texi b/doc/emacs/cal-xtra.texi
index 2f6a09ba67..52898efc26 100644
--- a/doc/emacs/cal-xtra.texi
+++ b/doc/emacs/cal-xtra.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@@ -617,6 +616,20 @@ first within each day. Note how the sort command is placed at the end
of the hook list, in case earlier members of the list change the order
of the diary entries, or add items.
+@vindex diary-comment-start
+ You can write @samp{comments} in diary entries, by setting the
+variables @code{diary-comment-start} and @code{diary-comment-end} to
+strings that delimit comments. The fancy display does not print
+comments. You might want to put meta-data for the use of other packages
+(e.g. the appointment package,
+@iftex
+@pxref{Appointments,,,emacs, the Emacs Manual})
+@end iftex
+@ifnottex
+@pxref{Appointments})
+@end ifnottex
+inside comments.
+
@vindex diary-include-string
Your main diary file can include other files. This permits a group of
people to share a diary file for events that apply to all of them.
@@ -877,6 +890,7 @@ diary entries:
@findex diary-hebrew-omer
@cindex yahrzeits
@findex diary-hebrew-yahrzeit
+@findex diary-hebrew-birthday
@table @code
@item %%(diary-hebrew-rosh-hodesh)
Make a diary entry that tells the occurrence and ritual announcement of each
@@ -894,13 +908,11 @@ is the @emph{Gregorian} (civil) date of death. The diary entry appears
on the proper Hebrew calendar anniversary and on the day before. (The
order of the parameters changes according to the calendar date style;
for example in the European style to @var{day}, @var{month}, @var{year}.)
+@item %%(diary-hebrew-birthday @var{month} @var{day} @var{year})
+Make a diary entry for a birthday on the Hebrew calendar.
@end table
All the functions documented above take an optional argument
@var{mark} which specifies how to mark the date in the calendar display.
If one of these functions decides that it applies to a certain date,
it returns a value that contains @var{mark}, as described above.
-
-@ignore
- arch-tag: 52cb299f-fd1f-4616-bfe6-91b988669431
-@end ignore
diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi
index 94d1042bb8..9de223854c 100644
--- a/doc/emacs/calendar.texi
+++ b/doc/emacs/calendar.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Calendar/Diary, Document View, Dired, Top
@@ -1490,11 +1489,15 @@ Monday
@end example
@vindex appt-message-warning-time
+@vindex appt-warning-time-regexp
@noindent
Then on Mondays, you will be reminded at around 9:20am about your
coffee break and at around 11:50am about lunch. The variable
@code{appt-message-warning-time} specifies how many minutes (default 12)
-in advance to warn you.
+in advance to warn you. This is a default warning time. Each
+appointment can specify a different warning time by adding a piece
+matching @code{appt-warning-time-regexp} (see that variable's
+documentation for details).
You can write times in am/pm style (with @samp{12:00am} standing
for midnight and @samp{12:00pm} standing for noon), or 24-hour
@@ -1709,7 +1712,3 @@ data in Emacs from the file.
@ifnottex
@include cal-xtra.texi
@end ifnottex
-
-@ignore
- arch-tag: 4531ef09-9df3-449d-9c52-2b5a4a337f92
-@end ignore
diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi
index 40cce49e20..1c3b85559d 100644
--- a/doc/emacs/cmdargs.texi
+++ b/doc/emacs/cmdargs.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Emacs Invocation, X Resources, GNU Free Documentation License, Top
@appendix Command Line Arguments for Emacs Invocation
@@ -193,6 +193,15 @@ Certain options prevent loading of some of these files or substitute
other files for them.
@table @samp
+@item -chdir @var{directory}
+@opindex -chdir
+@itemx --chdir=@var{directory}
+@opindex --chdir
+@cindex change Emacs directory
+Change to @var{directory} before doing anything else. This is mainly used
+by session management in X so that Emacs starts in the same directory as it
+stopped. This makes desktop saving and restoring easier.
+
@item -t @var{device}
@opindex -t
@itemx --terminal=@var{device}
@@ -1153,7 +1162,3 @@ test case that simplifies debugging of display problems.
The @samp{--xrm} option (@pxref{Resources}) specifies additional
X resource values.
-
-@ignore
- arch-tag: fffecd9e-7329-4a51-a3cc-dd4a9889340e
-@end ignore
diff --git a/doc/emacs/commands.texi b/doc/emacs/commands.texi
index 8d7e2556dd..5f44e7cd07 100644
--- a/doc/emacs/commands.texi
+++ b/doc/emacs/commands.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@iftex
@chapter Characters, Keys and Commands
@@ -195,7 +195,3 @@ specific variables will make sense.
@ifnottex
@lowersections
@end ifnottex
-
-@ignore
- arch-tag: 9be43eef-d1f4-4d03-a916-c741ea713a45
-@end ignore
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index 6a95e7a9ea..a0dce5b321 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Customization, Quitting, Amusements, Top
@@ -889,53 +888,48 @@ your initialization file to set it those sessions (@pxref{Init File}).
hook is a Lisp variable which holds a list of functions, to be called
on some well-defined occasion. (This is called @dfn{running the
hook}.) The individual functions in the list are called the @dfn{hook
-functions} of the hook. With rare exceptions, hooks in Emacs are
-empty when Emacs starts up, so the only hook functions in any given
-hook are the ones you explicitly put there as customization.
-
- Most major modes run one or more @dfn{mode hooks} as the last step
-of initialization. This makes it easy for you to customize the
-behavior of the mode, by setting up a hook function to override the
-local variable assignments already made by the mode. But hooks are
-also used in other contexts. For example, the hook
-@code{kill-emacs-hook} runs just before quitting the Emacs job
-(@pxref{Exiting}).
+functions} of the hook. For example, the hook @code{kill-emacs-hook}
+runs just before exiting Emacs (@pxref{Exiting}).
@cindex normal hook
- Most Emacs hooks are @dfn{normal hooks}. This means that running the
-hook operates by calling all the hook functions, unconditionally, with
-no arguments. We have made an effort to keep most hooks normal so that
-you can use them in a uniform way. Every variable in Emacs whose name
-ends in @samp{-hook} is a normal hook.
+ Most hooks are @dfn{normal hooks}. This means that when Emacs runs
+the hook, it calls each hook function in turn, with no arguments. We
+have made an effort to keep most hooks normal, so that you can use
+them in a uniform way. Every variable whose name ends in @samp{-hook}
+is a normal hook.
@cindex abnormal hook
- There are also a few @dfn{abnormal hooks}. These variables' names end
-in @samp{-hooks} or @samp{-functions}, instead of @samp{-hook}. What
-makes these hooks abnormal is that there is something peculiar about the
-way its functions are called---perhaps they are given arguments, or
-perhaps the values they return are used in some way. For example,
-@code{find-file-not-found-functions} (@pxref{Visiting}) is abnormal because
-as soon as one hook function returns a non-@code{nil} value, the rest
-are not called at all. The documentation of each abnormal hook variable
-explains in detail what is peculiar about it.
+ A few hooks are @dfn{abnormal hooks}. Their names end in
+@samp{-hooks} or @samp{-functions}, instead of @samp{-hook}. What
+makes these hooks abnormal is the way its functions are
+called---perhaps they are given arguments, or perhaps the values they
+return are used in some way. For example,
+@code{find-file-not-found-functions} is abnormal because as soon as
+one hook function returns a non-@code{nil} value, the rest are not
+called at all (@pxref{Visiting}). The documentation of each abnormal
+hook variable explains how its functions are used.
@findex add-hook
You can set a hook variable with @code{setq} like any other Lisp
-variable, but the recommended way to add a hook function to a hook
-(either normal or abnormal) is by calling @code{add-hook}.
-@xref{Hooks,,, elisp, The Emacs Lisp Reference Manual}.
+variable, but the recommended way to add a function to a hook (either
+normal or abnormal) is to use @code{add-hook}, as shown by the
+following examples. @xref{Hooks,,, elisp, The Emacs Lisp Reference
+Manual}, for details.
- For example, here's how to set up a hook to turn on Auto Fill mode
-when entering Text mode and other modes based on Text mode:
+ Most major modes run one or more @dfn{mode hooks} as the last step
+of initialization. Mode hooks are a convenient way to customize the
+behavior of individual modes; they are always normal. For example,
+here's how to set up a hook to turn on Auto Fill mode when entering
+Text mode and other modes based on Text mode:
@example
(add-hook 'text-mode-hook 'turn-on-auto-fill)
@end example
- The next example shows how to use a hook to customize the indentation
-of C code. (People often have strong personal preferences for one
-format compared to another.) Here the hook function is an anonymous
-lambda expression.
+ Here is another example, showing how to use a hook to customize the
+indentation of C code. The hook function uses an anonymous lambda
+expression (@pxref{Lambda Expressions,,, elisp, The Emacs Lisp
+Reference Manual}).
@example
@group
@@ -945,24 +939,32 @@ lambda expression.
@group
(c-cleanup-list . (scope-operator
empty-defun-braces
- defun-close-semi))
-@end group
-@group
- (c-offsets-alist . ((arglist-close . c-lineup-arglist)
- (substatement-open . 0)))))
+ defun-close-semi))))
@end group
@group
(add-hook 'c-mode-common-hook
- '(lambda ()
- (c-add-style "my-style" my-c-style t)))
+ (lambda () (c-add-style "my-style" my-c-style t)))
@end group
@end example
+@cindex Prog mode
+@cindex program editing
+ Major mode hooks also apply to other major modes @dfn{derived} from
+the original mode (@pxref{Derived Modes,,, elisp, The Emacs Lisp
+Reference Manual}). For instance, HTML mode (@pxref{HTML Mode})
+inherits from Text mode; when HTML mode is enabled, it runs
+@code{text-mode-hook} before running @code{html-mode-hook}. This
+provides a convenient way to use a single hook to affect several
+related modes. In particular, if you want to apply a hook function to
+any programming language mode, add it to @code{prog-mode-hook}; Prog
+mode is a major mode that does little else than to let other major
+modes inherit from it, exactly for this purpose.
+
It is best to design your hook functions so that the order in which
they are executed does not matter. Any dependence on the order is
-``asking for trouble.'' However, the order is predictable: the most
-recently added hook functions are executed first.
+asking for trouble. However, the order is predictable: the hook
+functions are executed in the order they appear in the hook.
@findex remove-hook
If you play with adding various different versions of a hook
@@ -1087,9 +1089,8 @@ first line:
You can specify any number of variable/value pairs in this way, each
pair with a colon and semicolon as shown above. The special
variable/value pair @code{mode: @var{modename};}, if present,
-specifies a major or minor mode; if you use this to specify a major
-mode, it should come first in the line. The @var{value}s are used
-literally, and not evaluated.
+specifies a major mode, and should come first in the line. The
+@var{value}s are used literally, and not evaluated.
@findex add-file-local-variable-prop-line
@findex delete-file-local-variable-prop-line
@@ -1132,7 +1133,10 @@ the file is divided into pages.
If a file has both a local variables list and a @samp{-*-} line,
Emacs processes @emph{everything} in the @samp{-*-} line first, and
-@emph{everything} in the local variables list afterward.
+@emph{everything} in the local variables list afterward. The exception
+to this is a major mode specification. Emacs applies this first,
+wherever it appears, since most major modes kill all local variables as
+part of their initialization.
A local variables list starts with a line containing the string
@samp{Local Variables:}, and ends with a line containing the string
@@ -1188,7 +1192,7 @@ list:
@itemize
@item
-@code{mode} enables the specified major or minor mode.
+@code{mode} enables the specified major mode.
@item
@code{eval} evaluates the specified Lisp expression (the value
@@ -1207,18 +1211,14 @@ value is @code{t}. @xref{Enabling Multibyte}.
These four ``variables'' are not really variables; setting them in any
other context has no special meaning.
- @emph{If @code{mode} is used to set a major mode, it should be the
-first ``variable'' in the list.} Otherwise, the entries that precede
-it will usually have no effect, since most major modes kill all local
-variables as part of their initialization.
-
You can use the @code{mode} ``variable'' to enable minor modes as
well as the major modes; in fact, you can use it more than once, first
to set the major mode and then to enable minor modes which are
-specific to particular buffers.
+specific to particular buffers. Using @code{mode} for minor modes
+is deprecated, though---instead, use @code{eval: (minor-mode)}.
- Often, however, it is a mistake to enable minor modes this way.
-Most minor modes, like Auto Fill mode, represent individual user
+ Often, however, it is a mistake to enable minor modes in file local
+variables. Most minor modes, like Auto Fill mode, represent individual user
preferences. If you want to use a minor mode, it is better to set up
major mode hooks with your init file to turn that minor mode on for
yourself alone (@pxref{Init File}), instead of using a local variable
@@ -1333,7 +1333,8 @@ corresponding alist applies to all the files in that subdirectory.
(tab-width . 4)
(fill-column . 80)))
(c-mode . ((c-file-style . "BSD")))
- (java-mode . ((c-file-style . "BSD")))
+ (java-mode . ((c-file-style . "BSD")
+ (subdirs . nil)))
("src/imported"
. ((nil . ((change-log-default-name .
"ChangeLog.local"))))))
@@ -1343,8 +1344,10 @@ corresponding alist applies to all the files in that subdirectory.
This example shows some settings for a hypothetical project. It sets
@samp{indent-tabs-mode}, @code{tab-width}, and @code{fill-column} for
any file in the project's directory tree, and it sets the indentation
-style for any C or Java source file. Finally, it specifies a different
-@file{ChangeLog} file name for any file in the @file{src/imported}
+style for any C or Java source file. The special @code{subdirs} element
+indicates that the Java mode settings are only to be applied in the
+current directory, not in any subdirectories. Finally, it specifies a
+different @file{ChangeLog} file name for any file in the @file{src/imported}
subdirectory of the directory where you put the @file{.dir-locals.el}
file.
@@ -2115,6 +2118,8 @@ Reference Manual}.
@node Init File
@section The Init File, @file{~/.emacs}
@cindex init file
+@cindex .emacs file
+@cindex ~/.emacs file
@cindex Emacs initialization file
@cindex key rebinding, permanent
@cindex rebinding keys, permanently
@@ -2608,7 +2613,3 @@ stop working. It is therefore advisable to use one and only one
coding system, for your init file as well as the files you edit. For
example, don't mix the @samp{latin-1} and @samp{latin-9} coding
systems.
-
-@ignore
- arch-tag: c68abddb-4410-4fb5-925f-63394e971d93
-@end ignore
diff --git a/doc/emacs/dired-xtra.texi b/doc/emacs/dired-xtra.texi
index aa2e83f129..efb05226ba 100644
--- a/doc/emacs/dired-xtra.texi
+++ b/doc/emacs/dired-xtra.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@@ -42,7 +41,3 @@ without explicitly assigned switches.)
You can make Dired forget about all subdirectory switches and relist
all subdirectories with the buffer's default switches using
@kbd{M-x dired-reset-subdir-switches}. This also reverts the Dired buffer.
-
-@ignore
- arch-tag: e3865701-9179-4ffb-bc34-d321111c688d
-@end ignore
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 0b3cd7aac0..2f274d7a32 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Dired, Calendar/Diary, Rmail, Top
@@ -687,6 +686,34 @@ suitable guess made using the variables @code{lpr-command} and
Compress the specified files (@code{dired-do-compress}). If the file
appears to be a compressed file already, uncompress it instead.
+@findex epa-dired-do-decrypt
+@kindex :d @r{(Dired)}
+@cindex decrypting files (in Dired)
+@item :d
+Decrypt the specified files (@code{epa-dired-do-decrypt}).
+@xref{Dired integration,,, epa, EasyPG Assistant User's Manual}.
+
+@findex epa-dired-do-verify
+@kindex :v @r{(Dired)}
+@cindex verifying digital signatures on files (in Dired)
+@item :v
+Verify digital signatures on the specified files (@code{epa-dired-do-verify}).
+@xref{Dired integration,,, epa, EasyPG Assistant User's Manual}.
+
+@findex epa-dired-do-sign
+@kindex :s @r{(Dired)}
+@cindex signing files (in Dired)
+@item :s
+Digitally sign the specified files (@code{epa-dired-do-sign}).
+@xref{Dired integration,,, epa, EasyPG Assistant User's Manual}.
+
+@findex epa-dired-do-encrypt
+@kindex :e @r{(Dired)}
+@cindex encrypting files (in Dired)
+@item :e
+Encrypt the specified files (@code{epa-dired-do-encrypt}).
+@xref{Dired integration,,, epa, EasyPG Assistant User's Manual}.
+
@findex dired-do-load
@kindex L @r{(Dired)}
@cindex loading several files (in Dired)
@@ -1376,7 +1403,3 @@ it onto a Dired buffer; this either moves, copies, or creates a link
to the file in that directory. Precisely which action is taken is
determined by the originating program. Dragging files out of a Dired
buffer is currently not supported.
-
-@ignore
- arch-tag: d105f9b9-fc1b-4c5f-a949-9b2cf3ca2fc1
-@end ignore
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index e4841c66e7..3cec3e8fb8 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@@ -184,7 +183,20 @@ visible portion of the text.
if you set @code{scroll-conservatively} to a small number @var{n},
then if you move point just a little off the screen (less than @var{n}
lines), Emacs scrolls the text just far enough to bring point back on
-screen. By default, @code{scroll-conservatively} is@tie{}0.
+screen. By default, @code{scroll-conservatively} is@tie{}0. If you
+set @code{scroll-conservatively} to a large number (larger than 100),
+Emacs will never center point as result of scrolling, even if point
+moves far away from the text previously displayed in the window. With
+such a large value, Emacs will always scroll text just enough for
+bringing point into view, so point will end up at the top or bottom of
+the window, depending on the scroll direction.
+
+@vindex scroll-step
+ The variable @code{scroll-step} determines how many lines to scroll
+the window when point moves off the screen. If moving by that number
+of lines fails to bring point back into view, point is centered
+instead. The default value is zero, which causes point to always be
+centered after scrolling.
@cindex aggressive scrolling
@vindex scroll-up-aggressively
@@ -207,6 +219,9 @@ down, i.e.@: moving point back in the buffer. The value specifies how
far point should be placed from the top of the window; thus, as with
@code{scroll-up-aggressively}, a larger value is more aggressive.
+ These two variables are ignored if either @code{scroll-step} or
+@code{scroll-conservatively} are set to a non-zero value.
+
@vindex scroll-margin
The variable @code{scroll-margin} restricts how close point can come
to the top or bottom of a window. Its value is a number of screen
@@ -807,7 +822,10 @@ line, when one line of text is split into multiple lines on the
screen. The left fringe shows a curving arrow for each screen line
except the first, indicating that ``this is not the real beginning.''
The right fringe shows a curving arrow for each screen line except the
-last, indicating that ``this is not the real end.''
+last, indicating that ``this is not the real end.'' If the line's
+direction is right-to-left (@pxref{Bidirectional Editing}), the
+meaning of the curving arrows in the left and right fringes are
+swapped.
The fringes indicate line truncation with short horizontal arrows
meaning ``there's more text on this line which is scrolled
@@ -1000,8 +1018,7 @@ value is 200 characters.
Emacs can optionally display the time and system load in all mode
lines. To enable this feature, type @kbd{M-x display-time} or customize
the option @code{display-time-mode}. The information added to the mode
-line usually appears after the buffer name, before the mode names and
-their parentheses. It looks like this:
+line looks like this:
@example
@var{hh}:@var{mm}pm @var{l.ll}
@@ -1137,6 +1154,48 @@ prefix these characters with an escape character.
by means of a display table. @xref{Display Tables,, Display Tables,
elisp, The Emacs Lisp Reference Manual}.
+@cindex glyphless characters
+@cindex characters with no font glyphs
+ On graphics displays, some characters could have no glyphs in any of
+the fonts available to Emacs. On text terminals, some characters
+could be impossible to encode with the terminal coding system
+(@pxref{Terminal Coding}). Emacs can display such @dfn{glyphless}
+characters using one of the following methods:
+
+@table @code
+@item zero-width
+Don't display the character.
+
+@item thin-space
+Display a thin space, 1-pixel wide on graphics displays or 1-character
+wide on text terminals.
+
+@item empty-box
+Display an empty box.
+
+@item acronym
+Display the acronym of the character's name (such as @sc{zwnj} or
+@sc{rlm}) in a box.
+
+@item hex-code
+Display the Unicode codepoint of the character in hexadecimal
+notation, in a box.
+@end table
+
+@noindent
+@cindex @code{glyphless-char} face
+With the exception of @code{zero-width}, all other methods draw these
+characters in a special face @code{glyphless-char}, which you can
+customize.
+
+@vindex glyphless-char-display-control
+@vindex char-acronym-table
+To control what glyphless characters are displayed using which method,
+customize the variable @code{glyphless-char-display-control}; see its
+doc string for the details. For even finer control, set the elements
+of 2 char-tables: @code{glyphless-char-display} and
+@code{char-acronym-table}.
+
@node Cursor Display
@section Displaying the Cursor
@@ -1195,8 +1254,8 @@ can display long lines by @dfn{truncation}. This means that all the
characters that do not fit in the width of the screen or window do not
appear at all. On graphical displays, a small straight arrow in the
fringe indicates truncation at either end of the line. On text-only
-terminals, @samp{$} appears in the first column when there is text
-truncated to the left, and in the last column when there is text
+terminals, @samp{$} appears in the leftmost column when there is text
+truncated to the left, and in the rightmost column when there is text
truncated to the right.
@vindex truncate-lines
@@ -1359,7 +1418,3 @@ page for other output. On such terminals, you might want to set the variable
@code{no-redraw-on-reenter} non-@code{nil}; this tells Emacs to
assume, when resumed, that the screen page it is using still contains
what Emacs last wrote there.
-
-@ignore
- arch-tag: 2219f910-2ff0-4521-b059-1bd231a536c4
-@end ignore
diff --git a/doc/emacs/doclicense.texi b/doc/emacs/doclicense.texi
index 6e9f5a144b..51342e96d6 100644
--- a/doc/emacs/doclicense.texi
+++ b/doc/emacs/doclicense.texi
@@ -506,7 +506,3 @@ to permit their use in free software.
@c ispell-local-pdict: "ispell-dict"
@c End:
-@ignore
- arch-tag: d68e7b7a-0c7c-4c15-905b-a9482214e25a
-@end ignore
-
diff --git a/doc/emacs/emacs-xtra.texi b/doc/emacs/emacs-xtra.texi
index 9d20b33535..f9d1c27fe5 100644
--- a/doc/emacs/emacs-xtra.texi
+++ b/doc/emacs/emacs-xtra.texi
@@ -11,7 +11,7 @@
@copying
This manual describes specialized features of Emacs.
-Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+Copyright @copyright{} 2004-2011
Free Software Foundation, Inc.
@quotation
@@ -136,7 +136,3 @@ the Emacs manual.
@printindex cp
@bye
-
-@ignore
- arch-tag: 75c33f13-32c6-41b6-9537-847a312e2e49
-@end ignore
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index f839266b91..ed7d48877e 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -1,19 +1,17 @@
-\input texinfo
+\input texinfo @c -*- coding: iso-latin-1 -*-
@setfilename ../../info/emacs
@settitle GNU Emacs Manual
@c The edition number appears in several places in this file
@set EDITION Sixteenth
-@set EMACSVER 23.3.50
+@include emacsver.texi
@copying
This is the @value{EDITION} edition of the @cite{GNU Emacs Manual},@*
updated for Emacs version @value{EMACSVER}.
-Copyright @copyright{} 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997,
-1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1985-1987, 1993-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -31,6 +29,8 @@ developing GNU and promoting software freedom.''
@end quotation
@end copying
+@documentencoding ISO-8859-1
+
@dircategory Emacs
@direntry
* Emacs: (emacs). The extensible self-documenting text editor.
@@ -51,7 +51,6 @@ developing GNU and promoting software freedom.''
@tex
@ifset smallbook
@fonttextsize 10
-@set EMACSVER 22
\global\let\urlcolor=\Black % don't print links in grayscale
\global\let\linkcolor=\Black
@end ifset
@@ -747,14 +746,16 @@ Running Debuggers Under Emacs
GDB Graphical Interface
-* GDB-UI Layout:: Control the number of displayed buffers.
-* Source Buffers:: Use the mouse in the fringe/margin to
- control your program.
-* Breakpoints Buffer:: A breakpoint control panel.
-* Stack Buffer:: Select a frame from the call stack.
-* Other GDB-UI Buffers::Input/output, locals, registers,
- assembler, threads and memory buffers.
-* Watch Expressions:: Monitor variable values in the speedbar.
+* GDB User Interface Layout:: Control the number of displayed buffers.
+* Source Buffers:: Use the mouse in the fringe/margin to
+ control your program.
+* Breakpoints Buffer:: A breakpoint control panel.
+* Threads Buffer:: Displays your threads.
+* Stack Buffer:: Select a frame from the call stack.
+* Other GDB Buffers:: Input/output, locals, registers,
+ assembler, threads and memory buffers.
+* Watch Expressions:: Monitor variable values in the speedbar.
+* Multithreaded Debugging:: Debugging programs with several threads.
Maintaining Large Programs
@@ -1351,79 +1352,80 @@ Abrahamsson, Jay K.@: Adams, Michael Albinus, Nagy Andras, Ralf Angeli,
Joe Arceneaux, Miles Bader, David Bakhash, Juanma Barranquero, Eli
Barzilay, Thomas Baumann, Steven L.@: Baur, Jay Belanger, Alexander L.@:
Belikoff, Boaz Ben-Zvi, Karl Berry, Anna M.@: Bigatti, Ray Blaak, Jim
-Blandy, Johan Bockg@aa{}rd, Lennart Borgman, Per Bothner, Terrence
-Brannon, Frank Bresz, Peter Breton, Emmanuel Briot, Kevin Broadey,
-Vincent Broman, David M.@: Brown, Georges Brun-Cottan, Joe Buehler,
-W@l{}odek Bzyl, Bill Carpenter, Per Cederqvist, Hans Chalupsky, Chong
-Yidong, Chris Chase, Bob Chassell, Andrew Choi, Sacha Chua, James Clark,
-Mike Clarkson, Glynn Clements, Daniel Colascione, Andrew Csillag, Baoqiu
-Cui, Doug Cutting, Mathias Dahl, Satyaki Das, Vivek Dasmohapatra,
-Michael DeCorte, Gary Delp, Matthieu Devin, Eri Ding, Jan Dj@"{a}rv,
-Carsten Dominik, Scott Draves, Benjamin Drieu, Viktor Dukhovni, Dmitry
-Dzhus, John Eaton, Rolf Ebert, Paul Eggert, Stephen Eglen, Torbj@"orn
-Einarsson, Tsugutomo Enami, Hans Henrik Eriksen, Michael Ernst, Ata
-Etemadi, Frederick Farnbach, Oscar Figueiredo, Fred Fish, Karl Fogel,
-Gary Foster, Romain Francoise, Noah Friedman, Andreas Fuchs, Hallvard
-Furuseth, Keith Gabryelski, Peter S.@: Galbraith, Kevin Gallagher, Kevin
-Gallo, Juan Le@'{o}n Lahoz Garc@'{@dotless{i}}a, Howard Gayle, Daniel
-German, Stephen Gildea, Julien Gilles, David Gillespie, Bob Glickstein,
-Deepak Goel, Boris Goldowsky, Michelangelo Grigni, Odd Gripenstam, Kai
-Gro@ss{}johann, Michael Gschwind, Bastien Guerry, Henry Guillaume, Doug
-Gwyn, Ken'ichi Handa, Lars Hansen, Chris Hanson, K. Shane Hartman, John
-Heidemann, Jon K.@: Hellan, Jesper Harder, Magnus Henoch, Markus
-Heritsch, Karl Heuer, Manabu Higashida, Anders Holst, Jeffrey C.@:
-Honig, Tassilo Horn, Kurt Hornik, Tom Houlder, Joakim Hove, Denis Howe,
-Lars Ingebrigtsen, Andrew Innes, Seiichiro Inoue, Philip Jackson, Pavel
-Janik, Paul Jarc, Ulf Jasper, Michael K. Johnson, Kyle Jones, Terry
-Jones, Simon Josefsson, Arne J@o{}rgensen, Tomoji Kagatani, Brewster
-Kahle, Tokuya Kameshima, Lute Kamstra, David Kastrup, David Kaufman,
-Henry Kautz, Taichi Kawabata, Howard Kaye, Michael Kifer, Richard King,
-Peter Kleiweg, Shuhei Kobayashi, Pavel Kobiakov, Larry K.@: Kolodney,
-David M.@: Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian
-Kremer, Ryszard Kubiak, David K@aa{}gedal, Daniel LaLiberte,
-Karl Landstrom, Mario Lang, Aaron Larson, James R.@: Larus,
-Vinicius Jose Latorre, Werner Lemberg, Frederic Lepied, Peter
-Liljenberg, Lars Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link,
-Juri Linkov, Francis Litterio, Emilio C. Lopes, K@'{a}roly L@H{o}rentey,
-Dave Love, Sascha L@"{u}decke, Eric Ludlam, Alan Mackenzie, Christopher
-J.@: Madsen, Neil M.@: Mager, Ken Manheimer, Bill Mann, Brian Marick,
-Simon Marshall, Bengt Martensson, Charlie Martin, Thomas May, Roland
-McGrath, Will Mengarini, David Megginson, Ben A. Mesander, Wayne Mesard,
-Brad Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Moellmann, Stefan
+Blandy, Johan Bockg�rd, Jan B�cker, Lennart Borgman, Per Bothner,
+Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel Briot, Kevin
+Broadey, Vincent Broman, David M.@: Brown, Georges Brun-Cottan, Joe
+Buehler, W@l{}odek Bzyl, Bill Carpenter, Per Cederqvist, Hans Chalupsky,
+Chong Yidong, Chris Chase, Bob Chassell, Andrew Choi, Sacha Chua, James
+Clark, Mike Clarkson, Glynn Clements, Daniel Colascione, Andrew Csillag,
+Baoqiu Cui, Doug Cutting, Mathias Dahl, Julien Danjou, Satyaki Das,
+Vivek Dasmohapatra, Michael DeCorte, Gary Delp, Matthieu Devin, Eri
+Ding, Jan Dj�rv, Carsten Dominik, Scott Draves, Benjamin Drieu,
+Viktor Dukhovni, Dmitry Dzhus, John Eaton, Rolf Ebert, Paul Eggert,
+Stephen Eglen, Torbj�rn Einarsson, Tsugutomo Enami, Hans Henrik
+Eriksen, Michael Ernst, Ata Etemadi, Frederick Farnbach, Oscar
+Figueiredo, Fred Fish, Karl Fogel, Gary Foster, Romain Francoise, Noah
+Friedman, Andreas Fuchs, Hallvard Furuseth, Keith Gabryelski, Peter S.@:
+Galbraith, Kevin Gallagher, Kevin Gallo, Juan Le�n Lahoz
+Garc�a, Howard Gayle, Daniel German, Stephen Gildea,
+Julien Gilles, David Gillespie, Bob Glickstein, Deepak Goel, Boris
+Goldowsky, Michelangelo Grigni, Odd Gripenstam, Kai Gro�johann,
+Michael Gschwind, Bastien Guerry, Henry Guillaume, Doug Gwyn, Ken'ichi
+Handa, Lars Hansen, Chris Hanson, K. Shane Hartman, John Heidemann, Jon
+K.@: Hellan, Jesper Harder, Magnus Henoch, Markus Heritsch, Karl Heuer,
+Manabu Higashida, Anders Holst, Jeffrey C.@: Honig, Tassilo Horn, Kurt
+Hornik, Tom Houlder, Joakim Hove, Denis Howe, Lars Ingebrigtsen, Andrew
+Innes, Seiichiro Inoue, Philip Jackson, Pavel Janik, Paul Jarc, Ulf
+Jasper, Michael K. Johnson, Kyle Jones, Terry Jones, Simon Josefsson,
+Arne J�rgensen, Tomoji Kagatani, Brewster Kahle, Tokuya Kameshima,
+Lute Kamstra, David Kastrup, David Kaufman, Henry Kautz, Taichi
+Kawabata, Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg, Karel
+Kl�@v{c}, Shuhei Kobayashi, Pavel Kobiakov, Larry K.@:
+Kolodney, David M.@: Koppelman, Koseki Yoshinori, Robert Krawitz,
+Sebastian Kremer, Ryszard Kubiak, David K�gedal, Daniel LaLiberte,
+Karl Landstrom, Mario Lang, Aaron Larson, James R.@: Larus, Vinicius
+Jose Latorre, Werner Lemberg, Frederic Lepied, Peter Liljenberg, Lars
+Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link, Juri Linkov,
+Francis Litterio, Emilio C. Lopes, K�roly L@H{o}rentey, Dave Love,
+Sascha L�decke, Eric Ludlam, Alan Mackenzie, Christopher J.@:
+Madsen, Neil M.@: Mager, Ken Manheimer, Bill Mann, Brian Marick, Simon
+Marshall, Bengt Martensson, Charlie Martin, Thomas May, Roland McGrath,
+Will Mengarini, David Megginson, Ben A. Mesander, Wayne Mesard, Brad
+Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Moellmann, Stefan
Monnier, Morioka Tomohiko, Keith Moore, Jan Moringen, Glenn Morris,
Diane Murray, Sen Nagata, Erik Naggum, Thomas Neumann, Thien-Thi Nguyen,
Mike Newton, Jurgen Nickelsen, Dan Nicolaescu, Hrvoje Niksic, Jeff
-Norden, Andrew Norman, Alexandre Oliva, Bob Olson, Michael Olson,
-Takaaki Ota, Pieter E.@: J.@: Pareit, Ross Patterson, David Pearson,
-Jeff Peck, Damon Anton Permezel, Tom Perrine, William M.@: Perry, Per
-Persson, Jens Petersen, Daniel Pfeiffer, Richard L.@: Pieri, Fred
-Pierresteguy, Christian Plaunt, David Ponce, Francesco A.@: Potorti,
-Michael D. Prange, Mukesh Prasad, Ken Raeburn, Marko Rahamaa, Ashwin
-Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, Alex Rezinsky,
-Rob Riepel, David Reitter, Adrian Robert, Nick Roberts, Roland B.@:
-Roberts, John Robinson, Danny Roozendaal, Sebastian Rose, William
+Norden, Andrew Norman, Christian Ohler, Alexandre Oliva, Bob Olson,
+Michael Olson, Takaaki Ota, Pieter E.@: J.@: Pareit, Ross Patterson,
+David Pearson, Jeff Peck, Damon Anton Permezel, Tom Perrine, William
+M.@: Perry, Per Persson, Jens Petersen, Daniel Pfeiffer, Richard L.@:
+Pieri, Fred Pierresteguy, Christian Plaunt, David Ponce, Francesco A.@:
+Potorti, Michael D. Prange, Mukesh Prasad, Ken Raeburn, Marko Rahamaa,
+Ashwin Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, Alex
+Rezinsky, Rob Riepel, David Reitter, Adrian Robert, Nick Roberts, Roland
+B.@: Roberts, John Robinson, Danny Roozendaal, Sebastian Rose, William
Rosenblatt, Guillermo J.@: Rozas, Martin Rudalics, Ivar Rummelhoff,
Jason Rumney, Wolfgang Rupprecht, Kevin Ryde, James B. Salem, Masahiko
Sato, Jorgen Schaefer, Holger Schauer, William Schelter, Ralph
Schleicher, Gregor Schmid, Michael Schmidt, Ronald S. Schnell, Philippe
Schnoebelen, Jan Schormann, Alex Schroeder, Stephen Schoef, Raymond
Scholz, Eric Schulte, Andreas Schwab, Randal Schwartz, Oliver Seidel,
-Manuel Serrano, Hovav Shacham, Stanislav Shalunov, Marc Shapiro, Richard
-Sharman, Olin Shivers, Espen Skoglund, Rick Sladkey, Lynn Slater, Chris
-Smith, David Smith, Paul D.@: Smith, William Sommerfeld, Andre Spiegel,
-Michael Staats, Reiner Steib, Sam Steingold, Ake Stenhoff,
-Peter Stephenson, Ken Stevens, Andy Stewart, Jonathan
-Stigelman, Martin Stjernholm, Kim F.@: Storm, Steve Strassman, Olaf
-Sylvester, Naoto Takahashi, Steven Tamm, Jean-Philippe Theberge, Jens
-T.@: Berger Thielemann, Spencer Thomas, Jim Thompson, Luc Teirlinck,
-David O'Toole, Tom Tromey, Enami Tsugutomo, Eli Tziperman, Daiki Ueno,
-Masanobu Umeda, Rajesh Vaidheeswarran, Neil W.@: Van Dyke, Didier Verna,
-Joakim Verona, Ulrik Vieth, Geoffrey Voelker, Johan Vromans, Inge
-Wallin, John Paul Wallington, Colin Walters, Barry Warsaw, Morten
-Welinder, Joseph Brian Wells, Rodney Whitby, John Wiegley, Ed Wilkinson,
-Mike Williams, Bill Wohler, Steven A. Wood, Dale R.@: Worley, Francis
-J.@: Wright, Felix S. T. Wu, Tom Wurgler, Katsumi Yamaoka, Yamamoto
-Mitsuharu, Masatake Yamato, Jonathan Yavner, Ryan Yeske, Ilya
+Manuel Serrano, Paul Sexton, Hovav Shacham, Stanislav Shalunov, Marc
+Shapiro, Richard Sharman, Olin Shivers, Espen Skoglund, Rick Sladkey,
+Lynn Slater, Chris Smith, David Smith, Paul D.@: Smith, William
+Sommerfeld, Andre Spiegel, Michael Staats, Ulf Stegemann, Reiner Steib,
+Sam Steingold, Ake Stenhoff, Peter Stephenson, Ken Stevens, Andy Stewart,
+Jonathan Stigelman, Martin Stjernholm, Kim F.@: Storm, Steve Strassman,
+Olaf Sylvester, Naoto Takahashi, Steven Tamm, Jean-Philippe Theberge,
+Jens T.@: Berger Thielemann, Spencer Thomas, Jim Thompson, Luc
+Teirlinck, David O'Toole, Tom Tromey, Enami Tsugutomo, Eli Tziperman,
+Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil W.@: Van Dyke,
+Didier Verna, Joakim Verona, Ulrik Vieth, Geoffrey Voelker, Johan
+Vromans, Inge Wallin, John Paul Wallington, Colin Walters, Barry Warsaw,
+Morten Welinder, Joseph Brian Wells, Rodney Whitby, John Wiegley, Ed
+Wilkinson, Mike Williams, Bill Wohler, Steven A. Wood, Dale R.@: Worley,
+Francis J.@: Wright, Felix S. T. Wu, Tom Wurgler, Katsumi Yamaoka,
+Yamamoto Mitsuharu, Masatake Yamato, Jonathan Yavner, Ryan Yeske, Ilya
Zakharevich, Milan Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski,
Shenghuo Zhu, Piotr Zielinski, Ian T.@: Zimmermann, Reto Zimmermann,
Neal Ziring, Teodor Zlatanov, and Detlev Zundel.
@@ -1576,7 +1578,3 @@ Lisp programming.
@printindex cp
@bye
-
-@ignore
- arch-tag: ed48740a-410b-46ea-9387-c9a9252a3392
-@end ignore
diff --git a/doc/emacs/emacsver.texi b/doc/emacs/emacsver.texi
new file mode 100644
index 0000000000..ffa860585b
--- /dev/null
+++ b/doc/emacs/emacsver.texi
@@ -0,0 +1,4 @@
+@c It would be nicer to generate this using configure and @version@.
+@c However, that would mean emacsver.texi would always be newer
+@c then the info files in release tarfiles.
+@set EMACSVER 24.0.50
diff --git a/doc/emacs/emerge-xtra.texi b/doc/emacs/emerge-xtra.texi
index 5db2d2b4a2..b46868cf52 100644
--- a/doc/emacs/emerge-xtra.texi
+++ b/doc/emacs/emerge-xtra.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@@ -412,7 +411,3 @@ commands.
@ifnottex
@xref{Hooks}.
@end ifnottex
-
-@ignore
- arch-tag: cda63f09-9c5f-4ea1-adb9-4a820fdfb24e
-@end ignore
diff --git a/doc/emacs/entering.texi b/doc/emacs/entering.texi
index 349e6326ec..3c4a74c02b 100644
--- a/doc/emacs/entering.texi
+++ b/doc/emacs/entering.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@iftex
@chapter Entering and Exiting Emacs
@@ -181,7 +181,3 @@ keys to run any commands of your choice (@pxref{Keymaps}).
@ifnottex
@lowersections
@end ifnottex
-
-@ignore
- arch-tag: df798d8b-f253-4113-b585-f528f078a944
-@end ignore
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index b5e3bff679..40bd065610 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
-@c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Files, Buffers, Keyboard Macros, Top
@@ -202,6 +201,8 @@ since you visited or saved it last. If the file has changed, Emacs offers
to reread it.
@vindex large-file-warning-threshold
+@cindex file, warning when size is large
+@cindex size of file, warning when visiting
@cindex maximum buffer size exceeded, error message
If you try to visit a file larger than
@code{large-file-warning-threshold} (the default is 10000000, which is
@@ -1993,7 +1994,3 @@ menu, where each existing fileset is represented by a submenu.
Control} to describe sets of files to be treated as a group for
purposes of version control operations. Those filesets are unnamed
and do not persist across Emacs sessions.
-
-@ignore
- arch-tag: 768d32cb-e15a-4cc1-b7bf-62c00ee12250
-@end ignore
diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi
index 113e39cfd1..c14041f227 100644
--- a/doc/emacs/fixit.texi
+++ b/doc/emacs/fixit.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Fixit, Keyboard Macros, Search, Top
@chapter Commands for Fixing Typos
@@ -400,17 +400,16 @@ is a spell checking dictionary but no word completion dictionary.
@cindex Flyspell mode
@findex flyspell-mode
+@findex turn-on-flyspell
Flyspell mode is a fully-automatic way to check spelling as you edit
in Emacs. It operates by checking words as you change or insert them.
When it finds a word that it does not recognize, it highlights that
word. This does not interfere with your editing, but when you see the
highlighted word, you can move to it and fix it. Type @kbd{M-x
flyspell-mode} to enable or disable this mode in the current buffer.
-@findex turn-on-flyspell
-To enable @code{flyspell-mode} in all text mode buffers, add
+To enable Flyspell mode in all text mode buffers, add
@code{turn-on-flyspell} to @code{text-mode-hook}.
-
When Flyspell mode highlights a word as misspelled, you can click on
it with @kbd{Mouse-2} to display a menu of possible corrections and
actions. You can also correct the word by editing it manually in any
@@ -421,8 +420,5 @@ way you like.
that it only checks words in comments and string constants. This
feature is useful for editing programs. Type @kbd{M-x
flyspell-prog-mode} to enable or disable this mode in the current
-buffer.
-
-@ignore
- arch-tag: 3359a443-96ed-448f-9f05-c8111ba8eac0
-@end ignore
+buffer. To enable this mode in all programming mode buffers, add
+@code{flyspell-prog-mode} to @code{prog-mode-hook} (@pxref{Hooks}).
diff --git a/doc/emacs/fortran-xtra.texi b/doc/emacs/fortran-xtra.texi
index fdf6733d26..8f92df3f3a 100644
--- a/doc/emacs/fortran-xtra.texi
+++ b/doc/emacs/fortran-xtra.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@@ -582,7 +581,3 @@ to @samp{continue}, provided Abbrev mode is enabled.@refill
Type @samp{;?} or @samp{;C-h} to display a list of all the built-in
Fortran abbrevs and what they stand for.
-
-@ignore
- arch-tag: 23ed7c36-1517-4646-9235-2d5ade5f06f6
-@end ignore
diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi
index 4239876616..298a7d4598 100644
--- a/doc/emacs/frames.texi
+++ b/doc/emacs/frames.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
-@c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Frames, International, Windows, Top
@@ -281,15 +280,6 @@ the kill ring. This prevents you from losing the existing selection,
at the risk of large memory consumption if other applications generate
large selections.
-@cindex cut buffer
-@vindex x-cut-buffer-max
- Whenever Emacs saves some text to the primary selection, it may also
-save it to the @dfn{cut buffer}. The cut buffer is an obsolete
-predecessor to the primary selection; most modern applications do not
-use it. Saving text to the cut buffer is slow and inefficient, so
-Emacs only does it if the text is shorter than the value of
-@code{x-cut-buffer-max} (20000 characters by default).
-
You can yank the primary selection into Emacs using the usual yank
commands, such as @kbd{C-y} (@code{yank}) and @kbd{Mouse-2}
(@code{mouse-yank-at-click}). These commands actually check the
@@ -1269,6 +1259,19 @@ bar uses monochrome icons (PBM or XBM format).
You can turn display of tool bars on or off with @kbd{M-x
tool-bar-mode} or by customizing the option @code{tool-bar-mode}.
+@vindex tool-bar-style
+@cindex Tool Bar style
+ When Emacs is compiled with GTK+ support, tool bars can have text and images.
+Customize @code{tool-bar-style} to select style. The default style is
+the same as for the desktop in the Gnome case. If no default is found,
+the tool bar uses just images.
+
+@cindex Tool Bar position
+ You can also control the placement of the tool bar for the GTK+ tool bar
+with the frame parameter @code{tool-bar-position}.
+For a detailed description of frame parameters and customization,
+see @ref{Frame Parameters,,, elisp, The Emacs Lisp Reference Manual}.
+
@node Dialog Boxes
@section Using Dialog Boxes
@cindex dialog boxes
@@ -1433,7 +1436,3 @@ again.
In the console on GNU/Linux, you can use @kbd{M-x gpm-mouse-mode} to
enable terminal mouse support. You must have the gpm package
installed and running on your system in order for this to work.
-
-@ignore
- arch-tag: 7dcf3a31-a43b-45d4-a900-445b10d77e49
-@end ignore
diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi
index d75673c65d..3cf1cc522b 100644
--- a/doc/emacs/glossary.texi
+++ b/doc/emacs/glossary.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Glossary, Key Index, Intro, Top
@unnumbered Glossary
@@ -1372,7 +1372,3 @@ Yanking means reinserting text previously killed (q.v.@:). It can be
used to undo a mistaken kill, or for copying or moving text. Some
other systems call this ``pasting.'' @xref{Yanking}.
@end table
-
-@ignore
- arch-tag: 0dd53ce1-5f09-4ac2-b13b-cf22b0f28d23
-@end ignore
diff --git a/doc/emacs/gnu.texi b/doc/emacs/gnu.texi
index 7f5bef785f..dfdeedd65e 100644
--- a/doc/emacs/gnu.texi
+++ b/doc/emacs/gnu.texi
@@ -1,5 +1,5 @@
-@c Copyright (C) 1985, 1986, 1987, 1993, 1995, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993, 1995, 2001-2011
+@c Free Software Foundation, Inc.
@c
@c Permission is granted to anyone to make or distribute verbatim copies
@c of this document, in any medium, provided that the copyright notice and
@@ -549,7 +549,3 @@ this are bureaucracy and isometric struggles against competition. Free
software will greatly reduce these drains in the area of software
production. We must do this, in order for technical gains in productivity
to translate into less work for us.
-
-@ignore
- arch-tag: 21eb38f8-6fa0-480a-91cd-f3dab7148542
-@end ignore
diff --git a/doc/emacs/gpl.texi b/doc/emacs/gpl.texi
index 7fe5c3ebe4..1908d1f8f9 100644
--- a/doc/emacs/gpl.texi
+++ b/doc/emacs/gpl.texi
@@ -715,7 +715,3 @@ library, you may consider it more useful to permit linking proprietary
applications with the library. If this is what you want to do, use
the GNU Lesser General Public License instead of this License. But
first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}.
-
-@ignore
- arch-tag: 8b9947e1-c830-4d70-8907-a97e556731ba
-@end ignore
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index d55159ed83..2c3630adba 100644
--- a/doc/emacs/help.texi
+++ b/doc/emacs/help.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Help, Mark, M-x, Top
@@ -677,7 +676,3 @@ help text for active buffer text using the keyboard. @kbd{C-h .}
character after point, using the echo area. To display help text
automatically whenever it is available on the character after point, set
the variable @code{help-at-pt-display-when-idle} to @code{t}.
-
-@ignore
- arch-tag: 6f33ab62-bc75-4367-8057-fd67cc15c3a1
-@end ignore
diff --git a/doc/emacs/indent.texi b/doc/emacs/indent.texi
index 86e15605ed..c4ef4781aa 100644
--- a/doc/emacs/indent.texi
+++ b/doc/emacs/indent.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Indentation, Text, Major Modes, Top
@chapter Indentation
@@ -258,7 +258,3 @@ preserving the columns of all nonblank text. @kbd{M-x tabify} scans the
region for sequences of spaces, and converts sequences of at least two
spaces to tabs if that can be done without changing indentation. @kbd{M-x
untabify} changes all tabs in the region to appropriate numbers of spaces.
-
-@ignore
- arch-tag: acc07de7-ae11-4ee8-a159-cb59c473f0fb
-@end ignore
diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi
index 2ad3bc9e73..41262e9c2d 100644
--- a/doc/emacs/killing.texi
+++ b/doc/emacs/killing.texi
@@ -1,16 +1,11 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
-@node Killing, Yanking, Mark, Top
+@node Killing, Registers, Mark, Top
@chapter Killing and Moving Text
-@ifnottex
-@raisesections
-@end ifnottex
-
@dfn{Killing} means erasing text and copying it into the @dfn{kill
ring}, from which you can bring it back into the buffer by
@dfn{yanking} it. (Some applications use the terms ``cutting'' and
@@ -19,9 +14,16 @@ moving or copying text within Emacs. It is very versatile, because
there are commands for killing many different types of syntactic
units.
-@iftex
+@menu
+* Deletion and Killing:: Commands that remove text.
+* Yanking:: Commands that insert text.
+* Accumulating Text:: Other methods to add text to the buffer.
+* Rectangles:: Operating on text in rectangular areas.
+* CUA Bindings:: Using C-x/C-c/C-v to kill and yank.
+@end menu
+
+@node Deletion and Killing
@section Deletion and Killing
-@end iftex
@cindex killing text
@cindex cutting text
@@ -233,7 +235,7 @@ explain why the text has not been erased.
non-@code{nil} value, identical subsequent kills yield a single
kill-ring entry, without duplication.
-@node Yanking, Accumulating Text, Killing, Top
+@node Yanking
@section Yanking
@cindex moving text
@cindex copying text
@@ -416,7 +418,7 @@ saved.
@code{kill-ring}; you can view the entire contents of the kill ring with
the command @kbd{C-h v kill-ring}.
-@node Accumulating Text, Rectangles, Yanking, Top
+@node Accumulating Text
@section Accumulating Text
@findex append-to-buffer
@findex prepend-to-buffer
@@ -487,7 +489,7 @@ can lead to losing some of your editing.
Another way to move text around is to store it in a register.
@xref{Registers}.
-@node Rectangles, CUA Bindings, Accumulating Text, Top
+@node Rectangles
@section Rectangles
@cindex rectangle
@cindex columns (and rectangles)
@@ -613,7 +615,7 @@ rectangle shifts right.
@code{string-rectangle}, but inserts the string on each line,
shifting the original text to the right.
-@node CUA Bindings, Registers, Rectangles, Top
+@node CUA Bindings
@section CUA Bindings
@findex cua-mode
@vindex cua-mode
@@ -664,11 +666,3 @@ navigate to each of the words you want in the list, mark it (e.g. with
@kbd{S-M-f}), copy it to the list with @kbd{C-c} or @kbd{M-w}, and
insert a newline after the word in the target list by pressing
@key{RET}.
-
-@ifnottex
-@lowersections
-@end ifnottex
-
-@ignore
- arch-tag: d8da8f96-0928-449a-816e-ff2d3497866c
-@end ignore
diff --git a/doc/emacs/kmacro.texi b/doc/emacs/kmacro.texi
index 6807c62049..c52381a663 100644
--- a/doc/emacs/kmacro.texi
+++ b/doc/emacs/kmacro.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Keyboard Macros, Files, Fixit, Top
@chapter Keyboard Macros
@@ -569,7 +569,3 @@ including the final @kbd{C-j}), and appends them at the end of the
keyboard macro; it then terminates the step-editing and replaces the
original keyboard macro with the edited macro.
@end itemize
-
-@ignore
- arch-tag: c1b0dd3b-3159-4c08-928f-52e763953e9c
-@end ignore
diff --git a/doc/emacs/m-x.texi b/doc/emacs/m-x.texi
index 3489bed0d8..cf55631e14 100644
--- a/doc/emacs/m-x.texi
+++ b/doc/emacs/m-x.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node M-x, Help, Minibuffer, Top
@chapter Running Commands by Name
@@ -69,7 +69,3 @@ the command is followed by arguments.
@kbd{M-x} works by running the command
@code{execute-extended-command}, which is responsible for reading the
name of another command and invoking it.
-
-@ignore
- arch-tag: b67bff53-9628-4666-b94e-eda972a7ba56
-@end ignore
diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi
index c36efeaeaf..85d92c9fcd 100644
--- a/doc/emacs/macos.texi
+++ b/doc/emacs/macos.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-@c 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 2000-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Mac OS / GNUstep, Microsoft Windows, Antinews, Top
@appendix Emacs and Mac OS / GNUstep
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index f7be0015ff..dafc9327c7 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
-@c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Maintaining, Abbrevs, Building, Top
@@ -360,6 +359,7 @@ change, and later use the @kbd{C-x v a} command to copy it to
@node VC Mode Line
@subsection Version Control and the Mode Line
+@cindex VC, mode line indicator
When you visit a file that is under version control, Emacs indicates
this on the mode line. For example, @samp{Bzr-1223} says that Bazaar
@@ -368,10 +368,17 @@ is used for that file, and the current revision ID is 1223.
The character between the back-end name and the revision ID
indicates the status of the work file. In a merge-based version
control system, a @samp{-} character indicates that the work file is
-unmodified, and @samp{:} indicates that it has been modified. In a
-lock-based system, @samp{-} indicates an unlocked file, and @samp{:} a
-locked file; if the file is locked by another user (for instance,
-@samp{jim}), that is displayed as @samp{RCS:jim:1.3}.
+unmodified, and @samp{:} indicates that it has been modified.
+@samp{!} indicates that the file contains conflicts as result of a
+recent merge operation (@pxref{Merging}), or that the file was removed
+from the version control. Finally, @samp{?} means that the file is
+under version control, but is missing from the working tree.
+
+ In a lock-based system, @samp{-} indicates an unlocked file, and
+@samp{:} a locked file; if the file is locked by another user (for
+instance, @samp{jim}), that is displayed as @samp{RCS:jim:1.3}.
+@samp{@@} means that the file was locally added, but not yet committed
+to the master repository.
On a graphical display, you can move the mouse over this mode line
indicator to pop up a ``tool-tip'', which displays a more verbose
@@ -737,6 +744,13 @@ is neither visiting a version-controlled file nor a VC directory
buffer, these commands generate a diff of all registered files in the
current directory and its subdirectories.
+@findex vc-ediff
+The function @code{vc-ediff} works like @code{vc-diff} and provides a way to
+visually compare two revisions of a file in an Ediff session, @pxref{Top,
+Ediff, ediff, The Ediff Manual}. It compares the file associated with the
+current buffer with the last repository revision. To compare two arbitrary
+revisions of the current file, call @code{vc-ediff} with a prefix argument.
+
@vindex vc-diff-switches
@vindex vc-rcs-diff-switches
@kbd{C-x v =} works by running a variant of the @code{diff} utility
@@ -1479,6 +1493,10 @@ changed.
non-@code{nil}, @kbd{C-x 4 a} adds to any existing item for the file
rather than starting a new item.
+You can combine multiple changes of the same nature. If you don't
+enter any text after the initial @kbd{C-x 4 a}, any subsequent
+@kbd{C-x 4 a} adds another symbol to the change.
+
@vindex add-log-always-start-new-record
If @code{add-log-always-start-new-record} is non-@code{nil},
@kbd{C-x 4 a} always makes a new entry, even if the last entry
@@ -1528,13 +1546,14 @@ insert a VC log entry into a Change Log buffer by typing @kbd{C-x v a}
@node Format of ChangeLog
@subsection Format of ChangeLog
- A change log entry starts with a header line that contains the current
-date, your name, and your email address (taken from the variable
-@code{add-log-mailing-address}). Aside from these header lines, every
-line in the change log starts with a space or a tab. The bulk of the
-entry consists of @dfn{items}, each of which starts with a line starting
-with whitespace and a star. Here are two entries, both dated in May
-1993, with two items and one item respectively.
+ A change log entry starts with a header line that contains the
+current date, your name (taken from the variable
+@code{add-log-full-name}), and your email address (taken from the
+variable @code{add-log-mailing-address}). Aside from these header
+lines, every line in the change log starts with a space or a tab. The
+bulk of the entry consists of @dfn{items}, each of which starts with a
+line starting with whitespace and a star. Here are two entries, both
+dated in May 1993, with two items and one item respectively.
@iftex
@medbreak
@@ -2307,6 +2326,12 @@ details.
You can also use the collection of tag names to complete a symbol
name in the buffer. @xref{Symbol Completion}.
+ You can use @kbd{M-x next-file} to visit the files in the selected
+tags table. The first time this command is called, it visits the
+first file in the tags table. Each subsequent call visits the next
+file in the table, unless a prefix argument is supplied, in which case
+it returns to the first file.
+
@node EDE
@section Emacs Development Environment
@cindex EDE (Emacs Development Environment)
@@ -2373,4 +2398,3 @@ the target should be built.
@ifnottex
@include emerge-xtra.texi
@end ifnottex
-
diff --git a/doc/emacs/major.texi b/doc/emacs/major.texi
index 78fdbf6a96..9256c712f0 100644
--- a/doc/emacs/major.texi
+++ b/doc/emacs/major.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Major Modes, Indentation, International, Top
@chapter Major Modes
@@ -235,7 +235,3 @@ However, this does not happen if the buffer contents specify a major
mode, and certain ``special'' major modes do not allow the mode to
change. You can turn off this mode-changing feature by setting
@code{change-major-mode-with-file-name} to @code{nil}.
-
-@ignore
- arch-tag: f2558800-cf32-4839-8acb-7d3b4df2a155
-@end ignore
diff --git a/doc/emacs/makefile.w32-in b/doc/emacs/makefile.w32-in
index 4013c2fca4..ad976468be 100644
--- a/doc/emacs/makefile.w32-in
+++ b/doc/emacs/makefile.w32-in
@@ -1,7 +1,6 @@
#### -*- Makefile -*- for the Emacs Manual
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-# Free Software Foundation, Inc.
+# Copyright (C) 2003-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -28,7 +27,8 @@ srcdir=.
infodir = $(srcdir)/../../info
# The makeinfo program is part of the Texinfo distribution.
-MAKEINFO = makeinfo --force
+MAKEINFO = makeinfo
+MAKEINFO_OPTS = --force --enable-encoding -I$(srcdir)
MULTI_INSTALL_INFO = $(srcdir)\..\..\nt\multi-install-info.bat
INFO_TARGETS = $(infodir)/emacs
DVI_TARGETS = emacs.dvi
@@ -41,7 +41,7 @@ INFOSOURCES = info.texi
TEXI2DVI = texi2dvi
ENVADD = $(srcdir)\..\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" \
- "MAKEINFO=$(MAKEINFO) -I$(srcdir)" /C
+ "MAKEINFO=$(MAKEINFO) $(MAKEINFO_OPTS)" /C
EMACS_XTRA=\
$(srcdir)/arevert-xtra.texi \
@@ -56,6 +56,7 @@ EMACS_XTRA=\
EMACSSOURCES= \
$(srcdir)/emacs.texi \
+ $(srcdir)/emacsver.texi \
$(srcdir)/doclicense.texi \
$(srcdir)/screen.texi \
$(srcdir)/commands.texi \
@@ -113,11 +114,14 @@ $(infodir)/dir:
$(MULTI_INSTALL_INFO) --info-dir=$(infodir) $(INFO_TARGETS)
$(infodir)/emacs: $(EMACSSOURCES)
- $(MAKEINFO) emacs.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) emacs.texi
emacs.dvi: $(EMACSSOURCES)
$(ENVADD) $(TEXI2DVI) $(srcdir)/emacs.texi
+emacs.html: $(EMACSSOURCES)
+ $(MAKEINFO) $(MAKEINFO_OPTS) --html -o $@ emacs.texi
+
emacs-xtra.dvi: emacs-xtra.texi $(EMACS_XTRA)
$(ENVADD) $(TEXI2DVI) $(srcdir)/emacs-xtra.texi
@@ -127,6 +131,7 @@ mostlyclean:
clean: mostlyclean
- $(DEL) *.dvi
- $(DEL) $(infodir)/emacs*
+ - $(DEL_TREE) emacs.html
distclean: clean
- $(DEL) makefile
diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi
index 1b702273be..b426020b7c 100644
--- a/doc/emacs/mark.texi
+++ b/doc/emacs/mark.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Mark, Killing, Help, Top
@@ -447,7 +446,3 @@ mode only until the mark is deactivated. One reason you may want to
use them is that some commands operate on the entire buffer instead of
the region when Transient Mark mode is off. Enabling Transient Mark
mode momentarily gives you a way to use these commands on the region.
-
-@ignore
- arch-tag: f35e4d82-911b-4cfc-a3d7-3c87b2abba20
-@end ignore
diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi
index 975f22cd5e..ce0d396fd0 100644
--- a/doc/emacs/mini.texi
+++ b/doc/emacs/mini.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Minibuffer, M-x, Basic, Top
@@ -654,7 +653,3 @@ password (@pxref{Killing}). You may type either @key{RET} or
@key{ESC} to submit the password. Any other self-inserting character
key inserts the associated character into the password, and all other
input is ignored.
-
-@ignore
- arch-tag: ba913cfd-b70e-400f-b663-22b2c309227f
-@end ignore
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index e734fe6461..290e5dc53b 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@iftex
@@ -27,28 +26,39 @@ other editors, and various diversions and amusements.
@cindex PDF file
@cindex PS file
@cindex Postscript file
+@cindex OpenDocument file
+@cindex Microsoft Office file
@cindex DocView mode
@cindex mode, DocView
@cindex document viewer (DocView)
@findex doc-view-mode
DocView mode (@code{doc-view-mode}) is a viewer for DVI, Postscript
-(PS), and PDF documents. It provides features such as slicing,
-zooming, and searching inside documents. It works by converting the
-document to a set of images using the @command{gs} (GhostScript)
-command, and displaying those images.
+(PS), PDF, OpenDocument, and Microsoft Office documents. It provides
+features such as slicing, zooming, and searching inside documents. It
+works by converting the document to a set of images using the
+@command{gs} (GhostScript) command and other external tools
+@footnote{@code{gs} is a hard requirement. For DVI files,
+@code{dvipdf} or @code{dvipdfm} is needed. For OpenDocument and
+Microsoft Office documents, the @code{unoconv} tool is needed.}, and
+displaying those images.
@findex doc-view-toggle-display
@findex doc-view-toggle-display
@cindex doc-view-minor-mode
- When you visit a PDF or DVI file, Emacs automatically switches to
-DocView mode. When you visit a Postscript file, Emacs switches to PS
-mode, a major mode for editing Postscript files as text; however, it
-also enables DocView minor mode, so you can type @kbd{C-c C-c} to view
-the document with DocView. (PDF and DVI files, unlike Postscript
-files, are not usually human-editable.) In either case, repeating
-@kbd{C-c C-c} (@code{doc-view-toggle-display}) toggles between DocView
-and the file text.
+ When you visit a document file with the exception of Postscript
+files, Emacs automatically switches to DocView mode if possible
+@footnote{The needed external tools for this document type have to be
+available, emacs needs to run in a graphical frame, and PNG image
+support has to be compiled into emacs. If any of these requirements
+is not fulfilled, DocView falls back to an appropriate mode.}. When
+you visit a Postscript file, Emacs switches to PS mode, a major mode
+for editing Postscript files as text; however, it also enables DocView
+minor mode, so you can type @kbd{C-c C-c} to view the document with
+DocView. (PDF and DVI files, unlike Postscript files, are not usually
+human-editable.) In either case, repeating @kbd{C-c C-c}
+(@code{doc-view-toggle-display}) toggles between DocView and the file
+text.
You can explicitly toggle DocView mode with the command @code{M-x
doc-view-mode}, and DocView minor mode with the command @code{M-x
@@ -786,8 +796,7 @@ pending in the shell buffer and not yet sent.
@findex comint-delete-output
Delete the last batch of output from a shell command
(@code{comint-delete-output}). This is useful if a shell command spews
-out lots of output that just gets in the way. This command used to be
-called @code{comint-kill-output}.
+out lots of output that just gets in the way.
@item C-c C-s
@kindex C-c C-s @r{(Shell mode)}
@@ -1486,6 +1495,15 @@ server-name @key{RET} foo @key{RET}} sets the server name to
@samp{foo}. The @code{emacsclient} program can specify a server by
name, using the @samp{-s} option (@pxref{emacsclient Options}).
+@findex server-eval-at
+ If you have defined a server by a unique server name, you can
+connect to this server from other Emacs instances and evaluate forms
+on it by using the @code{server-eval-at} function.
+
+@code{(server-eval-at "foo" '(+ 1 2))} gives the result @code{3}, if
+there's a server with that name that is listening. If not, an error
+will be signaled.
+
@menu
* Invoking emacsclient:: Connecting to the Emacs server.
* emacsclient Options:: Emacs client startup options.
@@ -1655,6 +1673,11 @@ all server buffers are finished. You can take as long as you like to
edit the server buffers within Emacs, and they are @emph{not} killed
when you type @kbd{C-x #} in them.
+@item -q
+@itemx --quiet
+Do not let @command{emacsclient} display messages about waiting for
+Emacs or connecting to remote server sockets.
+
@item -s @var{server-name}
@itemx --socket-name=@var{server-name}
Connect to the Emacs server named @var{server-name}. The server name
@@ -2864,7 +2887,3 @@ idle.
@ifnottex
@lowersections
@end ifnottex
-
-@ignore
- arch-tag: 8f094220-c0d5-4e9e-af7d-3e0da8187474
-@end ignore
diff --git a/doc/emacs/msdog-xtra.texi b/doc/emacs/msdog-xtra.texi
index 70ed3dde91..095a0cdacb 100644
--- a/doc/emacs/msdog-xtra.texi
+++ b/doc/emacs/msdog-xtra.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@@ -613,7 +613,3 @@ MS-DOS supports only some of the possible options you can mention in
the @code{dired-listing-switches} variable. The options that work are
@samp{-A}, @samp{-a}, @samp{-c}, @samp{-i}, @samp{-r}, @samp{-S},
@samp{-s}, @samp{-t}, and @samp{-u}.
-
-@ignore
- arch-tag: 868d50ff-07f8-4a13-a807-dab6f1cdb431
-@end ignore
diff --git a/doc/emacs/msdog.texi b/doc/emacs/msdog.texi
index 2540193219..56fe20f079 100644
--- a/doc/emacs/msdog.texi
+++ b/doc/emacs/msdog.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Microsoft Windows, Manifesto, Mac OS / GNUstep, Top
@@ -351,11 +350,12 @@ on Windows, since many users of Emacs on those platforms prefer the
@end table
@noindent
-Any other value of @code{ls-lisp-emulation} means the same as
-@code{GNU}. Note that this option needs to be set @emph{before}
-@file{ls-lisp.el} is loaded, which means that on MS-Windows and MS-DOS
-you will have to set the value from your @file{.emacs} file and then
-restart Emacs, since @file{ls-lisp.el} is preloaded.
+Any other value of @code{ls-lisp-emulation} means the same as @code{GNU}.
+Customizing this option calls the function @code{ls-lisp-set-options} to
+update the 3 dependent options as needed. If you change the value of
+this variable without using customize after @file{ls-lisp.el} is loaded
+(note that it is preloaded on MS-Windows and MS-DOS), you can call that
+function manually for the same result.
@vindex ls-lisp-support-shell-wildcards
The variable @code{ls-lisp-support-shell-wildcards} controls how
@@ -996,7 +996,3 @@ click-to-focus policy.
@ifnottex
@include msdog-xtra.texi
@end ifnottex
-
-@ignore
- arch-tag: f39d2590-5dcc-4318-88d9-0eb73ca10fa2
-@end ignore
diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi
index 7f204890ce..a721e0c204 100644
--- a/doc/emacs/mule.texi
+++ b/doc/emacs/mule.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1997, 1999-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node International, Major Modes, Frames, Top
@chapter International Character Set Support
@@ -67,6 +66,12 @@ incorrectly, refer to @ref{Undisplayable Characters}, which describes
possible problems and explains how to solve them.
@item
+Characters from scripts whose natural ordering of text is from right
+to left are reordered for display (@pxref{Bidirectional Editing}).
+These scripts include Arabic, Hebrew, Syriac, Thaana, and a few
+others.
+
+@item
You can insert non-@acronym{ASCII} characters or search for them. To do that,
you can specify an input method (@pxref{Select Input Method}) suitable
for your language, or use the default input method set up when you set
@@ -107,6 +112,7 @@ to make sure Emacs interprets keyboard input correctly; see
* Unibyte Mode:: You can pick one European character set
to use without multibyte characters.
* Charsets:: How Emacs groups its internal character codes.
+* Bidirectional Editing:: Support for right-to-left scripts.
@end menu
@node International Chars
@@ -232,7 +238,7 @@ preferred charset: unicode (Unicode (ISO10646))
Character code properties: customize what to show
name: LATIN CAPITAL LETTER A WITH GRAVE
general-category: Lu (Letter, Uppercase)
- decomposition: (65 768) ('A' '̀')
+ decomposition: (65 768) ('A' '`')
old-name: LATIN CAPITAL LETTER A GRAVE
There are text properties here:
@@ -345,10 +351,11 @@ which prefers Cyrillic characters and files encoded in Windows-1255).
@cindex Intlfonts package, installation
To display the script(s) used by your language environment on a
graphical display, you need to have a suitable font. If some of the
-characters appear as empty boxes, you should install the GNU Intlfonts
-package, which includes fonts for most supported scripts.@footnote{If
-you run Emacs on X, you need to inform the X server about the location
-of the newly installed fonts with the following commands:
+characters appear as empty boxes or hex codes, you should install the
+GNU Intlfonts package, which includes fonts for most supported
+scripts.@footnote{If you run Emacs on X, you need to inform the X
+server about the location of the newly installed fonts with the
+following commands:
@example
xset fp+ /usr/local/share/emacs/fonts
@@ -909,11 +916,12 @@ written in the Emacs internal character code).
@section Specifying a File's Coding System
If Emacs recognizes the encoding of a file incorrectly, you can
-reread the file using the correct coding system by typing @kbd{C-x
-@key{RET} r @var{coding-system} @key{RET}}. To see what coding system
-Emacs actually used to decode the file, look at the coding system
-mnemonic letter near the left edge of the mode line (@pxref{Mode
-Line}), or type @kbd{C-h C @key{RET}}.
+reread the file using the correct coding system with @kbd{C-x
+@key{RET} r} (@code{revert-buffer-with-coding-system}). This command
+prompts for the coding system to use. To see what coding system Emacs
+actually used to decode the file, look at the coding system mnemonic
+letter near the left edge of the mode line (@pxref{Mode Line}), or
+type @kbd{C-h C} (@code{describe-coding-system}).
@vindex coding
You can specify the coding system for a particular file in the file
@@ -987,15 +995,16 @@ one:
@table @kbd
@item C-x @key{RET} f @var{coding} @key{RET}
-Use coding system @var{coding} for saving or revisiting the visited
-file in the current buffer.
+Use coding system @var{coding} to save or revisit the visited file in
+the current buffer (@code{set-buffer-file-coding-system})
@item C-x @key{RET} c @var{coding} @key{RET}
Specify coding system @var{coding} for the immediately following
-command.
+command (@code{universal-coding-system-argument}).
@item C-x @key{RET} r @var{coding} @key{RET}
-Revisit the current file using the coding system @var{coding}.
+Revisit the current file using the coding system @var{coding}
+(@code{revert-buffer-with-coding-system}).
@item M-x recode-region @key{RET} @var{right} @key{RET} @var{wrong} @key{RET}
Convert a region that was decoded using coding system @var{wrong},
@@ -1077,19 +1086,17 @@ in communication with other processes.
@table @kbd
@item C-x @key{RET} x @var{coding} @key{RET}
Use coding system @var{coding} for transferring selections to and from
-other window-based applications.
+other window-based applications (@code{set-selection-coding-system}).
@item C-x @key{RET} X @var{coding} @key{RET}
Use coding system @var{coding} for transferring @emph{one}
-selection---the next one---to or from another window-based application.
+selection---the next one---to or from another window-based application
+(@code{set-next-selection-coding-system}).
@item C-x @key{RET} p @var{input-coding} @key{RET} @var{output-coding} @key{RET}
Use coding systems @var{input-coding} and @var{output-coding} for
-subprocess input and output in the current buffer.
-
-@item C-x @key{RET} c @var{coding} @key{RET}
-Specify coding system @var{coding} for the immediately following
-command.
+subprocess input and output in the current buffer
+(@code{set-buffer-process-coding-system}).
@end table
@kindex C-x RET x
@@ -1127,9 +1134,10 @@ own buffer, and thus you can use this command to specify translation to
and from a particular subprocess by giving the command in the
corresponding buffer.
- You can also use @kbd{C-x @key{RET} c} just before the command that
-runs or starts a subprocess, to specify the coding system to use for
-communication with that subprocess.
+ You can also use @kbd{C-x @key{RET} c}
+(@code{universal-coding-system-argument}) just before the command that
+runs or starts a subprocess, to specify the coding system for
+communicating with that subprocess. @xref{Text Coding}.
The default for translation of process input and output depends on the
current language environment.
@@ -1147,22 +1155,13 @@ specified by one of the environment variables @env{LC_ALL},
specified above, whose value is nonempty is the one that determines
the text representation.)
-@vindex x-select-request-type
- The variable @code{x-select-request-type} specifies a selection data
-type of selection to request from the X server. The default value is
-@code{nil}, which means Emacs tries @code{COMPOUND_TEXT} and
-@code{UTF8_STRING}, and uses whichever result seems more appropriate.
-You can explicitly specify the data type by setting the variable to
-one of the symbols @code{COMPOUND_TEXT}, @code{UTF8_STRING},
-@code{STRING} and @code{TEXT}.
-
@node File Name Coding
@section Coding Systems for File Names
@table @kbd
@item C-x @key{RET} F @var{coding} @key{RET}
Use coding system @var{coding} for encoding and decoding file
-@emph{names}.
+@emph{names} (@code{set-file-name-coding-system}).
@end table
@vindex file-name-coding-system
@@ -1207,10 +1206,12 @@ system, and the coding system to which you wish to convert.
@table @kbd
@item C-x @key{RET} k @var{coding} @key{RET}
-Use coding system @var{coding} for keyboard input.
+Use coding system @var{coding} for keyboard input
+(@code{set-keyboard-coding-system}).
@item C-x @key{RET} t @var{coding} @key{RET}
-Use coding system @var{coding} for terminal output.
+Use coding system @var{coding} for terminal output
+(@code{set-terminal-coding-system}).
@end table
@kindex C-x RET t
@@ -1308,10 +1309,11 @@ characters the font does not cover. The standard fontset is only used if
explicitly requested, despite its name.
A fontset does not necessarily specify a font for every character
-code. If a fontset specifies no font for a certain character, or if it
-specifies a font that does not exist on your system, then it cannot
-display that character properly. It will display that character as an
-empty box instead.
+code. If a fontset specifies no font for a certain character, or if
+it specifies a font that does not exist on your system, then it cannot
+display that character properly. It will display that character as a
+hex code or thin space or an empty box instead. (@xref{Text Display, ,
+glyphless characters}, for details.)
@node Defining Fontsets
@section Defining fontsets
@@ -1664,6 +1666,80 @@ older Emacs versions.
point before it and type @kbd{C-u C-x =} (@pxref{International
Chars}).
-@ignore
- arch-tag: 310ba60d-31ef-4ce7-91f1-f282dd57b6b3
-@end ignore
+@node Bidirectional Editing
+@section Bidirectional Editing
+@cindex bidirectional editing
+@cindex right-to-left text
+
+ Emacs supports editing text written in scripts, such as Arabic and
+Hebrew, whose natural ordering of horizontal text for display is from
+right to left. However, digits and Latin text embedded in these
+scripts are still displayed left to right. It is also not uncommon to
+have small portions of text in Arabic or Hebrew embedded in otherwise
+Latin document, e.g., as comments and strings in a program source
+file. For these reasons, text that uses these scripts is actually
+@dfn{bidirectional}: a mixture of runs of left-to-right and
+right-to-left characters.
+
+ This section describes the facilities and options provided by Emacs
+for editing bidirectional text.
+
+@cindex logical order
+@cindex visual order
+ Emacs stores right-to-left and bidirectional text in the so-called
+@dfn{logical} (or @dfn{reading}) order: the buffer or string position
+of the first character you read precedes that of the next character.
+Reordering of bidirectional text into the @dfn{visual} order happens
+at display time. As result, character positions no longer increase
+monotonically with their positions on display. Emacs implements the
+Unicode Bidirectional Algorithm described in the Unicode Standard
+Annex #9, for reordering of bidirectional text for display.
+
+@vindex bidi-display-reordering
+ The buffer-local variable @code{bidi-display-reordering} controls
+whether text in the buffer is reordered for display. If its value is
+non-@code{nil}, Emacs reorders characters that have right-to-left
+directionality when they are displayed. The default value is
+@code{nil}.
+
+ Each paragraph of bidirectional text can have its own @dfn{base
+direction}, either right-to-left or left-to-right. (Paragraph
+boundaries are defined by the regular expressions
+@code{paragraph-start} and @code{paragraph-separate}, see
+@ref{Paragraphs}.) Text in left-to-right paragraphs begins at the
+left margin of the window and is truncated or continued when it
+reaches the right margin. By contrast, text in right-to-left
+paragraphs begins at the right margin and is continued or truncated at
+the left margin.
+
+@vindex bidi-paragraph-direction
+ Emacs determines the base direction of each paragraph dynamically,
+based on the text at the beginning of the paragraph. However,
+sometimes a buffer may need to force a certain base direction for its
+paragraphs. The variable @code{bidi-paragraph-direction}, if
+non-@code{nil}, disables the dynamic determination of the base
+direction, and instead forces all paragraphs in the buffer to have the
+direction specified by its buffer-local value. The value can be either
+@code{right-to-left} or @code{left-to-right}. Any other value is
+interpreted as @code{nil}.
+
+@cindex LRM
+@cindex RLM
+ Alternatively, you can control the base direction of a paragraph by
+inserting special formatting characters in front of the paragraph.
+The special character @code{RIGHT-TO-LEFT MARK}, or @sc{rlm}, forces
+the right-to-left direction on the following paragraph, while
+@code{LEFT-TO-RIGHT MARK}, or @sc{lrm} forces the left-to-right
+direction. (You can use @kbd{C-x 8 RET} to insert these characters.)
+In a GUI session, the @sc{lrm} and @sc{rlm} characters display as
+blanks.
+
+ Because characters are reordered for display, Emacs commands that
+operate in the logical order or on stretches of buffer positions may
+produce unusual effects. For example, @kbd{C-f} and @kbd{C-b}
+commands move point in the logical order, so the cursor will sometimes
+jump when point traverses reordered bidirectional text. Similarly, a
+highlighted region covering a contiguous range of character positions
+may look discontinuous if the region spans reordered text. This is
+normal and similar to behavior of other programs that support
+bidirectional text.
diff --git a/doc/emacs/picture-xtra.texi b/doc/emacs/picture-xtra.texi
index 36254ea999..7e72fb0acb 100644
--- a/doc/emacs/picture-xtra.texi
+++ b/doc/emacs/picture-xtra.texi
@@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in emacs-xtra.texi (when producing the
@@ -285,7 +285,3 @@ other modes. @kbd{C-c C-y} (@code{picture-yank-rectangle}) inserts
(by overwriting) the rectangle that was most recently killed, while
@kbd{C-c C-x} (@code{picture-yank-rectangle-from-register}) does
likewise for the rectangle found in a specified register.
-
-@ignore
- arch-tag: 10e423ad-d896-42f2-a7e8-7018adeaf8c2
-@end ignore
diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi
index c2364fb8c0..803f6b6ce4 100644
--- a/doc/emacs/programs.texi
+++ b/doc/emacs/programs.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
-@c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Programs, Building, Text, Top
@@ -1841,7 +1840,3 @@ starts comments in assembler syntax.
@ifnottex
@include fortran-xtra.texi
@end ifnottex
-
-@ignore
- arch-tag: c7ee7409-40a4-45c7-bfb7-ae7f2c74d0c0
-@end ignore
diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi
index 5eada94a0a..42ce85c7ee 100644
--- a/doc/emacs/regs.texi
+++ b/doc/emacs/regs.texi
@@ -1,8 +1,8 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
-@node Registers, Display, CUA Bindings, Top
+@node Registers, Display, Killing, Top
@chapter Registers
@cindex registers
@@ -330,7 +330,3 @@ points to.
Insert in the buffer the @emph{contents} of the file that bookmark
@var{bookmark} points to.
@end table
-
-@ignore
- arch-tag: b00af991-ebc3-4b3a-8e82-a3ac81ff2e64
-@end ignore
diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi
index 82e6b32cd8..ad22ae921e 100644
--- a/doc/emacs/rmail.texi
+++ b/doc/emacs/rmail.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Rmail, Dired, Sending Mail, Top
@@ -1228,7 +1227,8 @@ specification, or because the specification was inaccurate. For
example, a misconfigured mailer could send a message with a
@samp{charset=iso-8859-1} header when the message is actually encoded
in @code{koi8-r}. When you see the message text garbled, or some of
-its characters displayed as empty boxes, this may have happened.
+its characters displayed as hex codes or empty boxes, this may have
+happened.
@findex rmail-redecode-body
You can correct the problem by decoding the message again using the
@@ -1515,7 +1515,3 @@ include the following in the Rmail inbox list:
@smallexample
maildir://var/spool/mail/in
@end smallexample
-
-@ignore
- arch-tag: 034965f6-38df-47a2-a9f1-b8bc8ab37e23
-@end ignore
diff --git a/doc/emacs/screen.texi b/doc/emacs/screen.texi
index f12c03e1ab..0bc3ce3db8 100644
--- a/doc/emacs/screen.texi
+++ b/doc/emacs/screen.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Screen, User Input, Acknowledgments, Top
@@ -320,7 +319,3 @@ items, and then you can type @key{RET} to select the item.
that item; it is usually the initial of some word in the item's name.
This letter or digit is separated from the item name by @samp{=>}. You
can type the item's letter or digit to select the item.
-
-@ignore
- arch-tag: 104ba40e-d972-4866-a542-a98be94bdf2f
-@end ignore
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index 2b96e519b1..b5d426210a 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Search, Fixit, Display, Top
@@ -272,19 +271,24 @@ keybindings. These keybindings are part of the keymap
@node Isearch Yank
@subsection Isearch Yanking
- Within incremental search, you can use @kbd{C-w} and @kbd{C-y} to grab
-text from the buffer into the search string. This makes it convenient
-to search for another occurrence of text at point.
+ Within incremental search, @kbd{C-y} (@code{isearch-yank-kill})
+copies text from the kill ring into the search string. It uses the
+same text that @kbd{C-y}, outside of incremental search, would
+normally yank into the buffer. @kbd{Mouse-2} in the echo area does
+the same. @xref{Yanking}.
- @kbd{C-w} copies the character or word after point and adds it to
-the search string, advancing point over it. (The decision, whether to
-copy a character or a word, is heuristic.)
+ @kbd{C-w} (@code{isearch-yank-word-or-char}) grabs the next
+character or word at point, and adds it to the search string. This is
+convenient for searching for another occurrence of the text at point.
+(The decision, whether to copy a character or a word, is heuristic.)
- @kbd{C-y} is similar to @kbd{C-w} but copies all the rest of the
-current line into the search string. If point is already at the end
-of a line, it grabs the entire next line. If the search is currently
-case-insensitive, both @kbd{C-y} and @kbd{C-w} convert the text they
-copy to lower case, so that the search remains case-insensitive.
+ Similarly, @kbd{M-s C-e} (@code{isearch-yank-line}) grabs the rest
+of the current line, and adds it to the search string. If point is
+already at the end of a line, it grabs the entire next line.
+
+ If the search is currently case-insensitive, both @kbd{C-w} and
+@kbd{M-s C-e} convert the text they copy to lower case, so that the
+search remains case-insensitive.
@kbd{C-M-w} and @kbd{C-M-y} modify the search string by only one
character at a time: @kbd{C-M-w} deletes the last character from the
@@ -294,10 +298,6 @@ after point into the search string is to enter the minibuffer by
@kbd{M-e} and to type @kbd{C-f} at the end of the search string in the
minibuffer.
- The character @kbd{M-y} copies text from the kill ring into the
-search string. It uses the same text that @kbd{C-y} would yank.
-@kbd{Mouse-2} in the echo area does the same. @xref{Yanking}.
-
@node Isearch Scroll
@subsection Scrolling During Incremental Search
@@ -917,13 +917,13 @@ setting of the syntax table (@pxref{Syntax}).
@node Regexp Example
@section Regular Expression Example
- Here is an example of a regexp---the regexp that Emacs uses, by
-default, to recognize the end of a sentence, not including the
-following space (i.e., the variable @code{sentence-end-base}):
+ Here is an example of a regexp---similar to the regexp that Emacs
+uses, by default, to recognize the end of a sentence, not including
+the following space (i.e., the variable @code{sentence-end-base}):
@example
@verbatim
-[.?!][]\"'””)}]*
+[.?!][]\"')}]*
@end verbatim
@end example
@@ -1317,8 +1317,7 @@ Prompt for a regexp, and display a list showing each line in the
buffer that contains a match for it. To limit the search to part of
the buffer, narrow to that part (@pxref{Narrowing}). A numeric
argument @var{n} specifies that @var{n} lines of context are to be
-displayed before and after each matching line. Currently,
-@code{occur} can not correctly handle multiline matches.
+displayed before and after each matching line.
@kindex RET @r{(Occur mode)}
@kindex o @r{(Occur mode)}
@@ -1382,7 +1381,3 @@ it never deletes lines that are only partially contained in the region
If a match is split across lines, this command keeps all those lines.
@end table
-
-@ignore
- arch-tag: fd9d8e77-66af-491c-b212-d80999613e3e
-@end ignore
diff --git a/doc/emacs/sending.texi b/doc/emacs/sending.texi
index 8dbe24856a..02857459cc 100644
--- a/doc/emacs/sending.texi
+++ b/doc/emacs/sending.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Sending Mail
@@ -713,7 +712,3 @@ buffer, and their commands are different as well.
Similarly, to specify your preferred method for reading mail,
customize the variable @code{read-mail-command}. The default is
@code{rmail} (@pxref{Rmail}).
-
-@ignore
- arch-tag: d8a3dfc3-5d87-45c5-a7f2-69871b8e4fd6
-@end ignore
diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi
index e81bb4441e..c0139c6055 100644
--- a/doc/emacs/text.texi
+++ b/doc/emacs/text.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Text, Programs, Indentation, Top
@@ -2925,7 +2924,3 @@ then inserts the generated table in the proper syntax into the
destination buffer. The default destination buffer is
@code{table.@var{lang}}, where @var{lang} is the language you
specified.
-
-@ignore
- arch-tag: 8db54ed8-2036-49ca-b0df-23811d03dc70
-@end ignore
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 6407467728..28c0285cf0 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@iftex
@@ -1133,4 +1132,3 @@ Emacs distribution.
@ifnottex
@lowersections
@end ifnottex
-
diff --git a/doc/emacs/vc-xtra.texi b/doc/emacs/vc-xtra.texi
index 89e8428749..978a2a31a2 100644
--- a/doc/emacs/vc-xtra.texi
+++ b/doc/emacs/vc-xtra.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included in emacs-xtra.texi when producing the printed
@@ -24,7 +23,3 @@ the Emacs Manual}). This chapter describes more advanced VC usage.
@iftex
@include vc1-xtra.texi
@end iftex
-
-@ignore
- arch-tag: 11a18d0e-1baf-49da-8e38-f61195ae4dc3
-@end ignore
diff --git a/doc/emacs/vc1-xtra.texi b/doc/emacs/vc1-xtra.texi
index 668c3a4168..05e89e69f0 100644
--- a/doc/emacs/vc1-xtra.texi
+++ b/doc/emacs/vc1-xtra.texi
@@ -1,6 +1,5 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@c
@c This file is included either in vc-xtra.texi (when producing the
@@ -787,7 +786,3 @@ only for repositories from hosts that match the pattern.
operations in the variable @code{vc-cvs-global-switches}. These
switches are inserted immediately after the @code{cvs} command, before
the name of the operation to invoke.
-
-@ignore
- arch-tag: 8e8c2a01-ad41-4e61-a89a-60131ad67263
-@end ignore
diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi
index a80e18360e..6aa8a06778 100644
--- a/doc/emacs/windows.texi
+++ b/doc/emacs/windows.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Windows, Frames, Buffers, Top
@chapter Multiple Windows
@@ -397,7 +397,3 @@ windows together. You can also turn it on by customizing the variable
scroll-all-scroll-down-all}, @kbd{M-x scroll-all-page-down-all} and
their corresponding ``up'' equivalents. To make this mode useful,
you should bind these commands to appropriate keys.
-
-@ignore
- arch-tag: 8bea7453-d4b1-49b1-9bf4-cfe4383e1113
-@end ignore
diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi
index 0c44b9f181..d30f7e4225 100644
--- a/doc/emacs/xresources.texi
+++ b/doc/emacs/xresources.texi
@@ -1,6 +1,6 @@
@c This is part of the Emacs manual.
-@c Copyright (C) 1987, 1993, 1994, 1995, 1997, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1987, 1993-1995, 1997, 2001-2011
+@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node X Resources, Antinews, Emacs Invocation, Top
@appendix X Options and Resources
@@ -399,8 +399,9 @@ Italic flag for face @var{face}---instead of @code{attributeSlant}.
@end table
@node Lucid Resources
-@appendixsec Lucid Menu X Resources
+@appendixsec Lucid Menu And Dialog X Resources
@cindex Menu X Resources (Lucid widgets)
+@cindex Dialog X Resources (Lucid widgets)
@cindex Lucid Widget X Resources
@ifnottex
@@ -415,7 +416,7 @@ Emacs.pane.menubar.@var{resource}: @var{value}
@end example
@noindent
-For example, to specify the font @samp{8x16} for the menu-bar items,
+For example, to specify the font @samp{Courier-12} for the menu-bar items,
write this:
@end ifnottex
@iftex
@@ -423,37 +424,49 @@ write this:
with the Lucid menu widgets, then the menu bar is a separate widget
and has its own resources. The resource specifications start with
@samp{Emacs.pane.menubar}---for instance, to specify the font
-@samp{8x16} for the menu-bar items, write this:
+@samp{Courier-12} for the menu-bar items, write this:
@end iftex
@example
-Emacs.pane.menubar.font: 8x16
+Emacs.pane.menubar.font: Courier-12
+@end example
+
+@noindent
+To specify a font, use fontconfig font names as values to the @code{font}
+resource, or old style names:
+
+@example
+Emacs.pane.menubar.font: lucidasanstypewriter-10
@end example
@noindent
+Emacs first tries to open the font as an old style font, and if that fails
+as an fontconfig font. In rare cases, Emacs might do the wrong thing.
+
+@noindent
+The Lucid menus can display multilingual text in your locale with old style
+fonts. For more information about fontsets see the man page for
+@code{XCreateFontSet}. To enable multilingual menu text you specify a
+@code{fontSet} resource instead of the font resource. If both
+@code{font} and @code{fontSet} resources are specified, the
+@code{fontSet} resource is used.
+
+@noindent
Resources for @emph{non-menubar} toolkit pop-up menus have
@samp{menu*} instead of @samp{pane.menubar}. For example, to specify
the font @samp{8x16} for the pop-up menu items, write this:
@example
-Emacs.menu*.font: 8x16
+Emacs.menu*.font: 8x16
@end example
@noindent
For dialog boxes, use @samp{dialog*}:
@example
-Emacs.dialog*.font: 8x16
+Emacs.dialog*.font: Sans-12
@end example
-@noindent
-The Lucid menus can display multilingual text in your locale. For
-more information about fontsets see the man page for
-@code{XCreateFontSet}. To enable multilingual menu text you specify a
-@code{fontSet} resource instead of the font resource. If both
-@code{font} and @code{fontSet} resources are specified, the
-@code{fontSet} resource is used.
-
Here is a list of the specific resources for menu bars and pop-up menus:
@table @code
@@ -631,8 +644,11 @@ The color for the border shadow, on the top and the left.
@iftex
The most common way to customize the GTK widgets Emacs uses (menus, dialogs
tool bars and scroll bars) is by choosing an appropriate theme, for example
-with the GNOME theme selector. You can also do Emacs specific customization
-by inserting GTK style directives in the file @file{~/.emacs.d/gtkrc}. Some GTK
+with the GNOME theme selector.
+
+You can also do Emacs specific customization
+by inserting GTK style directives in the file @file{~/.emacs.d/gtkrc},
+but only if you have a Gtk+ version earlier than 3 (i.e. 2). Some GTK
themes ignore customizations in @file{~/.emacs.d/gtkrc} so not everything
works with all themes. To customize Emacs font, background, faces, etc., use
the normal X resources (@pxref{Resources}). We will present some examples of
@@ -1179,7 +1195,3 @@ family. It corresponds to the fifth part of an X font name. It is one of
@noindent
@var{size} is a decimal number that describes the font size in points.
@end ifnottex
-
-@ignore
- arch-tag: 9b6ff773-48b6-41f6-b2f9-f114b8bdd97f
-@end ignore
diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog
index 70accbc066..9d3894c38f 100644
--- a/doc/lispintro/ChangeLog
+++ b/doc/lispintro/ChangeLog
@@ -2,10 +2,71 @@
* Version 23.3 released.
-2011-02-18 Eli Zaretskii <[email protected]>
+2011-02-19 Eli Zaretskii <[email protected]>
* emacs-lisp-intro.texi: Sync @dircategory with ../../info/dir.
+2011-01-23 Werner Lemberg <[email protected]>
+
+ * Makefile.in (MAKEINFO): Now controlled by `configure'.
+ (MAKEINFO_OPTS): New variable. Use it where appropriate.
+ (ENVADD): New variable to control texi2dvi and texi2pdf.
+
+2010-11-13 Glenn Morris <[email protected]>
+
+ * emacs-lisp-intro.texi: Rename the `count-words-region' example,
+ since there is now a standard command of that name.
+
+2010-10-11 Glenn Morris <[email protected]>
+
+ * Makefile.in (.dvi.ps): Remove unnecessary suffix rule.
+ (.PHONY): Add ps.
+ (ps, emacs-lisp-intro.ps): New targets.
+ (clean): Delete ps file.
+ (MAKEINFO): Use --force like the other doc/ Makefiles do.
+ Add explicit -I$srcdir.
+
+2010-10-09 Glenn Morris <[email protected]>
+
+ * Makefile.in (VPATH): Remove.
+ (infodir): Make it absolute.
+ (mkinfodir, $(infodir)/eintr, infoclean): No need to cd $srcdir.
+
+ * Makefile.in (dist): Anchor regexps.
+
+ * Makefile.in (${infodir}/eintr, emacs-lisp-intro.dvi)
+ (emacs-lisp-intro.pdf, emacs-lisp-intro.html): Use $<.
+
+ * Makefile.in (infoclean): Remove harmless, long-standing error.
+
+ * Makefile.in ($(infodir)): Delete rule.
+ (mkinfodir): New.
+ ($(infodir)/eintr): Use $mkinfodir instead of infodir.
+
+2010-10-09 Glenn Morris <[email protected]>
+
+ * Makefile.in (.PHONY): Declare info, dvi, html, pdf, dist.
+
+2010-10-07 Glenn Morris <[email protected]>
+
+ * Makefile.in (version): New, set by configure.
+ (clean): Delete dist tar file.
+ (dist): Use version in tar name.
+
+2010-10-06 Glenn Morris <[email protected]>
+
+ * Makefile.in (SHELL): Use /bin/sh, like every other Makefile.in.
+ (INFO_SOURCES, INFO_TARGETS, DVI_TARGETS): Remove variables.
+ ($(infodir), html, pdf, infoclean, dist): New rules.
+ (${infodir}/eintr): Ensure $infodir exists. Use $@.
+ (emacs-lisp-intro.dvi, emacs-lisp-intro.pdf, emacs-lisp-intro.html):
+ Use $^.
+ (.PHONY): Declare clean rules.
+ (mostlyclean): Delete more temp files.
+ (clean): Delete specific dvi, pdf and html files.
+ (maintainer-clean): Use infoclean.
+ (.NOEXPORT): Remove, unused by any other Makefile.in.
+
2010-09-21 Glenn Morris <[email protected]>
* cons-1.eps, cons-2.eps, cons-2a.eps, cons-3.eps, cons-4.eps:
@@ -20,6 +81,10 @@
* Version 23.2 released.
+2010-03-10 Chong Yidong <[email protected]>
+
+ * Branch for 23.2.
+
2010-02-16 Glenn Morris <[email protected]>
* emacs-lisp-intro.texi: Fix typo in name of `find-tag' command.
@@ -31,8 +96,7 @@
2009-12-09 David Robinow <[email protected]> (tiny change)
- * makefile.w32-in: Use parenthesis for macros for nmake
- compatibility.
+ * makefile.w32-in: Use parenthesis for macros for nmake compatibility.
2009-12-03 Glenn Morris <[email protected]>
@@ -90,7 +154,7 @@
2009-02-22 Karl Berry <[email protected]>
- * emacs-lisp-intro.texi (Default Configuration): fix dup word "by by".
+ * emacs-lisp-intro.texi (Default Configuration): Fix dup word "by by".
2009-02-20 Juanma Barranquero <[email protected]>
@@ -223,7 +287,7 @@
(Simple Extension): Replace longer expression with
`emacs-major-version'. Remove comment about `number-to-string'
function.
- (Miscellaneous): Add filename option, `-H', to `grep' example
+ (Miscellaneous): Add filename option, `-H', to `grep' example.
(debug, debug-on-entry): Replace `GNU Emacs 22' with `a recent
GNU Emacs'.
(edebug): More properly state where to place point for 'M-x
@@ -245,7 +309,7 @@
(sentence-end): Specify `in English' for glyphs that end a sentence.
Note that in GNU Emacs 22, the name refers to both a variable and a
function.
- (fwd-sentence while loops): Write a function as one, not as a form
+ (fwd-sentence while loops): Write a function as one, not as a form.
(fwd-para let): Add `which' to sentence with `parstart' and `parsep'.
(etags): Move sentences involving `find-tag' and sources. State
location of Emacs `src' directory.
@@ -324,11 +388,11 @@
2006-08-21 Robert J. Chassell <[email protected]>
* emacs-lisp-intro.texi: Deleted in directory copy of texinfo.tex
- and pointed towards ../man/texinfo.tex so only one file
- needs updating. Added comment of what to do when building on own.
+ and pointed towards ../man/texinfo.tex so only one file
+ needs updating. Added comment of what to do when building on own.
* texinfo.tex: Changed to version 2006-02-13.16
- to enable a DVI build using the more recent versions of TeX.
+ to enable a DVI build using the more recent versions of TeX.
2006-05-25 David Kastrup <[email protected]>
@@ -367,7 +431,7 @@
2003-11-16 Kevin Ryde <[email protected]>
* emacs-lisp-intro.texi: [CVS commitment by <[email protected]>]
- Corrections to cross references,
+ Corrections to cross references.
(Interactive Options): elisp "interactive" -> "Using Interactive".
(defvar and asterisk): Remove emacs "Edit Options" reference,
edit-options is no longer described in the emacs manual.
@@ -397,11 +461,9 @@
;; Local Variables:
;; coding: utf-8
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -417,5 +479,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: ee4f8e1f-e14c-4d2e-86de-4dd697e6f1c3
diff --git a/doc/lispintro/Makefile.in b/doc/lispintro/Makefile.in
index e85185f060..df356f1b13 100644
--- a/doc/lispintro/Makefile.in
+++ b/doc/lispintro/Makefile.in
@@ -1,7 +1,6 @@
#### Makefile for the Emacs Lisp Introduction manual
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003,
-# 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1994-1999, 2001-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -18,60 +17,84 @@
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-SHELL = @SHELL@
+SHELL = /bin/sh
srcdir = @srcdir@
-VPATH = @srcdir@
+version=@version@
-infodir = ../../info
+infodir = $(srcdir)/../../info
# Directory with the (customized) texinfo.tex file.
texinfodir = $(srcdir)/../misc
-INFO_SOURCES = ${srcdir}/emacs-lisp-intro.texi
-# The file name eintr must fit within 5 characters, to allow for
-# -NN extensions to fit into DOS 8+3 limits without clashing
-INFO_TARGETS = ${infodir}/eintr
-DVI_TARGETS = emacs-lisp-intro.dvi
-
-MAKEINFO = makeinfo
+MAKEINFO = @MAKEINFO@
+MAKEINFO_OPTS = --force -I $(srcdir)
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
DVIPS = dvips
-.SUFFIXES: .dvi .ps .texi
+ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(TEXINPUTS)" \
+ MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)"
+
+mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir}
+
+.PHONY: info dvi html pdf ps
-info: $(INFO_TARGETS)
+info: ${infodir}/eintr
-dvi: $(DVI_TARGETS)
+dvi: emacs-lisp-intro.dvi
+html: emacs-lisp-intro.html
+pdf: emacs-lisp-intro.pdf
+ps: emacs-lisp-intro.ps
-${infodir}/eintr: ${INFO_SOURCES}
- cd $(srcdir); $(MAKEINFO) emacs-lisp-intro.texi -o $(infodir)/eintr
+# The file name eintr must fit within 5 characters, to allow for
+# -NN extensions to fit into DOS 8+3 limits without clashing.
+${infodir}/eintr: ${srcdir}/emacs-lisp-intro.texi
+ $(mkinfodir)
+ $(MAKEINFO) $(MAKEINFO_OPTS) -o $@ $<
+
+emacs-lisp-intro.dvi: ${srcdir}/emacs-lisp-intro.texi
+ $(ENVADD) $(TEXI2DVI) $<
-emacs-lisp-intro.dvi: ${INFO_SOURCES}
- $(TEXI2DVI) -I $(srcdir) -I $(texinfodir) $(srcdir)/emacs-lisp-intro.texi
+emacs-lisp-intro.ps: emacs-lisp-intro.dvi
+ $(DVIPS) -o $@ $<
-emacs-lisp-intro.pdf: ${INFO_SOURCES}
- $(TEXI2PDF) -I $(srcdir) -I $(texinfodir) $(srcdir)/emacs-lisp-intro.texi
+emacs-lisp-intro.pdf: ${srcdir}/emacs-lisp-intro.texi
+ $(ENVADD) $(TEXI2PDF) $<
-emacs-lisp-intro.html: $(INFO_SOURCES)
- $(MAKEINFO) --html -o $@ $(srcdir)/emacs-lisp-intro.texi
+emacs-lisp-intro.html: ${srcdir}/emacs-lisp-intro.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) --html -o $@ $<
-.dvi.ps:
- $(DVIPS) $< -o $@
+.PHONY: mostlyclean clean distclean maintainer-clean infoclean
mostlyclean:
- rm -f *.log *.cp *.fn *.ky *.pg *.vr *.tp
+ rm -f *.aux *.log *.toc *.cp *.cps *.fn *.fns *.ky *.kys \
+ *.op *.ops *.pg *.pgs *.tp *.tps *.vr *.vrs
clean: mostlyclean
- rm -f *.dvi
+ rm -f emacs-lisp-intro.dvi emacs-lisp-intro.pdf emacs-lisp-intro.ps
+ rm -rf emacs-lisp-intro.html/
+ rm -f emacs-lispintro-${version}.tar*
distclean: clean
-maintainer-clean: distclean
- rm -f *.aux *.cps *.fns *.kys *.pgs *.vrs *.toc
- cd $(infodir); rm -f eintr eintr-[1-9]
+infoclean:
+ -cd $(infodir) && rm -f eintr eintr-[1-9]
+
+maintainer-clean: distclean infoclean
+
+.PHONY: dist
+
+dist:
+ rm -rf emacs-lispintro-${version}
+ mkdir emacs-lispintro-${version}
+ cp ${srcdir}/*.texi ${srcdir}/*.eps ${srcdir}/*.pdf \
+ ${texinfodir}/texinfo.tex \
+ ${srcdir}/ChangeLog* ${srcdir}/README emacs-lispintro-${version}/
+ sed -e 's/@sr[c]dir@/./' -e 's/^\(texinfodir *=\).*/\1 ./' \
+ -e 's/^\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \
+ -e "s/@ver[s]ion@/${version}/" \
+ ${srcdir}/Makefile.in > emacs-lispintro-${version}/Makefile
+ tar -cf emacs-lispintro-${version}.tar emacs-lispintro-${version}
+ rm -rf emacs-lispintro-${version}
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
+### Makefile ends here
diff --git a/doc/lispintro/README b/doc/lispintro/README
index 448682bfea..ba4e727cc8 100644
--- a/doc/lispintro/README
+++ b/doc/lispintro/README
@@ -1,5 +1,4 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/doc/lispintro/cons-1.eps b/doc/lispintro/cons-1.eps
index 13756346e4..a1fb08463b 100644
--- a/doc/lispintro/cons-1.eps
+++ b/doc/lispintro/cons-1.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:26:58 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-2.eps b/doc/lispintro/cons-2.eps
index 371ceb37e6..a711b66ca2 100644
--- a/doc/lispintro/cons-2.eps
+++ b/doc/lispintro/cons-2.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:26:39 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-2a.eps b/doc/lispintro/cons-2a.eps
index cd4ed67d23..5612caa071 100644
--- a/doc/lispintro/cons-2a.eps
+++ b/doc/lispintro/cons-2a.eps
@@ -4,8 +4,7 @@
%%CreationDate: Tue Mar 14 15:09:30 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-3.eps b/doc/lispintro/cons-3.eps
index c9b40f0e0c..a1de449373 100644
--- a/doc/lispintro/cons-3.eps
+++ b/doc/lispintro/cons-3.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:25:41 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-4.eps b/doc/lispintro/cons-4.eps
index 83ce2bdd75..45882e815a 100644
--- a/doc/lispintro/cons-4.eps
+++ b/doc/lispintro/cons-4.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:25:06 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/cons-5.eps b/doc/lispintro/cons-5.eps
index 7ad3d4800a..b8bff1da57 100644
--- a/doc/lispintro/cons-5.eps
+++ b/doc/lispintro/cons-5.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:27:28 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/doclicense.texi b/doc/lispintro/doclicense.texi
index 1aa7613611..51342e96d6 100644
--- a/doc/lispintro/doclicense.texi
+++ b/doc/lispintro/doclicense.texi
@@ -506,7 +506,3 @@ to permit their use in free software.
@c ispell-local-pdict: "ispell-dict"
@c End:
-@ignore
- arch-tag: 839f250e-4800-4bc9-bd28-49ec7968331f
-@end ignore
-
diff --git a/doc/lispintro/drawers.eps b/doc/lispintro/drawers.eps
index 7b76b03545..99e3581f38 100644
--- a/doc/lispintro/drawers.eps
+++ b/doc/lispintro/drawers.eps
@@ -9,8 +9,7 @@
%%EndComments
%%BeginProlog
-% Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-% Free Software Foundation, Inc.
+% Copyright (C) 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi
index 4cce412b22..11ceea19ee 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -228,9 +228,7 @@ people who are not programmers.
@sp 1
Edition @value{edition-number}, @value{update-date}
@sp 1
-Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1997, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+Copyright @copyright{} 1990-1995, 1997, 2001-2011 Free Software Foundation, Inc.
@sp 1
@iftex
@@ -704,23 +702,25 @@ Regular Expression Searches
* fwd-para while:: The forward motion @code{while} loop.
Counting: Repetition and Regexps
+@set COUNT-WORDS count-words-example
+@c Length of variable name chosen so that things still line up when expanded.
* Why Count Words::
-* count-words-region:: Use a regexp, but find a problem.
+* @value{COUNT-WORDS}:: Use a regexp, but find a problem.
* recursive-count-words:: Start with case of no words in region.
* Counting Exercise::
-The @code{count-words-region} Function
+The @code{@value{COUNT-WORDS}} Function
-* Design count-words-region:: The definition using a @code{while} loop.
-* Whitespace Bug:: The Whitespace Bug in @code{count-words-region}.
+* Design @value{COUNT-WORDS}:: The definition using a @code{while} loop.
+* Whitespace Bug:: The Whitespace Bug in @code{@value{COUNT-WORDS}}.
Counting Words in a @code{defun}
* Divide and Conquer::
* Words and Symbols:: What to count?
* Syntax:: What constitutes a word or symbol?
-* count-words-in-defun:: Very like @code{count-words}.
+* count-words-in-defun:: Very like @code{@value{COUNT-WORDS}}.
* Several defuns:: Counting several defuns in a file.
* Find a File:: Do you want to look at a file?
* lengths-list-file:: A list of the lengths of many definitions.
@@ -13829,35 +13829,37 @@ word count commands using @code{while} loops and recursion.
@menu
* Why Count Words::
-* count-words-region:: Use a regexp, but find a problem.
+* @value{COUNT-WORDS}:: Use a regexp, but find a problem.
* recursive-count-words:: Start with case of no words in region.
* Counting Exercise::
@end menu
-@node Why Count Words, count-words-region, Counting Words, Counting Words
+@node Why Count Words, @value{COUNT-WORDS}, Counting Words, Counting Words
@ifnottex
@unnumberedsec Counting words
@end ifnottex
-The standard Emacs distribution contains a function for counting the
-number of lines within a region. However, there is no corresponding
-function for counting words.
+The standard Emacs distribution contains functions for counting the
+number of lines and words within a region.
Certain types of writing ask you to count words. Thus, if you write
an essay, you may be limited to 800 words; if you write a novel, you
-may discipline yourself to write 1000 words a day. It seems odd to me
-that Emacs lacks a word count command. Perhaps people use Emacs
-mostly for code or types of documentation that do not require word
-counts; or perhaps they restrict themselves to the operating system
-word count command, @code{wc}. Alternatively, people may follow
-the publishers' convention and compute a word count by dividing the
-number of characters in a document by five. In any event, here are
-commands to count words.
-
-@node count-words-region, recursive-count-words, Why Count Words, Counting Words
+may discipline yourself to write 1000 words a day. It seems odd, but
+for a long time, Emacs lacked a word count command. Perhaps people used
+Emacs mostly for code or types of documentation that did not require
+word counts; or perhaps they restricted themselves to the operating
+system word count command, @code{wc}. Alternatively, people may have
+followed the publishers' convention and computed a word count by
+dividing the number of characters in a document by five.
+
+There are many ways to implement a command to count words. Here are
+some examples, which you may wish to compare with the standard Emacs
+command, @code{count-words-region}.
+
+@node @value{COUNT-WORDS}, recursive-count-words, Why Count Words, Counting Words
@comment node-name, next, previous, up
-@section The @code{count-words-region} Function
-@findex count-words-region
+@section The @code{@value{COUNT-WORDS}} Function
+@findex @value{COUNT-WORDS}
A word count command could count words in a line, paragraph, region,
or buffer. What should the command cover? You could design the
@@ -13865,7 +13867,7 @@ command to count the number of words in a complete buffer. However,
the Emacs tradition encourages flexibility---you may want to count
words in just a section, rather than all of a buffer. So it makes
more sense to design the command to count the number of words in a
-region. Once you have a @code{count-words-region} command, you can,
+region. Once you have a command to count words in a region, you can,
if you wish, count words in a whole buffer by marking it with
@w{@kbd{C-x h}} (@code{mark-whole-buffer}).
@@ -13876,13 +13878,13 @@ region. This means that word counting is ideally suited to recursion
or to a @code{while} loop.
@menu
-* Design count-words-region:: The definition using a @code{while} loop.
-* Whitespace Bug:: The Whitespace Bug in @code{count-words-region}.
+* Design @value{COUNT-WORDS}:: The definition using a @code{while} loop.
+* Whitespace Bug:: The Whitespace Bug in @code{@value{COUNT-WORDS}}.
@end menu
-@node Design count-words-region, Whitespace Bug, count-words-region, count-words-region
+@node Design @value{COUNT-WORDS}, Whitespace Bug, @value{COUNT-WORDS}, @value{COUNT-WORDS}
@ifnottex
-@unnumberedsubsec Designing @code{count-words-region}
+@unnumberedsubsec Designing @code{@value{COUNT-WORDS}}
@end ifnottex
First, we will implement the word count command with a @code{while}
@@ -13905,7 +13907,9 @@ What we need to do is fill in the slots.
The name of the function should be self-explanatory and similar to the
existing @code{count-lines-region} name. This makes the name easier
-to remember. @code{count-words-region} is a good choice.
+to remember. @code{count-words-region} is the obvious choice. Since
+that name is now used for the standard Emacs command to count words, we
+will name our implementation @code{@value{COUNT-WORDS}}.
The function counts words within a region. This means that the
argument list must contain symbols that are bound to the two
@@ -13923,7 +13927,7 @@ first, to set up conditions under which the @code{while} loop can
count words, second, to run the @code{while} loop, and third, to send
a message to the user.
-When a user calls @code{count-words-region}, point may be at the
+When a user calls @code{@value{COUNT-WORDS}}, point may be at the
beginning or the end of the region. However, the counting process
must start at the beginning of the region. This means we will want
to put point there if it is not already there. Executing
@@ -14015,7 +14019,7 @@ All this leads to the following function definition:
@smallexample
@group
;;; @r{First version; has bugs!}
-(defun count-words-region (beginning end)
+(defun @value{COUNT-WORDS} (beginning end)
"Print number of words in the region.
Words are defined as at least one word-constituent
character followed by at least one character that
@@ -14056,14 +14060,14 @@ table determines which characters these are."
@noindent
As written, the function works, but not in all circumstances.
-@node Whitespace Bug, , Design count-words-region, count-words-region
+@node Whitespace Bug, , Design @value{COUNT-WORDS}, @value{COUNT-WORDS}
@comment node-name, next, previous, up
-@subsection The Whitespace Bug in @code{count-words-region}
+@subsection The Whitespace Bug in @code{@value{COUNT-WORDS}}
-The @code{count-words-region} command described in the preceding
+The @code{@value{COUNT-WORDS}} command described in the preceding
section has two bugs, or rather, one bug with two manifestations.
First, if you mark a region containing only whitespace in the middle
-of some text, the @code{count-words-region} command tells you that the
+of some text, the @code{@value{COUNT-WORDS}} command tells you that the
region contains one word! Second, if you mark a region containing
only whitespace at the end of the buffer or the accessible portion of
a narrowed buffer, the command displays an error message that looks
@@ -14084,7 +14088,7 @@ parenthesis and type @kbd{C-x C-e} to install it.
@smallexample
@group
;; @r{First version; has bugs!}
-(defun count-words-region (beginning end)
+(defun @value{COUNT-WORDS} (beginning end)
"Print number of words in the region.
Words are defined as at least one word-constituent character followed
by at least one character that is not a word-constituent. The buffer's
@@ -14123,12 +14127,12 @@ syntax table determines which characters these are."
If you wish, you can also install this keybinding by evaluating it:
@smallexample
-(global-set-key "\C-c=" 'count-words-region)
+(global-set-key "\C-c=" '@value{COUNT-WORDS})
@end smallexample
To conduct the first test, set mark and point to the beginning and end
of the following line and then type @kbd{C-c =} (or @kbd{M-x
-count-words-region} if you have not bound @kbd{C-c =}):
+@value{COUNT-WORDS}} if you have not bound @kbd{C-c =}):
@smallexample
one two three
@@ -14139,7 +14143,7 @@ Emacs will tell you, correctly, that the region has three words.
Repeat the test, but place mark at the beginning of the line and place
point just @emph{before} the word @samp{one}. Again type the command
-@kbd{C-c =} (or @kbd{M-x count-words-region}). Emacs should tell you
+@kbd{C-c =} (or @kbd{M-x @value{COUNT-WORDS}}). Emacs should tell you
that the region has no words, since it is composed only of the
whitespace at the beginning of the line. But instead Emacs tells you
that the region has one word!
@@ -14148,7 +14152,7 @@ For the third test, copy the sample line to the end of the
@file{*scratch*} buffer and then type several spaces at the end of the
line. Place mark right after the word @samp{three} and point at the
end of line. (The end of the line will be the end of the buffer.)
-Type @kbd{C-c =} (or @kbd{M-x count-words-region}) as you did before.
+Type @kbd{C-c =} (or @kbd{M-x @value{COUNT-WORDS}}) as you did before.
Again, Emacs should tell you that the region has no words, since it is
composed only of the whitespace at the end of the line. Instead,
Emacs displays an error message saying @samp{Search failed}.
@@ -14157,7 +14161,7 @@ The two bugs stem from the same problem.
Consider the first manifestation of the bug, in which the command
tells you that the whitespace at the beginning of the line contains
-one word. What happens is this: The @code{M-x count-words-region}
+one word. What happens is this: The @code{M-x @value{COUNT-WORDS}}
command moves point to the beginning of the region. The @code{while}
tests whether the value of point is smaller than the value of
@code{end}, which it is. Consequently, the regular expression search
@@ -14191,7 +14195,7 @@ an error if the search fails. The optional fourth argument is a
repeat count. (In Emacs, you can see a function's documentation by
typing @kbd{C-h f}, the name of the function, and then @key{RET}.)
-In the @code{count-words-region} definition, the value of the end of
+In the @code{@value{COUNT-WORDS}} definition, the value of the end of
the region is held by the variable @code{end} which is passed as an
argument to the function. Thus, we can add @code{end} as an argument
to the regular expression search expression:
@@ -14200,7 +14204,7 @@ to the regular expression search expression:
(re-search-forward "\\w+\\W*" end)
@end smallexample
-However, if you make only this change to the @code{count-words-region}
+However, if you make only this change to the @code{@value{COUNT-WORDS}}
definition and then test the new version of the definition on a
stretch of whitespace, you will receive an error message saying
@samp{Search failed}.
@@ -14231,7 +14235,7 @@ true-or-false-test tests true because the value of point is still less
than the value of end, since the @code{re-search-forward} expression
did not move point. @dots{} and the cycle repeats @dots{}
-The @code{count-words-region} definition requires yet another
+The @code{@value{COUNT-WORDS}} definition requires yet another
modification, to cause the true-or-false-test of the @code{while} loop
to test false if the search fails. Put another way, there are two
conditions that must be satisfied in the true-or-false-test before the
@@ -14265,17 +14269,17 @@ succeeds and as a side effect moves point. Consequently, as words are
found, point is moved through the region. When the search expression
fails to find another word, or when point reaches the end of the
region, the true-or-false-test tests false, the @code{while} loop
-exits, and the @code{count-words-region} function displays one or
+exits, and the @code{@value{COUNT-WORDS}} function displays one or
other of its messages.
-After incorporating these final changes, the @code{count-words-region}
+After incorporating these final changes, the @code{@value{COUNT-WORDS}}
works without bugs (or at least, without bugs that I have found!).
Here is what it looks like:
@smallexample
@group
;;; @r{Final version:} @code{while}
-(defun count-words-region (beginning end)
+(defun @value{COUNT-WORDS} (beginning end)
"Print number of words in the region."
(interactive "r")
(message "Counting words in region ... ")
@@ -14309,7 +14313,7 @@ Here is what it looks like:
@end group
@end smallexample
-@node recursive-count-words, Counting Exercise, count-words-region, Counting Words
+@node recursive-count-words, Counting Exercise, @value{COUNT-WORDS}, Counting Words
@comment node-name, next, previous, up
@section Count Words Recursively
@cindex Count words recursively
@@ -14319,7 +14323,7 @@ Here is what it looks like:
You can write the function for counting words recursively as well as
with a @code{while} loop. Let's see how this is done.
-First, we need to recognize that the @code{count-words-region}
+First, we need to recognize that the @code{@value{COUNT-WORDS}}
function has three jobs: it sets up the appropriate conditions for
counting to occur; it counts the words in the region; and it sends a
message to the user telling how many words there are.
@@ -14333,7 +14337,7 @@ other. One function will set up the conditions and display the
message; the other will return the word count.
Let us start with the function that causes the message to be displayed.
-We can continue to call this @code{count-words-region}.
+We can continue to call this @code{@value{COUNT-WORDS}}.
This is the function that the user will call. It will be interactive.
Indeed, it will be similar to our previous versions of this
@@ -14347,7 +14351,7 @@ previous versions:
@smallexample
@group
;; @r{Recursive version; uses regular expression search}
-(defun count-words-region (beginning end)
+(defun @value{COUNT-WORDS} (beginning end)
"@var{documentation}@dots{}"
(@var{interactive-expression}@dots{})
@end group
@@ -14388,7 +14392,7 @@ Using @code{let}, the function definition looks like this:
@smallexample
@group
-(defun count-words-region (beginning end)
+(defun @value{COUNT-WORDS} (beginning end)
"Print number of words in the region."
(interactive "r")
@end group
@@ -14484,7 +14488,7 @@ Thus, the do-again-test should look like this:
Note that the search expression is part of the do-again-test---the
function returns @code{t} if its search succeeds and @code{nil} if it
fails. (@xref{Whitespace Bug, , The Whitespace Bug in
-@code{count-words-region}}, for an explanation of how
+@code{@value{COUNT-WORDS}}}, for an explanation of how
@code{re-search-forward} works.)
The do-again-test is the true-or-false test of an @code{if} clause.
@@ -14657,7 +14661,7 @@ The wrapper:
@smallexample
@group
;;; @r{Recursive version}
-(defun count-words-region (beginning end)
+(defun @value{COUNT-WORDS} (beginning end)
"Print number of words in the region.
@end group
@@ -14702,11 +14706,11 @@ exclamation mark, and question mark. Do the same using recursion.
Our next project is to count the number of words in a function
definition. Clearly, this can be done using some variant of
-@code{count-word-region}. @xref{Counting Words, , Counting Words:
+@code{@value{COUNT-WORDS}}. @xref{Counting Words, , Counting Words:
Repetition and Regexps}. If we are just going to count the words in
one definition, it is easy enough to mark the definition with the
@kbd{C-M-h} (@code{mark-defun}) command, and then call
-@code{count-word-region}.
+@code{@value{COUNT-WORDS}}.
However, I am more ambitious: I want to count the words and symbols in
every definition in the Emacs sources and then print a graph that
@@ -14719,7 +14723,7 @@ and this will tell.
* Divide and Conquer::
* Words and Symbols:: What to count?
* Syntax:: What constitutes a word or symbol?
-* count-words-in-defun:: Very like @code{count-words}.
+* count-words-in-defun:: Very like @code{@value{COUNT-WORDS}}.
* Several defuns:: Counting several defuns in a file.
* Find a File:: Do you want to look at a file?
* lengths-list-file:: A list of the lengths of many definitions.
@@ -14793,11 +14797,11 @@ of ten words and symbols.
@noindent
However, if we mark the @code{multiply-by-seven} definition with
@kbd{C-M-h} (@code{mark-defun}), and then call
-@code{count-words-region} on it, we will find that
-@code{count-words-region} claims the definition has eleven words, not
+@code{@value{COUNT-WORDS}} on it, we will find that
+@code{@value{COUNT-WORDS}} claims the definition has eleven words, not
ten! Something is wrong!
-The problem is twofold: @code{count-words-region} does not count the
+The problem is twofold: @code{@value{COUNT-WORDS}} does not count the
@samp{*} as a word, and it counts the single symbol,
@code{multiply-by-seven}, as containing three words. The hyphens are
treated as if they were interword spaces rather than intraword
@@ -14805,8 +14809,8 @@ connectors: @samp{multiply-by-seven} is counted as if it were written
@samp{multiply by seven}.
The cause of this confusion is the regular expression search within
-the @code{count-words-region} definition that moves point forward word
-by word. In the canonical version of @code{count-words-region}, the
+the @code{@value{COUNT-WORDS}} definition that moves point forward word
+by word. In the canonical version of @code{@value{COUNT-WORDS}}, the
regexp is:
@smallexample
@@ -14839,8 +14843,8 @@ Syntax tables specify which characters belong to which categories.
Usually, a hyphen is not specified as a `word constituent character'.
Instead, it is specified as being in the `class of characters that are
part of symbol names but not words.' This means that the
-@code{count-words-region} function treats it in the same way it treats
-an interword white space, which is why @code{count-words-region}
+@code{@value{COUNT-WORDS}} function treats it in the same way it treats
+an interword white space, which is why @code{@value{COUNT-WORDS}}
counts @samp{multiply-by-seven} as three words.
There are two ways to cause Emacs to count @samp{multiply-by-seven} as
@@ -14853,7 +14857,7 @@ most common character within symbols that is not typically a word
constituent character; there are others, too.
Alternatively, we can redefine the regular expression used in the
-@code{count-words} definition so as to include symbols. This
+@code{@value{COUNT-WORDS}} definition so as to include symbols. This
procedure has the merit of clarity, but the task is a little tricky.
@need 1200
@@ -14910,7 +14914,7 @@ Here is the full regular expression:
@cindex Counting words in a @code{defun}
We have seen that there are several ways to write a
-@code{count-word-region} function. To write a
+@code{count-words-region} function. To write a
@code{count-words-in-defun}, we need merely adapt one of these
versions.
@@ -15044,7 +15048,7 @@ Put together, the @code{count-words-in-defun} definition looks like this:
How to test this? The function is not interactive, but it is easy to
put a wrapper around the function to make it interactive; we can use
almost the same code as for the recursive version of
-@code{count-words-region}:
+@code{@value{COUNT-WORDS}}:
@smallexample
@group
@@ -18885,7 +18889,7 @@ Lisp Reference Manual}.
@itemize @bullet
@item
-Install the @code{count-words-region} function and then cause it to
+Install the @code{@value{COUNT-WORDS}} function and then cause it to
enter the built-in debugger when you call it. Run the command on a
region containing two words. You will need to press @kbd{d} a
remarkable number of times. On your system, is a `hook' called after
@@ -18894,7 +18898,7 @@ Overview, , Command Loop Overview, elisp, The GNU Emacs Lisp Reference
Manual}.)
@item
-Copy @code{count-words-region} into the @file{*scratch*} buffer,
+Copy @code{@value{COUNT-WORDS}} into the @file{*scratch*} buffer,
instrument the function for Edebug, and walk through its execution.
The function does not need to have a bug, although you can introduce
one if you wish. If the function lacks a bug, the walk-through
@@ -18909,7 +18913,7 @@ for commands made outside of the Edebug debugging buffer.)
@item
In the Edebug debugging buffer, use the @kbd{p}
(@code{edebug-bounce-point}) command to see where in the region the
-@code{count-words-region} is working.
+@code{@value{COUNT-WORDS}} is working.
@item
Move point to some spot further down the function and then type the
@@ -22272,6 +22276,3 @@ airplane.
@bye
-@ignore
- arch-tag: da1a2154-531f-43a8-8e33-fc7faad10acf
-@end ignore
diff --git a/doc/lispintro/lambda-1.eps b/doc/lispintro/lambda-1.eps
index 2f1197c0f9..a9c3c53064 100644
--- a/doc/lispintro/lambda-1.eps
+++ b/doc/lispintro/lambda-1.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:31:53 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/lambda-2.eps b/doc/lispintro/lambda-2.eps
index 84042f5df0..44238a1ad7 100644
--- a/doc/lispintro/lambda-2.eps
+++ b/doc/lispintro/lambda-2.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:33:09 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/lambda-3.eps b/doc/lispintro/lambda-3.eps
index 8ba7da2d4f..1c5cda046e 100644
--- a/doc/lispintro/lambda-3.eps
+++ b/doc/lispintro/lambda-3.eps
@@ -4,8 +4,7 @@
%%CreationDate: Wed Mar 8 14:33:49 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng ([email protected])
-% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-% 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+% Copyright (C) 1995, 1997, 2001-2011 Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
diff --git a/doc/lispintro/makefile.w32-in b/doc/lispintro/makefile.w32-in
index 8c7c5eb052..7294d46b69 100644
--- a/doc/lispintro/makefile.w32-in
+++ b/doc/lispintro/makefile.w32-in
@@ -1,7 +1,6 @@
#### -*- Makefile -*- for the Emacs Lisp Introduction manual.
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-# Free Software Foundation, Inc.
+# Copyright (C) 2003-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
diff --git a/doc/lispref/.arch-inventory b/doc/lispref/.arch-inventory
deleted file mode 100644
index 2f5e6b9eea..0000000000
--- a/doc/lispref/.arch-inventory
+++ /dev/null
@@ -1,4 +0,0 @@
-# Generated files
-precious ^(config\.status|config\.cache)$
-
-# arch-tag: dde817a2-94ff-4c6e-838c-bb5b33e7f0df
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index fd8a9945cf..bd92b2a727 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -15,7 +15,66 @@
* lists.texi (Sets And Lists): Fix misplaced text.
-2011-05-06 Stefan Monnier <[email protected]>
+2011-05-29 Chong Yidong <[email protected]>
+
+ * keymaps.texi (Remapping Commands): Emphasize that the keymap
+ needs to be active (Bug#8350).
+
+2011-05-28 Chong Yidong <[email protected]>
+
+ * minibuf.texi (Reading File Names): Clarify (Bug#8480).
+
+ * tips.texi (Coding Conventions): Remove antediluvian filename
+ limit recommendation (Bug#8538).
+
+2011-05-27 Glenn Morris <[email protected]>
+
+ * modes.texi (Auto Major Mode): Update for set-auto-mode changes.
+
+2011-05-26 Glenn Morris <[email protected]>
+
+ * variables.texi (File Local Variables):
+ Update hack-local-variables `mode-only' return value.
+ Add some more details on what this function does in the other case.
+
+2011-05-19 Glenn Morris <[email protected]>
+
+ * lists.texi (Sets And Lists): Mention cl provides union etc.
+
+2011-05-19 Nix <[email protected]>
+
+ * windows.texi (Displaying Buffers): pop-to-buffer is not a command.
+
+ * text.texi (Parsing HTML): Update for function name changes.
+
+ * syntax.texi (Syntax Flags): Small fix.
+
+ * keymaps.texi (Active Keymaps): Typo fix.
+ (Changing Key Bindings): Grammar fix.
+
+ * frames.texi (Minibuffers and Frames): Grammar fix.
+ (Window System Selections): x-select-enable-clipboard now defaults to t.
+
+ * customize.texi (Common Keywords):
+ * display.texi (Abstract Display):
+ * modes.texi (Auto-Indentation):
+ * nonascii.texi (Converting Representations): Typo fixes.
+
+ * control.texi (Examples of Catch): Call it "goto" not "go to".
+
+2011-05-14 Eli Zaretskii <[email protected]>
+
+ * nonascii.texi (Character Properties): Fix inconsistencies with
+ implementation.
+
+ * text.texi (Special Properties): Move @defvar's out of the
+ @table. (Bug#8652)
+
+2011-05-12 Glenn Morris <[email protected]>
+
+ * display.texi (Image Descriptors): Fix typo. (Bug#8495)
+
+2011-05-12 Stefan Monnier <[email protected]>
* modes.texi (Region to Refontify): Rename from "Region to Fontify".
(Multiline Font Lock):
@@ -23,15 +82,28 @@
* vol1.texi (Top):
* elisp.texi (Top): Update menu accordingly.
-2011-05-05 Drew Adams <[email protected]>
+2011-05-12 Drew Adams <[email protected]>
* modes.texi (Region to Fontify): Fix typo.
-2011-04-13 Juanma Barranquero <[email protected]>
+2011-05-10 Jim Meyering <[email protected]>
+
+ * minibuf.texi: Fix typo "in in -> in".
+
+2011-05-06 Paul Eggert <[email protected]>
+
+ * numbers.texi (Integer Basics): Large integers are treated as floats.
+
+2011-04-30 Lars Magne Ingebrigtsen <[email protected]>
+
+ * processes.texi (Synchronous Processes): Document the (:file
+ "/file-name") syntax for `call-process'.
+
+2011-04-23 Juanma Barranquero <[email protected]>
* windows.texi (Choosing Window): Fix typo.
-2011-04-10 Chong Yidong <[email protected]>
+2011-04-23 Chong Yidong <[email protected]>
* frames.texi (Layout Parameters): Note the difference between
querying and setting parameters for left-fringe and right-fringe
@@ -52,7 +124,20 @@
* buffers.texi (Current Buffer): Copyedits. Don't recommend using
save-excursion. Suggested by Uday S Reddy.
-2011-03-16 Stefan Monnier <[email protected]>
+2011-04-01 Stefan Monnier <[email protected]>
+
+ * variables.texi (Defining Variables): Mention the new meaning of `defvar'.
+ (Lexical Binding): New sub-section.
+
+ * eval.texi (Eval): Discourage the use of `eval'.
+ Document its new `lexical' argument.
+
+2011-03-28 Stefan Monnier <[email protected]>
+
+ * commands.texi (Command Overview): `post-command-hook' is not reset to
+ nil any more.
+
+2011-03-19 Stefan Monnier <[email protected]>
* strings.texi (String Conversion): Don't mention
string-make-(uni|multi)byte (bug#8262).
@@ -60,16 +145,71 @@
* keymaps.texi (Key Binding Commands): Update code point, avoid
"unibyte character" and remove mention of unibyte bindings.
+2011-03-10 Eli Zaretskii <[email protected]>
+
+ * modes.texi (Operator Precedence Grammars): Don't use characters
+ outside ISO-8859-1.
+
+2011-03-09 Eli Zaretskii <[email protected]>
+
+ * intro.texi (Acknowledgements): Convert to ISO-8859-1 encoding.
+
+ * makefile.w32-in (MAKEINFO_OPTS): Add --enable-encoding.
+
+2011-03-08 Glenn Morris <[email protected]>
+
+ * Makefile.in (MAKEINFO_OPTS): Add --enable-encoding.
+ * intro.texi (Acknowledgements): Names to UTF-8.
+ * elisp.texi: Set documentencoding.
+
2011-03-07 Chong Yidong <[email protected]>
* Version 23.3 released.
-2011-02-25 Glenn Morris <[email protected]>
+2011-03-06 Chong Yidong <[email protected]>
+
+ * package.texi: Update index keywords.
+ (Package Archives): New node contents. Document package-x.el.
+
+2011-03-06 Juanma Barranquero <[email protected]>
+
+ * makefile.w32-in (srcs): Add package.texi.
+
+2011-03-06 Chong Yidong <[email protected]>
+
+ * package.texi (Packaging, Packaging Basics, Simple Packages)
+ (Multi-file Packages): Expand and clarify.
+ (Package Archives): Temporary placeholder node.
+
+ * elisp.texi (Top): Update node listing.
+
+ * Makefile.in (srcs): Add package.texi.
+
+2011-03-05 Chong Yidong <[email protected]>
+
+ * processes.texi (Synchronous Processes): Minor clarification
+ (Bug#8149).
+
+2011-03-03 Glenn Morris <[email protected]>
+
+ * files.texi (Truenames): Minor clarification. (Bug#2341)
+
+2011-03-01 Glenn Morris <[email protected]>
+
+ * variables.texi (Directory Local Variables):
+ Mention `(subdirs . nil)' alist element.
+
+2011-02-28 Glenn Morris <[email protected]>
* variables.texi (Directory Local Variables): Mention the optional
mtime argument of dir-locals-set-directory-class. (Bug#3577)
-2011-02-18 Eli Zaretskii <[email protected]>
+2011-02-27 Chong Yidong <[email protected]>
+
+ * minibuf.texi (Minibuffer History): Clarify discussion of
+ minibuffer history lists (Bug#8085).
+
+2011-02-19 Eli Zaretskii <[email protected]>
* elisp.texi: Sync @dircategory with ../../info/dir.
@@ -79,15 +219,36 @@
* variables.texi (Creating Buffer-Local): Explain the meaning of
permanent local variables.
-2011-02-18 Glenn Morris <[email protected]>
+ * files.texi (Visiting Functions): Document find-file-literally,
+ both the command and the variable.
+
+ * variables.texi (Creating Buffer-Local): Explain the meaning of
+ permanent local variables.
+
+2011-02-19 Glenn Morris <[email protected]>
* keymaps.texi (Remapping Commands): Mention how to undo it.
+2011-02-09 Reuben Thomas <[email protected]>
+
+ * loading.texi (Hooks for Loading): Remove unnecessary advice
+ about eval-after-load (Bug#7986).
+
2011-02-05 Chong Yidong <[email protected]>
* commands.texi (Accessing Mouse): Note that a header line is not
included in the row of posn-col-row.
+2011-02-02 Chong Yidong <[email protected]>
+
+ * modes.texi (Major Mode Conventions): Add face guidelines.
+ (Faces for Font Lock): List faces in order of prominence.
+
+2011-02-01 Paul Eggert <[email protected]>
+
+ format-time-string now supports subsecond time stamp resolution
+ * os.texi (Time Parsing): Document %N.
+
2011-01-28 Chong Yidong <[email protected]>
* vol1.texi (Top):
@@ -99,46 +260,69 @@
* keymaps.texi (Defining Menus): Add "menu item" and "extended
menu item" concept index entries (Bug#7805).
-2011-01-23 Chong Yidong <[email protected]>
+2011-01-29 Eli Zaretskii <[email protected]>
+
+ * makefile.w32-in (texinfodir): New variable.
+ (usermanualdir): Remove as redundant with $(emacsdir).
+ (MAKEINFO): Remove options, leave only program name.
+ (MAKEINFO_OPTS): New variable.
+ (texinputdir, $(infodir)/elisp): Use $(MAKEINFO_OPTS).
+
+2011-01-25 Chong Yidong <[email protected]>
Richard Kim <[email protected]>
* loading.texi (Library Search): Document list-load-path-shadows
(Bug#7757).
-2011-01-23 Chong Yidong <[email protected]>
+2011-01-25 Chong Yidong <[email protected]>
* searching.texi (Regexp Special): Remove outdated discussion of
character sets (Bug#7780).
-2011-01-22 Chong Yidong <[email protected]>
-
* frames.texi (Pop-Up Menus): Document where menu title comes
from (Bug#7684).
-2011-01-22 Glenn Morris <[email protected]>
+2011-01-25 Glenn Morris <[email protected]>
* display.texi (Making Buttons): Mention limitation of text buttons.
-2011-01-08 Chong Yidong <[email protected]>
+2011-01-23 Werner Lemberg <[email protected]>
+
+ * Makefile.in (MAKEINFO): Now controlled by `configure'.
+ (MAKEINFO_OPTS): New variable. Use it where appropriate.
+ (ENVADD): New variable to control texi2dvi and texi2pdf.
+
+2011-01-15 Chong Yidong <[email protected]>
* files.texi (Directory Names): Move directory-abbrev-alist doc to
Emacs manual.
-2011-01-07 Eli Zaretskii <[email protected]>
+2011-01-15 Eli Zaretskii <[email protected]>
* files.texi (Directory Names): Explain why FROM in
directory-abbrev-alist should begin with \`. (Bug#7777)
-2010-12-25 Eli Zaretskii <[email protected]>
+2011-01-11 Stefan Monnier <[email protected]>
+
+ * loading.texi (Hooks for Loading): Adjust doc of eval-after-load.
+
+2011-01-02 Eli Zaretskii <[email protected]>
* modes.texi (Emulating Mode Line): Fix last change.
-2010-12-18 Eli Zaretskii <[email protected]>
+2011-01-02 Eli Zaretskii <[email protected]>
* modes.texi (Emulating Mode Line): Update documentation of
format-mode-line according to changes that fixed bug #7587.
-2010-12-11 Eli Zaretskii <[email protected]>
+2010-12-18 Stefan Monnier <[email protected]>
+
+ * modes.texi (Derived Modes): Mention prog-mode.
+
+ * keymaps.texi (Simple Menu Items, Extended Menu Items): Remove mention
+ of the key-binding-data cache since we don't use it any more.
+
+2010-12-13 Eli Zaretskii <[email protected]>
* processes.texi (Shell Arguments):
* strings.texi (Creating Strings): Don't mention "shell commands";
@@ -149,29 +333,38 @@
* processes.texi (Shell Arguments): Fix documentation of
`split-string-and-unquote'. Add indexing. (Bug#7563)
-2010-12-07 Stefan Monnier <[email protected]>
+2010-12-13 Stefan Monnier <[email protected]>
* modes.texi (Auto-Indentation): New section to document SMIE.
(Major Mode Conventions):
* text.texi (Mode-Specific Indent): Refer to it.
-2010-12-04 Eli Zaretskii <[email protected]>
+2010-12-13 Eli Zaretskii <[email protected]>
* display.texi (Other Display Specs): Document left-fringe and
right-fringe display specs.
-2010-12-01 Stefan Monnier <[email protected]>
+2010-12-13 Stefan Monnier <[email protected]>
* backups.texi (Making Backups):
* modes.texi (Example Major Modes): Use recommended coding style.
(Major Mode Basics, Derived Modes): Encourge more strongly use of
define-derived-mode. Mention completion-at-point-functions.
-2010-11-21 Chong Yidong <[email protected]>
+2010-12-13 Chong Yidong <[email protected]>
* nonascii.texi (Converting Representations):
Document byte-to-string.
+2010-12-08 Glenn Morris <[email protected]>
+
+ * buffers.texi (Modification Time):
+ verify-visited-file-modtime now defaults to the current buffer.
+
+2010-11-27 Chong Yidong <[email protected]>
+
+ * nonascii.texi (Converting Representations): Document byte-to-string.
+
* strings.texi (Creating Strings): Don't mention semi-obsolete
function char-to-string.
(String Conversion): Shorten discussion of semi-obsolete function
@@ -183,7 +376,7 @@
* functions.texi (Mapping Functions): Use string instead of
char-to-string in examples.
-2010-11-20 Chong Yidong <[email protected]>
+2010-11-27 Chong Yidong <[email protected]>
* text.texi (Kill Functions, Kill Functions)
(Low-Level Kill Ring, Low-Level Kill Ring): Remove obsolete
@@ -197,61 +390,253 @@
* variables.texi (Defining Variables): Change "pi" example to
"float-pi".
-2010-11-12 Eli Zaretskii <[email protected]>
+2010-11-26 Eli Zaretskii <[email protected]>
+
+ * commands.texi (Click Events): Document the values of X, Y and
+ COL, ROW in the event's position, when the click is on the header
+ or mode line, on the fringes, or in the margins.
+
+2010-11-17 Eli Zaretskii <[email protected]>
* customize.texi (Composite Types): Lower-case index entry.
* loading.texi (How Programs Do Loading):
Document load-file-name. (Bug#7346)
-2010-11-10 Glenn Morris <[email protected]>
+2010-11-17 Glenn Morris <[email protected]>
* text.texi (Kill Functions, Low-Level Kill Ring): Small fixes.
-2010-10-27 Glenn Morris <[email protected]>
+2010-11-13 Eli Zaretskii <[email protected]>
+
+ * display.texi (Usual Display): Characters with no fonts are not
+ necessarily displayed as empty boxes.
+
+2010-10-31 Glenn Morris <[email protected]>
* maps.texi (Standard Keymaps): Update File menu description.
-2010-10-22 Eli Zaretskii <[email protected]>
+2010-10-28 Glenn Morris <[email protected]>
+
+ * Makefile.in (elisp.dvi, elisp.pdf): Also include $emacsdir.
+
+2010-10-24 Eli Zaretskii <[email protected]>
* display.texi (Window Systems): Deprecate use of window-system as
a predicate.
-2010-09-05 Alexander Klimov <[email protected]> (tiny change)
+2010-10-23 Glenn Morris <[email protected]>
+
+ * help.texi (Documentation Basics): Remove mentions of digest-doc and
+ sorted-doc.
+
+2010-10-15 Eli Zaretskii <[email protected]>
+
+ * os.texi (Dynamic Libraries): New node, with slightly modified
+ text deleted from "Image Formats".
+ (System Interface): Add @menu entry for "Dynamic Libraries".
+
+ * display.texi (Image Formats): Remove description of
+ image-library-alist. (Renamed in 2010-10-13T14:50:[email protected].)
+
+2010-10-12 Glenn Morris <[email protected]>
+
+ * book-spine.texinfo: Rename to book-spine.texi.
+
+2010-10-11 Glenn Morris <[email protected]>
+
+ * Makefile.in (MAKEINFO): Add explicit -I$srcdir.
+
+ * Makefile.in (DVIPS): New variable.
+ (.PHONY): Add html, ps.
+ (html, elisp.html, ps, elisp.ps): New targets.
+ (clean): Delete html, ps files.
+ ($(infodir)/elisp): Remove unnecessary includes.
+
+2010-10-09 Eli Zaretskii <[email protected]>
+
+ * makefile.w32-in (emacsdir): New variable.
+ (srcs): Add emacsver.texi.
+ ($(infodir)/elisp, elisp.dvi): Add -I$(emacsdir).
+
+2010-10-09 Glenn Morris <[email protected]>
+
+ * Makefile.in (VPATH): Remove.
+ (infodir): Make it absolute.
+ (mkinfodir, $(infodir)/elisp, infoclean): No need to cd $srcdir.
+
+ * Makefile.in (dist): Anchor regexps.
+
+ * Makefile.in (srcs): Put elisp.texi first.
+ ($(infodir)/elisp, elisp.dvi, elisp.pdf): Use $<.
+
+ * Makefile.in (infoclean): Remove harmless, long-standing error.
+
+ * Makefile.in ($(infodir)): Delete rule.
+ (mkinfodir): New.
+ ($(infodir)/elisp): Use $mkinfodir instead of infodir.
+
+ * Makefile.in (dist): Remove reference to emacsver.texi.in.
+ Also copy emacsver.texi, and edit $emacsdir.
+
+2010-10-09 Glenn Morris <[email protected]>
+
+ * Makefile.in (emacsdir): New variable.
+ (MAKEINFO): Add -I $emacsdir.
+ (dist): Copy emacsver.texi.
+ (srcs): Add emacsver.texi.
+
+ * book-spine.texinfo, elisp.texi, vol2.texi, vol1.texi:
+ Set EMACSVER by including emacsver.texi.
+
+ * Makefile.in (.PHONY): Declare info, dvi, pdf, dist.
+
+2010-10-07 Glenn Morris <[email protected]>
+
+ * Makefile.in (version): New, set by configure.
+ (clean): Delete dist tar file.
+ (dist): Use version in tar name.
+
+2010-10-06 Glenn Morris <[email protected]>
+
+ * Makefile.in: Rearrange to more closely resemble doc/emacs/Makefile.
+ (INSTALL_INFO): Remove unused variable.
+ (mostlyclean, infoclean, dist): New rules.
+ (clean): Delete dvi and pdf files.
+ (maintainer-clean): Remove elisp.oaux, use infoclean.
+ ($(infodir)): Add parallel build workaround.
+
+2010-10-04 Glenn Morris <[email protected]>
+
+ * Makefile.in (dvi, pdf, $(infodir)): New targets.
+ ($(infodir)/elisp): Ensure target directory exists. Use $@.
+ Fix -I typo.
+ (clean): No 'make.out' or 'core' files.
+ (.PHONY): Declare clean rules.
+ (maintainer-clean): Delete pdf file. Guard against cd failures.
+
+2010-10-03 Glenn Morris <[email protected]>
+
+ * files.texi (File Name Components): Remove ignored section about
+ deleted variable directory-sep-char.
+
+2010-10-03 Michael Albinus <[email protected]>
+
+ * files.texi (Magic File Names): New defopt
+ remote-file-name-inhibit-cache.
+
+2010-10-02 Glenn Morris <[email protected]>
+
+ * os.texi (Killing Emacs): Hook now runs in batch mode.
+
+2010-09-18 Stefan Monnier <[email protected]>
+
+ * text.texi (Special Properties): Clarify when modification-hooks run.
+
+2010-09-11 Stefan Monnier <[email protected]>
+
+ * syntax.texi (Syntax Flags): Document new `c' flag.
+
+2010-09-09 Glenn Morris <[email protected]>
+
+ * display.texi (ImageMagick Images): General cleanup.
+
+2010-09-06 Alexander Klimov <[email protected]> (tiny change)
* files.texi (Directory Names): Use \` rather than ^.
+2010-09-02 Jan Djärv <[email protected]>
+
+ * text.texi (Low-Level Kill Ring):
+ * frames.texi (Window System Selections): Remove cut buffer
+ documentation.
+
+2010-08-28 Eli Zaretskii <[email protected]>
+
+ * display.texi (Fringe Size/Pos): Add a cross-reference to "Layout
+ Parameters", where the default fringe width is described.
+
+ * frames.texi (Window Frame Parameters, Basic Parameters)
+ (Position Parameters, Layout Parameters, Management Parameters)
+ (Cursor Parameters, Font and Color Parameters): Add indexing for
+ frame parameters. (Bug#6929)
+
+2010-08-25 Tom Tromey <[email protected]>
+
+ * vol2.texi (Top): Update.
+ * vol1.texi (Top): Update.
+ * tips.texi (Library Headers): Mention Package-Version and
+ Package-Requires.
+ * package.texi: New file.
+ * os.texi (System Interface): Update pointers.
+ * elisp.texi (Top): Link to new nodes. Include package.texi.
+ * anti.texi (Antinews): Update pointers.
+
+2010-08-25 Eli Zaretskii <[email protected]>
+
+ * processes.texi (Filter Functions): Fix last change.
+
+2010-08-24 Markus Triska <[email protected]>
+
+ * processes.texi (Filter Functions): Use `buffer-live-p' instead
+ of `buffer-name' in the main text as well as in the example
+ (Bug#3098).
+
+2010-08-22 Chong Yidong <[email protected]>
+
+ * nonascii.texi (Text Representations):
+ * loading.texi (Loading Non-ASCII):
+ * compile.texi (Byte Compilation): Don't mention obsolete
+ --unibyte command-line argument.
+
2010-08-22 Chong Yidong <[email protected]>
* modes.texi (Defining Minor Modes): Doc fix (Bug#6880).
-2010-08-19 Chong Yidong <[email protected]>
+2010-08-22 Chong Yidong <[email protected]>
* objects.texi (Bool-Vector Type): Minor definition tweak (Bug#6878).
-2010-08-02 Christoph <[email protected]>
+2010-08-20 Eli Zaretskii <[email protected]>
+
+ * commands.texi (Misc Events): Add cross-references to where
+ POSITION of a mouse event is described in detail.
+
+2010-08-08 Christoph <[email protected]>
* control.texi (Handling Errors) <error-message-string>: Fix arg name.
-2010-07-29 Juanma Barranquero <[email protected]>
+2010-08-08 Juanma Barranquero <[email protected]>
* modes.texi (Defining Minor Modes): Use C-backspace, not C-delete.
Suggested by Štěpán Němec <[email protected]>.
-2010-07-28 Juanma Barranquero <[email protected]>
+2010-08-08 Juanma Barranquero <[email protected]>
* minibuf.texi (High-Level Completion): Document args of
`read-buffer-function' (bug#5625).
+2010-07-29 Jan Djärv <[email protected]>
+
+ * frames.texi (Layout Parameters): Add doc for tool-bar-position.
+
+2010-07-29 Michael Albinus <[email protected]>
+
+ * processes.texi (Process Information): Explain process property
+ `remote-tty'.
+
2010-07-27 Juanma Barranquero <[email protected]>
* modes.texi (Defining Minor Modes): Use C-delete in examples,
instead of "\C-\^?" (bug#6334).
-2010-07-21 Juanma Barranquero <[email protected]>
-
* text.texi (Special Properties): Fix typo.
+2010-07-09 Eli Zaretskii <[email protected]>
+
+ * internals.texi (Writing Emacs Primitives): Adapt to ANSI C
+ calling sequences, which are now the standard.
+
2010-06-24 Chong Yidong <[email protected]>
* text.texi (Undo): Clarify command loop behavior (Bug#2433).
@@ -274,8 +659,7 @@
2010-06-19 Chong Yidong <[email protected]>
- * errors.texi (Standard Errors): Remove unnecessary markup
- (Bug#6461).
+ * errors.texi (Standard Errors): Remove unnecessary markup (Bug#6461).
2010-06-02 Chong Yidong <[email protected]>
@@ -292,11 +676,11 @@
* minibuf.texi (Basic Completion): Document completion-boundaries.
(Programmed Completion): Document the new fourth method for boundaries.
-2010-05-07 Chong Yidong <[email protected]>
+2010-05-22 Chong Yidong <[email protected]>
- * Version 23.2 released.
+ * display.texi (Image Cache): Update documentation about image caching.
-2010-05-03 Štěpán Němec <[email protected]> (tiny change)
+2010-05-08 Štěpán Němec <[email protected]> (tiny change)
* windows.texi (Textual Scrolling):
* tips.texi (Coding Conventions):
@@ -305,7 +689,7 @@
* loading.texi (Where Defined):
* edebug.texi (Instrumenting): Fix typos.
-2010-04-25 Chong Yidong <[email protected]>
+2010-05-08 Chong Yidong <[email protected]>
* keymaps.texi (Menu Bar): Document :advertised-binding property.
@@ -321,6 +705,21 @@
* elisp.texi (Top): Update node description.
+2010-05-08 Eli Zaretskii <[email protected]>
+
+ * nonascii.texi (Character Properties):
+ Document unicode-category-table. Add an index entry for Unicode
+ general category.
+
+2010-05-07 Chong Yidong <[email protected]>
+
+ * Version 23.2 released.
+
+2010-04-20 Juanma Barranquero <[email protected]>
+
+ * locals.texi (Standard Buffer-Local Variables):
+ Remove @ignore'd reference to `direction-reversed'.
+
2010-04-14 Juri Linkov <[email protected]>
Fix @deffn without category.
@@ -354,10 +753,18 @@
* frames.texi (Cursor Parameters): Fix typo. (Bug#5760)
-2010-03-21 Chong Yidong <[email protected]>
+2010-03-24 Chong Yidong <[email protected]>
* processes.texi (Network Processes): Document seqpacket type.
+2010-03-20 Dan Nicolaescu <[email protected]>
+
+ * os.texi (System Environment): Do not mention lynxos.
+
+2010-03-10 Chong Yidong <[email protected]>
+
+ * Branch for 23.2.
+
2010-03-06 Chong Yidong <[email protected]>
* objects.texi (Integer Type): Take note of the read syntax
@@ -6248,7 +6655,7 @@
2005-02-05 Eli Zaretskii <[email protected]>
* frames.texi (Color Names): Add pointer to the X docs about RGB
- color specifications. Improve indexing
+ color specifications. Improve indexing.
(Text Terminal Colors): Replace the description of RGB values by
an xref to "Color Names".
@@ -8011,7 +8418,7 @@
* minibuf.texi (Reading File Names): read-file-name has new
arg PREDICATE. New function read-directory-name.
- * macros.texi (Defining Macros): Give definition of `declare'
+ * macros.texi (Defining Macros): Give definition of `declare'.
(Indenting Macros): New node.
* frames.texi (Parameter Access): Add modify-all-frames-parameters.
@@ -8115,7 +8522,7 @@
* numbers.texi (Integer Basics): Add most-positive-fixnum,
most-negative-fixnum.
- * compile.texi (Byte Compilation): Explain no-byte-compile
+ * compile.texi (Byte Compilation): Explain no-byte-compile.
(Compiler Errors): New node.
* os.texi (User Identification): user-uid, user-real-uid
@@ -8782,11 +9189,9 @@
;; Local Variables:
;; coding: utf-8
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 1998-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
diff --git a/doc/lispref/Makefile.in b/doc/lispref/Makefile.in
index f4cd594004..75fa884224 100644
--- a/doc/lispref/Makefile.in
+++ b/doc/lispref/Makefile.in
@@ -1,8 +1,6 @@
# Makefile for the GNU Emacs Lisp Reference Manual.
-# Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
-# 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-# Free Software Foundation, Inc.
+# Copyright (C) 1990-1996, 1998-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -19,26 +17,33 @@
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+SHELL = /bin/sh
# Standard configure variables.
srcdir = @srcdir@
-# Tell make where to find source files; this is needed for the makefiles.
-VPATH=@srcdir@
+version=@version@
-infodir = ../../info
+infodir = $(srcdir)/../../info
# Directory with the (customized) texinfo.tex file.
texinfodir = $(srcdir)/../misc
+# Directory with emacsver.texi.
+emacsdir = $(srcdir)/../emacs
+MAKEINFO = @MAKEINFO@
+MAKEINFO_OPTS = --force --enable-encoding -I $(emacsdir) -I $(srcdir)
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
-SHELL = /bin/sh
-INSTALL_INFO = install-info
-MAKEINFO = makeinfo --force
+DVIPS = dvips
+
+ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(TEXINPUTS)" \
+ MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)"
# List of all the texinfo files in the manual:
srcs = \
+ $(srcdir)/elisp.texi \
+ $(emacsdir)/emacsver.texi \
$(srcdir)/abbrevs.texi \
$(srcdir)/advice.texi \
$(srcdir)/anti.texi \
@@ -52,7 +57,6 @@ srcs = \
$(srcdir)/debugging.texi \
$(srcdir)/display.texi \
$(srcdir)/edebug.texi \
- $(srcdir)/elisp.texi \
$(srcdir)/errors.texi \
$(srcdir)/eval.texi \
$(srcdir)/files.texi \
@@ -76,6 +80,7 @@ srcs = \
$(srcdir)/numbers.texi \
$(srcdir)/objects.texi \
$(srcdir)/os.texi \
+ $(srcdir)/package.texi \
$(srcdir)/positions.texi \
$(srcdir)/processes.texi \
$(srcdir)/searching.texi \
@@ -92,28 +97,67 @@ srcs = \
$(srcdir)/gpl.texi \
$(srcdir)/doclicense.texi
+mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir}
-.PHONY: clean
+.PHONY: info dvi pdf ps
-# The info file is named `elisp'.
info: $(infodir)/elisp
+dvi: elisp.dvi
+html: elisp.html
+pdf: elisp.pdf
+ps: elisp.ps
$(infodir)/elisp: $(srcs)
- cd $(srcdir); $(MAKEINFO) -I. -I$(infodir) elisp.texi -o $(infodir)/elisp
+ $(mkinfodir)
+ $(MAKEINFO) $(MAKEINFO_OPTS) -o $@ $<
elisp.dvi: $(srcs)
- $(TEXI2DVI) -I $(srcdir) -I $(texinfodir) $(srcdir)/elisp.texi
+ $(ENVADD) $(TEXI2DVI) $<
+
+elisp.html: $(srcs)
+ $(MAKEINFO) $(MAKEINFO_OPTS) --html -o $@ $<
+
+elisp.ps: elisp.dvi
+ $(DVIPS) -o $@ $<
elisp.pdf: $(srcs)
- $(TEXI2PDF) -I $(srcdir) -I $(texinfodir) $(srcdir)/elisp.texi
+ $(ENVADD) $(TEXI2PDF) $<
+
+.PHONY: mostlyclean clean distclean maintainer-clean infoclean
+
+## [12] stuff is from two-volume.make.
+mostlyclean:
+ rm -f *.aux *.log *.toc *.cp *.cps *.fn *.fns *.ky *.kys \
+ *.op *.ops *.pg *.pgs *.tp *.tps *.vr *.vrs
+ rm -f elisp[12]*
-clean:
- rm -f *.toc *.aux *.log *.cp *.cps *.fn *.fns *.tp *.tps \
- *.vr *.vrs *.pg *.pgs *.ky *.kys elisp[12]*
- rm -f make.out core
+clean: mostlyclean
+ rm -f elisp.dvi elisp.pdf elisp.ps vol[12].pdf
+ rm -rf elisp.html
+ rm -f emacs-lispref-${version}.tar*
distclean: clean
-maintainer-clean: clean
- rm -f elisp.dvi elisp.oaux
- cd $(infodir); rm -f elisp elisp-[1-9] elisp-[1-9][0-9]
+infoclean:
+ -cd $(infodir) && rm -f elisp elisp-[1-9] elisp-[1-9][0-9]
+
+maintainer-clean: distclean infoclean
+
+.PHONY: dist
+
+## Note this excludes the two-volume stuff.
+dist:
+ rm -rf emacs-lispref-${version}
+ mkdir emacs-lispref-${version}
+ cp ${srcdir}/*.texi ${texinfodir}/texinfo.tex \
+ $(emacsdir)/emacsver.texi ${srcdir}/ChangeLog* \
+ ${srcdir}/README emacs-lispref-${version}/
+ sed -e 's/@sr[c]dir@/./' -e 's/^\(texinfodir *=\).*/\1 ./' \
+ -e 's/^\(emacsdir *=\).*/\1 ./' \
+ -e 's/^\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \
+ -e "s/@ver[s]ion@/${version}/" \
+ ${srcdir}/Makefile.in > emacs-lispref-${version}/Makefile
+ tar -cf emacs-lispref-${version}.tar emacs-lispref-${version}
+ rm -rf emacs-lispref-${version}
+
+### Makefile ends here
diff --git a/doc/lispref/README b/doc/lispref/README
index 8587246194..a9c0922640 100644
--- a/doc/lispref/README
+++ b/doc/lispref/README
@@ -1,5 +1,4 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
diff --git a/doc/lispref/abbrevs.texi b/doc/lispref/abbrevs.texi
index dcc3c57663..57030559d0 100644
--- a/doc/lispref/abbrevs.texi
+++ b/doc/lispref/abbrevs.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1999, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/abbrevs
@node Abbrevs, Processes, Syntax Tables, Top
@@ -511,8 +510,3 @@ This property holds a counter incremented each time a new abbrev is
added to the table.
@end table
-
-
-@ignore
- arch-tag: 5ffdbe08-2cd4-48ec-a5a8-080f95756eec
-@end ignore
diff --git a/doc/lispref/advice.texi b/doc/lispref/advice.texi
index 544a6a211e..2935638122 100644
--- a/doc/lispref/advice.texi
+++ b/doc/lispref/advice.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/advising
@node Advising Functions, Debugging, Byte Compilation, Top
@@ -777,7 +776,3 @@ pieces of advice is the same. The only difference is that
executed even if some previous piece of advice had an error or a
non-local exit. If any around-advice is protected, then the whole
around-advice onion is protected as a result.
-
-@ignore
- arch-tag: 80c135c2-f1c3-4f8d-aa85-f8d8770d307f
-@end ignore
diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi
index 5b8397e7e3..bb1e42c930 100644
--- a/doc/lispref/anti.texi
+++ b/doc/lispref/anti.texi
@@ -1,12 +1,11 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1999, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-@c 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1999, 2002-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@c This node must have no pointers.
-@node Antinews, GNU Free Documentation License, System Interface, Top
+@node Antinews, GNU Free Documentation License, Packaging, Top
@appendix Emacs 22 Antinews
@c Update the elisp.texi, vol1.texi, vol2.texi Antinews menu entries
@c with the above version number.
@@ -154,7 +153,3 @@ Many variables have been removed, including @code{read-circle},
@code{inhibit-changing-match-data}, @code{wrap-prefix}, and
@code{line-prefix},
@end itemize
-
-@ignore
- arch-tag: 1d0ef137-2bad-430e-ae8e-d820d569b5a6
-@end ignore
diff --git a/doc/lispref/back.texi b/doc/lispref/back.texi
index 373da7b1e1..3add7b174d 100644
--- a/doc/lispref/back.texi
+++ b/doc/lispref/back.texi
@@ -1,7 +1,6 @@
\input texinfo @c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@c
@c %**start of header
@@ -36,7 +35,3 @@ are peculiar to Emacs Lisp or relate specifically to editing.
@hfil
@bye
-
-@ignore
- arch-tag: ac7694c8-1f02-4b42-9531-33ba13b179e1
-@end ignore
diff --git a/doc/lispref/backups.texi b/doc/lispref/backups.texi
index e196ce0396..aad0cbc146 100644
--- a/doc/lispref/backups.texi
+++ b/doc/lispref/backups.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/backups
@node Backups and Auto-Saving, Buffers, Files, Top
@@ -752,7 +751,3 @@ This normal hook is run by @code{revert-buffer} after inserting
the modified contents---but only if @code{revert-buffer-function} is
@code{nil}.
@end defvar
-
-@ignore
- arch-tag: 295a6321-e5ab-46d5-aef5-0bb4f447a67f
-@end ignore
diff --git a/doc/lispref/book-spine.texinfo b/doc/lispref/book-spine.texi
index d5785811dc..270def6d8b 100644
--- a/doc/lispref/book-spine.texinfo
+++ b/doc/lispref/book-spine.texi
@@ -4,6 +4,8 @@
@settitle book-spine
@c %**end of header
+@include emacsver.texi
+
@c need dot in text so first space command works!
.
@sp 7
@@ -11,7 +13,7 @@
@center @titlefont{GNU Emacs Lisp Reference Manual}
@sp 5
@center GNU
-@center Emacs Version 23.3.50
+@center Emacs Version @value{EMACSVER}
@center for Unix Users
@sp 5
@@ -23,7 +25,3 @@
@sp 5
@center Free Software Foundation
@bye
-
-@ignore
- arch-tag: 4466c7ca-e549-4119-948c-6eed34e1ff87
-@end ignore
diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi
index 98fb748cd3..0f9de74c94 100644
--- a/doc/lispref/buffers.texi
+++ b/doc/lispref/buffers.texi
@@ -1,7 +1,7 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
+@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/buffers
@node Buffers, Windows, Backups and Auto-Saving, Top
@@ -603,12 +603,12 @@ therefore checks the file's modification time using the functions
described below before saving the file. (@xref{File Attributes},
for how to examine a file's modification time.)
-@defun verify-visited-file-modtime buffer
-This function compares what @var{buffer} has recorded for the
-modification time of its visited file against the actual modification
-time of the file as recorded by the operating system. The two should be
-the same unless some other process has written the file since Emacs
-visited or saved it.
+@defun verify-visited-file-modtime &optional buffer
+This function compares what @var{buffer} (by default, the
+current-buffer) has recorded for the modification time of its visited
+file against the actual modification time of the file as recorded by the
+operating system. The two should be the same unless some other process
+has written the file since Emacs visited or saved it.
The function returns @code{t} if the last actual modification time and
Emacs's recorded modification time are the same, @code{nil} otherwise.
@@ -1232,6 +1232,3 @@ This function returns the current gap position in the current buffer.
This function returns the current gap size of the current buffer.
@end defun
-@ignore
- arch-tag: 2e53cfab-5691-41f6-b5a8-9c6a3462399c
-@end ignore
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index 91aae9594b..eb42ddb11a 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/commands
@@ -92,8 +91,9 @@ and also when the command loop is first entered. At that time,
Quitting is suppressed while running @code{pre-command-hook} and
@code{post-command-hook}. If an error happens while executing one of
-these hooks, it terminates execution of the hook, and clears the hook
-variable to @code{nil} so as to prevent an infinite loop of errors.
+these hooks, it does not terminate execution of the hook; instead
+the error is silenced and the function in which the error occurred
+is removed from the hook.
A request coming into the Emacs server (@pxref{Emacs Server,,,
emacs, The GNU Emacs Manual}) runs these two hooks just as a keyboard
@@ -1285,8 +1285,12 @@ input stream. @xref{Key Sequence Input}.
@item @var{x}, @var{y}
These are the pixel coordinates of the click, relative to
the top left corner of @var{window}, which is @code{(0 . 0)}.
-For the mode or header line, @var{y} does not have meaningful data.
-For the vertical line, @var{x} does not have meaningful data.
+For a click on text, these are relative to the top left corner of
+the window's text area. For the mode or header line, they are
+relative to the top left window edge. For fringes, margins, and the
+vertical border, @var{x} does not have meaningful data. For fringes
+and margins, @var{y} is relative to the bottom edge of the header
+line.
@item @var{timestamp}
This is the time at which the event occurred, in milliseconds.
@@ -1316,7 +1320,12 @@ the window.
@item @var{col}, @var{row}
These are the actual coordinates of the glyph under the @var{x},
@var{y} position, possibly padded with default character width
-glyphs if @var{x} is beyond the last glyph on the line.
+glyphs if @var{x} is beyond the last glyph on the line. For clicks on
+the header or mode line, these are measured from the top left edge of
+the header or mode line. For clicks on the fringes and on the
+vertical border, these have no meaningful data. For clicks on the
+margins, @var{col} is measured from the left edge of the margin area
+and @var{row} is measured from the top of the margin area.
@item @var{image}
This is the image object on which the click occurred. It is either
@@ -1333,7 +1342,7 @@ left corner of the character glyph clicked on.
These are the pixel width and height of @var{object} or, if this is
@code{nil}, those of the character glyph clicked on.
@end table
-
+
@sp 1
For mouse clicks on a scroll-bar, @var{position} has this form:
@@ -1616,7 +1625,8 @@ These kinds of event are generated by moving a mouse wheel. Their
usual meaning is a kind of scroll or zoom.
The element @var{position} is a list describing the position of the
-event, in the same format as used in a mouse-click event.
+event, in the same format as used in a mouse-click event (@pxref{Click
+Events}).
@vindex mouse-wheel-up-event
@vindex mouse-wheel-down-event
@@ -1633,9 +1643,10 @@ selected in an application outside of Emacs, and then dragged and
dropped onto an Emacs frame.
The element @var{position} is a list describing the position of the
-event, in the same format as used in a mouse-click event, and
-@var{files} is the list of file names that were dragged and dropped.
-The usual way to handle this event is by visiting these files.
+event, in the same format as used in a mouse-click event (@pxref{Click
+Events}), and @var{files} is the list of file names that were dragged
+and dropped. The usual way to handle this event is by visiting these
+files.
This kind of event is generated, at present, only on some kinds of
systems.
@@ -3382,7 +3393,3 @@ This normal hook (@pxref{Standard Hooks}) is run when a keyboard
macro terminates, regardless of what caused it to terminate (reaching
the macro end or an error which ended the macro prematurely).
@end defvar
-
-@ignore
- arch-tag: e34944ad-7d5c-4980-be00-36a5fe54d4b1
-@end ignore
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index b91e162623..fe5563370c 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/compile
@node Byte Compilation, Advising Functions, Loading, Top
@@ -22,12 +21,6 @@ hardware (as true compiled code is), byte-code is completely
transportable from machine to machine without recompilation. It is not,
however, as fast as true compiled code.
- Compiling a Lisp file with the Emacs byte compiler always reads the
-file as multibyte text, even if Emacs was started with @samp{--unibyte},
-unless the file specifies otherwise. This is so that compilation gives
-results compatible with running the same file without compilation.
-@xref{Loading Non-ASCII}.
-
In general, any version of Emacs can run byte-compiled code produced
by recent earlier versions of Emacs, but the reverse is not true.
@@ -796,7 +789,3 @@ The @code{silly-loop} function is somewhat more complex:
@end group
@end example
-
-@ignore
- arch-tag: f78e3050-2f0a-4dee-be27-d9979a0a2289
-@end ignore
diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi
index f3da3ccd34..875c23658b 100644
--- a/doc/lispref/control.texi
+++ b/doc/lispref/control.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/control
@node Control Structures, Variables, Evaluation, Top
@@ -624,7 +623,7 @@ error is signaled with data @code{(@var{tag} @var{value})}.
@subsection Examples of @code{catch} and @code{throw}
One way to use @code{catch} and @code{throw} is to exit from a doubly
-nested loop. (In most languages, this would be done with a ``go to.'')
+nested loop. (In most languages, this would be done with a ``goto.'')
Here we compute @code{(foo @var{i} @var{j})} for @var{i} and @var{j}
varying from 0 to 9:
@@ -1319,7 +1318,3 @@ quit, and the quit happens immediately after the function
@code{ftp-setup-buffer} returns but before the variable @code{process} is
set, the process will not be killed. There is no easy way to fix this bug,
but at least it is very unlikely.
-
-@ignore
- arch-tag: 8abc30d4-4d3a-47f9-b908-e9e971c18c6d
-@end ignore
diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi
index 8ce523dda2..e58c8c298c 100644
--- a/doc/lispref/customize.texi
+++ b/doc/lispref/customize.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1997-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/customize
@node Customization, Loading, Macros, Top
@@ -175,7 +174,7 @@ For example, the MH-E package updates this alist with the following:
The value of @var{package} needs to be unique and it needs to match
the @var{package} value appearing in the @code{:package-version}
-keyword. Since the user might see the value in a error message, a good
+keyword. Since the user might see the value in an error message, a good
choice is the official name of the package, such as MH-E or Gnus.
@end defvar
@@ -1282,7 +1281,3 @@ the inferior widgets will convert @emph{their} inferior widgets. If
the data structure is itself recursive, this conversion is an infinite
recursion. The @code{lazy} widget prevents the recursion: it convert
its @code{:type} argument only when needed.
-
-@ignore
- arch-tag: d1b8fad3-f48c-4ce4-a402-f73b5ef19bd2
-@end ignore
diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi
index 13ebbabbb9..ed146453df 100644
--- a/doc/lispref/debugging.texi
+++ b/doc/lispref/debugging.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/debugging
@node Debugging, Read and Print, Advising Functions, Top
@@ -817,7 +816,3 @@ the error.
successfully, then point is located at the end of the form. In this
case, this technique can't localize the error precisely, but can still
show you which function to check.
-
-@ignore
- arch-tag: ddc57378-b0e6-4195-b7b6-43f8777395a7
-@end ignore
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 4a647ef15a..199a20cc2c 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -1,8 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/display
@node Display, System Interface, Processes, Top
@@ -3214,7 +3212,9 @@ width from the window's frame.
The values of these variables take effect when you display the
buffer in a window. If you change them while the buffer is visible,
you can call @code{set-window-buffer} to display it once again in the
-same window, to make the changes take effect.
+same window, to make the changes take effect. A buffer that does not
+specify values for these variables will use the default values
+specified for the frame; see @ref{Layout Parameters}.
@defun set-window-fringes window left &optional right outside-margins
This function sets the fringe widths of window @var{window}.
@@ -4046,6 +4046,7 @@ displayed (@pxref{Display Feature Testing}).
* GIF Images:: Special features for GIF format.
* TIFF Images:: Special features for TIFF format.
* PostScript Images:: Special features for PostScript format.
+* ImageMagick Images:: Special features available through ImageMagick.
* Other Image Types:: Various other formats are supported.
* Defining Images:: Convenient ways to define an image for later use.
* Showing Images:: Convenient ways to display an image once it is defined.
@@ -4059,10 +4060,12 @@ displayed (@pxref{Display Feature Testing}).
Emacs can display a number of different image formats; some of them
are supported only if particular support libraries are installed on
-your machine. In some environments, Emacs can load image
-libraries on demand; if so, the variable @code{image-library-alist}
-can be used to modify the set of known names for these dynamic
-libraries (though it is not possible to add new image formats).
+your machine. In some environments, Emacs can load support libraries
+on demand; if so, the variable @code{dynamic-library-alist}
+(@pxref{Dynamic Libraries}) can be used to modify the set of known
+names for these dynamic libraries (though it is not possible to add
+new image formats). Note that image types @code{pbm} and @code{xbm}
+do not depend on external libraries and are always available in Emacs.
The supported image formats include XBM, XPM (this requires the
libraries @code{libXpm} version 3.4k and @code{libz}), GIF (requiring
@@ -4086,24 +4089,6 @@ To know which image types are really available, use
@code{image-type-available-p}.
@end defvar
-@defvar image-library-alist
-This in an alist of image types vs external libraries needed to
-display them.
-
-Each element is a list @code{(@var{image-type} @var{library}...)},
-where the car is a supported image format from @code{image-types}, and
-the rest are strings giving alternate filenames for the corresponding
-external libraries to load.
-
-Emacs tries to load the libraries in the order they appear on the
-list; if none is loaded, the running session of Emacs won't support
-the image type. @code{pbm} and @code{xbm} don't need to be listed;
-they're always supported.
-
-This variable is ignored if the image libraries are statically linked
-into Emacs.
-@end defvar
-
@defun image-type-available-p type
This function returns non-@code{nil} if image type @var{type} is
available, i.e., if images of this type can be loaded and displayed in
@@ -4229,14 +4214,14 @@ Laplace edge-detection currently uses a matrix of
@tex
$$\pmatrix{1 & 0 & 0 \cr
0& 0 & 0 \cr
- 9 & 9 & -1 \cr}$$
+ 0 & 0 & -1 \cr}$$
@end tex
@end iftex
@ifnottex
@display
(1 0 0
0 0 0
- 9 9 -1)
+ 0 0 -1)
@end display
@end ifnottex
@@ -4470,6 +4455,60 @@ specifying the bounding box of the PostScript image, analogous to the
@end example
@end table
+@node ImageMagick Images
+@subsection ImageMagick Images
+@cindex ImageMagick images
+@cindex images, support for more formats
+
+ If you build Emacs with ImageMagick (@url{http://www.imagemagick.org})
+support, you can use the ImageMagick library to load many image formats.
+
+@findex imagemagick-types
+The function @code{imagemagick-types} returns a list of image file
+extensions that your installation of ImageMagick supports. To enable
+support, you must call the function @code{imagemagick-register-types}.
+
+@vindex imagemagick-types-inhibit
+The variable @code{imagemagick-types-inhibit} specifies a list of
+image types that you do @emph{not} want ImageMagick to handle. There
+may be overlap between image loaders in your Emacs installation, and
+you may prefer to use a different one for a given image type (which
+@c FIXME how is this priority determined?
+loader will be used in practice depends on the priority of the loaders).
+@c FIXME why are these uppercase when image-types is lower-case?
+@c FIXME what are the possibe options? Are these actually file extensions?
+For example, if you never want to use the ImageMagick loader to use
+JPEG files, add @code{JPG} to this list.
+
+@vindex imagemagick-render-type
+You can set the variable @code{imagemagick-render-type} to choose
+between screen render methods for the ImageMagick loader. The options
+are: @code{0}, a conservative method which works with older
+@c FIXME details of this "newer method"?
+@c Presumably it is faster but may be less "robust"?
+ImageMagick versions (it is a bit slow, but robust); and @code{1},
+a newer ImageMagick method.
+
+Images loaded with ImageMagick support a few new display specifications:
+
+@table @code
+@item :width, :height
+The @code{:width} and @code{:height} keywords are used for scaling the
+image. If only one of them is specified, the other one will be
+calculated so as to preserve the aspect ratio. If both are specified,
+aspect ratio may not be preserved.
+
+@item :rotation
+Specifies a rotation angle in degrees.
+
+@item :index
+Specifies which image to view inside an image bundle file format, such
+as TIFF or DJVM. You can use the @code{image-metadata} function to
+retrieve the total number of images in an image bundle (this is
+similar to how GIF files work).
+@end table
+
+
@node Other Image Types
@subsection Other Image Types
@cindex PBM
@@ -4735,29 +4774,35 @@ cache, it can always be displayed, even if the value of
efficiently. When Emacs displays an image, it searches the image
cache for an existing image specification @code{equal} to the desired
specification. If a match is found, the image is displayed from the
-cache; otherwise, Emacs loads the image normally.
-
- Occasionally, you may need to tell Emacs to refresh the images
-associated with a given image specification. For example, suppose you
-display an image using a specification that contains a @code{:file}
-property. The image is automatically cached, and subsequent displays
-of that image, with the same image specification, will use the image
-cache. If the image file changes in the meantime, Emacs would be
-displaying the old version of the image. In such a situation, you can
-``refresh'' the image by calling @code{image-refresh}.
-
- In Emacs' current implementation, each graphical terminal possesses
-an image cache, which is shared by all the frames on that terminal
+cache. Otherwise, Emacs loads the image normally.
+
+@defun image-flush spec &optional frame
+This function removes the image with specification @var{spec} from the
+image cache of frame @var{frame}. Image specifications are compared
+using @code{equal}. If @var{frame} is @code{nil}, it defaults to the
+selected frame. If @var{frame} is @code{t}, the image is flushed on
+all existing frames.
+
+In Emacs' current implementation, each graphical terminal possesses an
+image cache, which is shared by all the frames on that terminal
(@pxref{Multiple Terminals}). Thus, refreshing an image in one frame
also refreshes it in all other frames on the same terminal.
-
-@defun image-refresh spec &optional frame
-This function refreshes any images with image specifications
-@code{equal} to @var{spec} on frame @var{frame}. If @var{frame} is
-@code{nil}, it defaults to the selected frame. If @var{frame} is
-@code{t}, the refresh is applied to all existing frames.
@end defun
+ One use for @code{image-flush} is to tell Emacs about a change in an
+image file. If an image specification contains a @code{:file}
+property, the image is cached based on the file's contents when the
+image is first displayed. Even if the file subsequently changes,
+Emacs continues displaying the old version of the image. Calling
+@code{image-flush} flushes the image from the cache, forcing Emacs to
+re-read the file the next time it needs to display that image.
+
+ Another use for @code{image-flush} is for memory conservation. If
+your Lisp program creates a large number of temporary images over a
+period much shorter than @code{image-cache-eviction-delay} (see
+below), you can opt to flush unused images yourself, instead of
+waiting for Emacs to do it automatically.
+
@defun clear-image-cache &optional filter
This function clears an image cache, removing all the images stored in
it. If @var{filter} is omitted or @code{nil}, it clears the cache for
@@ -4773,9 +4818,12 @@ period of time, Emacs removes it from the cache and frees the
associated memory.
@defvar image-cache-eviction-delay
-This variable specifies the number of seconds an image can remain in the
-cache without being displayed. When an image is not displayed for this
-length of time, Emacs removes it from the image cache.
+This variable specifies the number of seconds an image can remain in
+the cache without being displayed. When an image is not displayed for
+this length of time, Emacs removes it from the image cache.
+
+Under some circumstances, if the number of images in the cache grows
+too large, the actual eviction delay may be shorter than this.
If the value is @code{nil}, Emacs does not remove images from the cache
except when you explicitly clear it. This mode can be useful for
@@ -5152,7 +5200,7 @@ element value into the current buffer.
Typically, you define an ewoc with @code{ewoc-create}, and then pass
the resulting ewoc structure to other functions in the Ewoc package to
build nodes within it, and display it in the buffer. Once it is
-displayed in the buffer, other functions determine the correspondance
+displayed in the buffer, other functions determine the correspondence
between buffer positions and nodes, move point from one node's textual
representation to another, and so forth. @xref{Abstract Display
Functions}.
@@ -5537,9 +5585,9 @@ digit characters representing the character code in octal. (A display
table can specify a glyph to use instead of @samp{\}.)
@item
-Multibyte character codes above 256 are displayed as themselves, or as a
-question mark or empty box if the terminal cannot display that
-character.
+Multibyte character codes above 256 are displayed as themselves, or as
+a question mark or a hex code or an empty box if the terminal cannot
+display that character.
@end itemize
The usual display conventions apply even when there is a display
diff --git a/doc/lispref/doclicense.texi b/doc/lispref/doclicense.texi
index 9adddffba9..0c2d47827a 100644
--- a/doc/lispref/doclicense.texi
+++ b/doc/lispref/doclicense.texi
@@ -508,7 +508,3 @@ to permit their use in free software.
@c Local Variables:
@c ispell-local-pdict: "ispell-dict"
@c End:
-
-@ignore
- arch-tag: 9014cf6e-f3c4-401d-b8da-4fe52723984c
-@end ignore
diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi
index cd2c128696..391c22ba09 100644
--- a/doc/lispref/edebug.texi
+++ b/doc/lispref/edebug.texi
@@ -1,7 +1,6 @@
@comment -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1992, 1993, 1994, 1998, 1999, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1992-1994, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@c This file can also be used by an independent Edebug User
@@ -1588,7 +1587,3 @@ If non-@code{nil}, an expression to test for at every stop point. If
the result is non-@code{nil}, then break. Errors are ignored.
@xref{Global Break Condition}.
@end defopt
-
-@ignore
- arch-tag: 74842db8-019f-4818-b5a4-b2de878e57fd
-@end ignore
diff --git a/doc/lispref/elisp-covers.texi b/doc/lispref/elisp-covers.texi
index f7d1eaae02..92dfb7a074 100644
--- a/doc/lispref/elisp-covers.texi
+++ b/doc/lispref/elisp-covers.texi
@@ -1,7 +1,6 @@
\input texinfo @c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@c
@comment %**start of header
@@ -251,7 +250,3 @@
@end titlepage
@bye
-
-@ignore
- arch-tag: 02d65d63-3b64-49bc-a5c0-bfd5eabb6c98
-@end ignore
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index b140a1343d..264d63511b 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -8,7 +8,7 @@
@c Please remember to update the edition number in README as well.
@c And also the copies in vol1.texi and vol2.texi.
@set VERSION 3.0
-@set EMACSVER 23.3.50
+@include emacsver.texi
@set DATE July 2009
@c in general, keep the following line commented out, unless doing a
@@ -44,8 +44,7 @@
This is edition @value{VERSION} of the GNU Emacs Lisp Reference Manual,@*
corresponding to Emacs version @value{EMACSVER}.
-Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
-1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+Copyright @copyright{} 1990-1996, 1998-2011 Free Software
Foundation, Inc.
@quotation
@@ -63,6 +62,8 @@ developing GNU and promoting software freedom.''
@end quotation
@end copying
+@documentencoding ISO-8859-1
+
@dircategory GNU Emacs Lisp
@direntry
* Elisp: (elisp). The Emacs Lisp Reference Manual.
@@ -159,6 +160,8 @@ Cover art by Etienne Suvasa.
* System Interface:: Getting the user id, system type, environment
variables, and other such things.
+* Packaging:: Preparing Lisp code for distribution.
+
Appendices
* Antinews:: Info for users downgrading to Emacs 22.
@@ -1393,6 +1396,13 @@ Operating System Interface
* Session Management:: Saving and restoring state with
X Session Management.
+Preparing Lisp code for distribution
+
+* Packaging Basics:: The basic concepts of Emacs Lisp packages.
+* Simple Packages:: How to package a single .el file.
+* Multi-file Packages:: How to package multiple files.
+* Package Archives:: Maintaining package archives.
+
Starting Up Emacs
* Startup Summary:: Sequence of actions Emacs performs at startup.
@@ -1489,6 +1499,8 @@ Object Internals
@include display.texi
@include os.texi
+@include package.texi
+
@c MOVE to Emacs Manual: include misc-modes.texi
@c appendices
@@ -1518,7 +1530,3 @@ Object Internals
These words prevent "local variables" above from confusing Emacs.
-
-@ignore
- arch-tag: f7e9a219-a0e1-4776-b631-08eaa1d49b34
-@end ignore
diff --git a/doc/lispref/errors.texi b/doc/lispref/errors.texi
index 1ec1029b96..2c7549d044 100644
--- a/doc/lispref/errors.texi
+++ b/doc/lispref/errors.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1999, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1993, 1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/errors
@node Standard Errors, Standard Buffer-Local Variables, GNU Emacs Internals, Top
@@ -203,7 +202,3 @@ This is a subcategory of @code{domain-error}.@*
This is a subcategory of @code{domain-error}.@*
@xref{Math Functions}.
@end table
-
-@ignore
- arch-tag: 717c6048-5d9d-4c7d-9a62-df57390b6f19
-@end ignore
diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi
index d5d271c1ad..74f3d9c48b 100644
--- a/doc/lispref/eval.texi
+++ b/doc/lispref/eval.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 1998, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/eval
@node Evaluation, Control Structures, Symbols, Top
@@ -586,6 +585,11 @@ occurrence in a program being run. On rare occasions, you may need to
write code that evaluates a form that is computed at run time, such as
after reading a form from text being edited or getting one from a
property list. On these occasions, use the @code{eval} function.
+Often @code{eval} is not needed and something else should be used instead.
+For example, to get the value of a variable, while @code{eval} works,
+@code{symbol-value} is preferable; or rather than store expressions
+in a property list that then need to go through @code{eval}, it is better to
+store functions instead that are then passed to @code{funcall}.
The functions and variables described in this section evaluate forms,
specify limits to the evaluation process, or record recently returned
@@ -597,10 +601,13 @@ to store an expression in the data structure and evaluate it. Using
functions provides the ability to pass information to them as
arguments.
-@defun eval form
+@defun eval form &optional lexical
This is the basic function evaluating an expression. It evaluates
@var{form} in the current environment and returns the result. How the
evaluation proceeds depends on the type of the object (@pxref{Forms}).
+@var{lexical} if non-nil means to evaluate @var{form} using lexical scoping
+rules (@pxref{Lexical Binding}) instead of the default dynamic scoping used
+historically in Emacs Lisp.
Since @code{eval} is a function, the argument expression that appears
in a call to @code{eval} is evaluated twice: once as preparation before
@@ -748,7 +755,3 @@ particular elements, like this:
@end group
@end example
@end defvar
-
-@ignore
- arch-tag: f723a4e0-31b3-453f-8afc-0bf8fd276d57
-@end ignore
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index e2560c2abf..72f39f681a 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/files
@@ -1042,7 +1041,8 @@ because they eliminate symbolic links as a cause of name variation.
@defun file-truename filename
The function @code{file-truename} returns the truename of the file
-@var{filename}. The argument must be an absolute file name.
+@var{filename}. If the argument is not an absolute file name,
+this function first expands it against @code{default-directory}.
This function does not expand environment variables. Only
@code{substitute-in-file-name} does that. @xref{Definition of
@@ -1788,20 +1788,6 @@ Note that the @samp{.~3~} in the two last examples is the backup part,
not an extension.
@end defun
-@ignore
-Andrew Innes says that this
-
-@c @defvar directory-sep-char
-This variable holds the character that Emacs normally uses to separate
-file name components. The default value is @code{?/}, but on MS-Windows
-you can set it to @code{?\\}; then the functions that transform file names
-use backslashes in their output.
-
-File names using backslashes work as input to Lisp primitives even on
-MS-DOS and MS-Windows, even if @code{directory-sep-char} has its default
-value of @code{?/}.
-@end defvar
-@end ignore
@node Relative File Names
@subsection Absolute and Relative File Names
@@ -2858,6 +2844,34 @@ non-magic directory to serve as its current directory, and this function
is a good way to come up with one.
@end defun
+@defopt remote-file-name-inhibit-cache
+Whether to use the remote file-name cache for read access.
+
+File attributes of remote files are cached for better performance. If
+they are changed out of Emacs' control, the cached values become
+invalid, and must be reread.
+
+When set to @code{nil}, cached values are always used. This shall be
+set with care. When set to @code{t}, cached values are never used.
+ALthough this is the safest value, it could result in performance
+degradation.
+
+A compromise is to set it to a positive number. This means that
+cached values are used for that amount of seconds since they were
+cached.
+
+In case a remote file is checked regularly, it might be reasonable to
+let-bind this variable to a value less then the time period between
+two checks. Example:
+
+@example
+(defun display-time-file-nonempty-p (file)
+ (let ((remote-file-name-inhibit-cache (- display-time-interval 5)))
+ (and (file-exists-p file)
+ (< 0 (nth 7 (file-attributes (file-chase-links file)))))))
+@end example
+@end defopt
+
@node Format Conversion
@section File Format Conversion
@@ -3174,7 +3188,3 @@ will produce good, general extensions we can install in Emacs.
names or values---because a program that general is probably difficult
to write, and slow. Instead, choose a set of possible data types that
are reasonably flexible, and not too hard to encode.
-
-@ignore
- arch-tag: 141f74ce-6ae3-40dc-a6c4-ef83fc4ec35c
-@end ignore
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index 0c81718750..c513645617 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/frames
@@ -461,6 +460,7 @@ Line Arguments for Emacs Invocation, emacs, The GNU Emacs Manual}.
@node Window Frame Parameters
@subsection Window Frame Parameters
+@cindex frame parameters for windowed displays
Just what parameters a frame has depends on what display mechanism
it uses. This section describes the parameters that have special
@@ -489,16 +489,19 @@ terminal frames.
frame. @code{title} and @code{name} are meaningful on all terminals.
@table @code
+@vindex display, a frame parameter
@item display
The display on which to open this frame. It should be a string of the
form @code{"@var{host}:@var{dpy}.@var{screen}"}, just like the
@code{DISPLAY} environment variable.
+@vindex display-type, a frame parameter
@item display-type
This parameter describes the range of possible colors that can be used
in this frame. Its value is @code{color}, @code{grayscale} or
@code{mono}.
+@vindex title, a frame parameter
@item title
If a frame has a non-@code{nil} title, it appears in the window
system's title bar at the top of the frame, and also in the mode line
@@ -507,6 +510,7 @@ of windows in that frame if @code{mode-line-frame-identification} uses
Emacs is not using a window system, and can only display one frame at
a time. @xref{Frame Titles}.
+@vindex name, a frame parameter
@item name
The name of the frame. The frame name serves as a default for the frame
title, if the @code{title} parameter is unspecified or @code{nil}. If
@@ -520,11 +524,13 @@ looking up X resources for the frame.
@node Position Parameters
@subsubsection Position Parameters
+@cindex window position on display
Position parameters' values are normally measured in pixels, but on
text-only terminals they count characters or lines instead.
@table @code
+@vindex left, a frame parameter
@item left
The position, in pixels, of the left (or right) edge of the frame with
respect to the left (or right) edge of the screen. The value may be:
@@ -550,11 +556,13 @@ Some window managers ignore program-specified positions. If you want to
be sure the position you specify is not ignored, specify a
non-@code{nil} value for the @code{user-position} parameter as well.
+@vindex top, a frame parameter
@item top
The screen position of the top (or bottom) edge, in pixels, with respect
to the top (or bottom) edge of the screen. It works just like
@code{left}, except vertically instead of horizontally.
+@vindex icon-left, a frame parameter
@item icon-left
The screen position of the left edge @emph{of the frame's icon}, in
pixels, counting from the left edge of the screen. This takes effect if
@@ -564,11 +572,13 @@ If you specify a value for this parameter, then you must also specify
a value for @code{icon-top} and vice versa. The window manager may
ignore these two parameters.
+@vindex icon-top, a frame parameter
@item icon-top
The screen position of the top edge @emph{of the frame's icon}, in
pixels, counting from the top edge of the screen. This takes effect if
and when the frame is iconified.
+@vindex user-position, a frame parameter
@item user-position
When you create a frame and specify its screen position with the
@code{left} and @code{top} parameters, use this parameter to say whether
@@ -576,6 +586,7 @@ the specified position was user-specified (explicitly requested in some
way by a human user) or merely program-specified (chosen by a program).
A non-@code{nil} value says the position was user-specified.
+@cindex window positions and window managers
Window managers generally heed user-specified positions, and some heed
program-specified positions too. But many ignore program-specified
positions, placing the window in a default fashion or letting the user
@@ -591,24 +602,31 @@ parameters represent the user's stated preference; otherwise, use
@node Size Parameters
@subsubsection Size Parameters
+@cindex window size on display
Size parameters' values are normally measured in pixels, but on
text-only terminals they count characters or lines instead.
@table @code
+@vindex height, a frame parameter
@item height
The height of the frame contents, in characters. (To get the height in
pixels, call @code{frame-pixel-height}; see @ref{Size and Position}.)
+@vindex width, a frame parameter
@item width
The width of the frame contents, in characters. (To get the width in
pixels, call @code{frame-pixel-width}; see @ref{Size and Position}.)
+@vindex user-size, a frame parameter
@item user-size
This does for the size parameters @code{height} and @code{width} what
-the @code{user-position} parameter (see above) does for the position
-parameters @code{top} and @code{left}.
+the @code{user-position} parameter (@pxref{Position Parameters,
+user-position}) does for the position parameters @code{top} and
+@code{left}.
+@cindex full-screen frames
+@vindex fullscreen, a frame parameter
@item fullscreen
Specify that width, height or both shall be maximized. The value
@code{fullwidth} specifies that width shall be as wide as possible.
@@ -623,33 +641,42 @@ covers the whole screen.
@node Layout Parameters
@subsubsection Layout Parameters
+@cindex layout parameters of frames
+@cindex frame layout parameters
These frame parameters enable or disable various parts of the
frame, or control their sizes.
@table @code
+@vindex border-width, a frame parameter
@item border-width
The width in pixels of the frame's border.
+@vindex internal-border-width, a frame parameter
@item internal-border-width
The distance in pixels between text (or fringe) and the frame's border.
+@vindex vertical-scroll-bars, a frame parameter
@item vertical-scroll-bars
Whether the frame has scroll bars for vertical scrolling, and which side
of the frame they should be on. The possible values are @code{left},
@code{right}, and @code{nil} for no scroll bars.
@ignore
+@vindex horizontal-scroll-bars, a frame parameter
@item horizontal-scroll-bars
Whether the frame has scroll bars for horizontal scrolling
(non-@code{nil} means yes). Horizontal scroll bars are not currently
implemented.
@end ignore
+@vindex scroll-bar-width, a frame parameter
@item scroll-bar-width
The width of vertical scroll bars, in pixels, or @code{nil} meaning to
use the default width.
+@vindex left-fringe, a frame parameter
+@vindex right-fringe, a frame parameter
@item left-fringe
@itemx right-fringe
The default width of the left and right fringes of windows in this
@@ -669,17 +696,26 @@ right fringe. However, you can force one fringe or the other to a
precise width by specifying that width as a negative integer. If both
widths are negative, only the left fringe gets the specified width.
+@vindex menu-bar-lines, a frame parameter
@item menu-bar-lines
The number of lines to allocate at the top of the frame for a menu
bar. The default is 1. A value of @code{nil} means don't display a
menu bar. @xref{Menu Bar}. (The X toolkit and GTK allow at most one
menu bar line; they treat larger values as 1.)
+@vindex tool-bar-lines, a frame parameter
@item tool-bar-lines
The number of lines to use for the tool bar. A value of @code{nil}
means don't display a tool bar. (GTK and Nextstep allow at most one
tool bar line; they treat larger values as 1.)
+@vindex tool-bar-position, a frame parameter
+@item tool-bar-position
+The position of the tool bar. Currently only for the GTK tool bar.
+Value can be one of @code{top}, @code{bottom} @code{left}, @code{right}.
+The default is @code{top}.
+
+@vindex line-spacing, a frame parameter
@item line-spacing
Additional space to leave below each text line, in pixels (a positive
integer). @xref{Line Height}, for more information.
@@ -692,6 +728,7 @@ integer). @xref{Line Height}, for more information.
with which buffers have been, or should, be displayed in the frame.
@table @code
+@vindex minibuffer, a frame parameter
@item minibuffer
Whether this frame has its own minibuffer. The value @code{t} means
yes, @code{nil} means no, @code{only} means this frame is just a
@@ -701,6 +738,7 @@ frame), the frame uses that minibuffer.
This frame parameter takes effect when the frame is created, and can
not be changed afterwards.
+@vindex buffer-predicate, a frame parameter
@item buffer-predicate
The buffer-predicate function for this frame. The function
@code{other-buffer} uses this predicate (from the selected frame) to
@@ -709,61 +747,73 @@ decide which buffers it should consider, if the predicate is not
each buffer; if the predicate returns a non-@code{nil} value, it
considers that buffer.
+@vindex buffer-list, a frame parameter
@item buffer-list
-A list of buffers that have been selected in this frame,
-ordered most-recently-selected first.
+A list of buffers that have been selected in this frame, ordered
+most-recently-selected first.
+@vindex unsplittable, a frame parameter
@item unsplittable
If non-@code{nil}, this frame's window is never split automatically.
@end table
@node Management Parameters
@subsubsection Window Management Parameters
-@cindex window manager, and frame parameters
+@cindex window manager interaction, and frame parameters
These frame parameters, meaningful only on window system displays,
interact with the window manager.
@table @code
+@vindex visibility, a frame parameter
@item visibility
The state of visibility of the frame. There are three possibilities:
@code{nil} for invisible, @code{t} for visible, and @code{icon} for
iconified. @xref{Visibility of Frames}.
+@vindex auto-raise, a frame parameter
@item auto-raise
Whether selecting the frame raises it (non-@code{nil} means yes).
+@vindex auto-lower, a frame parameter
@item auto-lower
Whether deselecting the frame lowers it (non-@code{nil} means yes).
+@vindex icon-type, a frame parameter
@item icon-type
The type of icon to use for this frame when it is iconified. If the
value is a string, that specifies a file containing a bitmap to use.
Any other non-@code{nil} value specifies the default bitmap icon (a
picture of a gnu); @code{nil} specifies a text icon.
+@vindex icon-name, a frame parameter
@item icon-name
The name to use in the icon for this frame, when and if the icon
appears. If this is @code{nil}, the frame's title is used.
+@vindex window-id, a frame parameter
@item window-id
The number of the window-system window used by the frame
to contain the actual Emacs windows.
+@vindex outer-window-id, a frame parameter
@item outer-window-id
The number of the outermost window-system window used for the whole frame.
+@vindex wait-for-wm, a frame parameter
@item wait-for-wm
If non-@code{nil}, tell Xt to wait for the window manager to confirm
geometry changes. Some window managers, including versions of Fvwm2
and KDE, fail to confirm, so Xt hangs. Set this to @code{nil} to
prevent hanging with those window managers.
+@vindex sticky, a frame parameter
@item sticky
If non-@code{nil}, the frame is visible on all virtual desktops on systems
with virtual desktops.
@ignore
+@vindex parent-id, a frame parameter
@item parent-id
@c ??? Not yet working.
The X window number of the window that should be the parent of this one.
@@ -775,10 +825,12 @@ it and see if it works.)
@node Cursor Parameters
@subsubsection Cursor Parameters
+@cindex cursor, and frame parameters
This frame parameter controls the way the cursor looks.
@table @code
+@vindex cursor-type, a frame parameter
@item cursor-type
How to display the cursor. Legitimate values are:
@@ -830,10 +882,12 @@ and bar becomes a narrower bar).
@node Font and Color Parameters
@subsubsection Font and Color Parameters
+@cindex font and color, frame parameters
These frame parameters control the use of fonts and colors.
@table @code
+@vindex font-backend, a frame parameter
@item font-backend
A list of symbols, specifying the @dfn{font backends} to use for
drawing fonts in the frame, in order of priority. On X, there are
@@ -842,10 +896,12 @@ driver) and @code{xft} (the Xft font driver). On other systems, there
is only one available font backend, so it does not make sense to
modify this frame parameter.
+@vindex background-mode, a frame parameter
@item background-mode
This parameter is either @code{dark} or @code{light}, according
to whether the background color is a light one or a dark one.
+@vindex tty-color-mode, a frame parameter
@item tty-color-mode
@cindex standard colors for character terminals
This parameter overrides the terminal's color support as given by the
@@ -861,6 +917,7 @@ If the parameter's value is a symbol, it specifies a number through
the value of @code{tty-color-mode-alist}, and the associated number is
used instead.
+@vindex screen-gamma, a frame parameter
@item screen-gamma
@cindex gamma correction
If this is a number, Emacs performs ``gamma correction'' which adjusts
@@ -880,6 +937,7 @@ If your monitor displays colors too light, you should specify a
that makes colors darker. A screen gamma value of 1.5 may give good
results for LCD color displays.
+@vindex alpha, a frame parameter
@item alpha
@cindex opacity, frame
@cindex transparency, frame
@@ -907,37 +965,45 @@ automatically equivalent to particular face attributes of particular
faces (@pxref{Standard Faces,,, emacs, The Emacs Manual}):
@table @code
+@vindex font, a frame parameter
@item font
The name of the font for displaying text in the frame. This is a
string, either a valid font name for your system or the name of an Emacs
fontset (@pxref{Fontsets}). It is equivalent to the @code{font}
attribute of the @code{default} face.
+@vindex foreground-color, a frame parameter
@item foreground-color
The color to use for the image of a character. It is equivalent to
the @code{:foreground} attribute of the @code{default} face.
+@vindex background-color, a frame parameter
@item background-color
The color to use for the background of characters. It is equivalent to
the @code{:background} attribute of the @code{default} face.
+@vindex mouse-color, a frame parameter
@item mouse-color
The color for the mouse pointer. It is equivalent to the @code{:background}
attribute of the @code{mouse} face.
+@vindex cursor-color, a frame parameter
@item cursor-color
The color for the cursor that shows point. It is equivalent to the
@code{:background} attribute of the @code{cursor} face.
+@vindex border-color, a frame parameter
@item border-color
The color for the border of the frame. It is equivalent to the
@code{:background} attribute of the @code{border} face.
+@vindex scroll-bar-foreground, a frame parameter
@item scroll-bar-foreground
If non-@code{nil}, the color for the foreground of scroll bars. It is
equivalent to the @code{:foreground} attribute of the
@code{scroll-bar} face.
+@vindex scroll-bar-background, a frame parameter
@item scroll-bar-background
If non-@code{nil}, the color for the background of scroll bars. It is
equivalent to the @code{:background} attribute of the
@@ -1302,7 +1368,7 @@ minibuffer-window}).
However, you can also create a frame with no minibuffer. Such a frame
must use the minibuffer window of some other frame. When you create the
-frame, you can specify explicitly the minibuffer window to use (in some
+frame, you can explicitly specify the minibuffer window to use (in some
other frame). If you don't, then the minibuffer is found in the frame
which is the value of the variable @code{default-minibuffer-frame}. Its
value should be a frame that does have a minibuffer.
@@ -1684,6 +1750,15 @@ If @var{frame} is not visible, this function does nothing. The return
value is not significant.
@end defun
+@defun frame-pointer-visible-p &optional frame
+This predicate function returns non-@code{nil} if the mouse pointer
+displayed on @var{frame} is visible; otherwise it returns @code{nil}.
+@var{frame} omitted or @code{nil} means the selected frame. This is
+useful when @code{make-pointer-invisible} is set to @code{t}: it
+allows to know if the pointer has been hidden.
+@xref{Mouse Avoidance,,,emacs}.
+@end defun
+
@need 3000
@node Pop-Up Menus
@@ -1925,28 +2000,6 @@ with X conventions.) The default for @var{data-type} is
@code{STRING}.
@end defun
-@cindex cut buffer
-The X server also has a set of eight numbered @dfn{cut buffers} which can
-store text or other data being moved between applications. Cut buffers
-are considered obsolete, but Emacs supports them for the sake of X
-clients that still use them. Cut buffers are numbered from 0 to 7.
-
-@defun x-get-cut-buffer &optional n
-This function returns the contents of cut buffer number @var{n}.
-If omitted @var{n} defaults to 0.
-@end defun
-
-@defun x-set-cut-buffer string &optional push
-@anchor{Definition of x-set-cut-buffer}
-This function stores @var{string} into the first cut buffer (cut buffer
-0). If @var{push} is @code{nil}, only the first cut buffer is changed.
-If @var{push} is non-@code{nil}, that says to move the values down
-through the series of cut buffers, much like the way successive kills in
-Emacs move down the kill ring. In other words, the previous value of
-the first cut buffer moves into the second cut buffer, and the second to
-the third, and so on through all eight cut buffers.
-@end defun
-
@defopt selection-coding-system
This variable specifies the coding system to use when reading and
writing selections or the clipboard. @xref{Coding
@@ -1965,8 +2018,8 @@ clipboard as empty.
If this is non-@code{nil}, the Emacs yank functions consult the
clipboard before the primary selection, and the kill functions store in
the clipboard as well as the primary selection. Otherwise they do not
-access the clipboard at all. The default is @code{nil} on most systems,
-but @code{t} on MS-Windows.
+access the clipboard at all. The default is @code{t} on systems with
+clipboards.
@end defopt
@node Drag and Drop
@@ -2430,7 +2483,3 @@ The functions @code{x-pixel-width} and @code{x-pixel-height} return the
width and height of an X Window frame, measured in pixels.
@end ignore
-
-@ignore
- arch-tag: 94977df6-3dca-4730-b57b-c6329e9282ba
-@end ignore
diff --git a/doc/lispref/front-cover-1.texi b/doc/lispref/front-cover-1.texi
index 5c9f4351f4..56d0f2b1c2 100644
--- a/doc/lispref/front-cover-1.texi
+++ b/doc/lispref/front-cover-1.texi
@@ -50,7 +50,3 @@
@end titlepage
@bye
-
-@ignore
- arch-tag: 5182b306-c403-4e4f-ba24-e1911bc6da9d
-@end ignore
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 198cc1a1ae..974487382c 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/functions
@@ -1510,7 +1509,3 @@ See @ref{Mapping Functions}.
@item undefined
See @ref{Functions for Key Lookup}.
@end table
-
-@ignore
- arch-tag: 39100cdf-8a55-4898-acba-595db619e8e2
-@end ignore
diff --git a/doc/lispref/gpl.texi b/doc/lispref/gpl.texi
index 163af4627b..244f3330d4 100644
--- a/doc/lispref/gpl.texi
+++ b/doc/lispref/gpl.texi
@@ -721,7 +721,3 @@ library, you may consider it more useful to permit linking proprietary
applications with the library. If this is what you want to do, use
the GNU Lesser General Public License instead of this License. But
first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}.
-
-@ignore
- arch-tag: d00ac830-e120-41fb-bbc5-7ca3eeaa227f
-@end ignore
diff --git a/doc/lispref/hash.texi b/doc/lispref/hash.texi
index 82c172c753..0d77cba6fa 100644
--- a/doc/lispref/hash.texi
+++ b/doc/lispref/hash.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005,
-@c 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/hash
@node Hash Tables, Symbols, Sequences Arrays Vectors, Top
@@ -355,7 +354,3 @@ This returns the rehash threshold of @var{table}.
@defun hash-table-size table
This returns the current nominal size of @var{table}.
@end defun
-
-@ignore
- arch-tag: 3b5107f9-d2f0-47d5-ad61-3498496bea0e
-@end ignore
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index f1db33582f..63fc06c929 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -1,7 +1,7 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
+@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/help
@node Documentation, Files, Modes, Top
@@ -106,12 +106,6 @@ documentation string. The functions @code{documentation} and
documentation string from the appropriate file; this is transparent to
the user.
-@c Wordy to prevent overfull hbox. --rjc 15mar92
- The @file{emacs/lib-src} directory contains two utilities that you can
-use to print nice-looking hardcopy for the file
-@file{emacs/etc/DOC-@var{version}}. These are @file{sorted-doc} and
-@file{digest-doc}.
-
@node Accessing Documentation
@section Access to Documentation Strings
@@ -701,6 +695,3 @@ echo area at first, and display the longer @var{help-text} strings only
if the user types the help character again.
@end defopt
-@ignore
- arch-tag: ba36b4c2-e60f-49e2-bc25-61158fdcd815
-@end ignore
diff --git a/doc/lispref/hooks.texi b/doc/lispref/hooks.texi
index c76634be45..6e2cac9c06 100644
--- a/doc/lispref/hooks.texi
+++ b/doc/lispref/hooks.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1998, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1993, 1998, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/hooks
@node Standard Hooks, Index, Standard Keymaps, Top
@@ -343,7 +342,3 @@ Manual}.
@item write-region-annotate-functions
@xref{Format Conversion}.
@end table
-
-@ignore
- arch-tag: 55fd0296-d906-4551-b300-979d3846aa88
-@end ignore
diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi
index 4f18c71857..5cdd983f40 100644
--- a/doc/lispref/internals.texi
+++ b/doc/lispref/internals.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1998, 1999, 2001, 2002, 2003,
-@c 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1993, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/internals
@node GNU Emacs Internals, Standard Errors, Tips, Top
@@ -518,8 +517,7 @@ If all args return nil, return nil.
@end group
@group
usage: (or CONDITIONS ...) */)
- (args)
- Lisp_Object args;
+ (Lisp_Object args)
@{
register Lisp_Object val = Qnil;
struct gcpro gcpro1;
@@ -618,15 +616,15 @@ All the usual rules for documentation strings in Lisp code
too.
@end table
- After the call to the @code{DEFUN} macro, you must write the argument
-name list that every C function must have, followed by ordinary C
-declarations for the arguments. For a function with a fixed maximum
-number of arguments, declare a C argument for each Lisp argument, and
-give them all type @code{Lisp_Object}. When a Lisp function has no
-upper limit on the number of arguments, its implementation in C actually
-receives exactly two arguments: the first is the number of Lisp
-arguments, and the second is the address of a block containing their
-values. They have types @code{int} and @w{@code{Lisp_Object *}}.
+ After the call to the @code{DEFUN} macro, you must write the
+argument list that every C function must have, including the types for
+the arguments. For a function with a fixed maximum number of
+arguments, declare a C argument for each Lisp argument, and give them
+all type @code{Lisp_Object}. When a Lisp function has no upper limit
+on the number of arguments, its implementation in C actually receives
+exactly two arguments: the first is the number of Lisp arguments, and
+the second is the address of a block containing their values. They
+have types @code{int} and @w{@code{Lisp_Object *}}.
@cindex @code{GCPRO} and @code{UNGCPRO}
@cindex protect C variables from garbage collection
@@ -1401,7 +1399,3 @@ Symbol indicating the type of process: @code{real}, @code{network},
@code{serial}
@end table
-
-@ignore
- arch-tag: 4b2c33bc-d7e4-43f5-bc20-27c0db52a53e
-@end ignore
diff --git a/doc/lispref/intro.texi b/doc/lispref/intro.texi
index 881ae94223..7c07072602 100644
--- a/doc/lispref/intro.texi
+++ b/doc/lispref/intro.texi
@@ -1,7 +1,6 @@
-@c -*-texinfo-*-
+@c -*-coding: iso-latin-1-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/intro
@@ -543,10 +542,6 @@ Kirman, Bob Knighten, Frederick M. Korz, Joe Lammens, Glenn M. Lewis,
K. Richard Magill, Brian Marick, Roland McGrath, Stefan Monnier, Skip
Montanaro, John Gardiner Myers, Thomas A. Peterson, Francesco Potorti,
Friedrich Pukelsheim, Arnold D. Robbins, Raul Rockwell, Jason Rumney,
-Per Starb@"ack, Shinichirou Sugou, Kimmo Suominen, Edward Tharp, Bill
+Per Starb�ck, Shinichirou Sugou, Kimmo Suominen, Edward Tharp, Bill
Trost, Rickard Westman, Jean White, Eduard Wiebe, Matthew Wilding,
Carl Witty, Dale Worley, Rusty Wright, and David D. Zuhn.
-
-@ignore
- arch-tag: d156593f-82f8-4708-a844-204e48f7f2aa
-@end ignore
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index b1f02d6b26..d55cb29977 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -1,8 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 1998-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/keymaps
@node Keymaps, Modes, Command Loop, Top
@@ -688,7 +686,7 @@ bindings, as in @code{lookup-key} (@pxref{Functions for Key Lookup}).
When commands are remapped (@pxref{Remapping Commands}),
@code{key-binding} normally processes command remappings so as to
-returns the remapped command that will actually be executed. However,
+return the remapped command that will actually be executed. However,
if @var{no-remap} is non-@code{nil}, @code{key-binding} ignores
remappings and returns the binding directly specified for @var{key}.
@@ -1242,7 +1240,7 @@ local map, that usually affects all buffers using the same major mode.
The @code{global-set-key} and @code{local-set-key} functions are
convenient interfaces for these operations (@pxref{Key Binding
Commands}). You can also use @code{define-key}, a more general
-function; then you must specify explicitly the map to change.
+function; then you must explicitly specify the map to change.
When choosing the key sequences for Lisp programs to rebind, please
follow the Emacs conventions for use of various keys (@pxref{Key
@@ -1471,33 +1469,33 @@ Dired mode is set up:
@section Remapping Commands
@cindex remapping commands
- A special kind of key binding, using a special ``key sequence''
-which includes a command name, has the effect of @dfn{remapping} that
-command into another. Here's how it works. You make a key binding
-for a key sequence that starts with the dummy event @code{remap},
-followed by the command name you want to remap. Specify the remapped
-definition as the definition in this binding. The remapped definition
-is usually a command name, but it can be any valid definition for
-a key binding.
+ A special kind of key binding can be used to @dfn{remap} one command
+to another, without having to refer to the key sequence(s) bound to
+the original command. To use this feature, make a key binding for a
+key sequence that starts with the dummy event @code{remap}, followed
+by the command name you want to remap; for the binding, specify the
+new definition (usually a command name, but possibly any other valid
+definition for a key binding).
- Here's an example. Suppose that My mode uses special commands
-@code{my-kill-line} and @code{my-kill-word}, which should be invoked
-instead of @code{kill-line} and @code{kill-word}. It can establish
-this by making these two command-remapping bindings in its keymap:
+ For example, suppose My mode provides a special command
+@code{my-kill-line}, which should be invoked instead of
+@code{kill-line}. To establish this, its mode keymap should contain
+the following remapping:
@smallexample
(define-key my-mode-map [remap kill-line] 'my-kill-line)
-(define-key my-mode-map [remap kill-word] 'my-kill-word)
@end smallexample
-Whenever @code{my-mode-map} is an active keymap, if the user types
-@kbd{C-k}, Emacs will find the standard global binding of
-@code{kill-line} (assuming nobody has changed it). But
-@code{my-mode-map} remaps @code{kill-line} to @code{my-kill-line},
-so instead of running @code{kill-line}, Emacs runs
-@code{my-kill-line}.
+@noindent
+Then, whenever @code{my-mode-map} is active, if the user types
+@kbd{C-k} (the default global key sequence for @code{kill-line}) Emacs
+will instead run @code{my-kill-line}.
-Remapping only works through a single level. In other words,
+ Note that remapping only takes place through active keymaps; for
+example, putting a remapping in a prefix keymap like @code{ctl-x-map}
+typically has no effect, as such keymaps are not themselves active.
+In addition, remapping only works through a single level; in the
+following example,
@smallexample
(define-key my-mode-map [remap kill-line] 'my-kill-line)
@@ -1505,11 +1503,10 @@ Remapping only works through a single level. In other words,
@end smallexample
@noindent
-does not have the effect of remapping @code{kill-line} into
-@code{my-other-kill-line}. If an ordinary key binding specifies
-@code{kill-line}, this keymap will remap it to @code{my-kill-line};
-if an ordinary binding specifies @code{my-kill-line}, this keymap will
-remap it to @code{my-other-kill-line}.
+@code{kill-line} is @emph{not} remapped to @code{my-other-kill-line}.
+Instead, if an ordinary key binding specifies @code{kill-line}, it is
+remapped to @code{my-kill-line}; if an ordinary binding specifies
+@code{my-kill-line}, it is remapped to @code{my-other-kill-line}.
To undo the remapping of a command, remap it to @code{nil}; e.g.
@@ -2076,21 +2073,6 @@ look at a menu. This is because the X toolkit requires the whole tree
of menus in advance. To force recalculation of the menu bar, call
@code{force-mode-line-update} (@pxref{Mode Line Format}).
- You've probably noticed that menu items show the equivalent keyboard key
-sequence (if any) to invoke the same command. To save time on
-recalculation, menu display caches this information in a sublist in the
-binding, like this:
-
-@c This line is not too long--rms.
-@example
-(@var{item-string} @r{[}@var{help}@r{]} (@var{key-binding-data}) . @var{real-binding})
-@end example
-
-@noindent
-Don't put these sublists in the menu item yourself; menu display
-calculates them automatically. Don't mention keyboard equivalents in
-the item strings themselves, since that is redundant.
-
@node Extended Menu Items
@subsubsection Extended Menu Items
@kindex menu-item
@@ -2124,14 +2106,6 @@ string. Thus, the string need not be a constant. The third element,
@var{item-property-list}, has the form of a property list which contains
other information.
- When an equivalent keyboard key binding is cached, the extended menu
-item binding looks like this:
-
-@example
-(menu-item @var{item-name} @var{real-binding} (@var{key-binding-data})
- . @var{item-property-list})
-@end example
-
Here is a table of the properties that are supported:
@table @code
@@ -2824,7 +2798,3 @@ menu of Shell mode, after the item @code{break}:
[work] '("Work" . work-command) 'break)
@end example
@end defun
-
-@ignore
- arch-tag: cfb87287-9364-4e46-9e93-6c2f7f6ae794
-@end ignore
diff --git a/doc/lispref/lay-flat.texi b/doc/lispref/lay-flat.texi
index 56e6c47990..55973adac5 100644
--- a/doc/lispref/lay-flat.texi
+++ b/doc/lispref/lay-flat.texi
@@ -1,7 +1,6 @@
\input texinfo @c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@c
@comment %**start of header
@@ -42,7 +41,3 @@ pushed or held down.
@end tex
@bye
-
-@ignore
- arch-tag: 9e03a1c7-6f62-4346-85d9-ed5b79386e07
-@end ignore
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index b45277acfb..064be89632 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/lists
@node Lists, Sequences Arrays Vectors, Strings and Characters, Top
@@ -1267,9 +1266,9 @@ functions for sets include @code{memq} and @code{delq}, and their
@cindex CL note---lack @code{union}, @code{intersection}
@quotation
@b{Common Lisp note:} Common Lisp has functions @code{union} (which
-avoids duplicate elements) and @code{intersection} for set operations,
-but GNU Emacs Lisp does not have them. You can write them in Lisp if
-you wish.
+avoids duplicate elements) and @code{intersection} for set operations.
+Although standard GNU Emacs Lisp does not have them, the @file{cl}
+library provides versions. @inforef{Top, Overview, cl}.
@end quotation
@defun memq object list
@@ -1888,7 +1887,3 @@ use the ring as a first-in-first-out queue. For example:
(ring-remove fifo)))
@result{} (0 t one t "two")
@end lisp
-
-@ignore
- arch-tag: 31fb8a4e-4aa8-4a74-a206-aa00451394d4
-@end ignore
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index ca06f847fb..ca233ac5f2 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/loading
@@ -402,13 +401,6 @@ example) is read without decoding, the text of the program will be
unibyte text, and its string constants will be unibyte strings.
@xref{Coding Systems}.
- To make the results more predictable, Emacs always performs decoding
-into the multibyte representation when loading Lisp files, even if it
-was started with the @samp{--unibyte} option. This means that string
-constants with non-@acronym{ASCII} characters translate into multibyte
-strings. The only exception is when a particular file specifies no
-decoding.
-
The reason Emacs is designed this way is so that Lisp programs give
predictable results, regardless of how Emacs was started. In addition,
this enables programs that depend on using multibyte text to work even
@@ -994,7 +986,8 @@ example, @file{my_inst.elc} or @file{my_inst.elc.gz} in some directory
@end example
@var{library} can also be a feature (i.e.@: a symbol), in which case
-@var{form} is evaluated when @code{(provide @var{library})} is called.
+@var{form} is evaluated at the end of any file where
+@code{(provide @var{library})} is called.
An error in @var{form} does not undo the load, but does prevent
execution of the rest of @var{form}.
@@ -1007,10 +1000,6 @@ it immediately---there is no need to wait until the library is loaded.
If you need to call functions defined by that library, you should load
the library, preferably with @code{require} (@pxref{Named Features}).
-But it is OK to use @code{eval-after-load} in your personal
-customizations if you don't feel that they must meet the design
-standards for programs meant for wider use.
-
@defvar after-load-alist
This variable stores an alist built by @code{eval-after-load},
containing the expressions to evaluate when certain libraries are
@@ -1025,7 +1014,3 @@ symbol, and the value is a list of forms. The forms are evaluated
when the key matches the absolute true name or feature name of the
library being loaded.
@end defvar
-
-@ignore
- arch-tag: df731f89-0900-4389-a436-9105241b6f7a
-@end ignore
diff --git a/doc/lispref/locals.texi b/doc/lispref/locals.texi
index b35c43c7b4..a196efc973 100644
--- a/doc/lispref/locals.texi
+++ b/doc/lispref/locals.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1999, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1993, 1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/locals
@node Standard Buffer-Local Variables, Standard Keymaps, Standard Errors, Top
@@ -106,11 +105,6 @@ Minor mode variables will not be listed here.
@item desktop-save-buffer
@xref{Desktop Save Mode}.
-@ignore
-@item direction-reversed
-Does not work yet.
-@end ignore
-
@item enable-multibyte-characters
@ref{Text Representations}.
@@ -221,8 +215,3 @@ Used for communication between mouse commands and scroll-bar commands.
@item write-contents-functions
@xref{Saving Buffers}.
@end table
-
-
-@ignore
- arch-tag: 6baae835-b667-4447-91e2-9829ae1cf543
-@end ignore
diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi
index a74bcb17a5..c66feec08b 100644
--- a/doc/lispref/macros.texi
+++ b/doc/lispref/macros.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/macros
@node Macros, Customization, Functions, Top
@@ -732,7 +731,3 @@ indentation is being computed by @kbd{C-M-q}; if the value is a
number, @kbd{C-M-q} need not recalculate indentation for the following
lines until the end of the list.
@end table
-
-@ignore
- arch-tag: d4cce66d-1047-45c3-bfde-db6719d6e82b
-@end ignore
diff --git a/doc/lispref/makefile.w32-in b/doc/lispref/makefile.w32-in
index b1419d822d..7b88e861d6 100644
--- a/doc/lispref/makefile.w32-in
+++ b/doc/lispref/makefile.w32-in
@@ -1,7 +1,6 @@
# -*- Makefile -*- for the GNU Emacs Lisp Reference Manual.
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-# Free Software Foundation, Inc.
+# Copyright (C) 2003-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -23,17 +22,24 @@
srcdir = .
infodir = $(srcdir)/../../info
-usermanualdir = $(srcdir)/../emacs
+
+# Directory with emacsver.texi.
+emacsdir = $(srcdir)/../emacs
+# Directory with the (customized) texinfo.tex file.
+texinfodir = $(srcdir)/../misc
# Redefine `TEX' if `tex' does not invoke plain TeX. For example:
# TEX=platex
TEX=tex
INSTALL_INFO = install-info
-MAKEINFO = makeinfo --force
+MAKEINFO = makeinfo
+MAKEINFO_OPTS = --force --enable-encoding -I$(srcdir) -I$(emacsdir)
# The environment variable and its value to add $(srcdir) to the path
# searched for TeX input files.
-texinputdir = $(srcdir)\..\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" /C
+texinputdir = $(srcdir)\..\..\nt\envadd.bat \
+ "TEXINPUTS=$(srcdir);$(texinputdir);$(TEXINPUTS)" \
+ "MAKEINFO=$(MAKEINFO) $(MAKEINFO_OPTS)" /C
# The name of the manual:
VERSION=2.9
@@ -43,6 +49,7 @@ manual = elisp-manual-23-$(VERSION)
# List of all the texinfo files in the manual:
srcs = \
+ $(emacsdir)/emacsver.texi \
$(srcdir)/abbrevs.texi \
$(srcdir)/advice.texi \
$(srcdir)/anti.texi \
@@ -80,6 +87,7 @@ srcs = \
$(srcdir)/numbers.texi \
$(srcdir)/objects.texi \
$(srcdir)/os.texi \
+ $(srcdir)/package.texi \
$(srcdir)/positions.texi \
$(srcdir)/processes.texi \
$(srcdir)/searching.texi \
@@ -107,10 +115,10 @@ $(infodir)/dir:
$(INSTALL_INFO) --info-dir=$(infodir) $(infodir)/elisp
$(infodir)/elisp: $(srcs)
- $(MAKEINFO) -I. -I$(srcdir) -o $(infodir)/elisp $(srcdir)/elisp.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) -o $(infodir)/elisp $(srcdir)/elisp.texi
elisp.dvi: $(srcs)
- $(texinputdir) $(TEX) -I $(usermanualdir) $(srcdir)/elisp.texi
+ $(texinputdir) $(TEX) $(srcdir)/elisp.texi
clean:
- $(DEL) *.toc *.aux *.log *.cp *.cps *.fn *.fns *.tp *.tps \
diff --git a/doc/lispref/maps.texi b/doc/lispref/maps.texi
index bc39a3bf2a..d235fee90e 100644
--- a/doc/lispref/maps.texi
+++ b/doc/lispref/maps.texi
@@ -1,8 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1999, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1990-1993, 1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/maps
@node Standard Keymaps, Standard Hooks, Standard Buffer-Local Variables, Top
@@ -239,4 +237,3 @@ The keymap defining the contents of the tool bar.
@vindex view-mode-map
A full keymap used by View mode.
@end table
-
diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi
index 3314ec25c8..7b73c454c8 100644
--- a/doc/lispref/markers.texi
+++ b/doc/lispref/markers.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/markers
@node Markers, Text, Positions, Top
@@ -674,7 +673,3 @@ mark is active, and there's a valid region in the buffer. Commands
that operate on the region (instead of on text near point) when
there's an active mark should use this to test whether to do that.
@end defun
-
-@ignore
- arch-tag: b1ba2e7a-a0f3-4c5e-875c-7d8e22d73299
-@end ignore
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index b2ffc5fede..aa22e6c92f 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/minibuf
@@ -434,18 +433,17 @@ expression, thus moving point forward one word.
@cindex minibuffer history
@cindex history list
- A @dfn{minibuffer history list} records previous minibuffer inputs so
-the user can reuse them conveniently. A history list is actually a
-symbol, not a list; it is a variable whose value is a list of strings
-(previous inputs), most recent first.
+ A @dfn{minibuffer history list} records previous minibuffer inputs
+so the user can reuse them conveniently. It is a variable whose value
+is a list of strings (previous inputs), most recent first.
- There are many separate history lists, used for different kinds of
-inputs. It's the Lisp programmer's job to specify the right history
-list for each use of the minibuffer.
+ There are many separate minibuffer history lists, used for different
+kinds of inputs. It's the Lisp programmer's job to specify the right
+history list for each use of the minibuffer.
- You specify the history list with the optional @var{hist} argument
-to either @code{read-from-minibuffer} or @code{completing-read}. Here
-are the possible values for it:
+ You specify a minibuffer history list with the optional @var{hist}
+argument to @code{read-from-minibuffer} or @code{completing-read}.
+Here are the possible values for it:
@table @asis
@item @var{variable}
@@ -1386,17 +1384,19 @@ Files, emacs, The GNU Emacs Manual}). The exact behavior when using a
graphical file dialog is platform-dependent. Here, we simply document
the behavior when using the minibuffer.
-The optional argument @var{require-match} has the same meaning as in
-@code{completing-read}. @xref{Minibuffer Completion}.
+@code{read-file-name} does not automatically expand the returned file
+name. You must call @code{expand-file-name} yourself if an absolute
+file name is required.
-@code{read-file-name} uses
-@code{minibuffer-local-filename-completion-map} as the keymap if
-@var{require-match} is @code{nil}, and uses
-@code{minibuffer-local-filename-must-match-map} if @var{require-match}
-is non-@code{nil}. @xref{Completion Commands}.
+The optional argument @var{require-match} has the same meaning as in
+@code{completing-read}. @xref{Minibuffer Completion}. If
+@var{require-match} is @code{nil}, the local keymap in the minibuffer
+is @code{minibuffer-local-filename-completion-map}; otherwise, it is
+@code{minibuffer-local-filename-must-match-map}. @xref{Completion
+Commands}.
The argument @var{directory} specifies the directory to use for
-completion of relative file names. It should be an absolute directory
+completing relative file names. It should be an absolute directory
name. If @code{insert-default-directory} is non-@code{nil},
@var{directory} is also inserted in the minibuffer as initial input.
It defaults to the current buffer's value of @code{default-directory}.
@@ -1444,11 +1444,7 @@ argument that decides which file names are acceptable completion
possibilities. A file name is an acceptable value if @var{predicate}
returns non-@code{nil} for it.
-@code{read-file-name} does not automatically expand file names. You
-must call @code{expand-file-name} yourself if an absolute file name is
-required.
-
-Here is an example:
+Here is an example of using @code{read-file-name}:
@example
@group
@@ -1694,7 +1690,7 @@ match for some possibility; @code{nil} otherwise.
@item
@code{(boundaries . SUFFIX)} specifies @code{completion-boundaries}.
The function should return a value of the form @code{(boundaries
-START . END)} where START is the position of the beginning boundary in
+START . END)} where START is the position of the beginning boundary
in the string to complete, and END is the position of the end boundary
in SUFFIX.
@end itemize
@@ -2195,7 +2191,3 @@ arrives, whichever comes first. If @var{args} is non-@code{nil}, the
actual message is obtained by passing @var{string} and @var{args}
through @code{format}. @xref{Formatting Strings}.
@end defun
-
-@ignore
- arch-tag: bba7f945-9078-477f-a2ce-18818a6e1218
-@end ignore
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 3f3eb2cd1f..562cc76c3f 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/modes
@node Modes, Documentation, Keymaps, Top
@@ -416,6 +415,31 @@ setting up a buffer-local value for the variable
@code{font-lock-defaults} (@pxref{Font Lock Mode}).
@item
+Each face that the mode defines should, if possible, inherit from an
+existing Emacs face. This reduces the chance of conflicting with a
+user's face customizations. Useful faces include:
+
+@table @asis
+@item @code{highlight}
+for stretches of text that should temporarily stand out.
+
+@item @code{match}
+for text matching a search command.
+
+@item @code{link} and @code{link-visited}
+for clickable text buttons that send the user to a different buffer or
+``location''.
+
+@item @code{button}
+for clickable text buttons that perform other actions.
+
+@item @asis{Font Lock faces}
+for other kinds of syntactic highlighting, if highlighting is not
+handled by Font Lock mode or some Font Lock faces are not in use.
+@xref{Faces for Font Lock}, for how to assign Font Lock faces.
+@end table
+
+@item
The mode should specify how Imenu should find the definitions or
sections of a buffer, by setting up a buffer-local value for the
variable @code{imenu-generic-expression}, for the two variables
@@ -559,12 +583,9 @@ If you run @code{normal-mode} interactively, the argument
@var{find-file} is normally @code{nil}. In this case,
@code{normal-mode} unconditionally processes any file local variables.
-If @code{normal-mode} processes the local variables list and this list
-specifies a major mode, that mode overrides any mode chosen by
-@code{set-auto-mode}. If neither @code{set-auto-mode} nor
-@code{hack-local-variables} specify a major mode, the buffer stays in
-the major mode determined by the default value of @code{major-mode}
-(see below).
+The function calls @code{set-auto-mode} to choose a major mode. If this
+does not specify a mode, the buffer stays in the major mode determined
+by the default value of @code{major-mode} (see below).
@cindex file mode specification error
@code{normal-mode} uses @code{condition-case} around the call to the
@@ -576,15 +597,15 @@ mode specification error}, followed by the original error message.
@cindex visited file mode
This function selects the major mode that is appropriate for the
current buffer. It bases its decision (in order of precedence) on
-the @w{@samp{-*-}} line, on the @w{@samp{#!}} line (using
+the @w{@samp{-*-}} line, on any @samp{mode:} local variable near the
+end of a file, on the @w{@samp{#!}} line (using
@code{interpreter-mode-alist}), on the text at the beginning of the
buffer (using @code{magic-mode-alist}), and finally on the visited
file name (using @code{auto-mode-alist}). @xref{Choosing Modes, , How
-Major Modes are Chosen, emacs, The GNU Emacs Manual}. However, this
-function does not look for the @samp{mode:} local variable near the
-end of a file; the @code{hack-local-variables} function does that.
+Major Modes are Chosen, emacs, The GNU Emacs Manual}.
If @code{enable-local-variables} is @code{nil}, @code{set-auto-mode}
-does not check the @w{@samp{-*-}} line for a mode tag either.
+does not check the @w{@samp{-*-}} line, or near the end of the file,
+for any mode tag.
If @var{keep-mode-if-same} is non-@code{nil}, this function does not
call the mode command if the buffer is already in the proper major
@@ -744,7 +765,8 @@ documentation of the major mode.
The recommended way to define a new major mode is to derive it
from an existing one using @code{define-derived-mode}. If there is no
closely related mode, you can inherit from @code{text-mode},
-@code{special-mode}, or in the worst case @code{fundamental-mode}.
+@code{special-mode}, @code{prog-mode}, or in the worst case
+@code{fundamental-mode}.
@defmac define-derived-mode variant parent name docstring keyword-args@dots{} body@dots{}
This macro defines @var{variant} as a major mode command, using
@@ -2882,73 +2904,79 @@ the normal Font Lock machinery, it should not set the variable
@cindex faces for font lock
@cindex font lock faces
- You can make Font Lock mode use any face, but several faces are
-defined specifically for Font Lock mode. Each of these symbols is both
-a face name, and a variable whose default value is the symbol itself.
-Thus, the default value of @code{font-lock-comment-face} is
-@code{font-lock-comment-face}. This means you can write
-@code{font-lock-comment-face} in a context such as
-@code{font-lock-keywords} where a face-name-valued expression is used.
+ Font Lock mode can highlight using any face, but Emacs defines several
+faces specifically for syntactic highlighting. These @dfn{Font Lock
+faces} are listed below. They can also be used by major modes for
+syntactic highlighting outside of Font Lock mode (@pxref{Major Mode
+Conventions}).
-@table @code
-@item font-lock-comment-face
-@vindex font-lock-comment-face
-Used (typically) for comments.
+ Each of these symbols is both a face name, and a variable whose
+default value is the symbol itself. Thus, the default value of
+@code{font-lock-comment-face} is @code{font-lock-comment-face}.
-@item font-lock-comment-delimiter-face
-@vindex font-lock-comment-delimiter-face
-Used (typically) for comments delimiters.
-
-@item font-lock-doc-face
-@vindex font-lock-doc-face
-Used (typically) for documentation strings in the code.
-
-@item font-lock-string-face
-@vindex font-lock-string-face
-Used (typically) for string constants.
-
-@item font-lock-keyword-face
-@vindex font-lock-keyword-face
-Used (typically) for keywords---names that have special syntactic
-significance, like @code{for} and @code{if} in C.
+ The faces are listed with descriptions of their typical usage, and in
+order of greater to lesser ``prominence''. If a mode's syntactic
+categories do not fit well with the usage descriptions, the faces can be
+assigned using the ordering as a guide.
-@item font-lock-builtin-face
-@vindex font-lock-builtin-face
-Used (typically) for built-in function names.
+@table @code
+@item font-lock-warning-face
+@vindex font-lock-warning-face
+for a construct that is peculiar, or that greatly changes the meaning of
+other text, like @samp{;;;###autoload} in Emacs Lisp and @samp{#error}
+in C.
@item font-lock-function-name-face
@vindex font-lock-function-name-face
-Used (typically) for the name of a function being defined or declared,
-in a function definition or declaration.
+for the name of a function being defined or declared.
@item font-lock-variable-name-face
@vindex font-lock-variable-name-face
-Used (typically) for the name of a variable being defined or declared,
-in a variable definition or declaration.
+for the name of a variable being defined or declared.
+
+@item font-lock-keyword-face
+@vindex font-lock-keyword-face
+for a keyword with special syntactic significance, like @samp{for} and
+@samp{if} in C.
+
+@item font-lock-comment-face
+@vindex font-lock-comment-face
+for comments.
+
+@item font-lock-comment-delimiter-face
+@vindex font-lock-comment-delimiter-face
+for comments delimiters, like @samp{/*} and @samp{*/} in C. On most
+terminals, this inherits from @code{font-lock-comment-face}.
@item font-lock-type-face
@vindex font-lock-type-face
-Used (typically) for names of user-defined data types,
-where they are defined and where they are used.
+for the names of user-defined data types.
@item font-lock-constant-face
@vindex font-lock-constant-face
-Used (typically) for constant names.
+for the names of constants, like @samp{NULL} in C.
+
+@item font-lock-builtin-face
+@vindex font-lock-builtin-face
+for the names of built-in functions.
@item font-lock-preprocessor-face
@vindex font-lock-preprocessor-face
-Used (typically) for preprocessor commands.
+for preprocessor commands. This inherits, by default, from
+@code{font-lock-builtin-face}.
+
+@item font-lock-string-face
+@vindex font-lock-string-face
+for string constants.
+
+@item font-lock-doc-face
+@vindex font-lock-doc-face
+for documentation strings in the code. This inherits, by default, from
+@code{font-lock-string-face}.
@item font-lock-negation-char-face
@vindex font-lock-negation-char-face
-Used (typically) for easily-overlooked negation characters.
-
-@item font-lock-warning-face
-@vindex font-lock-warning-face
-Used (typically) for constructs that are peculiar, or that greatly
-change the meaning of other text. For example, this is used for
-@samp{;;;###autoload} cookies in Emacs Lisp, and for @code{#error}
-directives in C.
+for easily-overlooked negation characters.
@end table
@node Syntactic Font Lock
@@ -3228,7 +3256,7 @@ reasonably fast.
@end defvar
@node Auto-Indentation
-@section Auto-indention of code
+@section Auto-indentation of code
For programming languages, an important feature of a major mode is to
provide automatic indentation. This is controlled in Emacs by
@@ -3345,8 +3373,9 @@ transpose the two arguments of a @code{+} operator, taking into account
the precedence rules of the language.
Calling `smie-setup' is also sufficient to make TAB indentation work in
-the expected way, and provides some commands that you can bind in the
-major mode keymap.
+the expected way, extends @code{blink-matching-paren} to apply to
+elements like @code{begin...end}, and provides some commands that you
+can bind in the major mode keymap.
@deffn Command smie-close-block
This command closes the most recently opened (and not yet closed) block.
@@ -3374,7 +3403,7 @@ Such pairs of precedences are sufficient to express left-associativity
or right-associativity of infix operators, nesting of tokens like
parentheses and many other cases.
-@c ¡Let's leave this undocumented to leave it more open for change!
+@c Let's leave this undocumented to leave it more open for change!
@c @defvar smie-grammar
@c The value of this variable is an alist specifying the left and right
@c precedence of each token. It is meant to be initialized by using one of
@@ -3796,25 +3825,16 @@ block).
Here is an example of an indentation function:
@example
-;; For the `case' macro.
-(eval-when-compile (require 'cl))
-
(defun sample-smie-rules (kind token)
- (case kind
- (:elem (case token
- (basic sample-indent-basic)))
- (:after
- (cond
- ((equal token ",") (smie-rule-separator kind))
- ((equal token ":=") sample-indent-basic)))
- (:before
- (cond
- ((equal token ",") (smie-rule-separator kind))
- ((member token '("begin" "(" "@{"))
- (if (smie-rule-hanging-p) (smie-rule-parent)))
- ((equal token "if")
- (and (not (smie-rule-bolp)) (smie-rule-prev-p "else")
- (smie-rule-parent)))))))
+ (pcase (cons kind token)
+ (`(:elem . basic) sample-indent-basic)
+ (`(,_ . ",") (smie-rule-separator kind))
+ (`(:after . ":=") sample-indent-basic)
+ (`(:before . ,(or `"begin" `"(" `"@{")))
+ (if (smie-rule-hanging-p) (smie-rule-parent)))
+ (`(:before . "if")
+ (and (not (smie-rule-bolp)) (smie-rule-prev-p "else")
+ (smie-rule-parent)))))
@end example
@noindent
@@ -3829,10 +3849,10 @@ setting @code{smie-indent-basic}. The major mode could have set
is discouraged.
@item
-The two (identical) rules for the token @code{","} make SMIE try to be
-more clever when the comma separator is placed at the beginning of
-lines. It tries to outdent the separator so as to align the code after
-the comma; for example:
+The rule for the token @code{","} make SMIE try to be more clever when
+the comma separator is placed at the beginning of lines. It tries to
+outdent the separator so as to align the code after the comma; for
+example:
@example
x = longfunctionname (
diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi
index b66a5446e4..7733789992 100644
--- a/doc/lispref/nonascii.texi
+++ b/doc/lispref/nonascii.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004,
-@c 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/characters
@node Non-ASCII Characters, Searching and Matching, Text, Top
@@ -102,9 +101,6 @@ it contains unibyte encoded text or binary non-text data.
You cannot set this variable directly; instead, use the function
@code{set-buffer-multibyte} to change a buffer's representation.
-
-The @samp{--unibyte} command line option does its job by setting the
-default value to @code{nil} early in startup.
@end defvar
@defun position-bytes position
@@ -205,7 +201,7 @@ characters.
@defun byte-to-string byte
@cindex byte to string
This function returns a unibyte string containing a single byte of
-character data, @var{character}. It signals a error if
+character data, @var{character}. It signals an error if
@var{character} is not an integer between 0 and 255.
@end defun
@@ -382,6 +378,7 @@ Corresponds to the @code{Name} Unicode property. The value is a
string consisting of upper-case Latin letters A to Z, digits, spaces,
and hyphen @samp{-} characters.
+@cindex unicode general category
@item general-category
Corresponds to the @code{General_Category} Unicode property. The
value is a symbol whose name is a 2-letter abbreviation of the
@@ -413,7 +410,7 @@ Corresponds to the Unicode @code{Numeric_Value} property for
characters whose @code{Numeric_Type} is @samp{Digit}. The value is an
integer number.
-@item digit
+@item digit-value
Corresponds to the Unicode @code{Numeric_Value} property for
characters whose @code{Numeric_Type} is @samp{Decimal}. The value is
an integer number. Examples of such characters include compatibility
@@ -476,12 +473,12 @@ This function returns the value of @var{char}'s @var{propname} property.
@group
;; one fifth
(get-char-code-property ?\u2155 'numeric-value)
- @result{} 1/5
+ @result{} 0.2
@end group
@group
;; Roman IV
(get-char-code-property ?\u2163 'numeric-value)
- @result{} \4
+ @result{} 4
@end group
@end example
@end defun
@@ -511,13 +508,18 @@ This function stores @var{value} as the value of the property
@var{propname} for the character @var{char}.
@end defun
-@defvar char-script-table
+@defvar unicode-category-table
The value of this variable is a char-table (@pxref{Char-Tables}) that
-specifies, for each character, a symbol whose name is the script to
-which the character belongs, according to the Unicode Standard
-classification of the Unicode code space into script-specific blocks.
-This char-table has a single extra slot whose value is the list of all
-script symbols.
+specifies, for each character, its Unicode @code{General_Category}
+property as a symbol.
+@end defvar
+
+@defvar char-script-table
+The value of this variable is a char-table that specifies, for each
+character, a symbol whose name is the script to which the character
+belongs, according to the Unicode Standard classification of the
+Unicode code space into script-specific blocks. This char-table has a
+single extra slot whose value is the list of all script symbols.
@end defvar
@defvar char-width-table
@@ -1921,7 +1923,3 @@ strings in the return value are decoded using
@code{locale-coding-system}. @xref{Locales,,, libc, The GNU Libc Manual},
for more information about locales and locale items.
@end defun
-
-@ignore
- arch-tag: be705bf8-941b-4c35-84fc-ad7d20ddb7cb
-@end ignore
diff --git a/doc/lispref/numbers.texi b/doc/lispref/numbers.texi
index b27d206eb4..2c73a03a26 100644
--- a/doc/lispref/numbers.texi
+++ b/doc/lispref/numbers.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/numbers
@@ -56,14 +55,15 @@ chapter assume an integer has 30 bits.
@cindex overflow
The Lisp reader reads an integer as a sequence of digits with optional
-initial sign and optional final period.
+initial sign and optional final period. An integer that is out of the
+Emacs range is treated as a floating-point number.
@example
1 ; @r{The integer 1.}
1. ; @r{The integer 1.}
+1 ; @r{Also the integer 1.}
-1 ; @r{The integer @minus{}1.}
- 1073741825 ; @r{Also the integer 1, due to overflow.}
+ 1073741825 ; @r{The floating point number 1073741825.0.}
0 ; @r{The integer 0.}
-0 ; @r{The integer 0.}
@end example
@@ -196,7 +196,7 @@ point values:
@samp{1.0e+INF}
@item negative infinity
@samp{-1.0e+INF}
-@item Not-a-number
+@item Not-a-number
@samp{0.0e+NaN} or @samp{-0.0e+NaN}.
@end table
@@ -1217,7 +1217,3 @@ On some machines, any integer representable in Lisp may be the result
of @code{random}. On other machines, the result can never be larger
than a certain maximum or less than a certain (negative) minimum.
@end defun
-
-@ignore
- arch-tag: 574e8dd2-d513-4616-9844-c9a27869782e
-@end ignore
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index 7b9603c336..c58d54f13f 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/objects
@@ -2106,7 +2105,3 @@ that for two strings to be equal, they have the same text properties.
@end group
@end example
@end defun
-
-@ignore
- arch-tag: 9711a66e-4749-4265-9e8c-972d55b67096
-@end ignore
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index fea5e35935..b226d67646 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -1,11 +1,10 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/os
-@node System Interface, Antinews, Display, Top
+@node System Interface, Packaging, Display, Top
@chapter Operating System Interface
This chapter is about starting and getting out of Emacs, access to
@@ -22,7 +21,7 @@ terminal and the screen.
* System Environment:: Distinguish the name and kind of system.
* User Identification:: Finding the name and user id of the user.
* Time of Day:: Getting the current time.
-* Time Conversion:: Converting a time from numeric form to
+* Time Conversion:: Converting a time from numeric form to
calendrical data and vice versa.
* Time Parsing:: Converting a time from numeric form to text
and vice versa.
@@ -37,6 +36,7 @@ terminal and the screen.
* X11 Keysyms:: Operating on key symbols for X Windows.
* Batch Mode:: Running Emacs without terminal interaction.
* Session Management:: Saving and restoring state with X Session Management.
+* Dynamic Libraries:: On-demand loading of support libraries.
@end menu
@node Starting Up
@@ -577,7 +577,6 @@ does not run the remaining functions in this hook. Calling
This variable is a normal hook; once @code{save-buffers-kill-emacs} is
finished with all file saving and confirmation, it calls
@code{kill-emacs} which runs the functions in this hook.
-@code{kill-emacs} does not run this hook in batch mode.
@code{kill-emacs} may be invoked directly (that is not via
@code{save-buffers-kill-emacs}) if the terminal is disconnected, or in
@@ -787,9 +786,6 @@ Hewlett-Packard HPUX operating system.
@item irix
Silicon Graphics Irix system.
-@item lynxos 3.0.1
-LynxOS-3.0.1.
-
@item ms-dos
Microsoft MS-DOS ``operating system.'' Emacs compiled with DJGPP for
MS-DOS binds @code{system-type} to @code{ms-dos} even when you run it on
@@ -1340,6 +1336,12 @@ This stands for the month (01-12).
This stands for the minute (00-59).
@item %n
This stands for a newline.
+@item %N
+This stands for the nanoseconds (000000000-999999999). To ask for
+fewer digits, use @samp{%3N} for milliseconds, @samp{%6N} for
+microseconds, etc. Any excess digits are discarded, without rounding.
+Currently Emacs time stamps are at best microsecond resolution so the
+last three digits generated by plain @samp{%N} are always zero.
@item %p
This stands for @samp{AM} or @samp{PM}, as appropriate.
@item %r
@@ -2190,6 +2192,53 @@ Emacs is restarted by the session manager.
@end group
@end example
-@ignore
- arch-tag: 8378814a-30d7-467c-9615-74a80b9988a7
-@end ignore
+@node Dynamic Libraries
+@section Dynamically Loaded Libraries
+@cindex dynamic libraries
+
+ A @dfn{dynamically loaded library} is a library that is loaded on
+demand, when its facilities are first needed. Emacs supports such
+on-demand loading of support libraries for some of its features.
+
+@defvar dynamic-library-alist
+This is an alist of dynamic libraries and external library files
+implementing them.
+
+Each element is a list of the form
+@w{@code{(@var{library} @var{files}@dots{})}}, where the @code{car} is
+a symbol representing a supported external library, and the rest are
+strings giving alternate filenames for that library.
+
+Emacs tries to load the library from the files in the order they
+appear in the list; if none is found, the running session of Emacs
+won't have access to that library, and the features that depend on the
+library will be unavailable.
+
+Image support on some platforms uses this facility. Here's an example
+of setting this variable for supporting images on MS-Windows:
+
+@lisp
+(setq dynamic-library-alist
+ '((xpm "libxpm.dll" "xpm4.dll" "libXpm-nox4.dll")
+ (png "libpng12d.dll" "libpng12.dll" "libpng.dll"
+ "libpng13d.dll" "libpng13.dll")
+ (jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" "jpeg.dll")
+ (tiff "libtiff3.dll" "libtiff.dll")
+ (gif "giflib4.dll" "libungif4.dll" "libungif.dll")
+ (svg "librsvg-2-2.dll")
+ (gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
+ (glib "libglib-2.0-0.dll")
+ (gobject "libgobject-2.0-0.dll")))
+@end lisp
+
+Note that image types @code{pbm} and @code{xbm} do not need entries in
+this variable because they do not depend on external libraries and are
+always available in Emacs.
+
+Also note that this variable is not meant to be a generic facility for
+accessing external libraries; only those already known by Emacs can
+be loaded through it.
+
+This variable is ignored if the given @var{library} is statically
+linked into Emacs.
+@end defvar
diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi
new file mode 100644
index 0000000000..62fbc2a9a0
--- /dev/null
+++ b/doc/lispref/package.texi
@@ -0,0 +1,319 @@
+@c -*-texinfo-*-
+@c This is part of the GNU Emacs Lisp Reference Manual.
+@c Copyright (C) 2010-2011 Free Software Foundation, Inc.
+@c See the file elisp.texi for copying conditions.
+@setfilename ../../info/package
+@node Packaging, Antinews, System Interface, Top
+@chapter Preparing Lisp code for distribution
+@cindex package
+@cindex Lisp package
+
+ Emacs provides a standard way to distribute Emacs Lisp code to
+users. A @dfn{package} is a collection of one or more files,
+formatted and bundled in such a way that users can easily download,
+install, uninstall, and upgrade it.
+
+ The following sections describe how to create a package, and how to
+put it in a @dfn{package archive} for others to download.
+
+@menu
+* Packaging Basics:: The basic concepts of Emacs Lisp packages.
+* Simple Packages:: How to package a single .el file.
+* Multi-file Packages:: How to package multiple files.
+* Package Archives:: Maintaining package archives.
+@end menu
+
+@node Packaging Basics
+@section Packaging Basics
+@cindex package attributes
+@cindex package name
+@cindex package version
+@cindex dependencies
+@cindex package dependencies
+
+ A package is either a @dfn{simple package} or a @dfn{multi-file
+package}. A simple package is stored in a package archive as a single
+Emacs Lisp file, while a multi-file package is stored as a tar file
+(containing multiple Lisp files, and possibly non-Lisp files such as a
+manual).
+
+ In ordinary usage, the difference between simple packages and
+multi-file packages is relatively unimportant; the Package Menu
+interface makes no distinction between them. However, the procedure
+for creating them differs, as explained in the following sections.
+
+ Each package (whether simple or multi-file) has certain
+@dfn{attributes}:
+
+@table @asis
+@item Name
+A short word (e.g. @samp{auctex}). This is usually also the symbol
+prefix used in the program (@pxref{Coding Conventions}).
+
+@item Version
+A version number, in a form that the function @code{version-to-list}
+understands (e.g. @samp{11.86}). Each release of a package should be
+accompanied by an increase in the version number.
+
+@item Brief description
+This is shown when the package is listed in the Package Menu. It
+should occupy a single line, ideally in 36 characters or less.
+
+@item Long description
+This is shown in the buffer created by @kbd{C-h P}
+(@code{describe-package}), following the package's brief description
+and installation status. It normally spans multiple lines, and should
+fully describe the package and its capabilities.
+
+@item Dependencies
+A list of other packages (possibly including minimal acceptable
+version numbers) on which this package depends. The list may be
+empty, meaning this package has no dependencies. Otherwise,
+installing this package also automatically installs its dependencies;
+if any dependency cannot be found, the package cannot be installed.
+@end table
+
+@cindex content directory, package
+ Installing a package, either via the Package Menu, or via the
+command @code{package-install-file}, creates a subdirectory of
+@code{package-user-dir} named @file{@var{name}-@var{version}}, where
+@var{name} is the package's name and @var{version} its version
+(e.g. @file{~/.emacs.d/elpa/auctex-11.86/}). We call this the
+package's @dfn{content directory}. It is where Emacs puts the
+package's contents (the single Lisp file for a simple package, or the
+files extracted from a multi-file package).
+
+@cindex package autoloads
+ Emacs then searches every Lisp file in the content directory for
+autoload magic comments (@pxref{Autoload}). These autoload
+definitions are saved to a file named @file{@var{name}-autoloads.el}
+in the content directory. They are typically used to autoload the
+principal user commands defined in the package, but they can also
+perform other tasks, such as adding an element to
+@code{auto-mode-alist} (@pxref{Auto Major Mode}). During this time,
+Emacs will also byte-compile the Lisp files.
+
+ After installation, and (by default) each time Emacs is started, the
+installed package is @dfn{activated}. During activation, Emacs adds
+the package's content directory to @code{load-path}, and evaluates the
+autoload definitions in @file{@var{name}-autoloads.el}.
+
+ Note that a package typically does @emph{not} autoload every
+function and variable defined within it---only the handful of commands
+typically called to begin using the package.
+
+@node Simple Packages
+@section Simple Packages
+@cindex single file package
+@cindex simple package
+
+ A simple package consists of a single Emacs Lisp source file. The
+file must conform to the Emacs Lisp library header conventions
+(@pxref{Library Headers}). The package's attributes are taken from
+the various headers, as illustrated by the following example:
+
+@example
+@group
+;;; superfrobnicator.el --- Frobnicate and bifurcate flanges
+
+;; Copyright (C) 2011 Free Software Foundation, Inc.
+@end group
+
+;; Author: J. R. Hacker <jrh@@example.com>
+;; Version: 1.3
+;; Package-Requires: ((flange "1.0"))
+;; Keywords: frobnicate
+
+@dots{}
+
+;;; Commentary:
+
+;; This package provides a minor mode to frobnicate and/or
+;; bifurcate any flanges you desire. To activate it, just type
+@dots{}
+
+;;;###autoload
+(define-minor-mode superfrobnicator-mode
+@dots{}
+@end example
+
+ The name of the package is the same as the base name of the file, as
+written on the first line. Here, it is @samp{superfrobnicator}.
+
+ The brief description is also taken from the first line. Here, it
+is @samp{Frobnicate and bifurcate flanges}.
+
+ The version number comes from the @samp{Package-Version} header, if
+it exists, or from the @samp{Version} header otherwise. One or the
+other @emph{must} be present. Here, the version number is 1.3.
+
+ If the file has a @samp{;;; Commentary:} section, this section is
+used as the long description. (When displaying the description, Emacs
+omits the @samp{;;; Commentary:} line, as well as the leading comment
+characters in the commentary itself.)
+
+ If the file has a @samp{Package-Requires} header, that is used as
+the package dependencies. In the above example, the package depends
+on the @samp{flange} package, version 1.0 or higher. @xref{Library
+Headers}, for a description of the @samp{Package-Requires} header. If
+the header is omitted, the package has no dependencies.
+
+ The file ought to also contain one or more autoload magic comments,
+as explained in @ref{Packaging Basics}. In the above example, a magic
+comment autoloads @code{superfrobnicator-mode}.
+
+ @xref{Package Archives}, for a explanation of how to add a
+single-file package to a package archive.
+
+@node Multi-file Packages
+@section Multi-file Packages
+@cindex multi-file package
+
+ A multi-file package is less convenient to create than a single-file
+package, but it offers more features: it can include multiple Emacs
+Lisp files, an Info manual, and other file types (such as images).
+
+ Prior to installation, a multi-file package is stored in a package
+archive as a tar file. The tar file must be named
+@file{@var{name}-@var{version}.tar}, where @var{name} is the package
+name and @var{version} is the version number. Its contents, once
+extracted, must all appear in a directory named
+@file{@var{name}-@var{version}}, the @dfn{content directory}
+(@pxref{Packaging Basics}). Files may also extract into
+subdirectories of the content directory.
+
+ One of the files in the content directory must be named
+@file{@var{name}-pkg.el}. It must contain a single Lisp form,
+consisting of a call to the function @code{define-package}, described
+below. This defines the package's version, brief description, and
+requirements.
+
+ For example, if we distribute version 1.3 of the superfrobnicator as
+a multi-file package, the tar file would be
+@file{superfrobnicator-1.3.tar}. Its contents would extract into the
+directory @file{superfrobnicator-1.3}, and one of these would be the
+file @file{superfrobnicator-pkg.el}.
+
+@defun define-package name version &optional docstring requirements
+This function defines a package. @var{name} is the package name, a
+string. @var{version} is the version, as a string of a form that can
+be understood by the function @code{version-to-list}. @var{docstring}
+is the brief description.
+
+@var{requirements} is a list of required packages and their versions.
+Each element in this list should have the form @code{(@var{dep-name}
+@var{dep-version})}, where @var{dep-name} is a symbol whose name is
+the dependency's package name, and @var{dep-version} is the
+dependency's version (a string).
+@end defun
+
+ If the content directory contains a file named @file{README}, this
+file is used as the long description.
+
+ If the content directory contains a file named @file{dir}, this is
+assumed to be an Info directory file made with @command{install-info}.
+@xref{Invoking install-info, Invoking install-info, Invoking
+install-info, texinfo, Texinfo}. The relevant Info files should also
+be present in the content directory. In this case, Emacs will
+automatically add the content directory to @code{Info-directory-list}
+when the package is activated.
+
+ Do not include any @file{.elc} files in the package. Those are
+created when the package is installed. Note that there is no way to
+control the order in which files are byte-compiled.
+
+ Do not include any file named @file{@var{name}-autoloads.el}. This
+file is reserved for the package's autoload definitions
+(@pxref{Packaging Basics}). It is created automatically when the
+package is installed, by searching all the Lisp files in the package
+for autoload magic comments.
+
+ If the multi-file package contains auxiliary data files (such as
+images), the package's Lisp code can refer to these files via the
+variable @code{load-file-name} (@pxref{Loading}). Here is an example:
+
+@smallexample
+(defconst superfrobnicator-base (file-name-directory load-file-name))
+
+(defun superfrobnicator-fetch-image (file)
+ (expand-file-name file superfrobnicator-base))
+@end smallexample
+
+@node Package Archives
+@section Creating and Maintaining Package Archives
+@cindex package archive
+
+ Via the Package Menu, users may download packages from @dfn{package
+archives}. Such archives are specified by the variable
+@code{package-archives}, whose default value contains a single entry:
+the archive hosted by the GNU project at @url{elpa.gnu.org}. This
+section describes how to set up and maintain a package archive.
+
+@cindex base location, package archive
+@defopt package-archives
+The value of this variable is an alist of package archives recognized
+by the Emacs package manager.
+
+Each alist element corresponds to one archive, and should have the
+form @code{(@var{id} . @var{location})}, where @var{id} is the name of
+the archive (a string) and @var{location} is its @dfn{base location}
+(a string).
+
+If the base location starts with @samp{http:}, it is treated as a HTTP
+URL, and packages are downloaded from this archive via HTTP (as is the
+case for the default GNU archive).
+
+Otherwise, the base location should be a directory name. In this
+case, Emacs retrieves packages from this archive via ordinary file
+access. Such ``local'' archives are mainly useful for testing.
+@end defopt
+
+ A package archive is simply a directory in which the package files,
+and associated files, are stored. If you want the archive to be
+reachable via HTTP, this directory must be accessible to a web server.
+How to accomplish this is beyond the scope of this manual.
+
+ A convenient way to set up and update a package archive is via the
+@code{package-x} library. This is included with Emacs, but not loaded
+by default; type @kbd{M-x load-library @kbd{RET} package-x @kbd{RET}}
+to load it, or add @code{(require 'package-x)} to your init file.
+@xref{Lisp Libraries,, Lisp Libraries, emacs, The GNU Emacs Manual}.
+Once loaded, you can make use of the following:
+
+@defopt package-archive-upload-base
+The value of this variable is the base location of a package archive,
+as a directory name. The commands in the @code{package-x} library
+will use this base location.
+
+The directory name should be absolute. You may specify a remote name,
+such as @file{/ssh:foo@@example.com:/var/www/packages/}, if the
+package archive is on a different machine. @xref{Remote Files,,
+Remote Files, emacs, The GNU Emacs Manual}.
+@end defopt
+
+@deffn Command package-upload-file filename
+This command prompts for @var{filename}, a file name, and uploads that
+file to @code{package-archive-upload-base}. The file must be either a
+simple package (a @file{.el} file) or a multi-file package (a
+@file{.tar} file); otherwise, an error is raised. The package
+attributes are automatically extracted, and the archive's contents
+list is updated with this information.
+
+If @code{package-archive-upload-base} does not specify a valid
+directory, the function prompts interactively for one. If the
+directory does not exist, it is created. The directory need not have
+any initial contents (i.e., you can use this command to populate an
+initially empty archive).
+@end deffn
+
+@deffn Command package-upload-buffer
+This command is similar to @code{package-upload-file}, but instead of
+prompting for a package file, it uploads the contents of the current
+buffer. The current buffer must be visiting a simple package (a
+@file{.el} file) or a multi-file package (a @file{.tar} file);
+otherwise, an error is raised.
+@end deffn
+
+@noindent
+After you create an archive, remember that it is not accessible in the
+Package Menu interface unless it is in @code{package-archives}.
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index 92846bf6d5..1124d58ebc 100644
--- a/doc/lispref/positions.texi
+++ b/doc/lispref/positions.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/positions
@node Positions, Markers, Frames, Top
@@ -988,7 +987,3 @@ This is the contents of foo@point{}
@end group
@end example
@end defspec
-
-@ignore
- arch-tag: 56e8ff26-4ffe-4832-a141-7e991a2d0f87
-@end ignore
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index f3f68a7947..1a1b63683c 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/processes
@@ -267,10 +266,9 @@ subprocess by @code{call-process-region} is encoded using a coding
system, much like text written into a file. @xref{Coding Systems}.
@defun call-process program &optional infile destination display &rest args
-This function calls @var{program} in a separate process and waits for
-it to finish.
+This function calls @var{program} and waits for it to finish.
-The standard input for the process comes from file @var{infile} if
+The standard input for the new process comes from file @var{infile} if
@var{infile} is not @code{nil}, and from the null device otherwise.
The argument @var{destination} says where to put the process output.
Here are the possibilities:
@@ -301,6 +299,9 @@ function returns.
MS-DOS doesn't support asynchronous subprocesses, so this option doesn't
work there.
+@item @code{(:file @var{file-name})}
+Send the output to the file name specified.
+
@item @code{(@var{real-destination} @var{error-destination})}
Keep the standard output stream separate from the standard error stream;
deal with the ordinary output as specified by @var{real-destination},
@@ -489,10 +490,10 @@ inputinput@point{}
@end defun
@defun call-process-shell-command command &optional infile destination display &rest args
-This function executes the shell command @var{command} synchronously
-in a separate process. The final arguments @var{args} are additional
-arguments to add at the end of @var{command}. The other arguments
-are handled as in @code{call-process}.
+This function executes the shell command @var{command} synchronously.
+The final arguments @var{args} are additional arguments to add at the
+end of @var{command}. The other arguments are handled as in
+@code{call-process}.
@end defun
@defun process-file-shell-command command &optional infile destination display &rest args
@@ -507,12 +508,12 @@ then returns the command's output as a string.
@end defun
@defun process-lines program &rest args
-This function runs @var{program} in a separate process, waits for it
-to finish, and returns its output as a list of strings. Each string
-in the list holds a single line of text output by the program; the
-end-of-line characters are stripped from each line. The arguments
-beyond @var{program}, @var{args}, are strings that specify
-command-line arguments with which to run the program.
+This function runs @var{program}, waits for it to finish, and returns
+its output as a list of strings. Each string in the list holds a
+single line of text output by the program; the end-of-line characters
+are stripped from each line. The arguments beyond @var{program},
+@var{args}, are strings that specify command-line arguments with which
+to run the program.
If @var{program} exits with a non-zero exit status, this function
signals an error.
@@ -875,7 +876,9 @@ terminated, the value is 0.
This function returns the terminal name that @var{process} is using for
its communication with Emacs---or @code{nil} if it is using pipes
instead of a terminal (see @code{process-connection-type} in
-@ref{Asynchronous Processes}).
+@ref{Asynchronous Processes}). If @var{process} represents a program
+running on a remote host, the terminal name used by that program on
+the remote host is provided as process property @code{remote-tty}.
@end defun
@defun process-coding-system process
@@ -1278,22 +1281,24 @@ process's buffer, mimicking the actions of Emacs when there is no
filter. Such filter functions need to use @code{set-buffer} in order to
be sure to insert in that buffer. To avoid setting the current buffer
semipermanently, these filter functions must save and restore the
-current buffer. They should also update the process marker, and in some
-cases update the value of point. Here is how to do these things:
+current buffer. They should also check whether the buffer is still
+alive, update the process marker, and in some cases update the value
+of point. Here is how to do these things:
@smallexample
@group
(defun ordinary-insertion-filter (proc string)
- (with-current-buffer (process-buffer proc)
- (let ((moving (= (point) (process-mark proc))))
+ (when (buffer-live-p (process-buffer proc))
+ (with-current-buffer (process-buffer proc)
+ (let ((moving (= (point) (process-mark proc))))
@end group
@group
- (save-excursion
- ;; @r{Insert the text, advancing the process marker.}
- (goto-char (process-mark proc))
- (insert string)
- (set-marker (process-mark proc) (point)))
- (if moving (goto-char (process-mark proc))))))
+ (save-excursion
+ ;; @r{Insert the text, advancing the process marker.}
+ (goto-char (process-mark proc))
+ (insert string)
+ (set-marker (process-mark proc) (point)))
+ (if moving (goto-char (process-mark proc)))))))
@end group
@end smallexample
@@ -1320,12 +1325,6 @@ expression searching or matching had to explicitly save and restore the
match data. Now Emacs does this automatically for filter functions;
they never need to do it explicitly. @xref{Match Data}.
- A filter function that writes the output into the buffer of the
-process should check whether the buffer is still alive. If it tries to
-insert into a dead buffer, it will get an error. The expression
-@code{(buffer-name (process-buffer @var{process}))} returns @code{nil}
-if the buffer is dead.
-
The output to the function may come in chunks of any size. A program
that produces the same output twice in a row may send it as one batch of
200 characters one time, and five batches of 40 characters the next. If
@@ -3002,7 +3001,3 @@ Fetching data from this structure:
(bindat-get-field decoded 'item 1 'id)
@result{} "BCDEFG"
@end lisp
-
-@ignore
- arch-tag: ba9da253-e65f-4e7f-b727-08fba0a1df7a
-@end ignore
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index 360ee1e9ae..27b089f75b 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/searching
@@ -909,7 +908,11 @@ for Font Lock mode.
If the optional argument @var{paren} is non-@code{nil}, then the
returned regular expression is always enclosed by at least one
parentheses-grouping construct. If @var{paren} is @code{words}, then
-that construct is additionally surrounded by @samp{\<} and @samp{\>}.
+that construct is additionally surrounded by @samp{\<} and @samp{\>};
+alternatively, if @var{paren} is @code{symbols}, then that construct
+is additionally surrounded by @samp{\_<} and @samp{\_>}
+(@code{symbols} is often appropriate when matching
+programming-language keywords and the like).
This simplified definition of @code{regexp-opt} produces a
regular expression which is equivalent to the actual value
@@ -1818,7 +1821,3 @@ values of the variables @code{sentence-end-double-space}
@code{sentence-end-without-period} and
@code{sentence-end-without-space}.
@end defun
-
-@ignore
- arch-tag: c2573ca2-18aa-4839-93b8-924043ef831f
-@end ignore
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index 81a0c6b952..825dd976ea 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/sequences
@@ -729,7 +728,3 @@ bv
@noindent
These results make sense because the binary codes for control-_ and
control-W are 11111 and 10111, respectively.
-
-@ignore
- arch-tag: fcf1084a-cd29-4adc-9f16-68586935b386
-@end ignore
diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi
index 39943372e2..9802c7485d 100644
--- a/doc/lispref/streams.texi
+++ b/doc/lispref/streams.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1994, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/streams
@node Read and Print, Minibuffers, Debugging, Top
@@ -837,7 +836,3 @@ variable. The string should hold a @samp{%}-specification to be used
in the C function @code{sprintf}. For further restrictions on what
you can use, see the variable's documentation string.
@end defvar
-
-@ignore
- arch-tag: 07636b8c-c4e3-4735-9e06-2e864320b434
-@end ignore
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index 87b9f4368f..05ac40e90c 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/strings
@@ -1142,7 +1141,3 @@ This function makes @var{char} case-invariant, with syntax
This command displays a description of the contents of the current
buffer's case table.
@end deffn
-
-@ignore
- arch-tag: 700b8e95-7aa5-4b52-9eb3-8f2e1ea152b4
-@end ignore
diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi
index 257a2a4c9a..60d14d567d 100644
--- a/doc/lispref/symbols.texi
+++ b/doc/lispref/symbols.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/symbols
@node Symbols, Evaluation, Hash Tables, Top
@@ -590,7 +589,3 @@ between a missing property and a property with the value @code{nil}.
The value is actually the tail of @var{plist} whose @code{car} is
@var{property}.
@end defun
-
-@ignore
- arch-tag: 8750b7d2-de4c-4923-809a-d35fc39fd8ce
-@end ignore
diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi
index 0a5c9da1b7..6582a8dfb0 100644
--- a/doc/lispref/syntax.texi
+++ b/doc/lispref/syntax.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/syntax
@@ -292,19 +291,21 @@ identifying them as generic string delimiters.
@cindex syntax flags
In addition to the classes, entries for characters in a syntax table
-can specify flags. There are seven possible flags, represented by the
-characters @samp{1}, @samp{2}, @samp{3}, @samp{4}, @samp{b}, @samp{n},
-and @samp{p}.
-
- All the flags except @samp{n} and @samp{p} are used to describe
-multi-character comment delimiters. The digit flags indicate that a
-character can @emph{also} be part of a comment sequence, in addition to
-the syntactic properties associated with its character class. The flags
-are independent of the class and each other for the sake of characters
-such as @samp{*} in C mode, which is a punctuation character, @emph{and}
-the second character of a start-of-comment sequence (@samp{/*}),
-@emph{and} the first character of an end-of-comment sequence
-(@samp{*/}).
+can specify flags. There are eight possible flags, represented by the
+characters @samp{1}, @samp{2}, @samp{3}, @samp{4}, @samp{b}, @samp{c},
+@samp{n}, and @samp{p}.
+
+ All the flags except @samp{p} are used to describe comment
+delimiters. The digit flags are used for comment delimiters made up
+of 2 characters. They indicate that a character can @emph{also} be
+part of a comment sequence, in addition to the syntactic properties
+associated with its character class. The flags are independent of the
+class and each other for the sake of characters such as @samp{*} in
+C mode, which is a punctuation character, @emph{and} the second
+character of a start-of-comment sequence (@samp{/*}), @emph{and} the
+first character of an end-of-comment sequence (@samp{*/}). The flags
+@samp{b}, @samp{c}, and @samp{n} are used to qualify the corresponding
+comment delimiter.
Here is a table of the possible flags for a character @var{c},
and what they mean:
@@ -325,63 +326,62 @@ sequence.
@samp{4} means @var{c} is the second character of such a sequence.
@item
-@c Emacs 19 feature
@samp{b} means that @var{c} as a comment delimiter belongs to the
-alternative ``b'' comment style.
+alternative ``b'' comment style. For a two-character comment starter,
+this flag is only significant on the second char, and for a 2-character
+comment ender it is only significant on the first char.
-Emacs supports two comment styles simultaneously in any one syntax
-table. This is for the sake of C++. Each style of comment syntax has
-its own comment-start sequence and its own comment-end sequence. Each
-comment must stick to one style or the other; thus, if it starts with
-the comment-start sequence of style ``b,'' it must also end with the
-comment-end sequence of style ``b.''
+@item
+@samp{c} means that @var{c} as a comment delimiter belongs to the
+alternative ``c'' comment style. For a two-character comment
+delimiter, @samp{c} on either character makes it of style ``c''.
-The two comment-start sequences must begin with the same character; only
-the second character may differ. Mark the second character of the
-``b''-style comment-start sequence with the @samp{b} flag.
+@item
+@samp{n} on a comment delimiter character specifies
+that this kind of comment can be nested. For a two-character
+comment delimiter, @samp{n} on either character makes it
+nestable.
-A comment-end sequence (one or two characters) applies to the ``b''
-style if its first character has the @samp{b} flag set; otherwise, it
-applies to the ``a'' style.
+Emacs supports several comment styles simultaneously in any one syntax
+table. A comment style is a set of flags @samp{b}, @samp{c}, and
+@samp{n}, so there can be up to 8 different comment styles.
+Each comment delimiter has a style and only matches comment delimiters
+of the same style. Thus if a comment starts with the comment-start
+sequence of style ``bn'', it will extend until the next matching
+comment-end sequence of style ``bn''.
-The appropriate comment syntax settings for C++ are as follows:
+The appropriate comment syntax settings for C++ can be as follows:
@table @asis
@item @samp{/}
-@samp{124b}
+@samp{124}
@item @samp{*}
-@samp{23}
+@samp{23b}
@item newline
-@samp{>b}
+@samp{>}
@end table
This defines four comment-delimiting sequences:
@table @asis
@item @samp{/*}
-This is a comment-start sequence for ``a'' style because the
-second character, @samp{*}, does not have the @samp{b} flag.
+This is a comment-start sequence for ``b'' style because the
+second character, @samp{*}, has the @samp{b} flag.
@item @samp{//}
-This is a comment-start sequence for ``b'' style because the second
-character, @samp{/}, does have the @samp{b} flag.
+This is a comment-start sequence for ``a'' style because the second
+character, @samp{/}, does not have the @samp{b} flag.
@item @samp{*/}
-This is a comment-end sequence for ``a'' style because the first
-character, @samp{*}, does not have the @samp{b} flag.
+This is a comment-end sequence for ``b'' style because the first
+character, @samp{*}, has the @samp{b} flag.
@item newline
-This is a comment-end sequence for ``b'' style, because the newline
-character has the @samp{b} flag.
+This is a comment-end sequence for ``a'' style, because the newline
+character does not have the @samp{b} flag.
@end table
@item
-@samp{n} on a comment delimiter character specifies
-that this kind of comment can be nested. For a two-character
-comment delimiter, @samp{n} on either character makes it
-nestable.
-
-@item
@c Emacs 19 feature
@samp{p} identifies an additional ``prefix character'' for Lisp syntax.
These characters are treated as whitespace when they appear between
@@ -1191,7 +1191,3 @@ category table. It inserts the descriptions in a buffer, and then
displays that buffer. If @var{buffer-or-name} is non-@code{nil}, it
describes the category table of that buffer instead.
@end deffn
-
-@ignore
- arch-tag: 4d914e96-0283-445c-9233-75d33662908c
-@end ignore
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index f4dce6a1bc..6a3f53c55e 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -1,8 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/text
@node Text, Non-ASCII Characters, Markers, Top
@@ -59,6 +57,7 @@ the character after point.
position stored in a register.
* Base 64:: Conversion to or from base 64 encoding.
* MD5 Checksum:: Compute the MD5 "message digest"/"checksum".
+* Parsing HTML:: Parsing HTML and XML.
* Atomic Changes:: Installing several buffer changes "atomically".
* Change Hooks:: Supplying functions to be run when text is changed.
@end menu
@@ -1109,16 +1108,13 @@ use @code{string=} to compare it with the last text Emacs provided.)
@defvar interprogram-cut-function
This variable provides a way of communicating killed text to other
programs, when you are using a window system. Its value should be
-@code{nil} or a function of one required and one optional argument.
+@code{nil} or a function of one required argument.
If the value is a function, @code{kill-new} and @code{kill-append} call
-it with the new first element of the kill ring as the first argument.
-The second, optional, argument has the same meaning as the @var{push}
-argument to @code{x-set-cut-buffer} (@pxref{Definition of
-x-set-cut-buffer}) and only affects the second and later cut buffers.
+it with the new first element of the kill ring as the argument.
The normal use of this function is to set the window system's primary
-selection (and first cut buffer) from the newly killed text.
+selection from the newly killed text.
@xref{Window System Selections}.
@end defvar
@@ -3208,12 +3204,16 @@ the @code{line-prefix} variable). @xref{Truncation}.
@cindex hooks for changing a character
@kindex modification-hooks @r{(text property)}
If a character has the property @code{modification-hooks}, then its
-value should be a list of functions; modifying that character calls all
-of those functions. Each function receives two arguments: the beginning
-and end of the part of the buffer being modified. Note that if a
-particular modification hook function appears on several characters
-being modified by a single primitive, you can't predict how many times
-the function will be called.
+value should be a list of functions; modifying that character calls
+all of those functions before the actual modification. Each function
+receives two arguments: the beginning and end of the part of the
+buffer being modified. Note that if a particular modification hook
+function appears on several characters being modified by a single
+primitive, you can't predict how many times the function will
+be called.
+Furthermore, insertion will not modify any existing character, so this
+hook will only be run when removing some characters, replacing them
+with others, or changing their text-properties.
If these functions modify the buffer, they should bind
@code{inhibit-modification-hooks} to @code{t} around doing so, to
@@ -3265,15 +3265,28 @@ functions (which may be the same function). In any case, all the
@code{point-left} functions are called first, followed by all the
@code{point-entered} functions.
-It is possible with @code{char-after} to examine characters at various
+It is possible to use @code{char-after} to examine characters at various
buffer positions without moving point to those positions. Only an
actual change in the value of point runs these hook functions.
+The variable @code{inhibit-point-motion-hooks} can inhibit running the
+@code{point-left} and @code{point-entered} hooks, see @ref{Inhibit
+point motion hooks}.
+
+@item composition
+@kindex composition @r{(text property)}
+This text property is used to display a sequence of characters as a
+single glyph composed from components. But the value of the property
+itself is completely internal to Emacs and should not be manipulated
+directly by, for instance, @code{put-text-property}.
+
+@end table
+
@defvar inhibit-point-motion-hooks
-When this variable is non-@code{nil}, @code{point-left} and
-@code{point-entered} hooks are not run, and the @code{intangible}
-property has no effect. Do not set this variable globally; bind it with
-@code{let}.
+@anchor{Inhibit point motion hooks} When this variable is
+non-@code{nil}, @code{point-left} and @code{point-entered} hooks are
+not run, and the @code{intangible} property has no effect. Do not set
+this variable globally; bind it with @code{let}.
@end defvar
@defvar show-help-function
@@ -3286,15 +3299,6 @@ string to display. Tooltip mode (@pxref{Tooltips,,, emacs, The GNU Emacs
Manual}) provides an example.
@end defvar
-@item composition
-@kindex composition @r{(text property)}
-This text property is used to display a sequence of characters as a
-single glyph composed from components. But the value of the property
-itself is completely internal to Emacs and should not be manipulated
-directly by, for instance, @code{put-text-property}.
-
-@end table
-
@node Format Properties
@subsection Formatted Text Properties
@@ -4085,11 +4089,62 @@ using the specified or chosen coding system. However, if
coding instead.
@end defun
+@node Parsing HTML
+@section Parsing HTML
+@cindex parsing html
+
+@defun libxml-parse-html-region start end &optional base-url
+This function provides HTML parsing via the @code{libxml2} library.
+It parses ``real world'' HTML and tries to return a sensible parse tree
+regardless.
+
+In addition to @var{start} and @var{end} (specifying the start and end
+of the region to act on), it takes an optional parameter,
+@var{base-url}, which is used to expand relative URLs in the document,
+if any.
+
+Here's an example demonstrating the structure of the parsed data you
+get out. Given this HTML document:
+
+@example
+<html><hEad></head><body width=101><div class=thing>Foo<div>Yes
+@end example
+
+You get this parse tree:
+
+@example
+(html
+ (head)
+ (body
+ (:width . "101")
+ (div
+ (:class . "thing")
+ (text . "Foo")
+ (div
+ (text . "Yes\n")))))
+@end example
+
+It's a simple tree structure, where the @code{car} for each node is
+the name of the node, and the @code{cdr} is the value, or the list of
+values.
+
+Attributes are coded the same way as child nodes, but with @samp{:} as
+the first character.
+@end defun
+
+@cindex parsing xml
+@defun libxml-parse-xml-region start end &optional base-url
+
+This is much the same as @code{libxml-parse-html-region} above, but
+operates on XML instead of HTML, and is correspondingly stricter about
+syntax.
+@end defun
+
@node Atomic Changes
@section Atomic Change Groups
@cindex atomic changes
- In data base terminology, an @dfn{atomic} change is an indivisible
+ In database terminology, an @dfn{atomic} change is an indivisible
change---it can succeed entirely or it can fail entirely, but it
cannot partly succeed. A Lisp program can make a series of changes to
one or several buffers as an @dfn{atomic change group}, meaning that
diff --git a/doc/lispref/tindex.pl b/doc/lispref/tindex.pl
index b1c65fcf2c..5c9b88f57b 100755
--- a/doc/lispref/tindex.pl
+++ b/doc/lispref/tindex.pl
@@ -1,7 +1,6 @@
#! /usr/bin/perl
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-# 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2000-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -123,4 +122,3 @@ foreach $key (keys %removed) {
print " $key\n";
}
-# arch-tag: f8460df6-6bef-4c98-8555-e2c63a88b0fa
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index 9be6c061bf..be37eb2034 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1995, 1998, 1999, 2001, 2002,
-@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1993, 1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/tips
@@ -205,12 +204,6 @@ definition automatically. Avoid constructing the names in the macro
itself, since that would confuse these tools.
@item
-Please keep the names of your Emacs Lisp source files to 13 characters
-or less. This way, if the files are compiled, the compiled files' names
-will be 14 characters or less, which is short enough to fit on all kinds
-of Unix systems.
-
-@item
In some other systems there is a convention of choosing variable names
that begin and end with @samp{*}. We don't use that convention in Emacs
Lisp, so please don't use it in your programs. (Emacs uses such names
@@ -1053,6 +1046,31 @@ Please use that command to see a list of the meaningful keywords.
This field is important; it's how people will find your package when
they're looking for things by topic area. To separate the keywords, you
can use spaces, commas, or both.
+
+@item Package-Version
+If @samp{Version} is not suitable for use by the package manager, then
+a package can define @samp{Package-Version}; it will be used instead.
+This is handy if @samp{Version} is an RCS id or something else that
+cannot be parsed by @code{version-to-list}. @xref{Packaging Basics}.
+
+@item Package-Requires
+If this exists, it names packages on which the current package depends
+for proper operation. @xref{Packaging Basics}. This is used by the
+package manager both at download time (to ensure that a complete set
+of packages is downloaded) and at activation time (to ensure that a
+package is activated if and only if all its dependencies have been).
+
+Its format is a list of lists. The @code{car} of each sub-list is the
+name of a package, as a symbol. The @code{cadr} of each sub-list is
+the minimum acceptable version number, as a string. For instance:
+
+@smallexample
+;; Package-Requires: ((gnus "1.0") (bubbles "2.7.2"))
+@end smallexample
+
+The package code automatically defines a package named @samp{emacs}
+with the version number of the currently running Emacs. This can be
+used to require a minimal version of Emacs for a package.
@end table
Just about every Lisp library ought to have the @samp{Author} and
@@ -1091,7 +1109,3 @@ This is the @dfn{footer line}; it appears at the very end of the file.
Its purpose is to enable people to detect truncated versions of the file
from the lack of a footer line.
@end table
-
-@ignore
- arch-tag: 9ea911c2-6b1d-47dd-88b7-0a94e8b27c2e
-@end ignore
diff --git a/doc/lispref/two-volume-cross-refs.txt b/doc/lispref/two-volume-cross-refs.txt
index e8ec103f61..99b48d342a 100644
--- a/doc/lispref/two-volume-cross-refs.txt
+++ b/doc/lispref/two-volume-cross-refs.txt
@@ -1,6 +1,5 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
- See end for copying conditions.
+Copyright (C) 2001-2011 Free Software Foundation, Inc.
+See end for copying conditions.
Two Volume Cross References
===========================
diff --git a/doc/lispref/two-volume.make b/doc/lispref/two-volume.make
index edd2305028..8949bfe015 100644
--- a/doc/lispref/two-volume.make
+++ b/doc/lispref/two-volume.make
@@ -1,4 +1,4 @@
-# Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2007-2011 Free Software Foundation, Inc.
# See end for copying conditions.
# although it would be nice to use tex rather than pdftex to avoid
@@ -221,4 +221,3 @@ elisp2-init: vol2.texi
# You should have received a copy of the GNU General Public License
# along with this file. If not, see <http://www.gnu.org/licenses/>.
-# arch-tag: 5c258a2e-d4a9-4d0e-b279-fb3a6faa27eb
diff --git a/doc/lispref/two.el b/doc/lispref/two.el
index 339ec299dd..b3a8666bcf 100644
--- a/doc/lispref/two.el
+++ b/doc/lispref/two.el
@@ -1,7 +1,6 @@
;; Auxiliary functions for preparing a two volume manual.
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
;; --rjc 30mar92
@@ -76,5 +75,4 @@ This is for the *Elisp Ref Manual*."
(defun volume-numbers-toc-markup-I () (volume-numbers-toc-markup "I"))
(defun volume-numbers-toc-markup-II () (volume-numbers-toc-markup "II"))
-;; arch-tag: 848955fe-e9cf-45e7-a2f1-570ef156d6a5
;;; two.el ends here
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 1c86a7eb65..08712466b5 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1,8 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000,
-@c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1990-1995, 1998-2011 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/variables
@node Variables, Functions, Control Structures, Top
@@ -27,22 +25,22 @@ textual Lisp program is written using the read syntax for the symbol
representing the variable.
@menu
-* Global Variables:: Variable values that exist permanently, everywhere.
-* Constant Variables:: Certain "variables" have values that never change.
-* Local Variables:: Variable values that exist only temporarily.
-* Void Variables:: Symbols that lack values.
-* Defining Variables:: A definition says a symbol is used as a variable.
-* Tips for Defining:: Things you should think about when you
+* Global Variables:: Variable values that exist permanently, everywhere.
+* Constant Variables:: Certain "variables" have values that never change.
+* Local Variables:: Variable values that exist only temporarily.
+* Void Variables:: Symbols that lack values.
+* Defining Variables:: A definition says a symbol is used as a variable.
+* Tips for Defining:: Things you should think about when you
define a variable.
-* Accessing Variables:: Examining values of variables whose names
+* Accessing Variables:: Examining values of variables whose names
are known only at run time.
-* Setting Variables:: Storing new values in variables.
-* Variable Scoping:: How Lisp chooses among local and global values.
-* Buffer-Local Variables:: Variable values in effect only in one buffer.
-* File Local Variables:: Handling local variable lists in files.
-* Directory Local Variables:: Local variables common to all files in a directory.
-* Frame-Local Variables:: Frame-local bindings for variables.
-* Variable Aliases:: Variables that are aliases for other variables.
+* Setting Variables:: Storing new values in variables.
+* Variable Scoping:: How Lisp chooses among local and global values.
+* Buffer-Local Variables:: Variable values in effect only in one buffer.
+* File Local Variables:: Handling local variable lists in files.
+* Directory Local Variables:: Local variables common to all files in a directory.
+* Frame-Local Variables:: Frame-local bindings for variables.
+* Variable Aliases:: Variables that are aliases for other variables.
* Variables with Restricted Values:: Non-constant variables whose value can
@emph{not} be an arbitrary Lisp object.
@end menu
@@ -439,14 +437,18 @@ this reason, user options must be defined with @code{defvar}.
This special form defines @var{symbol} as a variable and can also
initialize and document it. The definition informs a person reading
your code that @var{symbol} is used as a variable that might be set or
-changed. Note that @var{symbol} is not evaluated; the symbol to be
-defined must appear explicitly in the @code{defvar}.
+changed. It also declares this variable as @dfn{special}, meaning that it
+should always use dynamic scoping rules. Note that @var{symbol} is not
+evaluated; the symbol to be defined must appear explicitly in the
+@code{defvar}.
If @var{symbol} is void and @var{value} is specified, @code{defvar}
evaluates it and sets @var{symbol} to the result. But if @var{symbol}
already has a value (i.e., it is not void), @var{value} is not even
-evaluated, and @var{symbol}'s value remains unchanged. If @var{value}
-is omitted, the value of @var{symbol} is not changed in any case.
+evaluated, and @var{symbol}'s value remains unchanged.
+If @var{value} is omitted, the value of @var{symbol} is not changed in any
+case; instead, the only effect of @code{defvar} is to declare locally that this
+variable exists elsewhere and should hence always use dynamic scoping rules.
If @var{symbol} has a buffer-local binding in the current buffer,
@code{defvar} operates on the default value, which is buffer-independent,
@@ -883,7 +885,7 @@ the others.
@cindex extent
@cindex dynamic scoping
@cindex lexical scoping
- Local bindings in Emacs Lisp have @dfn{indefinite scope} and
+ By default, local bindings in Emacs Lisp have @dfn{indefinite scope} and
@dfn{dynamic extent}. @dfn{Scope} refers to @emph{where} textually in
the source code the binding can be accessed. ``Indefinite scope'' means
that any part of the program can potentially access the variable
@@ -895,6 +897,8 @@ lasts as long as the activation of the construct that established it.
@dfn{dynamic scoping}. By contrast, most programming languages use
@dfn{lexical scoping}, in which references to a local variable must be
located textually within the function or block that binds the variable.
+Emacs can also support lexical scoping, upon request (@pxref{Lexical
+Binding}).
@cindex CL note---special variables
@quotation
@@ -903,11 +907,12 @@ dynamically scoped, like all variables in Emacs Lisp.
@end quotation
@menu
-* Scope:: Scope means where in the program a value is visible.
+* Scope:: Scope means where in the program a value is visible.
Comparison with other languages.
-* Extent:: Extent means how long in time a value exists.
-* Impl of Scope:: Two ways to implement dynamic scoping.
-* Using Scoping:: How to use dynamic scoping carefully and avoid problems.
+* Extent:: Extent means how long in time a value exists.
+* Impl of Scope:: Two ways to implement dynamic scoping.
+* Using Scoping:: How to use dynamic scoping carefully and avoid problems.
+* Lexical Binding:: Use of lexical scoping.
@end menu
@node Scope
@@ -971,12 +976,12 @@ Here, when @code{foo} is called by @code{binder}, it binds @code{x}.
by @code{foo} instead of the one bound by @code{binder}.
@end itemize
-Emacs Lisp uses dynamic scoping because simple implementations of
+Emacs Lisp used dynamic scoping by default because simple implementations of
lexical scoping are slow. In addition, every Lisp system needs to offer
-dynamic scoping at least as an option; if lexical scoping is the norm,
-there must be a way to specify dynamic scoping instead for a particular
-variable. It might not be a bad thing for Emacs to offer both, but
-implementing it with dynamic scoping only was much easier.
+dynamic scoping at least as an option; if lexical scoping is the norm, there
+must be a way to specify dynamic scoping instead for a particular variable.
+Nowadays, Emacs offers both, but the default is still to use exclusively
+dynamic scoping.
@node Extent
@subsection Extent
@@ -1090,6 +1095,86 @@ for inter-function usage. It also avoids a warning from the byte
compiler. Choose the variable's name to avoid name conflicts---don't
use short names like @code{x}.
+
+@node Lexical Binding
+@subsection Use of Lexical Scoping
+
+Emacs Lisp can be evaluated in two different modes: in dynamic binding mode or
+lexical binding mode. In dynamic binding mode, all local variables use dynamic
+scoping, whereas in lexical binding mode variables that have been declared
+@dfn{special} (i.e., declared with @code{defvar} or @code{defconst}) use
+dynamic scoping and all others use lexical scoping.
+
+@defvar lexical-binding
+When non-nil, evaluation of Lisp code uses lexical scoping for non-special
+local variables instead of dynamic scoping. If nil, dynamic scoping is used
+for all local variables. This variable is typically set for a whole Elisp file
+via file local variables (@pxref{File Local Variables}).
+@end defvar
+
+@defun special-variable-p SYMBOL
+Return whether SYMBOL has been declared as a special variable, via
+@code{defvar} or @code{defconst}.
+@end defun
+
+The use of a special variable as a formal argument in a function is generally
+discouraged and its behavior in lexical binding mode is unspecified (it may use
+lexical scoping sometimes and dynamic scoping other times).
+
+Functions like @code{symbol-value}, @code{boundp}, or @code{set} only know
+about dynamically scoped variables, so you cannot get the value of a lexical
+variable via @code{symbol-value} and neither can you change it via @code{set}.
+Another particularity is that code in the body of a @code{defun} or
+@code{defmacro} cannot refer to surrounding lexical variables.
+
+Evaluation of a @code{lambda} expression in lexical binding mode will not just
+return that lambda expression unchanged, as in the dynamic binding case, but
+will instead construct a new object that remembers the current lexical
+environment in which that lambda expression was defined, so that the function
+body can later be evaluated in the proper context. Those objects are called
+@dfn{closures}. They are also functions, in the sense that they are accepted
+by @code{funcall}, and they are represented by a cons cell whose @code{car} is
+the symbol @code{closure}.
+
+@menu
+* Converting to Lexical Binding:: How to start using lexical scoping
+@end menu
+
+@node Converting to Lexical Binding
+@subsubsection Converting a package to use lexical scoping
+
+Lexical scoping, as currently implemented, does not bring many significant
+benefits, unless you are a seasoned functional programmer addicted to
+higher-order functions. But its importance will increase in the future:
+lexical scoping opens up a lot more opportunities for optimization, so
+lexically scoped code is likely to run faster in future Emacs versions, and it
+is much more friendly to concurrency, which we want to add in the near future.
+
+Converting a package to lexical binding is usually pretty easy and should not
+break backward compatibility: just add a file-local variable setting
+@code{lexical-binding} to @code{t} and add declarations of the form
+@code{(defvar @var{VAR})} for every variable which still needs to use
+dynamic scoping.
+
+To find which variables need this declaration, the simplest solution is to
+check the byte-compiler's warnings. The byte-compiler will usually find those
+variables either because they are used outside of a let-binding (leading to
+warnings about reference or assignment to ``free variable @var{VAR}'') or
+because they are let-bound but not used within the let-binding (leading to
+warnings about ``unused lexical variable @var{VAR}'').
+
+In cases where a dynamically scoped variable was bound as a function argument,
+you will also need to move this binding to a @code{let}. These cases are also
+flagged by the byte-compiler.
+
+To silence byte-compiler warnings about unused variables, just use a variable
+name that start with an underscore, which the byte-compiler interpret as an
+indication that this is a variable known not to be used.
+
+In most cases, the resulting code will then work with either setting of
+@code{lexical-binding}, so it can still be used with older Emacsen (which will
+simply ignore the @code{lexical-binding} variable setting).
+
@node Buffer-Local Variables
@section Buffer-Local Variables
@cindex variable, buffer-local
@@ -1105,9 +1190,9 @@ local to each terminal, or to each frame. @xref{Multiple Terminals},
and @xref{Frame-Local Variables}.)
@menu
-* Intro to Buffer-Local:: Introduction and concepts.
-* Creating Buffer-Local:: Creating and destroying buffer-local bindings.
-* Default Value:: The default value is seen in buffers
+* Intro to Buffer-Local:: Introduction and concepts.
+* Creating Buffer-Local:: Creating and destroying buffer-local bindings.
+* Default Value:: The default value is seen in buffers
that don't have their own buffer-local values.
@end menu
@@ -1585,12 +1670,16 @@ This function works by walking the alist stored in
@code{file-local-variables-alist} and applying each local variable in
turn. It calls @code{before-hack-local-variables-hook} and
@code{hack-local-variables-hook} before and after applying the
-variables, respectively.
+variables, respectively. It only calls the before-hook if the alist
+is non-@code{nil}; it always calls the other hook. This
+function ignores a @samp{mode} element if it specifies the same major
+mode as the buffer already has.
If the optional argument @var{mode-only} is non-@code{nil}, then all
-this function does is return @code{t} if the @w{@samp{-*-}} line or
-the local variables list specifies a mode and @code{nil} otherwise.
-It does not set the mode nor any other file-local variable.
+this function does is return a symbol specifying the major mode,
+if the @w{@samp{-*-}} line or the local variables list specifies one,
+and @code{nil} otherwise. It does not set the mode nor any other
+file-local variable.
@end defun
@defvar file-local-variables-alist
@@ -1720,7 +1809,8 @@ directory-local variables. The name of the file is
The MS-DOS version of Emacs uses @file{_dir-locals.el} instead, due to
limitations of the DOS filesystems.
}. A file by that name in a directory causes Emacs to apply its
-settings to any file in that directory or any of its subdirectories.
+settings to any file in that directory or any of its subdirectories
+(optionally, you can exclude subdirectories; see below).
If some of the subdirectories have their own @file{.dir-locals.el}
files, Emacs uses the settings from the deepest file it finds starting
from the file's directory and moving up the directory tree. The file
@@ -1751,7 +1841,10 @@ file's buffer turns on a mode that is derived from @var{major-mode},
then the all the variables in the associated @var{alist} are applied;
@var{alist} should be of the form @code{(@var{name} . @var{value})}.
A special value @code{nil} for @var{major-mode} means the settings are
-applicable to any mode.
+applicable to any mode. In @var{alist}, you can use a special
+@var{name}: @code{subdirs}. If the associated value is
+@code{nil}, the alist is only applied to files in the relevant
+directory, not to those in any subdirectories.
With the second form of @var{variables}, if @var{directory} is the
initial substring of the file's directory, then @var{list} is applied
@@ -1939,7 +2032,3 @@ Attempting to assign them any other value will result in an error:
(setq window-min-height 5.0)
@error{} Wrong type argument: integerp, 5.0
@end example
-
-@ignore
- arch-tag: 5ff62c44-2b51-47bb-99d4-fea5aeec5d3e
-@end ignore
diff --git a/doc/lispref/vol1.texi b/doc/lispref/vol1.texi
index d6bc4538ad..afcd3d6cbd 100644
--- a/doc/lispref/vol1.texi
+++ b/doc/lispref/vol1.texi
@@ -1,8 +1,7 @@
\input texinfo @c -*-texinfo-*-
@c This file is used for printing the GNU Emacs Lisp Reference Manual
@c in two volumes. It is a modified version of elisp.texi.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c %**start of header
@setfilename elisp
@@ -27,7 +26,7 @@
@c Version of the manual and of Emacs.
@c Please remember to update the edition number in README as well.
@set VERSION 3.0
-@set EMACSVER 23.3.50
+@include emacsver.texi
@set DATE July 2009
@dircategory Emacs
@@ -180,6 +179,8 @@ Reference Manual, corresponding to GNU Emacs version @value{EMACSVER}.
* System Interface:: Getting the user id, system type, environment
variables, and other such things.
+* Packaging:: Preparing Lisp code for distribution.
+
Appendices
* Antinews:: Info for users downgrading to Emacs 22.
@@ -1414,6 +1415,12 @@ Operating System Interface
* Session Management:: Saving and restoring state with
X Session Management.
+Preparing Lisp code for distribution
+
+* Packaging Basics:: The basic concepts of Emacs Lisp packages.
+* Simple Packages:: How to package a single .el file.
+* Multi-file Packages:: How to package multiple files.
+
Starting Up Emacs
* Startup Summary:: Sequence of actions Emacs performs at startup.
@@ -1541,7 +1548,3 @@ Object Internals
These words prevent "local variables" above from confusing Emacs.
-
-@ignore
- arch-tag: 9594760d-8801-4d1b-aeb9-f3b3166b5be2
-@end ignore
diff --git a/doc/lispref/vol2.texi b/doc/lispref/vol2.texi
index 6f7507eb40..65ffbc2386 100644
--- a/doc/lispref/vol2.texi
+++ b/doc/lispref/vol2.texi
@@ -1,8 +1,7 @@
\input texinfo @c -*-texinfo-*-
@c This file is used for printing the GNU Emacs Lisp Reference Manual
@c in two volumes. It is a modified version of elisp.texi.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c %**start of header
@setfilename elisp
@@ -27,7 +26,7 @@
@c Version of the manual and of Emacs.
@c Please remember to update the edition number in README as well.
@set VERSION 3.0
-@set EMACSVER 23.3.50
+@include emacsver.texi
@set DATE July 2009
@dircategory Emacs
@@ -179,6 +178,8 @@ Reference Manual, corresponding to GNU Emacs version @value{EMACSVER}.
* System Interface:: Getting the user id, system type, environment
variables, and other such things.
+* Packaging:: Preparing Lisp code for distribution.
+
Appendices
* Antinews:: Info for users downgrading to Emacs 22.
@@ -1413,6 +1414,12 @@ Operating System Interface
* Session Management:: Saving and restoring state with
X Session Management.
+Preparing Lisp code for distribution
+
+* Packaging Basics:: The basic concepts of Emacs Lisp packages.
+* Simple Packages:: How to package a single .el file.
+* Multi-file Packages:: How to package multiple files.
+
Starting Up Emacs
* Startup Summary:: Sequence of actions Emacs performs at startup.
@@ -1540,7 +1547,3 @@ Object Internals
These words prevent "local variables" above from confusing Emacs.
-
-@ignore
- arch-tag: dfdbecf8-fec2-49c1-8427-3e8ac8b0b849
-@end ignore
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index ee9d1a8374..2cf4a8152c 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -1,7 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
-@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+@c Copyright (C) 1990-1995, 1998-1999, 2001-2011
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/windows
@@ -827,8 +826,8 @@ This function updates the buffer list just like @code{switch-to-buffer}
unless @var{norecord} is non-@code{nil}.
@end deffn
-@deffn Command pop-to-buffer buffer-or-name &optional other-window norecord
-This command makes @var{buffer-or-name} the current buffer and switches
+@defun pop-to-buffer buffer-or-name &optional other-window norecord
+This function makes @var{buffer-or-name} the current buffer and switches
to it in some window, preferably not the window previously selected.
The ``popped-to'' window becomes the selected window. Its frame is
given the X server's focus, if possible; see @ref{Input Focus}. The
@@ -867,7 +866,7 @@ All the variables that affect @code{display-buffer} affect
This function updates the buffer list just like @code{switch-to-buffer}
unless @var{norecord} is non-@code{nil}.
-@end deffn
+@end defun
@deffn Command replace-buffer-in-windows &optional buffer-or-name
This function replaces @var{buffer-or-name} in all windows displaying
@@ -2607,7 +2606,3 @@ frame selected.
Lock fontification function, which will be called whenever parts of a
buffer are (re)fontified because a window was scrolled or its size
changed. @xref{Other Font Lock Variables}.
-
-@ignore
- arch-tag: 3f6c36e8-df49-4986-b757-417feed88be3
-@end ignore
diff --git a/doc/man/ChangeLog b/doc/man/ChangeLog
index 394d580c1c..06ff578200 100644
--- a/doc/man/ChangeLog
+++ b/doc/man/ChangeLog
@@ -2,18 +2,26 @@
* Version 23.3 released.
-2010-12-29 Jari Aalto <[email protected]> (tiny change)
+2011-01-02 Jari Aalto <[email protected]> (tiny change)
* emacsclient.1: Arrange options alphabetically (Bug#7620).
-2010-10-10 Glenn Morris <[email protected]>
+2010-10-12 Glenn Morris <[email protected]>
* emacs.1: Small fixes.
-2010-10-09 Ulrich Mueller <[email protected]>
+2010-10-12 Ulrich Mueller <[email protected]>
* emacs.1: Update license description.
+2010-10-09 Glenn Morris <[email protected]>
+
+ * b2m.1: Remove file.
+
+2010-09-25 Ulrich Mueller <[email protected]>
+
+ * etags.1: xz compression is now supported.
+
2010-08-26 Sven Joachim <[email protected]>
* emacs.1: Mention "maximized" value for the "fullscreen" X resource.
@@ -22,10 +30,14 @@
* Version 23.2 released.
+2010-03-10 Chong Yidong <[email protected]>
+
+ * Branch for 23.2.
+
2010-01-09 Chong Yidong <[email protected]>
- * emacs.1: Copyedits. Update options -Q, -mm and --daemon. Remove
- deprecated --unibyte option.
+ * emacs.1: Copyedits. Update options -Q, -mm and --daemon.
+ Remove deprecated --unibyte option.
2009-06-21 Chong Yidong <[email protected]>
@@ -102,7 +114,7 @@
;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2007-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -119,4 +131,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-;; arch-tag: 2bd1112e-157f-4884-b0ca-0fb1057972d7
diff --git a/doc/man/b2m.1 b/doc/man/b2m.1
deleted file mode 100644
index e777ec4346..0000000000
--- a/doc/man/b2m.1
+++ /dev/null
@@ -1,64 +0,0 @@
-.\" See section COPYING for copyright and redistribution information.
-.TH b2m 1
-.SH NAME
-b2m \- convert old Emacs Rmail Babyl format to mbox format
-.SH SYNOPSIS
-.B b2m
-<
-.I babyl-file
->
-.I mbox-file
-.SH DESCRIPTION
-.B b2m
-accepts Babyl format mail (as used by older versions of
-.BR Rmail
-in
-.BR "GNU Emacs" )
-on standard input, and converts it to mbox format on standard output.
-Babyl was the storage format used by Rmail prior to Emacs 23.1. Since
-then, it uses standard mbox format. This program is distributed with
-.BR "GNU Emacs" .
-.PP
-.SH OPTIONS
-The program accepts unambiguous abbreviations for long option names.
-.TP
-.B \-V, \-\-version
-Display version information.
-.TP
-.B \-h, \-\-help
-Display basic usage information.
-.
-.SH SEE ALSO
-The Babyl format is described in the file
-.B etc/BABYL
-in the Emacs distribution.
-.B Rmail
-is documented in the GNU Emacs manual, which you can read using
-.BR Info ,
-either from Emacs or as a standalone program.
-.
-.SH AUTHORS
-.I b2m
-was originally written by Ed Wilkinson. Francesco Potorti updated it
-according to the GNU coding standards.
-.SH COPYING
-Copyright
-.if t \(co
-.if n (C)
-2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-.PP
-Permission is granted to make and distribute verbatim copies of this
-document provided the copyright notice and this permission notice are
-preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of
-this document under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of
-a permission notice identical to this one.
-.PP
-Permission is granted to copy and distribute translations of this
-document into another language, under the above conditions for
-modified versions, except that this permission notice may be stated
-in a translation approved by the Free Software Foundation.
-.
-.\" arch-tag: 7586e605-c400-447e-82ff-4d38e3c0a37d
diff --git a/doc/man/ctags.1 b/doc/man/ctags.1
index 9a6505b020..1eab02f214 100644
--- a/doc/man/ctags.1
+++ b/doc/man/ctags.1
@@ -1,3 +1 @@
.so man1/etags.1
-
-.\" arch-tag: 54d4579b-9d66-4ba5-9fda-f01ec83612ad
diff --git a/doc/man/ebrowse.1 b/doc/man/ebrowse.1
index 5481a49780..5afe59d6bc 100644
--- a/doc/man/ebrowse.1
+++ b/doc/man/ebrowse.1
@@ -101,4 +101,3 @@ document into another language, under the above conditions for
modified versions, except that this permission notice may be stated
in a translation approved by the Free Software Foundation.
.
-.\" arch-tag: b771158b-90cb-43a5-b9af-dbc506311817
diff --git a/doc/man/emacs.1 b/doc/man/emacs.1
index fddef64571..10fcc186fd 100644
--- a/doc/man/emacs.1
+++ b/doc/man/emacs.1
@@ -1,5 +1,5 @@
.\" See section COPYING for copyright and redistribution information.
-.TH EMACS 1 "2007 April 13" "GNU Emacs 23.3.50"
+.TH EMACS 1 "2007 April 13" "GNU Emacs 24.0.50"
.
.
.SH NAME
@@ -660,4 +660,3 @@ document into another language, under the above conditions for
modified versions, except that this permission notice may be stated
in a translation approved by the Free Software Foundation.
.
-.\" arch-tag: 04dfd376-b46e-4924-919a-cecc3b257eaa
diff --git a/doc/man/emacsclient.1 b/doc/man/emacsclient.1
index 6af699e036..cae4d76634 100644
--- a/doc/man/emacsclient.1
+++ b/doc/man/emacsclient.1
@@ -94,4 +94,3 @@ for the Debian GNU/Linux system (but may be used by others).
.SH COPYING
This manual page is in the public domain.
-.\" arch-tag: 2b35e723-b197-4073-8752-231bc8b3d3f3
diff --git a/doc/man/etags.1 b/doc/man/etags.1
index f00c58a034..f6b46add21 100644
--- a/doc/man/etags.1
+++ b/doc/man/etags.1
@@ -62,7 +62,7 @@ Files specified with absolute file names will be recorded
with absolute file names. Files generated from a source file\-\-like
a C file generated from a source Cweb file\-\-will be recorded with
the name of the source file.
-Compressed files are supported using gzip and bzip2.
+Compressed files are supported using gzip, bzip2, and xz.
The programs recognize the language used in an input file based on its
file name and contents. The \fB\-\-language\fP switch can be used to force
parsing of the file names following the switch according to the given
@@ -284,4 +284,3 @@ document into another language, under the above conditions for
modified versions, except that this permission notice may be stated
in a translation approved by the Free Software Foundation.
-.\" arch-tag: 9534977f-af78-42f0-991d-1df6b6c05573
diff --git a/doc/man/grep-changelog.1 b/doc/man/grep-changelog.1
index 8161b09bcb..45a6abfd57 100644
--- a/doc/man/grep-changelog.1
+++ b/doc/man/grep-changelog.1
@@ -78,4 +78,3 @@ document into another language, under the above conditions for
modified versions, except that this permission notice may be stated
in a translation approved by the Free Software Foundation.
.
-.\" arch-tag: c6df2aea-f3ac-49c7-981b-7b3aae648cda
diff --git a/doc/man/rcs-checkin.1 b/doc/man/rcs-checkin.1
index f50d74dacd..545b128b40 100644
--- a/doc/man/rcs-checkin.1
+++ b/doc/man/rcs-checkin.1
@@ -85,4 +85,3 @@ document into another language, under the above conditions for
modified versions, except that this permission notice may be stated
in a translation approved by the Free Software Foundation.
.
-.\" arch-tag: d903862f-cc72-487c-8fd2-5c63677f325d
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 6c9557cb0e..917ebf0d67 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,31 +1,190 @@
+2011-05-18 Teodor Zlatanov <[email protected]>
+
+ * gnus.texi (Gnus Registry Setup): Rename from "Setup".
+ (Store custom flags and keywords): Mention
+ `gnus-registry-user-format-function-M' and
+ `gnus-registry-user-format-function-M2'.
+
+2011-05-17 Paul Eggert <[email protected]>
+
+ * texinfo.tex: Sync from gnulib, version 2011-05-11.16.
+
+2011-05-17 Glenn Morris <[email protected]>
+
+ * gnus.texi (Face): Fix typo.
+
+2011-05-14 Glenn Morris <[email protected]>
+
+ * dired-x.texi (Omitting Examples): Minor addition.
+
+2011-05-10 Jim Meyering <[email protected]>
+
+ * ede.texi: Fix typo "or or -> or".
+
+2011-05-03 Peter Münster <[email protected]> (tiny change)
+
+ * gnus.texi (Summary Buffer Lines):
+ gnus-summary-user-date-format-alist does not exist.
+ (Sorting the Summary Buffer): More about sorting threads.
+
+2011-04-25 Michael Albinus <[email protected]>
+
+ * trampver.texi: Update release number.
+
+2011-04-14 Michael Albinus <[email protected]>
+
+ * tramp.texi (Frequently Asked Questions): New item for disabling
+ Tramp in other packages.
+
+2011-04-14 Teodor Zlatanov <[email protected]>
+
+ * gnus.texi (nnmairix caveats, Setup, Registry Article Refer Method)
+ (Fancy splitting to parent, Store arbitrary data): Updated
+ gnus-registry docs.
+
+2011-04-13 Juanma Barranquero <[email protected]>
+
+ * ede.texi: Fix typos.
+
+2011-04-12 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Window Layout): @itemize @code doesn't exist.
+ It's @table @code.
+
+2011-03-19 Antoine Levitt <[email protected]>
+
+ * gnus.texi (Listing Groups): Document gnus-group-list-ticked
+
+2011-03-17 Jay Belanger <[email protected]>
+
+ * calc.texi (Logarithmic Units): Update the function names.
+
+2011-03-15 Lars Magne Ingebrigtsen <[email protected]>
+
+ * message.texi (Various Commands): Document format specs in the
+ ellipsis.
+
+2011-03-15 Antoine Levitt <[email protected]>
+
+ * message.texi (Insertion Variables): Document message-cite-style.
+
+2011-03-14 Michael Albinus <[email protected]>
+
+ * tramp.texi (Remote processes): New subsection "Running shell on
+ a remote host".
+
+2011-03-12 Teodor Zlatanov <[email protected]>
+
+ * auth.texi (Help for developers): Update docs to explain that the
+ :save-function will only run the first time.
+
+2011-03-12 Glenn Morris <[email protected]>
+
+ * Makefile.in (emacs-faq.html): Fix some more cross-refs.
+ (emacs-faq.text): New target.
+ (clean): Add emacs-faq.
+
2011-03-12 Michael Albinus <[email protected]>
+ Sync with Tramp 2.2.1.
+
* trampver.texi: Update release number.
+2011-03-11 Glenn Morris <[email protected]>
+
+ * Makefile.in (HTML_TARGETS): New.
+ (clean): Delete $HTML_TARGETS.
+ (emacs-faq.html): New, for use with the gnu.org Emacs webpage.
+
+2011-03-08 Teodor Zlatanov <[email protected]>
+
+ * auth.texi (Help for developers): Show example of using
+ `auth-source-search' with prompts and :save-function.
+
2011-03-07 Chong Yidong <[email protected]>
* Version 23.3 released.
-2011-02-23 Glenn Morris <[email protected]>
+2011-03-07 Antoine Levitt <[email protected]>
- * dbus.texi (Type Conversion): Grammar fix.
+ * message.texi (Message Buffers): Update default value of
+ message-generate-new-buffers.
- * dired-x.texi (Features, Local Variables): Fix typos.
- (Features): Minor rephrasing.
+2011-03-06 Jay Belanger <[email protected]>
-2011-02-19 Glenn Morris <[email protected]>
+ * calc.texi (Logarithmic Units): Rename calc-logunits-dblevel
+ and calc-logunits-nplevel to calc-dblevel and calc-nplevel,
+ respectively.
+ (Musical Notes): New section.
+ (Customizing Calc): Mention the customizable variable
+ calc-note-threshold.
- * edt.texi, erc.texi, gnus.texi, idlwave.texi, mh-e.texi:
- Standardize some Emacs/XEmacs terminology.
+2011-03-03 Glenn Morris <[email protected]>
+
+ * url.texi (Dealing with HTTP documents): Remove reference to
+ function url-decode-text-part; never seems to have existed. (Bug#6038)
+ (Configuration): Update url-configuration-directory description.
+
+2011-03-02 Glenn Morris <[email protected]>
+
+ * dired-x.texi (Multiple Dired Directories): Remove mentions
+ of dired-default-directory-alist and dired-default-directory.
+ Move dired-smart-shell-command here...
+ (Miscellaneous Commands): ... from here.
+
+2011-03-02 Paul Eggert <[email protected]>
+
+ * texinfo.tex: Update to version 2011-02-24.09.
+
+2011-03-02 Glenn Morris <[email protected]>
+
+ * dired-x.texi (Omitting Variables): Refer to add-dir-local-variable
+ instead of the obsoleted dired-omit-here-always.
-2011-02-19 Michael Albinus <[email protected]>
+2011-02-28 Michael Albinus <[email protected]>
+
+ * tramp.texi (Frequently Asked Questions): Add Emacs 24 to
+ supported systems.
+
+2011-02-28 Glenn Morris <[email protected]>
+
+ * dbus.texi (Type Conversion): Grammar fix.
+
+2011-02-23 Michael Albinus <[email protected]>
* tramp.texi: Use consistently "Emacs" (instead of "GNU Emacs") and
"Debian GNU/Linux".
* trampver.texi [xemacs]: Set emacsothername to "Emacs".
-2011-02-18 Eli Zaretskii <[email protected]>
+2011-02-23 Glenn Morris <[email protected]>
+
+ * dired-x.texi (Features): Minor rephrasing.
+ (Local Variables): Fix typos.
+
+ * edt.texi, erc.texi, gnus.texi, idlwave.texi, mh-e.texi:
+ Standardize some Emacs/XEmacs terminology.
+
+ * dired-x.texi (Features): Don't advertise obsolete local variables.
+ Simplify layout.
+ (Omitting Variables): Update local variables example.
+ (Local Variables): Say this is obsolete. Fix description of
+ dired-enable-local-variables possible values.
+
+2011-02-22 Teodor Zlatanov <[email protected]>
+
+ * auth.texi (Help for users): Mention ~/.netrc is also searched by
+ default now.
+
+2011-02-21 Lars Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Article Date): Clarify gnus-article-update-date-headers.
+
+2011-02-20 Lars Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Window Layout): Document layout names.
+
+2011-02-19 Eli Zaretskii <[email protected]>
* ada-mode.texi: Sync @dircategory with ../../info/dir.
* auth.texi: Sync @dircategory with ../../info/dir.
@@ -75,7 +234,28 @@
* widget.texi: Sync @dircategory with ../../info/dir.
* woman.texi: Sync @dircategory with ../../info/dir.
-2011-02-14 Glenn Morris <[email protected]>
+2011-02-19 Glenn Morris <[email protected]>
+
+ * dired-x.texi (Technical Details): No longer redefines dired-add-entry,
+ dired-initial-position, dired-clean-up-after-deletion,
+ dired-read-shell-command, or dired-find-buffer-nocreate.
+
+2011-02-18 Glenn Morris <[email protected]>
+
+ * dired-x.texi (Optional Installation File At Point): Simplify.
+
+2011-02-17 Teodor Zlatanov <[email protected]>
+
+ * auth.texi (Help for users): Use :port instead of :protocol for all
+ auth-source docs.
+ (GnuPG and EasyPG Assistant Configuration): Mention the default now is
+ to have two files in `auth-sources'.
+
+2011-02-16 Glenn Morris <[email protected]>
+
+ * dired-x.texi: Use emacsver.texi to get Emacs version.
+ * Makefile.in ($(infodir)/dired-x, dired-x.dvi, dired-x.pdf):
+ Depend on emacsver.texi.
* dired-x.texi: Drop meaningless version number.
(Introduction): Remove old info.
@@ -83,68 +263,896 @@
Remove incorrect info about loaddefs.el.
(Bugs): Just refer to M-x report-emacs-bug.
+ * dired-x.texi (Multiple Dired Directories): Update for rename of
+ default-directory-alist.
+ (Miscellaneous Commands): No longer mention very old VM version 4.
+
+2011-02-15 Paul Eggert <[email protected]>
+
+ Merge from gnulib.
+ * texinfo.tex: Update to version 2011-02-14.11.
+
+2011-02-14 Teodor Zlatanov <[email protected]>
+
+ * auth.texi (Help for users):
+ Login collection is "Login" and not "login".
+
+2011-02-13 Michael Albinus <[email protected]>
+
+ * tramp.texi (History): Remove IMAP support.
+ (External methods, Frequently Asked Questions): Remove `imap' and
+ `imaps' methods.
+ (Password handling): Remove IMAP entries for ~/.authinfo.gpg.
+
+ * trampver.texi: Remove default value of `emacsimap'.
+
+2011-02-13 Glenn Morris <[email protected]>
+
+ * ada-mode.texi, dired-x.texi, ebrowse.texi, ediff.texi, eudc.texi:
+ * idlwave.texi, reftex.texi, sc.texi, speedbar.texi: Add @top.
+
2011-02-12 Glenn Morris <[email protected]>
* sc.texi (Getting Connected): Remove old index entries.
-2011-02-12 Ulrich Mueller <[email protected]>
+2011-02-12 Ulrich Mueller <[email protected]>
* url.texi: Remove duplicate @dircategory (Bug#7942).
-2011-02-03 Michael Albinus <[email protected]>
+2011-02-11 Teodor Zlatanov <[email protected]>
+
+ * auth.texi (Overview, Help for users, Help for developers):
+ Update docs.
+ (Help for users): Talk about spaces.
+
+2011-02-09 Paul Eggert <[email protected]>
+
+ * texinfo.tex: Update to version 2011-02-07.16.
+
+2011-02-07 Michael Albinus <[email protected]>
+
+ * dbus.texi (Bus names): Adapt descriptions for
+ dbus-list-activatable-names and dbus-list-known-names.
+
+2011-02-07 Jay Belanger <[email protected]>
+
+ * calc.texi (Logarithmic Units): New section.
+
+2011-02-05 Teodor Zlatanov <[email protected]>
+
+ * gnus-overrides.texi: Renamed from overrides.texi and all the relevant
+ manuals use it now.
+
+ * Makefile.in (nowebhack): Fixed to use -D flag instead of overrides.
+
+2011-02-05 Katsumi Yamaoka <[email protected]>
+
+ * overrides.texi: Remove.
+
+ * sieve.texi, sasl.texi, pgg.texi, message.texi, gnus.texi:
+ * emacs-mime.texi, auth.texi, Makefile.in: Revert last changes.
+
+2011-02-05 Michael Albinus <[email protected]>
* tramp.texi (Frequently Asked Questions): Mention problems with
WinSSHD.
-2011-01-03 Eduard Wiebe <[email protected]>
+ * trampver.texi: Update release number.
+
+2011-02-05 Era Eriksson <[email protected]> (tiny change)
+
+ * tramp.texi:
+ Replace "delimet" with "delimit" globally.
+ Replace "explicite" with "explicit" globally.
+ Replace "instead of" with "instead" where there was nothing after "of".
+ Audit use of comma before interrogative pronoun, "that", or "which".
+ Minor word order, spelling, wording changes.
+
+2011-02-04 Teodor Zlatanov <[email protected]>
+
+ * overrides.texi: New file to set or clear WEBHACKDEVEL.
+
+ * sieve.texi: Use WEBHACKDEVEL.
+
+ * sasl.texi: Use WEBHACKDEVEL.
+
+ * pgg.texi: Use WEBHACKDEVEL.
+
+ * message.texi: Use WEBHACKDEVEL.
+
+ * gnus.texi: Use WEBHACKDEVEL.
+
+ * emacs-mime.texi: Use WEBHACKDEVEL.
+
+ * auth.texi: Use WEBHACKDEVEL.
+
+ * Makefile.in (webhack, nowebhack): Hacks to produce for-the-web
+ manuals.
+
+2011-02-04 Lars Ingebrigtsen <[email protected]>
+
+ * gnus.texi: Add DEVEL header (suggested by Andreas Schwab).
+
+2011-02-03 Paul Eggert <[email protected]>
+
+ * texinfo.tex: Update to version 2011-02-01.10 from gnulib,
+ which in turn is copied from ftp://tug.org/tex/.
+
+2011-02-03 Glenn Morris <[email protected]>
+
+ * faq.texi (Contacting the FSF): Mainly just refer to the web-site.
+ (Binding combinations of modifiers and function keys):
+ Let's assume people reading this are not using Emacs 18.
+
+2011-02-03 Lars Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Article Date): Remove mention of gnus-stop-date-timer,
+ since it's run automatically.
+
+2011-02-01 Lars Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Customizing Articles): Fix typo.
+
+2011-01-31 Lars Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Customizing Articles): Document the new way of customizing
+ the date headers(s).
+
+2011-01-30 Lars Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Client-Side IMAP Splitting): Add a complete nnimap fancy
+ splitting example.
+
+2011-01-29 Eli Zaretskii <[email protected]>
+
+ * makefile.w32-in (MAKEINFO): Remove options, leave only program name.
+ (MAKEINFO_OPTS): New variable.
+ (ENVADD, $(infodir)/emacs): Use $(MAKEINFO_OPTS).
+ ($(infodir)/info, $(infodir)/ccmode, $(infodir)/ada-mode)
+ ($(infodir)/pcl-cvs, $(infodir)/eshell, $(infodir)/cl)
+ ($(infodir)/dbus, $(infodir)/dired-x, $(infodir)/ediff)
+ ($(infodir)/flymake, $(infodir)/forms, $(infodir)/gnus)
+ ($(infodir)/message, $(infodir)/emacs-mime, $(infodir)/sieve)
+ ($(infodir)/pgg, $(infodir)/mh-e, $(infodir)/reftex)
+ ($(infodir)/remember, $(infodir)/sasl, $(infodir)/sc)
+ ($(infodir)/vip, $(infodir)/viper, $(infodir)/widget)
+ ($(infodir)/efaq, $(infodir)/autotype, $(infodir)/calc)
+ ($(infodir)/idlwave, $(infodir)/eudc, $(infodir)/ebrowse)
+ ($(infodir)/woman, $(infodir)/speedbar, $(infodir)/tramp)
+ ($(infodir)/ses, $(infodir)/smtpmail, $(infodir)/org)
+ ($(infodir)/url, $(infodir)/newsticker, $(infodir)/nxml-mode)
+ ($(infodir)/rcirc, $(infodir)/erc, $(infodir)/ert)
+ ($(infodir)/epa, $(infodir)/mairix-el, $(infodir)/auth)
+ ($(infodir)/eieio, $(infodir)/ede, $(infodir)/semantic)
+ ($(infodir)/edt): Use $(MAKEINFO_OPTS).
+
+2011-01-26 Lars Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Article Date): Document gnus-article-update-lapsed-header.
+
+2011-01-24 Teodor Zlatanov <[email protected]>
+
+ * message.texi (IDNA): Explain what it is.
+
+2011-01-24 Lars Ingebrigtsen <[email protected]>
+
+ * gnus.texi (The Empty Backend): Document nnnil (bug #7653).
+
+2011-01-23 Werner Lemberg <[email protected]>
+
+ * Makefile.in (MAKEINFO): Now controlled by `configure'.
+ (MAKEINFO_OPTS): New variable. Use it where appropriate.
+ (ENVADD): Updated.
+
+2011-01-18 Glenn Morris <[email protected]>
+
+ * ert.texi: Relicense under GFDL 1.3+, and standardize license notice.
+
+2011-01-14 Eduard Wiebe <[email protected]>
* nxml-mode.texi (Introduction): Fix file name typos.
-2010-12-02 Glenn Morris <[email protected]>
+2011-01-13 Christian Ohler <[email protected]>
+
+ * ert.texi: New file.
+
+ * Makefile.in:
+ * makefile.w32-in: Add ert.texi.
+
+2011-01-10 Jan Moringen <[email protected]>
+
+ * dbus.texi (Receiving Method Calls): New function
+ dbus-register-service. Rearrange node.
+
+2011-01-07 Paul Eggert <[email protected]>
+
+ * texinfo.tex: Update to version 2010-12-23.17 from gnulib,
+ which in turn is copied from ftp://tug.org/tex/.
+
+2011-01-04 Jan Moringen <[email protected]>
+
+ * dbus.texi (Receiving Method Calls): Describe new optional
+ parameter dont-register-service of dbus-register-{method,property}.
+
+2010-12-17 Daiki Ueno <[email protected]>
+
+ * epa.texi (Encrypting/decrypting *.gpg files): Mention
+ epa-file-select-keys.
+
+2010-12-16 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Archived Messages): Remove outdated text.
+
+2010-12-16 Teodor Zlatanov <[email protected]>
+
+ * gnus.texi (Foreign Groups): Added clarification of foreign groups.
+
+2010-12-15 Andrew Cohen <[email protected]>
+
+ * gnus.texi (The hyrex Engine): Say that this engine is obsolete.
+
+2010-12-14 Andrew Cohen <[email protected]>
+
+ * gnus.texi (The swish++ Engine): Add customizable parameters
+ descriptions.
+ (The swish-e Engine): Ditto.
+
+2010-12-14 Michael Albinus <[email protected]>
+
+ * tramp.texi (Inline methods): Add "ksu" method.
+ (Remote processes): Add example with remote `default-directory'.
+
+2010-12-14 Glenn Morris <[email protected]>
+
+ * faq.texi (Expanding aliases when sending mail):
+ Now build-mail-aliases is interactive.
+
+2010-12-13 Andrew Cohen <[email protected]>
+
+ * gnus.texi: First pass at adding (rough) nnir documentation.
+
+2010-12-13 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Filtering New Groups):
+ Mention gnus-auto-subscribed-categories.
+ (The First Time): Remove, since default-subscribed-newsgroups has been
+ removed.
+
+2010-12-13 Glenn Morris <[email protected]>
* cl.texi (For Clauses): Small fixes for frames and windows.
-2010-11-23 Glenn Morris <[email protected]>
+2010-12-11 Carsten Dominik <[email protected]>
+
+ * org.texi (Using capture): Document using prefix arguments for
+ finalizing capture.
+ (Agenda commands): Document prefix argument for the bulk scatter
+ command.
+ (Beamer class export): Document that also overlay arguments can be
+ passed to the column environment.
+ (Template elements): Document the new entry type.
+
+2010-12-11 Puneeth Chaganti <[email protected]>
+
+ * org.texi (Include files): Document :minlevel.
+
+2010-12-11 Julien Danjou <[email protected]>
+
+ * org.texi (Categories): Document category icons.
+
+2010-12-11 Eric Schulte <[email protected]>
+
+ * org.texi (noweb): Fix typo.
+
+2010-12-06 Tassilo Horn <[email protected]>
+
+ * gnus.texi (Server Commands): Point to the rest of the server
+ commands.
+
+2010-12-04 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Paging the Article): Note the reverse meanings of `C-u C-u
+ g'.
+
+2010-12-02 Julien Danjou <[email protected]>
+
+ * gnus.texi (Archived Messages): Remove gnus-outgoing-message-group.
+
+2010-11-28 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Customizing the IMAP Connection): Note the new defaults.
+ (Direct Functions): Note the STARTTLS upgrade.
+
+2010-11-27 Glenn Morris <[email protected]>
James Clark <[email protected]>
* nxml-mode.texi (Introduction): New section.
-2010-11-10 Glenn Morris <[email protected]>
+2010-11-21 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Server Commands): Document gnus-server-show-server.
+
+2010-11-20 Michael Albinus <[email protected]>
+
+ Sync with Tramp 2.2.0.
+
+ * trampver.texi: Update release number.
+
+2010-11-19 Jay Belanger <[email protected]>
+
+ * calc.texi (TeX and LaTeX Language Modes, Predefined Units):
+ Mention that the TeX specific units won't use the `tex' prefix
+ in TeX mode.
+
+2010-11-18 Katsumi Yamaoka <[email protected]>
+
+ * gnus.texi (Misc Article): Document gnus-inhibit-images.
+
+2010-11-17 Glenn Morris <[email protected]>
* edt.texi: Remove information about Emacs 19.
-2010-11-05 Michael Albinus <[email protected]>
+2010-11-17 Michael Albinus <[email protected]>
* trampver.texi: Update release number.
-2010-11-03 Jay Belanger <[email protected]>
+2010-11-12 Katsumi Yamaoka <[email protected]>
+
+ * gnus.texi (Article Washing): Fix typo.
+
+2010-11-11 Noorul Islam <[email protected]>
+
+ * org.texi: Fix typo.
+
+2010-11-11 Carsten Dominik <[email protected]>
+
+ * org.texi (Using capture): Explain that refiling is
+ sensitive to cursor position.
+
+2010-11-11 Carsten Dominik <[email protected]>
+
+ * org.texi (Images and tables): Add cross reference to link section.
+
+2010-11-11 Carsten Dominik <[email protected]>
+
+ * org.texi: Document the <c> cookie.
+
+2010-11-11 Eric Schulte <[email protected]>
+
+ * org.texi: multi-line header arguments :PROPERTIES: :ID:
+ b77c8857-6c76-4ea9-8a61-ddc2648d96c4 :END:.
+
+2010-11-11 Carsten Dominik <[email protected]>
+
+ * org.texi (CSS support): Document :HTML_CONTAINER_CLASS: property.
+
+2010-11-11 Carsten Dominik <[email protected]>
+
+ * org.texi (Project alist): Mention that this is a property list.
+
+2010-11-11 Carsten Dominik <[email protected]>
+
+ * org.texi (Setting up the staging area): Document that
+ file names remain visible when encrypting the MobileOrg files.
+
+2010-11-11 Carsten Dominik <[email protected]>
+
+ * org.texi (Setting up the staging area): Document which
+ versions are needed for encryption.
+
+2010-11-11 Eric Schulte <[email protected]>
+
+ * org.texi (noweb): Update :noweb documentation to
+ reflect the new "tangle" argument.
+
+2010-11-11 Eric Schulte <[email protected]>
+
+ * org.texi (Batch execution): Improve tangling script in
+ documentation.
+
+2010-11-11 Carsten Dominik <[email protected]>
+
+ * org.texi (Handling links):
+ (In-buffer settings): Document inlining images on startup.
+
+2010-11-11 Carsten Dominik <[email protected]>
+
+ * org.texi (Setting up the staging area): Document use of
+ crypt password.
+
+2010-11-11 David Maus <[email protected]>
+
+ * org.texi (Template expansion): Add date related link type escapes.
+
+2010-11-11 David Maus <[email protected]>
+
+ * org.texi (Template expansion): Add mew in table for link type
+ escapes.
+
+2010-11-11 David Maus <[email protected]>
+
+ * org.texi (Template expansion): Fix typo in link type escapes.
+
+2010-11-11 Eric Schulte <[email protected]>
+
+ * org.texi (Structure of code blocks): Another documentation tweak.
+
+2010-11-11 Eric Schulte <[email protected]>
+
+ * org.texi (Structure of code blocks): Documentation tweak.
+
+2010-11-11 Eric Schulte <[email protected]>
+
+ * org.texi (Structure of code blocks):
+ Update documentation to mention inline code block syntax.
+
+2010-11-11 Eric Schulte <[email protected]>
+
+ * org.texi (comments): Improve wording.
+
+2010-11-11 Eric Schulte <[email protected]>
+
+ * org.texi (comments): Document the new :comments header arguments.
+
+2010-11-11 Carsten Dominik <[email protected]>
+
+ * org.texi (Installation): Remove the special
+ installation instructions for XEmacs.
+
+2010-11-11 Jambunathan K <[email protected]> (tiny change)
+
+ * org.texi (Easy Templates): New section. Documents quick
+ insertion of empty structural elements.
+
+2010-11-11 Noorul Islam <[email protected]>
+
+ * org.texi: Fix doc.
+
+2010-11-11 Jambunathan K <[email protected]> (tiny change)
+
+ * org.texi (The date/time prompt): Document specification
+ of time ranges.
+
+2010-11-11 Carsten Dominik <[email protected]>
+
+ * org.texi (Internal links): Document the changes in
+ internal links.
+
+2010-11-11 Carsten Dominik <[email protected]>
+
+ * org.texi (Agenda commands): Document the limitation for
+ the filter preset - it can only be used for an entire agenda
+ view, not in an individual block in a block agenda.
+
+2010-11-11 Eric S Fraga <[email protected]>
+
+ * org.texi (iCalendar export): Document alarm creation.
+
+2010-11-10 Michael Albinus <[email protected]>
+
+ * dbus.texi (Type Conversion): Introduce `:unix-fd' type mapping.
+
+2010-11-09 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Article Washing): Document gnus-article-treat-non-ascii.
+
+2010-11-09 Jay Belanger <[email protected]>
* calc.texi: Use emacsver.texi to determine Emacs version.
-2010-10-30 Glenn Morris <[email protected]>
+2010-11-04 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Customizing the IMAP Connection): Remove nnir mention,
+ since that works by default.
+
+2010-11-03 Kan-Ru Chen <[email protected]> (tiny change)
+
+ * gnus.texi (Customizing the IMAP Connection): Document
+ `nnimap-expunge' and remove `nnimap-expunge-inbox' from example.
+
+2010-11-04 Michael Albinus <[email protected]>
+
+ * tramp.texi (Remote shell setup): New item "Interactive shell
+ prompt". Reported by Christian Millour <[email protected]>.
+ (Remote shell setup, Remote processes): Use @code{} for
+ environment variables.
+
+2010-11-03 Glenn Morris <[email protected]>
+
+ * ediff.texi (Quick Help Commands, Miscellaneous):
+ * gnus.texi (Agent Variables, Configuring nnmairix): Spelling fix.
+
+2010-10-31 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Paging the Article): Document C-u g/C-u C-u g.
+
+2010-10-31 Glenn Morris <[email protected]>
* mh-e.texi (Preface, From Bill Wohler): Change 23 to past tense.
-2010-10-29 Glenn Morris <[email protected]>
+2010-10-31 Glenn Morris <[email protected]>
* cc-mode.texi: Remove reference to defunct viewcvs URL.
-2010-10-22 Juanma Barranquero <[email protected]>
+2010-10-29 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Client-Side IMAP Splitting): Mention
+ nnimap-unsplittable-articles.
+
+2010-10-29 Julien Danjou <[email protected]>
+
+ * gnus.texi (Finding the News): Remove references to obsoletes
+ variables `gnus-nntp-server' and `gnus-secondary-servers'.
+
+2010-10-29 Eli Zaretskii <[email protected]>
+
+ * makefile.w32-in (MAKEINFO): Add -I$(emacsdir).
+ (ENVADD): Remove extra -I$(emacsdir), included in $(MAKEINFO).
+ ($(infodir)/efaq): Remove -I$(emacsdir), included in $(MAKEINFO).
+ ($(infodir)/calc, calc.dvi): Depend on $(emacsdir)/emacsver.texi.
+
+2010-10-28 Glenn Morris <[email protected]>
+
+ * Makefile.in (MAKEINFO, ENVADD): Add $emacsdir to include path.
+ (($(infodir)/calc, calc.dvi, calc.pdf): Depend on emacsver.texi.
+ ($(infodir)/efaq): Remove -I option now in $MAKEINFO.
+
+2010-10-25 Daiki Ueno <[email protected]>
+
+ * epa.texi (Mail-mode integration): Add alternative key bindings
+ for epa-mail commands; escape comma.
+ Don't use the word "PGP", since it is a non-free program.
+
+2010-10-24 Jay Belanger <[email protected]>
+
+ * calc.texi: Use emacsver.texi to determine Emacs version.
+
+2010-10-24 Juanma Barranquero <[email protected]>
* gnus.texi (Group Parameters, Buttons): Fix typos.
+2010-10-22 Tassilo Horn <[email protected]>
+
+ * gnus.texi (Subscription Commands): Mention that you can also
+ subscribe to new groups via the Server buffer, which is probably more
+ convenient when subscribing to many groups.
+
+2010-10-21 Julien Danjou <[email protected]>
+
+ * message.texi (Message Headers): Allow message-default-headers to be a
+ function.
+
+2010-10-21 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus-news.texi: Mention new archive defaults.
+
+2010-10-21 Katsumi Yamaoka <[email protected]>
+
+ * gnus.texi (RSS): Remove nnrss-wash-html-in-text-plain-parts.
+
+2010-10-20 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (HTML): Document the function value of
+ gnus-blocked-images.
+ (Article Washing): shr and gnus-w3m, not the direct function names.
+
+2010-10-20 Julien Danjou <[email protected]>
+
+ * emacs-mime.texi (Flowed text): Add a note about mml-enable-flowed
+ variable.
+
+2010-10-19 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Customizing the IMAP Connection): The port strings are
+ strings.
+ (Document Groups): Mention git.
+
+2010-10-18 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus-coding.texi (Gnus Maintainance Guide): Update to mention Emacs
+ bzr/Gnus git sync.
+
+2010-10-15 Eli Zaretskii <[email protected]>
+
+ * auth.texi (GnuPG and EasyPG Assistant Configuration): Fix last
+ change.
+
+2010-10-13 Lars Magne Ingebrigtsen <[email protected]>
+
+ * auth.texi (GnuPG and EasyPG Assistant Configuration): Fix up the
+ @item syntax for in-Emacs makeinfo.
+
+2010-10-13 Teodor Zlatanov <[email protected]>
+
+ * auth.texi (GnuPG and EasyPG Assistant Configuration): Fix syntax and
+ trim sentence.
+
+2010-10-12 Daiki Ueno <[email protected]>
+
+ * epa.texi (Caching Passphrases):
+ * auth.texi (GnuPG and EasyPG Assistant Configuration): Clarify
+ some configurations require to set up gpg-agent.
+
+2010-10-11 Glenn Morris <[email protected]>
+
+ * Makefile.in (.texi.dvi): Remove unnecessary suffix rule.
+
+2010-10-09 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Spam Package Introduction): Mention `$'.
+
+2010-10-09 Eli Zaretskii <[email protected]>
+
+ * makefile.w32-in (emacsdir): New variable.
+ ($(infodir)/efaq, faq.dvi): Depend on emacsver.texi.
+ (ENVADD, $(infodir)/efaq): Add -I$(emacsdir).
+
+2010-10-09 Glenn Morris <[email protected]>
+
+ * Makefile.in (mostlyclean): Delete *.toc.
+
+ * Makefile.in: Use $< in rules.
+
+ * Makefile.in (maintainer-clean): Remove harmless, long-standing error.
+
+ * Makefile.in ($(infodir)): Delete rule.
+ (mkinfodir): New. Use it in all the info rules, rather than depending
+ on infodir.
+
+2010-10-09 Glenn Morris <[email protected]>
+
+ * gnus.texi (Article Washing): Fix previous change.
+
+ * Makefile.in (emacsdir): New variable.
+ ($(infodir)/efaq): Pass -I $(emacsdir) to makeinfo.
+ Depend on emacsver.texi.
+
+ * faq.texi (VER): Replace with EMACSVER from emacsver.texi.
+
+ * Makefile.in (.PHONY): Declare info, dvi, pdf and the clean rules.
+
+2010-10-08 Julien Danjou <[email protected]>
+
+ * gnus.texi: Add mm-shr.
+
+2010-10-08 Ludovic Courtès <[email protected]>
+
+ * gnus.texi (Finding the Parent, The Gnus Registry)
+ (Registry Article Refer Method): Update docs for nnregistry.el.
+
+2010-10-08 Daiki Ueno <[email protected]>
+
+ * auth.texi (Help for users)
+ (GnuPG and EasyPG Assistant Configuration): Update docs.
+
2010-10-08 Glenn Morris <[email protected]>
* cl.texi (Organization, Installation, Old CL Compatibility):
Deprecate cl-compat for new code.
-
-2010-10-07 Glenn Morris <[email protected]>
+ (Usage, Installation): Remove outdated information.
* eudc.texi (CCSO PH/QI, LDAP Requirements): Remove old information.
+2010-10-07 Katsumi Yamaoka <[email protected]>
+
+ * gnus.texi (Gravatars): Document gnus-gravatar-too-ugly.
+
+2010-10-06 Julien Danjou <[email protected]>
+
+ * sieve.texi (Manage Sieve API): Document sieve-manage-authenticate.
+
+ * message.texi (PGP Compatibility): Remove reference to gpg-2comp,
+ broken link.
+
+ * gnus-faq.texi (FAQ 8-3): Remove references to my.gnus.org.
+
+ * gnus.texi (Comparing Mail Back Ends): Remove broken link and allusion
+ to ReiserFS.
+
+ * gnus-faq.texi (FAQ 5-5): Fix Flyspell URL.
+ (FAQ 7-1): Fix getmail URL.
+
+2010-10-06 Daiki Ueno <[email protected]>
+
+ * epa.texi (Caching Passphrases): New section.
+
2010-10-06 Glenn Morris <[email protected]>
- * cl.texi (Usage, Installation): Remove outdated information.
+ * Makefile.in (SHELL): Set it.
+ (info): Move the mkdir dependency to the individual info files.
+ (mostlyclean): Tidy up.
+ (clean): Only delete the specific dvi and pdf files.
+ (maintainer-clean): Be more restrictive in what we delete.
+ ($(infodir)): Add parallel build workaround.
+
+2010-10-04 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Misc Article): Document gnus-widen-article-window.
+
+2010-10-03 Julien Danjou <[email protected]>
+
+ * emacs-mime.texi (Display Customization): Update
+ mm-inline-large-images documentation and add documentation for
+ mm-inline-large-images-proportion.
+
+2010-10-03 Michael Albinus <[email protected]>
+
+ * tramp.texi (Frequently Asked Questions): Mention
+ remote-file-name-inhibit-cache.
+
+2010-10-02 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Splitting Mail): Fix @xref syntax.
+ (Splitting Mail): Really fix the @ref syntax.
+
+2010-10-01 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Splitting Mail): Mention the new fancy splitting
+ function.
+ (Article Hiding): Add google banner example. Suggested by Benjamin
+ Xu.
+
+2010-09-30 Teodor Zlatanov <[email protected]>
+
+ * gnus.texi (Spam Package Configuration Examples, SpamOracle): Remove
+ nnimap-split-rule from examples.
+
+2010-09-30 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Mail Source Specifiers): Remove webmail.el mentions.
+ (NNTP): Document nntp-server-list-active-group. Suggested by Barry
+ Fishman.
+ (Client-Side IMAP Splitting): Add nnimap-split-fancy.
+
+2010-09-30 Julien Danjou <[email protected]>
+
+ * gnus.texi (Gravatars): Fix documentation about
+ gnu-gravatar-properties.
+
+2010-09-29 Daiki Ueno <[email protected]>
+
+ * epa.texi (Bug Reports): New section.
+
+2010-09-29 Glenn Morris <[email protected]>
+
+ * Makefile.in (top_srcdir): Remove unused variable.
+
+2010-09-29 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Using IMAP): Remove the @acronyms from the headings.
+ (Client-Side IMAP Splitting): Document 'default.
+
+2010-09-27 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Customizing the IMAP Connection): Document
+ nnimap-fetch-partial-articles.
+
+2010-09-26 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus-news.texi: Mention nnimap-inbox.
+
+ * gnus.texi (Picons): Document gnus-picon-inhibit-top-level-domains.
+
+2010-09-26 Julien Danjou <[email protected]>
+
+ * gnus.texi (Oort Gnus): Remove mention of ssl.el.
+
+2010-09-26 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Security): Remove gpg.el mention.
+
+2010-09-26 Andreas Seltenreich <[email protected]>
+
+ * gnus.texi (Browse Foreign Server): New variable
+ gnus-browse-subscribe-newsgroup-method.
+
+ * gnus-news.texi: Mention it.
+
+2010-09-26 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (NoCeM): Removed.
+ (Startup Variables): No jingle.
+
+2010-09-25 Ulrich Mueller <[email protected]>
+
+ * woman.texi (Interface Options): xz compression is now supported.
+
+2010-09-25 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Article Commands): Document gnus-fetch-partial-articles.
+ (Unavailable Servers): Document gnus-server-copy-server.
+ (Using IMAP): Document the new nnimap.
+
+2010-09-25 Julien Danjou <[email protected]>
+
+ * gnus.texi (Customizing Articles): Remove gnus-treat-translate.
+
+2010-09-24 Glenn Morris <[email protected]>
+
+ * url.texi (Disk Caching): Tweak previous change.
+
+2010-09-24 Julien Danjou <[email protected]>
+
+ * url.texi (Disk Caching): Mention url-cache-expire-time,
+ url-cache-expired, and url-fetch-from-cache.
+
+2010-09-24 Julien Danjou <[email protected]>
+
+ * gnus.texi: Add Gravatars.
+
+2010-09-23 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Startup Variables): Mention gnus-use-backend-marks.
+
+2010-09-21 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Expunging mailboxes): Update name of the expunging
+ command.
+
+2010-09-20 Katsumi Yamaoka <[email protected]>
+
+ * emacs-mime.texi (rfc2047): Update description for
+ rfc2047-encode-parameter.
+
+2010-09-13 Michael Albinus <[email protected]>
+
+ * tramp.texi (Inline methods): Remove "ssh1_old", "ssh2_old" and
+ "fish" methods.
+ (External methods): Remove "scp1_old" and "scp2_old" methods.
+
+2010-09-09 Michael Albinus <[email protected]>
+
+ * tramp.texi: Remove Japanese manual. Fix typo.
+
+ * trampver.texi: Update release number. Remove japanesemanual.
+
+2010-09-09 Glenn Morris <[email protected]>
+
+ * org.texi: Restore clobbered changes (copyright years, untabify).
+
+2010-09-04 Julien Danjou <[email protected]> (tiny change)
+
+ * gnus.texi (Adaptive Scoring): Fix typo.
+
+2010-09-03 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Article Display): Document gnus-html-show-images.
+
+2010-09-02 Jan Djärv <[email protected]>
+
+ * cl.texi (Basic Setf): Remove x-get-cut-buffer and x-get-cutbuffer.
+
+2010-09-01 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (HTML): Document gnus-max-image-proportion.
+
+2010-08-31 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (HTML): Document gnus-blocked-images.
+
+ * message.texi (Wide Reply): Document message-prune-recipient-rules.
+
+2010-08-30 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Summary Mail Commands): Note that only the addresses from
+ the first message are used for wide replies.
+ (Changing Servers): Remove documentation on gnus-change-server and
+ friends, since it's been removed.
+
+2010-08-29 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Drafts): Mention B DEL.
+
+2010-08-29 Tim Landscheidt <[email protected]> (tiny change)
+
+ * gnus.texi (Delayed Articles): Mention that the Date header is the
+ original one, even if you delay.
+
+2010-08-29 Lars Magne Ingebrigtsen <[email protected]>
+
+ * gnus.texi (Asynchronous Fetching): Document
+ gnus-async-post-fetch-function.
+ (HTML): Made into its own section.
2010-08-26 Michael Albinus <[email protected]>
@@ -165,14 +1173,97 @@
* trampver.texi: Update release number.
-2010-08-01 Juanma Barranquero <[email protected]>
+2010-08-23 Michael Albinus <[email protected]>
+
+ * dbus.texi (Alternative Buses): New chapter.
+
+2010-08-12 Stefan Monnier <[email protected]>
+
+ * cl.texi (Mapping over Sequences): Rename mapc => cl-mapc.
+
+2010-08-09 Jay Belanger <[email protected]>
+
+ * calc.texi (Customizing Calc): Rearrange description of new
+ variables to match the presentation of other variables.
+
+2010-08-08 Juanma Barranquero <[email protected]>
* org.texi (Footnotes, Tables in HTML export): Fix typos.
-2010-07-23 Chong Yidong <[email protected]>
+2010-08-08 Jay Belanger <[email protected]>
+
+ * calc.texi (Making Selections, Selecting Subformulas)
+ (Customizing Calc): Mention how to use faces to emphasize selected
+ sub-formulas.
+
+2010-08-05 Michael Albinus <[email protected]>
+
+ * tramp.texi (External packages): File attributes cache flushing
+ for asynchronous processes.
+
+2010-08-01 Alan Mackenzie <[email protected]>
+
+ Enhance the manual for the latest Java Mode.
+
+ * cc-mode.texi (Syntactic Symbols): New symbols annotation-top-cont and
+ annotation-var-cont.
+ (Java Symbols): Page renamed from Anonymous Class Symbol. Document the
+ two new symbols.
+
+2010-07-28 Michael Albinus <[email protected]>
+
+ * tramp.texi (Traces and Profiles): Describe verbose level 9.
+
+2010-07-27 Chong Yidong <[email protected]>
* nxml-mode.texi (Limitations): Remove obsolete discussion (Bug#6708).
+2010-07-19 Juanma Barranquero <[email protected]>
+
+ * org.texi: Fix typo in previous change (2010-07-19T09:47:[email protected]).
+
+2010-07-19 Carsten Dominik <[email protected]>
+
+ * org.texi: Add macros to get plain quotes in PDF output.
+ List additional contributors.
+ (Capture): New section, replaces the section about remember.
+ (Working With Source Code): New chapter, focused on documenting Org
+ Babel.
+ (Code evaluation security): New section.
+ (MobileOrg): Document DropBox support.
+ (TaskJuggler export): Document taskjuggler and Gantt chart support.
+ (Special symbols): Show how to display UTF8 characters for entities.
+ (Global TODO list): Clarify the use of the "M" key and the differences
+ to the "m" key.
+ (RSS Feeds): Mention Atom feeds as well.
+ (Setting tags): Remove paragraph about
+ `org-complete-tags-always-offer-all-agenda-tags'.
+
+2010-07-17 Michael Albinus <[email protected]>
+
+ * tramp.texi (Inline methods): Remove remark about doubled "-t"
+ argument.
+ (Frequently Asked Questions): Recommend "sshx" and "scpx" for
+ echoing shells.
+
+2010-07-10 Michael Albinus <[email protected]>
+
+ * tramp.texi (Inline methods): Remove "kludgy" phrase.
+ (Filename Syntax): Describe port numbers.
+
+2010-07-09 Michael Albinus <[email protected]>
+
+ * dbus.texi (Top): Introduce Index. Emphasize "nil" whereever
+ forgotten.
+ (Type Conversion): Precise conversion of natural numbers.
+ (Errors and Events): Add "debugging" to concept index. Add variable
+ `dbus-debug'.
+
+2010-07-04 Michael Albinus <[email protected]>
+
+ * dbus.texi (Receiving Method Calls): Add optional argument
+ EMITS-SIGNAL to `dbus-register-property'.
+
2010-06-27 Alex Schroeder <[email protected]>
* nxml-mode.texi (Commands for locating a schema): Fix typo.
@@ -203,44 +1294,151 @@
* idlwave.texi (Load-Path Shadows):
* org.texi (Handling links): Fix typos.
-2010-05-07 Chong Yidong <[email protected]>
+2010-06-07 Teodor Zlatanov <[email protected]>
- * Version 23.2 released.
+ * gnus.texi (Interactive): Explain effect of gnus-expert-user better.
+
+2010-05-26 Michael Albinus <[email protected]>
-2010-05-03 Štěpán Němec <[email protected]> (tiny change)
+ * eshell.texi (Built-ins): Describe, how to disable a built-in command
+ by an alias. (Bug#6226)
+
+2010-05-16 Jay Belanger <[email protected]>
+
+ * calc.texi (Manipulating Vectors): Mention that vectors can
+ be used to determine bins for `calc-histogram'.
+
+2010-05-13 Jay Belanger <[email protected]>
+
+ * calc.texi: Remove "\turnoffactive" commands throughout.
+
+2010-05-08 Štěpán Němec <[email protected]> (tiny change)
* url.texi (HTTP language/coding, Customization):
* message.texi (Header Commands, Responses):
* cl.texi (Argument Lists): Fix typos.
-2010-04-18 Chong Yidong <[email protected]>
+2010-05-08 Chong Yidong <[email protected]>
- * ede.texi (EDE Mode): Refer to init file rather than `.emacs'. Note
- that Development menu is always available.
+ * ede.texi (EDE Mode): Refer to init file rather than `.emacs'.
+ Note that Development menu is always available.
(Creating a project): Fix terminology.
(Add/Remove files): Fix typo.
-2010-04-17 Teodor Zlatanov <[email protected]>
+2010-05-07 Chong Yidong <[email protected]>
+
+ * Version 23.2 released.
+
+2010-05-01 Daniel E. Doherty <[email protected]> (tiny change)
+
+ * calc.texi (Tutorial): Use "^{\prime}" to indicate primes.
+
+2010-05-01 Michael Albinus <[email protected]>
+
+ * tramp.texi (Inline methods, Default Method):
+ Mention `tramp-inline-compress-start-size'.
+
+2010-04-18 Teodor Zlatanov <[email protected]>
* gnus.texi (Gnus Versions, Oort Gnus): Mention the Git repo instead of
the CVS repo. Put the Git repo in the news section.
- * gnus-coding.texi (Gnus Maintainance Guide): Fixed title typo.
+ * gnus-coding.texi (Gnus Maintainance Guide): Fix title typo.
Removed some mentions of CVS. Mention the new Git repo.
-2010-04-15 Andreas Seltenreich <[email protected]>
+2010-04-18 Andreas Seltenreich <[email protected]>
* gnus.texi (Score File Format): Fix typo. Reported by Štěpán Němec.
(Mail Group Commands): Add index entry.
-2010-04-15 Glenn Morris <[email protected]>
+2010-04-18 Glenn Morris <[email protected]>
* info.texi (Search Index): Mention Emacs's Info-virtual-index.
-2010-03-14 Michael Albinus <[email protected]>
+2010-04-18 Jay Belanger <[email protected]>
+
+ * calc.texi (Radix modes): Mention that the option prefix will
+ turn on twos-complement mode.
+ (Inverse and Hyperbolic Flags): Mention the Option flag.
+
+2010-04-15 Carsten Dominik <[email protected]>
+
+ * org.texi (LaTeX and PDF export): Add a footnote about xetex.
+ (LaTeX/PDF export commands): Rename and Move section.
+ (Sectioning structure): Update.
+ (References): New use case for field coordinates.
+ (The export dispatcher): Rename from ASCII export.
+ (Setting up the staging area): Document the availability of
+ encryption for MobileOrg.
+ (Images and tables): Document how to reference labels.
+ (Index entries): New section.
+ (Generating an index): New section.
+ (Column width and alignment): Document that <N> now
+ means a fixed width, not a maximum width.
+ (Publishing options): Document the :email option.
+ (Beamer class export): Fix bug in the BEAMER example.
+ (Refiling notes): Document refile logging.
+ (In-buffer settings): Document refile logging keywords.
+ (Drawers): Document `C-c C-z' command.
+ (Agenda commands): Mention the alternative key `C-c C-z'.
+ (Special properties): Document the BLOCKED property.
+ (The spreadsheet): Mention the formula editor.
+ (References): Document field coordinates.
+ (Publishing action): Correct the documentation for the
+ publishing function.
+ (The date/time prompt): Document that we accept dates
+ like month/day/year.
+ (Cooperation): Document the changes in table.el support.
+ (Faces for TODO keywords, Faces for TODO keywords)
+ (Priorities): Document the easy colors.
+ (Visibility cycling): Document the new double prefix
+ arg for `org-reveal'.
+ (Cooperation): Remember.el is part of Emacs.
+ (Clean view): Mention that `wrap-prefix' is also set by
+ org-indent-mode.
+ (Agenda commands): Add information about prefix args to
+ scheduling and deadline commands.
+ (Search view): Point to the docstring of
+ `org-search-view' for more details.
+ (Agenda commands): Document that `>' prompts for a date.
+ (Setting tags): Document variable
+ org-complete-tags-always-offer-all-agenda-tags.
+ (Column attributes): Cross-reference special properties.
+
+2010-04-10 Michael Albinus <[email protected]>
+
+ Synchronize with Tramp repository.
+
+ * tramp.texi (Auto-save and Backup): Remove reference to Emacs 21.
+ (Frequently Asked Questions): Adapt supported (X)Emacs versions. Adapt
+ supported MS Windows versions. Remove obsolete URL. Use the $()
+ syntax, texi2dvi reports errors with the backquotes.
+
+ * trampver.texi: Update release number.
+
+2010-04-01 Teodor Zlatanov <[email protected]>
+
+ * gnus.texi (Finding the News): Add pointers to the Server buffer
+ because it's essential.
+
+2010-03-31 Katsumi Yamaoka <[email protected]>
+
+ * gnus.texi (MIME Commands): Update description of
+ gnus-article-browse-html-article.
+
+2010-03-27 Teodor Zlatanov <[email protected]>
+
+ * auth.texi (Secret Service API): Add TODO node.
+ (Help for users): Explain the new source options for `auth-sources'.
+
+2010-03-24 Michael Albinus <[email protected]>
* trampver.texi: Update release number.
+2010-03-10 Chong Yidong <[email protected]>
+
+ * Branch for 23.2.
+
2010-03-03 Chong Yidong <[email protected]>
* faq.texi (Escape sequences in shell output): Note that ansi-color is
@@ -280,7 +1478,7 @@
2010-01-17 Michael Albinus <[email protected]>
* tramp.texi (Frequently Asked Questions): Add GNU Emacs 23 and
- SXEmacs 22 to the supported systems. New item for hung ssh sessions.
+ SXEmacs 22 to the supported systems. New item for hung ssh sessions.
2010-01-17 Glenn Morris <[email protected]>
@@ -709,7 +1907,7 @@
(Agenda commands): Document new bulk commands.
(Plain lists): Document new behavior of
`org-cycle-include-plain-lists'.
- Hyphenation only in TeX.
+ Hyphenation only in TeX.
(Clocking work time): Document the key to update effort
estimates.
(Clocking work time): Document the clock time display.
@@ -1776,7 +2974,7 @@
2008-06-15 Reiner Steib <[email protected]>
* gnus.texi (Mail Source Customization): Correct values of
- `mail-source-delete-incoming'. Reported by Tassilo Horn.
+ `mail-source-delete-incoming'. Reported by Tassilo Horn.
(Oort Gnus): Fix version comment for mml-dnd-protocol-alist.
2008-06-14 Reiner Steib <[email protected]>
@@ -2415,10 +3613,6 @@
* gnus-news.texi, gnus-coding.texi, sasl.texi: New files.
-2007-10-28 Emanuele Giaquinta <[email protected]> (tiny change)
-
- * gnus-faq.texi ([5.12]): Remove reference to discontinued service.
-
2007-10-28 Reiner Steib <[email protected]>
* gnus.texi (Sorting the Summary Buffer): Remove
@@ -3954,19 +5148,6 @@
* org.texi (Progress logging): New section.
-2006-05-29 Stefan Monnier <[email protected]>
-
- * viper.texi (Viper Specials):
- * gnus.texi (Example Setup):
- * faq.texi (Backspace invokes help):
- * dired-x.texi (Optional Installation Dired Jump):
- * calc.texi (Defining Simple Commands): Use ;; instead of ;;; to better
- follow coding conventions.
-
-2006-05-18 Reiner Steib <[email protected]>
-
- * gnus.texi (Saving Articles): Clarify gnus-summary-save-article-mail.
-
2006-06-06 Carsten Dominik <[email protected]>
* org.texi (ASCII export): Document indentation adaptation.
@@ -4014,6 +5195,15 @@
* org.texi: Small typo fixes.
+2006-05-29 Stefan Monnier <[email protected]>
+
+ * viper.texi (Viper Specials):
+ * gnus.texi (Example Setup):
+ * faq.texi (Backspace invokes help):
+ * dired-x.texi (Optional Installation Dired Jump):
+ * calc.texi (Defining Simple Commands): Use ;; instead of ;;; to better
+ follow coding conventions.
+
2006-05-29 Michael Albinus <[email protected]>
* tramp.texi (Frequently Asked Questions): Disable zsh zle.
@@ -4570,10 +5760,6 @@
* gnus.texi (Article Washing): Additions.
-2006-01-08 Alex Schroeder <[email protected]>
-
- * pgg.texi (Caching passphrase): Rewording.
-
2006-01-13 Carsten Dominik <[email protected]>
* org.texi (Agenda commands): Document tags command.
@@ -4811,7 +5997,7 @@
* org.texi (FAQ): Document `org-table-tab-jumps-over-hlines'.
(Agenda): Document commands `org-cycle-agenda-files' and
- `org-agenda-file-to-front'
+ `org-agenda-file-to-front'.
(Built-in table editor): Document `org-table-sort-lines'.
(HTML formatting): Export of hand-formatted lists.
@@ -6400,7 +7586,7 @@
2000-12-14 Dave Love <[email protected]>
- * Makefile.in (mostlyclean): Remove gnustmp.*
+ * Makefile.in (mostlyclean): Remove gnustmp.*.
(gnus.dvi): Change rule to remove @latex stuff.
2000-10-19 Eric M. Ludlam <[email protected]>
@@ -6811,12 +7997,9 @@
;; Local Variables:
;; coding: utf-8
-;; fill-column: 79
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 1993-1999, 2001-2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -6832,5 +8015,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;; arch-tag: 08b2903e-900c-4c72-a4a9-e76416a80803
diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in
index 9e93be4e13..28a949f81e 100644
--- a/doc/misc/Makefile.in
+++ b/doc/misc/Makefile.in
@@ -1,7 +1,6 @@
#### Makefile for documentation other than the Emacs manual.
-# Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-# 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1996-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -18,23 +17,31 @@
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+SHELL = /bin/sh
# Where to find the source code. $(srcdir) will be the man-aux
# subdirectory of the source tree. This is
# set by the configure script's `--srcdir' option.
srcdir=@srcdir@
-top_srcdir=@top_srcdir@
# Tell make where to find source files; this is needed for the makefiles.
+# Note the other doc Makefiles do not use VPATH anymore, instead
+# they set infodir to an absolute path. Not doing that here in
+# case INFO_TARGETS gets too long for some feeble shells.
+# (cf src/Makefile.in's passing of $lisp to make-docfile)
VPATH=@srcdir@
## Where the output files go.
## Note that the setfilename command in the .texi files assumes this.
infodir=../../info
+## Directory with emacsver.texi.
+## Currently only used by efaq and calc.
+emacsdir = $(srcdir)/../emacs
# The makeinfo program is part of the Texinfo distribution.
# Use --force so that it generates output even if there are errors.
-MAKEINFO = makeinfo --force
+MAKEINFO = @MAKEINFO@
+MAKEINFO_OPTS = --force -I$(emacsdir)
# Also add new entries to INFO_FILES in the top-level Makefile.in.
INFO_TARGETS = \
@@ -54,6 +61,7 @@ INFO_TARGETS = \
$(infodir)/emacs-mime \
$(infodir)/epa \
$(infodir)/erc \
+ $(infodir)/ert \
$(infodir)/eshell \
$(infodir)/eudc \
$(infodir)/efaq \
@@ -104,6 +112,7 @@ DVI_TARGETS = \
emacs-mime.dvi \
epa.dvi \
erc.dvi \
+ ert.dvi \
eshell.dvi \
eudc.dvi \
faq.dvi \
@@ -154,6 +163,7 @@ PDF_TARGETS = \
emacs-mime.pdf \
epa.pdf \
erc.pdf \
+ ert.pdf \
eshell.pdf \
eudc.pdf \
faq.pdf \
@@ -187,21 +197,23 @@ PDF_TARGETS = \
widget.pdf \
woman.pdf
+HTML_TARGETS = emacs-faq.html
+
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
-# The following rule does not work with all versions of `make'.
-.SUFFIXES: .texi .dvi
-.texi.dvi:
- $(TEXI2DVI) $<
+ENVADD = TEXINPUTS="$(srcdir):$(emacsdir):$(TEXINPUTS)" \
+ MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)"
-ENVADD = TEXINPUTS="$(srcdir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) -I$(srcdir)"
+mkinfodir = @cd ${srcdir}; test -d ${infodir} || mkdir ${infodir} || test -d ${infodir}
+.PHONY: info dvi pdf
-info: $(infodir) $(INFO_TARGETS)
+info: $(INFO_TARGETS)
-$(infodir):
- mkdir $@
+# please modify this for all the web manual targets
+webhack: clean
+ $(MAKE) pdf MAKEINFO_OPTS="-DWEBHACKDEVEL $(MAKEINFO_OPTS)"
dvi: $(DVI_TARGETS)
@@ -215,183 +227,222 @@ pdf: $(PDF_TARGETS)
## "short" target names for convenience, to just rebuild one manual.
ada-mode : $(infodir)/ada-mode
$(infodir)/ada-mode: ada-mode.texi
- cd $(srcdir); $(MAKEINFO) ada-mode.texi
-ada-mode.dvi: ada-mode.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/ada-mode.texi
-ada-mode.pdf: ada-mode.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/ada-mode.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+ada-mode.dvi: ${srcdir}/ada-mode.texi
+ $(ENVADD) $(TEXI2DVI) $<
+ada-mode.pdf: ${srcdir}/ada-mode.texi
+ $(ENVADD) $(TEXI2PDF) $<
auth : $(infodir)/auth
$(infodir)/auth: auth.texi
- cd $(srcdir); $(MAKEINFO) auth.texi
-auth.dvi: auth.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/auth.texi
-auth.pdf: auth.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/auth.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+auth.dvi: ${srcdir}/auth.texi
+ $(ENVADD) $(TEXI2DVI) $<
+auth.pdf: ${srcdir}/auth.texi
+ $(ENVADD) $(TEXI2PDF) $<
autotype : $(infodir)/autotype
$(infodir)/autotype: autotype.texi
- cd $(srcdir); $(MAKEINFO) autotype.texi
-autotype.dvi: autotype.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/autotype.texi
-autotype.pdf: autotype.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/autotype.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+autotype.dvi: ${srcdir}/autotype.texi
+ $(ENVADD) $(TEXI2DVI) $<
+autotype.pdf: ${srcdir}/autotype.texi
+ $(ENVADD) $(TEXI2PDF) $<
calc : $(infodir)/calc
-$(infodir)/calc: calc.texi
- cd $(srcdir); $(MAKEINFO) calc.texi
-calc.dvi: calc.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/calc.texi
-calc.pdf: calc.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/calc.texi
+$(infodir)/calc: calc.texi $(emacsdir)/emacsver.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+calc.dvi: ${srcdir}/calc.texi $(emacsdir)/emacsver.texi
+ $(ENVADD) $(TEXI2DVI) $<
+calc.pdf: ${srcdir}/calc.texi $(emacsdir)/emacsver.texi
+ $(ENVADD) $(TEXI2PDF) $<
ccmode : $(infodir)/ccmode
$(infodir)/ccmode: cc-mode.texi
- cd $(srcdir); $(MAKEINFO) cc-mode.texi
-cc-mode.dvi: cc-mode.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/cc-mode.texi
-cc-mode.pdf: cc-mode.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/cc-mode.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+cc-mode.dvi: ${srcdir}/cc-mode.texi
+ $(ENVADD) $(TEXI2DVI) $<
+cc-mode.pdf: ${srcdir}/cc-mode.texi
+ $(ENVADD) $(TEXI2PDF) $<
cl : $(infodir)/cl
$(infodir)/cl: cl.texi
- cd $(srcdir); $(MAKEINFO) cl.texi
-cl.dvi: cl.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/cl.texi
-cl.pdf: cl.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/cl.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+cl.dvi: ${srcdir}/cl.texi
+ $(ENVADD) $(TEXI2DVI) $<
+cl.pdf: ${srcdir}/cl.texi
+ $(ENVADD) $(TEXI2PDF) $<
dbus : $(infodir)/dbus
$(infodir)/dbus: dbus.texi
- cd $(srcdir); $(MAKEINFO) dbus.texi
-dbus.dvi: dbus.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/dbus.texi
-dbus.pdf: dbus.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/dbus.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+dbus.dvi: ${srcdir}/dbus.texi
+ $(ENVADD) $(TEXI2DVI) $<
+dbus.pdf: ${srcdir}/dbus.texi
+ $(ENVADD) $(TEXI2PDF) $<
dired-x : $(infodir)/dired-x
-$(infodir)/dired-x: dired-x.texi
- cd $(srcdir); $(MAKEINFO) dired-x.texi
-dired-x.dvi: dired-x.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/dired-x.texi
-dired-x.pdf: dired-x.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/dired-x.texi
+$(infodir)/dired-x: dired-x.texi $(emacsdir)/emacsver.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+dired-x.dvi: ${srcdir}/dired-x.texi $(emacsdir)/emacsver.texi
+ $(ENVADD) $(TEXI2DVI) $<
+dired-x.pdf: ${srcdir}/dired-x.texi $(emacsdir)/emacsver.texi
+ $(ENVADD) $(TEXI2PDF) $<
ebrowse : $(infodir)/ebrowse
$(infodir)/ebrowse: ebrowse.texi
- cd $(srcdir); $(MAKEINFO) ebrowse.texi
-ebrowse.dvi: ebrowse.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/ebrowse.texi
-ebrowse.pdf: ebrowse.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/ebrowse.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+ebrowse.dvi: ${srcdir}/ebrowse.texi
+ $(ENVADD) $(TEXI2DVI) $<
+ebrowse.pdf: ${srcdir}/ebrowse.texi
+ $(ENVADD) $(TEXI2PDF) $<
ede : $(infodir)/ede
$(infodir)/ede: ede.texi
- cd $(srcdir); $(MAKEINFO) ede.texi
-ede.dvi: ede.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/ede.texi
-ede.pdf: ede.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/ede.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+ede.dvi: ${srcdir}/ede.texi
+ $(ENVADD) $(TEXI2DVI) $<
+ede.pdf: ${srcdir}/ede.texi
+ $(ENVADD) $(TEXI2PDF) $<
ediff : $(infodir)/ediff
$(infodir)/ediff: ediff.texi
- cd $(srcdir); $(MAKEINFO) ediff.texi
-ediff.dvi: ediff.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/ediff.texi
-ediff.pdf: ediff.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/ediff.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+ediff.dvi: ${srcdir}/ediff.texi
+ $(ENVADD) $(TEXI2DVI) $<
+ediff.pdf: ${srcdir}/ediff.texi
+ $(ENVADD) $(TEXI2PDF) $<
edt : $(infodir)/edt
$(infodir)/edt: edt.texi
- cd $(srcdir); $(MAKEINFO) edt.texi
-edt.dvi: edt.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/edt.texi
-edt.pdf: edt.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/edt.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+edt.dvi: ${srcdir}/edt.texi
+ $(ENVADD) $(TEXI2DVI) $<
+edt.pdf: ${srcdir}/edt.texi
+ $(ENVADD) $(TEXI2PDF) $<
eieio : $(infodir)/eieio
$(infodir)/eieio: eieio.texi
- cd $(srcdir); $(MAKEINFO) eieio.texi
-eieio.dvi: eieio.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/eieio.texi
-eieio.pdf: eieio.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/eieio.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+eieio.dvi: ${srcdir}/eieio.texi
+ $(ENVADD) $(TEXI2DVI) $<
+eieio.pdf: ${srcdir}/eieio.texi
+ $(ENVADD) $(TEXI2PDF) $<
emacs-mime : $(infodir)/emacs-mime
$(infodir)/emacs-mime: emacs-mime.texi
- cd $(srcdir); $(MAKEINFO) --enable-encoding emacs-mime.texi
-emacs-mime.dvi: emacs-mime.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-mime.texi
-emacs-mime.pdf: emacs-mime.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-mime.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) --enable-encoding $<
+emacs-mime.dvi: ${srcdir}/emacs-mime.texi
+ $(ENVADD) $(TEXI2DVI) $<
+emacs-mime.pdf: ${srcdir}/emacs-mime.texi
+ $(ENVADD) $(TEXI2PDF) $<
epa : $(infodir)/epa
$(infodir)/epa: epa.texi
- cd $(srcdir); $(MAKEINFO) epa.texi
-epa.dvi: epa.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/epa.texi
-epa.pdf: epa.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/epa.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+epa.dvi: ${srcdir}/epa.texi
+ $(ENVADD) $(TEXI2DVI) $<
+epa.pdf: ${srcdir}/epa.texi
+ $(ENVADD) $(TEXI2PDF) $<
erc : $(infodir)/erc
$(infodir)/erc: erc.texi
- cd $(srcdir); $(MAKEINFO) erc.texi
-erc.dvi: erc.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/erc.texi
-erc.pdf: erc.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/erc.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+erc.dvi: ${srcdir}/erc.texi
+ $(ENVADD) $(TEXI2DVI) $<
+erc.pdf: ${srcdir}/erc.texi
+ $(ENVADD) $(TEXI2PDF) $<
+
+ert : $(infodir)/ert
+$(infodir)/ert: ert.texi $(infodir)
+ cd $(srcdir); $(MAKEINFO) ert.texi
+ert.dvi: ert.texi
+ $(ENVADD) $(TEXI2DVI) ${srcdir}/ert.texi
+ert.pdf: ert.texi
+ $(ENVADD) $(TEXI2PDF) ${srcdir}/ert.texi
eshell : $(infodir)/eshell
$(infodir)/eshell: eshell.texi
- cd $(srcdir); $(MAKEINFO) eshell.texi
-eshell.dvi: eshell.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/eshell.texi
-eshell.pdf: eshell.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/eshell.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+eshell.dvi: ${srcdir}/eshell.texi
+ $(ENVADD) $(TEXI2DVI) $<
+eshell.pdf: ${srcdir}/eshell.texi
+ $(ENVADD) $(TEXI2PDF) $<
eudc : $(infodir)/eudc
$(infodir)/eudc: eudc.texi
- cd $(srcdir); $(MAKEINFO) eudc.texi
-eudc.dvi: eudc.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/eudc.texi
-eudc.pdf: eudc.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/eudc.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+eudc.dvi: ${srcdir}/eudc.texi
+ $(ENVADD) $(TEXI2DVI) $<
+eudc.pdf: ${srcdir}/eudc.texi
+ $(ENVADD) $(TEXI2PDF) $<
efaq : $(infodir)/efaq
-$(infodir)/efaq: faq.texi
- cd $(srcdir); $(MAKEINFO) faq.texi
-faq.dvi: faq.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/faq.texi
-faq.pdf: faq.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/faq.texi
+$(infodir)/efaq: faq.texi $(emacsdir)/emacsver.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+faq.dvi: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
+ $(ENVADD) $(TEXI2DVI) $<
+faq.pdf: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
+ $(ENVADD) $(TEXI2PDF) $<
+## This is the name used on the Emacs web-page.
+## sed fixes up links to point to split version of the manual.
+emacs-faq.html: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) --no-split \
+ --css-ref='/layout.css' --html -o $@ $<
+ sed -i -e 's|a href="\([a-z]*\)\.html#\([^"]*\)"|a href="manual/html_node/\1/\2.html"|g' \
+ -e 's|/Top\.html|/|g' $@
+emacs-faq.text: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) --plaintext -o $@ $<
flymake : $(infodir)/flymake
$(infodir)/flymake: flymake.texi
- cd $(srcdir); $(MAKEINFO) flymake.texi
-flymake.dvi: flymake.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/flymake.texi
-flymake.pdf: flymake.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/flymake.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+flymake.dvi: ${srcdir}/flymake.texi
+ $(ENVADD) $(TEXI2DVI) $<
+flymake.pdf: ${srcdir}/flymake.texi
+ $(ENVADD) $(TEXI2PDF) $<
forms : $(infodir)/forms
$(infodir)/forms: forms.texi
- cd $(srcdir); $(MAKEINFO) forms.texi
-forms.dvi: forms.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/forms.texi
-forms.pdf: forms.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/forms.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+forms.dvi: ${srcdir}/forms.texi
+ $(ENVADD) $(TEXI2DVI) $<
+forms.pdf: ${srcdir}/forms.texi
+ $(ENVADD) $(TEXI2PDF) $<
# gnus/message/emacs-mime/sieve/pgg are part of Gnus:
gnus : $(infodir)/gnus
$(infodir)/gnus: gnus.texi gnus-faq.texi
- cd $(srcdir); $(MAKEINFO) gnus.texi
-gnus.dvi: gnus.texi gnus-faq.texi
- sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+gnus.dvi: ${srcdir}/gnus.texi gnus-faq.texi
+ sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmp.texi
$(ENVADD) $(TEXI2DVI) gnustmp.texi
cp gnustmp.dvi $*.dvi
rm gnustmp.*
-gnus.pdf: gnus.texi gnus-faq.texi
- sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi
+gnus.pdf: ${srcdir}/gnus.texi gnus-faq.texi
+ sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmp.texi
$(ENVADD) $(TEXI2PDF) gnustmp.texi
cp gnustmp.pdf $@
rm gnustmp.*
@@ -400,229 +451,259 @@ gnus.pdf: gnus.texi gnus-faq.texi
# names clash on DOS 8+3 filesystems
idlwave : $(infodir)/idlwave
$(infodir)/idlwave: idlwave.texi
- cd $(srcdir); $(MAKEINFO) --no-split idlwave.texi
-idlwave.dvi: idlwave.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/idlwave.texi
-idlwave.pdf: idlwave.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/idlwave.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) --no-split $<
+idlwave.dvi: ${srcdir}/idlwave.texi
+ $(ENVADD) $(TEXI2DVI) $<
+idlwave.pdf: ${srcdir}/idlwave.texi
+ $(ENVADD) $(TEXI2PDF) $<
# The following target uses an explicit -o switch to work around
# the @setfilename directive in info.texi, which is required for
# the Texinfo distribution.
###info : $(infodir)/info # circular!
$(infodir)/info: info.texi
- cd $(srcdir); $(MAKEINFO) --no-split info.texi -o $@
-info.dvi: info.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/info.texi
-info.pdf: info.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/info.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) --no-split $< -o $@
+info.dvi: ${srcdir}/info.texi
+ $(ENVADD) $(TEXI2DVI) $<
+info.pdf: ${srcdir}/info.texi
+ $(ENVADD) $(TEXI2PDF) $<
mairix-el : $(infodir)/mairix-el
$(infodir)/mairix-el: mairix-el.texi
- cd $(srcdir); $(MAKEINFO) mairix-el.texi
-mairix-el.dvi: mairix-el.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/mairix-el.texi
-mairix-el.pdf: mairix-el.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/mairix-el.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+mairix-el.dvi: ${srcdir}/mairix-el.texi
+ $(ENVADD) $(TEXI2DVI) $<
+mairix-el.pdf: ${srcdir}/mairix-el.texi
+ $(ENVADD) $(TEXI2PDF) $<
message : $(infodir)/message
$(infodir)/message: message.texi
- cd $(srcdir); $(MAKEINFO) message.texi
-message.dvi: message.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/message.texi
-message.pdf: message.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/message.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+message.dvi: ${srcdir}/message.texi
+ $(ENVADD) $(TEXI2DVI) $<
+message.pdf: ${srcdir}/message.texi
+ $(ENVADD) $(TEXI2PDF) $<
mh-e : $(infodir)/mh-e
$(infodir)/mh-e: mh-e.texi
- cd $(srcdir); $(MAKEINFO) mh-e.texi
-mh-e.dvi: mh-e.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/mh-e.texi
-mh-e.pdf: mh-e.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/mh-e.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+mh-e.dvi: ${srcdir}/mh-e.texi
+ $(ENVADD) $(TEXI2DVI) $<
+mh-e.pdf: ${srcdir}/mh-e.texi
+ $(ENVADD) $(TEXI2PDF) $<
newsticker : $(infodir)/newsticker
$(infodir)/newsticker: newsticker.texi
- cd $(srcdir); $(MAKEINFO) newsticker.texi
-newsticker.dvi: newsticker.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/newsticker.texi
-newsticker.pdf: newsticker.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/newsticker.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+newsticker.dvi: ${srcdir}/newsticker.texi
+ $(ENVADD) $(TEXI2DVI) $<
+newsticker.pdf: ${srcdir}/newsticker.texi
+ $(ENVADD) $(TEXI2PDF) $<
nxml-mode : $(infodir)/nxml-mode
$(infodir)/nxml-mode: nxml-mode.texi
- cd $(srcdir); $(MAKEINFO) nxml-mode.texi
-nxml-mode.dvi: nxml-mode.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/nxml-mode.texi
-nxml-mode.pdf: nxml-mode.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/nxml-mode.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+nxml-mode.dvi: ${srcdir}/nxml-mode.texi
+ $(ENVADD) $(TEXI2DVI) $<
+nxml-mode.pdf: ${srcdir}/nxml-mode.texi
+ $(ENVADD) $(TEXI2PDF) $<
org : $(infodir)/org
$(infodir)/org: org.texi
- cd $(srcdir); $(MAKEINFO) org.texi
-org.dvi: org.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/org.texi
-org.pdf: org.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/org.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+org.dvi: ${srcdir}/org.texi
+ $(ENVADD) $(TEXI2DVI) $<
+org.pdf: ${srcdir}/org.texi
+ $(ENVADD) $(TEXI2PDF) $<
pcl-cvs : $(infodir)/pcl-cvs
$(infodir)/pcl-cvs: pcl-cvs.texi
- cd $(srcdir); $(MAKEINFO) pcl-cvs.texi
-pcl-cvs.dvi: pcl-cvs.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/pcl-cvs.texi
-pcl-cvs.pdf: pcl-cvs.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/pcl-cvs.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+pcl-cvs.dvi: ${srcdir}/pcl-cvs.texi
+ $(ENVADD) $(TEXI2DVI) $<
+pcl-cvs.pdf: ${srcdir}/pcl-cvs.texi
+ $(ENVADD) $(TEXI2PDF) $<
pgg : $(infodir)/pgg
$(infodir)/pgg: pgg.texi
- cd $(srcdir); $(MAKEINFO) pgg.texi
-pgg.dvi: pgg.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/pgg.texi
-pgg.pdf: pgg.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/pgg.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+pgg.dvi: ${srcdir}/pgg.texi
+ $(ENVADD) $(TEXI2DVI) $<
+pgg.pdf: ${srcdir}/pgg.texi
+ $(ENVADD) $(TEXI2PDF) $<
rcirc : $(infodir)/rcirc
$(infodir)/rcirc: rcirc.texi
- cd $(srcdir); $(MAKEINFO) rcirc.texi
-rcirc.dvi: rcirc.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/rcirc.texi
-rcirc.pdf: rcirc.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/rcirc.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+rcirc.dvi: ${srcdir}/rcirc.texi
+ $(ENVADD) $(TEXI2DVI) $<
+rcirc.pdf: ${srcdir}/rcirc.texi
+ $(ENVADD) $(TEXI2PDF) $<
reftex : $(infodir)/reftex
$(infodir)/reftex: reftex.texi
- cd $(srcdir); $(MAKEINFO) reftex.texi
-reftex.dvi: reftex.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/reftex.texi
-reftex.pdf: reftex.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/reftex.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+reftex.dvi: ${srcdir}/reftex.texi
+ $(ENVADD) $(TEXI2DVI) $<
+reftex.pdf: ${srcdir}/reftex.texi
+ $(ENVADD) $(TEXI2PDF) $<
remember : $(infodir)/remember
$(infodir)/remember: remember.texi
- cd $(srcdir); $(MAKEINFO) remember.texi
-remember.dvi: remember.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/remember.texi
-remember.pdf: remember.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/remember.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+remember.dvi: ${srcdir}/remember.texi
+ $(ENVADD) $(TEXI2DVI) $<
+remember.pdf: ${srcdir}/remember.texi
+ $(ENVADD) $(TEXI2PDF) $<
sasl : $(infodir)/sasl
$(infodir)/sasl: sasl.texi
- cd $(srcdir); $(MAKEINFO) sasl.texi
-sasl.dvi: sasl.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/sasl.texi
-sasl.pdf: sasl.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/sasl.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+sasl.dvi: ${srcdir}/sasl.texi
+ $(ENVADD) $(TEXI2DVI) $<
+sasl.pdf: ${srcdir}/sasl.texi
+ $(ENVADD) $(TEXI2PDF) $<
sc : $(infodir)/sc
$(infodir)/sc: sc.texi
- cd $(srcdir); $(MAKEINFO) sc.texi
-sc.dvi: sc.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/sc.texi
-sc.pdf: sc.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/sc.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+sc.dvi: ${srcdir}/sc.texi
+ $(ENVADD) $(TEXI2DVI) $<
+sc.pdf: ${srcdir}/sc.texi
+ $(ENVADD) $(TEXI2PDF) $<
semantic : $(infodir)/semantic
$(infodir)/semantic: semantic.texi sem-user.texi
- cd $(srcdir); $(MAKEINFO) semantic.texi
-semantic.dvi: semantic.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/semantic.texi
-semantic.pdf: semantic.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/semantic.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+semantic.dvi: ${srcdir}/semantic.texi sem-user.texi
+ $(ENVADD) $(TEXI2DVI) $<
+semantic.pdf: ${srcdir}/semantic.texi sem-user.texi
+ $(ENVADD) $(TEXI2PDF) $<
ses : $(infodir)/ses
$(infodir)/ses: ses.texi
- cd $(srcdir); $(MAKEINFO) ses.texi
-ses.dvi: ses.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/ses.texi
-ses.pdf: ses.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/ses.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+ses.dvi: ${srcdir}/ses.texi
+ $(ENVADD) $(TEXI2DVI) $<
+ses.pdf: ${srcdir}/ses.texi
+ $(ENVADD) $(TEXI2PDF) $<
sieve : $(infodir)/sieve
$(infodir)/sieve: sieve.texi
- cd $(srcdir); $(MAKEINFO) sieve.texi
-sieve.dvi: sieve.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/sieve.texi
-sieve.pdf: sieve.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/sieve.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+sieve.dvi: ${srcdir}/sieve.texi
+ $(ENVADD) $(TEXI2DVI) $<
+sieve.pdf: ${srcdir}/sieve.texi
+ $(ENVADD) $(TEXI2PDF) $<
smtpmail : $(infodir)/smtpmail
$(infodir)/smtpmail: smtpmail.texi
- cd $(srcdir); $(MAKEINFO) smtpmail.texi
-smtpmail.dvi: smtpmail.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/smtpmail.texi
-smtpmail.pdf: smtpmail.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/smtpmail.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+smtpmail.dvi: ${srcdir}/smtpmail.texi
+ $(ENVADD) $(TEXI2DVI) $<
+smtpmail.pdf: ${srcdir}/smtpmail.texi
+ $(ENVADD) $(TEXI2PDF) $<
speedbar : $(infodir)/speedbar
$(infodir)/speedbar: speedbar.texi
- cd $(srcdir); $(MAKEINFO) speedbar.texi
-speedbar.dvi: speedbar.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/speedbar.texi
-speedbar.pdf: speedbar.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/speedbar.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+speedbar.dvi: ${srcdir}/speedbar.texi
+ $(ENVADD) $(TEXI2DVI) $<
+speedbar.pdf: ${srcdir}/speedbar.texi
+ $(ENVADD) $(TEXI2PDF) $<
tramp : $(infodir)/tramp
$(infodir)/tramp: tramp.texi trampver.texi
- cd $(srcdir); $(MAKEINFO) -D emacs tramp.texi
-tramp.dvi: tramp.texi trampver.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/tramp.texi
-tramp.pdf: tramp.texi trampver.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/tramp.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) -D emacs $<
+tramp.dvi: ${srcdir}/tramp.texi trampver.texi
+ $(ENVADD) $(TEXI2DVI) $<
+tramp.pdf: ${srcdir}/tramp.texi trampver.texi
+ $(ENVADD) $(TEXI2PDF) $<
url : $(infodir)/url
$(infodir)/url: url.texi
- cd $(srcdir); $(MAKEINFO) url.texi
-url.dvi: url.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/url.texi
-url.pdf: url.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/url.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+url.dvi: ${srcdir}/url.texi
+ $(ENVADD) $(TEXI2DVI) $<
+url.pdf: ${srcdir}/url.texi
+ $(ENVADD) $(TEXI2PDF) $<
vip : $(infodir)/vip
$(infodir)/vip: vip.texi
- cd $(srcdir); $(MAKEINFO) vip.texi
-vip.dvi: vip.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/vip.texi
-vip.pdf: vip.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/vip.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+vip.dvi: ${srcdir}/vip.texi
+ $(ENVADD) $(TEXI2DVI) $<
+vip.pdf: ${srcdir}/vip.texi
+ $(ENVADD) $(TEXI2PDF) $<
viper : $(infodir)/viper
$(infodir)/viper: viper.texi
- cd $(srcdir); $(MAKEINFO) viper.texi
-viper.dvi: viper.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/viper.texi
-viper.pdf: viper.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/viper.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+viper.dvi: ${srcdir}/viper.texi
+ $(ENVADD) $(TEXI2DVI) $<
+viper.pdf: ${srcdir}/viper.texi
+ $(ENVADD) $(TEXI2PDF) $<
widget : $(infodir)/widget
$(infodir)/widget: widget.texi
- cd $(srcdir); $(MAKEINFO) widget.texi
-widget.dvi: widget.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/widget.texi
-widget.pdf: widget.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/widget.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+widget.dvi: ${srcdir}/widget.texi
+ $(ENVADD) $(TEXI2DVI) $<
+widget.pdf: ${srcdir}/widget.texi
+ $(ENVADD) $(TEXI2PDF) $<
woman : $(infodir)/woman
$(infodir)/woman: woman.texi
- cd $(srcdir); $(MAKEINFO) woman.texi
-woman.dvi: woman.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/woman.texi
-woman.pdf: woman.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/woman.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $(MAKEINFO_OPTS) $<
+woman.dvi: ${srcdir}/woman.texi
+ $(ENVADD) $(TEXI2DVI) $<
+woman.pdf: ${srcdir}/woman.texi
+ $(ENVADD) $(TEXI2PDF) $<
+
+.PHONY: mostlyclean clean distclean maintainer-clean
mostlyclean:
- rm -f *.log *.cp *.fn *.ky *.op *.ops *.pg *.vr core *.tp \
- *.tps *.core gnustmp.*
- rm -f *.aux *.cps *.fns *.kys *.pgs *.vrs *.toc
+ rm -f *.aux *.log *.toc *.cp *.cps *.fn *.fns *.ky *.kys \
+ *.op *.ops *.pg *.pgs *.tp *.tps *.vr *.vrs
+ rm -f gnustmp.*
clean: mostlyclean
- rm -f *.dvi *.pdf
+ rm -f $(DVI_TARGETS) $(PDF_TARGETS) $(HTML_TARGETS) emacs-faq.text
distclean: clean
# rm -f Makefile
+## infodir is relative to srcdir.
maintainer-clean: distclean
- for file in $(INFO_TARGETS); do rm -f $${file}*; done
-
+ cd $(srcdir); for file in $(INFO_TARGETS); do \
+ rm -f $${file} $${file}-[1-9] $${file}-[1-9][0-9]; \
+ done
### Makefile ends here
diff --git a/doc/misc/ada-mode.texi b/doc/misc/ada-mode.texi
index 9f4fd44f46..66cdb20011 100644
--- a/doc/misc/ada-mode.texi
+++ b/doc/misc/ada-mode.texi
@@ -3,8 +3,7 @@
@settitle Ada Mode
@copying
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -40,6 +39,7 @@ developing GNU and promoting software freedom.''
@contents
@node Top, Overview, (dir), (dir)
+@top Ada Mode
@ifnottex
@insertcopying
@@ -1524,7 +1524,3 @@ autofill the current comment.
@printindex fn
@bye
-
-@ignore
- arch-tag: 68cf0d8a-55cc-4190-a28d-4984fa56ed1e
-@end ignore
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi
index 5c555e81a7..a16da92343 100644
--- a/doc/misc/auth.texi
+++ b/doc/misc/auth.texi
@@ -1,13 +1,16 @@
\input texinfo @c -*-texinfo-*-
+
+@include gnus-overrides.texi
+
@setfilename ../../info/auth
@settitle Emacs auth-source Library @value{VERSION}
-@set VERSION 0.2
+@set VERSION 0.3
@copying
This file describes the Emacs auth-source library.
-Copyright @copyright{} 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 2008-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -35,7 +38,12 @@ license to the document, as described in section 6 of the license.
@end direntry
@titlepage
+@ifset WEBHACKDEVEL
+@title Emacs auth-source Library (DEVELOPMENT VERSION)
+@end ifset
+@ifclear WEBHACKDEVEL
@title Emacs auth-source Library
+@end ifclear
@author by Ted Zlatanov
@page
@vskip 0pt plus 1filll
@@ -57,7 +65,9 @@ It is a way for multiple applications to share a single configuration
@menu
* Overview:: Overview of the auth-source library.
* Help for users::
+* Secret Service API::
* Help for developers::
+* GnuPG and EasyPG Assistant Configuration::
* Index::
* Function Index::
* Variable Index::
@@ -68,15 +78,19 @@ It is a way for multiple applications to share a single configuration
@chapter Overview
The auth-source library is simply a way for Emacs and Gnus, among
-others, to find the answer to the old burning question ``I have a
-server name and a port, what are my user name and password?''
+others, to answer the old burning question ``What are my user name and
+password?''
+
+(This is different from the old question about burning ``Where is the
+fire extinguisher, please?''.)
+
+The auth-source library supports more than just the user name or the
+password (known as the secret).
-The auth-source library actually supports more than just the user name
-(known as the login) or the password, but only those two are in use
-today in Emacs or Gnus. Similarly, the auth-source library can in
-theory support multiple storage formats, but currently it only
-understands the classic ``netrc'' format, examples of which you can
-see later in this document.
+Similarly, the auth-source library supports multiple storage backend,
+currently either the classic ``netrc'' backend, examples of which you
+can see later in this document, or the Secret Service API. This is
+done with EIEIO-based backends and you can write your own if you want.
@node Help for users
@chapter Help for users
@@ -86,27 +100,42 @@ see later in this document.
machine @var{mymachine} login @var{myloginname} password @var{mypassword} port @var{myport}
@end example
-The machine is the server (either a DNS name or an IP address).
+The @code{machine} is the server (either a DNS name or an IP address).
+It's known as @var{:host} in @code{auth-source-search} queries. You
+can also use @code{host}.
+
+The @code{port} is the connection port or protocol. It's known as
+@var{:port} in @code{auth-source-search} queries.
+
+The @code{user} is the user name. It's known as @var{:user} in
+@code{auth-source-search} queries. You can also use @code{login} and
+@code{account}.
+
+Spaces are always OK as far as auth-source is concerned (but other
+programs may not like them). Just put the data in quotes, escaping
+quotes as you'd expect with @code{\}.
-The port is optional. If it's missing, auth-source will assume any
-port is OK. Actually the port is a protocol name or a port number so
-you can have separate entries for port @var{143} and for protocol
-@var{imap} if you fancy that. Anyway, you can just omit the port if
-you don't need it.
+All these are optional. You could just say (but we don't recommend
+it, we're just showing that it's possible)
-The login and password are simply your login credentials to the server.
+@example
+password @var{mypassword}
+@end example
+
+to use the same password everywhere. Again, @emph{DO NOT DO THIS} or
+you will be pwned as the kids say.
``Netrc'' files are usually called @code{.authinfo} or @code{.netrc};
nowadays @code{.authinfo} seems to be more popular and the auth-source
-library encourages this confusion by making it the default, as you'll
-see later.
+library encourages this confusion by accepting both, as you'll see
+later.
-If you have problems with the port, set @code{auth-source-debug} to
-@code{t} and see what port the library is checking in the
-@code{*Messages*} buffer. Ditto for any other problems, your first
-step is always to see what's being checked. The second step, of
-course, is to write a blog entry about it and wait for the answer in
-the comments.
+If you have problems with the search, set @code{auth-source-debug} to
+@code{'trivia} and see what host, port, and user the library is
+checking in the @code{*Messages*} buffer. Ditto for any other
+problems, your first step is always to see what's being checked. The
+second step, of course, is to write a blog entry about it and wait for
+the answer in the comments.
You can customize the variable @code{auth-sources}. The following may
be needed if you are using an older version of Emacs or if the
@@ -120,40 +149,45 @@ auth-source library is not loaded for some other reason.
@defvar auth-sources
The @code{auth-sources} variable tells the auth-source library where
-your netrc files live for a particular host and protocol. While you
-can get fancy, the default and simplest configuration is:
+your netrc files or Secret Service API collection items live for a
+particular host and protocol. While you can get fancy, the default
+and simplest configuration is:
@lisp
-(setq auth-sources '((:source "~/.authinfo.gpg" :host t :protocol t)))
+;;; old default: required :host and :port, not needed anymore
+(setq auth-sources '((:source "~/.authinfo.gpg" :host t :port t)))
+;;; mostly equivalent (see below about fallbacks) but shorter:
+(setq auth-sources '((:source "~/.authinfo.gpg")))
+;;; even shorter and the @emph{default}:
+(setq auth-sources '("~/.authinfo.gpg" "~/.authinfo" "~/.netrc"))
+;;; use the Secrets API @var{Login} collection (@pxref{Secret Service API})
+(setq auth-sources '("secrets:Login"))
@end lisp
-This says ``for any host and any protocol, use just that one file.''
-Sweet simplicity. In fact, this is already the default, so unless you
-want to move your netrc file, it will just work if you have that
-file. You may not, though, so make sure it exists.
-
By adding multiple entries to @code{auth-sources} with a particular
host or protocol, you can have specific netrc files for that host or
protocol. Usually this is unnecessary but may make sense if you have
shared netrc files or some other unusual setup (90% of Emacs users
have unusual setups and the remaining 10% are @emph{really} unusual).
+Here's a mixed example using two sources:
+
+@lisp
+(setq auth-sources '((:source (:secrets default) :host "myserver" :user "joe")
+ "~/.authinfo.gpg"))
+@end lisp
+
@end defvar
If you don't customize @code{auth-sources}, you'll have to live with
the defaults: any host and any port are looked up in the netrc
-file @code{~/.authinfo.gpg}. This is an encrypted file if and only if
-you set up EPA, which is strongly recommended.
+file @code{~/.authinfo.gpg}, which is a GnuPG encrypted file
+(@pxref{GnuPG and EasyPG Assistant Configuration}).
-@lisp
-(require 'epa-file)
-(epa-file-enable)
-;;; VERY important if you want symmetric encryption
-;;; irrelevant if you don't
-(setq epa-file-cache-passphrase-for-symmetric-encryption t)
-@end lisp
+If that fails, the unencrypted netrc files @code{~/.authinfo} and
+@code{~/.netrc} will be used.
-The simplest working netrc line example is one without a port.
+The typical netrc line example is without a port.
@example
machine YOURMACHINE login YOU password YOURPASSWORD
@@ -190,44 +224,156 @@ don't use a port entry, you match any Tramp method, as explained
earlier. Since Tramp has about 88 connection methods, this may be
necessary if you have an unusual (see earlier comment on those) setup.
+@node Secret Service API
+@chapter Secret Service API
+
+TODO: how does it work generally, how does secrets.el work, some examples.
+
@node Help for developers
@chapter Help for developers
-The auth-source library only has one function for external use.
+The auth-source library lets you control logging output easily.
-@defun auth-source-user-or-password mode host port
+@defvar auth-source-debug
+Set this variable to 'trivia to see lots of output in *Messages*, or
+set it to a function that behaves like @code{message} to do your own
+logging.
+@end defvar
+
+The auth-source library only has a few functions for external use.
-Retrieve appropriate authentication tokens, determined by @var{mode},
-for host @var{host} and @var{port}. If @code{auth-source-debug} is t,
-debugging messages will be printed. Set @code{auth-source-debug} to a
-function to use that function for logging. The parameters passed will
-be the same that the @code{message} function takes, that is, a string
-formatting spec and optional parameters.
+@defun auth-source-search SPEC
-If @var{mode} is a list of strings, the function will return a list of
-strings or @code{nil} objects (thus you can avoid parsing the netrc
-file more than once). If it's a string, the function will return a
-string or a @code{nil} object. Currently only the modes ``login'' and
-``password'' are recognized but more may be added in the future.
+TODO: how to include docstring?
-@var{host} is a string containing the host name.
+@end defun
-@var{port} contains the protocol name (e.g. ``imap'') or
-a port number. It must be a string, corresponding to the port in the
-user's netrc files.
+Let's take a look at an example of using @code{auth-source-search}
+from Gnus' @code{nnimap.el}.
@example
-;; IMAP example
-(setq auth (auth-source-user-or-password
- '("login" "password")
- "anyhostnamehere"
- "imap"))
-(nth 0 auth) ; the login name
-(nth 1 auth) ; the password
+(defun nnimap-credentials (address ports)
+ (let* ((auth-source-creation-prompts
+ '((user . "IMAP user at %h: ")
+ (secret . "IMAP password for %u@@%h: ")))
+ (found (nth 0 (auth-source-search :max 1
+ :host address
+ :port ports
+ :require '(:user :secret)
+ :create t))))
+ (if found
+ (list (plist-get found :user)
+ (let ((secret (plist-get found :secret)))
+ (if (functionp secret)
+ (funcall secret)
+ secret))
+ (plist-get found :save-function))
+ nil)))
@end example
+This call requires the user and password (secret) to be in the
+results. It also requests that an entry be created if it doesn't
+exist already. While the created entry is being assembled, the shown
+prompts will be used to interact with the user. The caller can also
+pass data in @code{auth-source-creation-defaults} to supply defaults
+for any of the prompts.
+
+Note that the password needs to be evaluated if it's a function. It's
+wrapped in a function to provide some security.
+
+Later, after a successful login, @code{nnimal.el} calls the
+@code{:save-function} like so:
+
+@example
+(when (functionp (nth 2 credentials))
+ (funcall (nth 2 credentials)))
+@end example
+
+This will work whether the @code{:save-function} was provided or not.
+@code{:save-function} will be provided only when a new entry was
+created, so this effectively says ``after a successful login, save the
+authentication information we just used, if it was newly created.''
+
+After the first time it's called, the @code{:save-function} will not
+run again (but it will log something if you have set
+@code{auth-source-debug} to @code{'trivia}). This is so it won't ask
+the same question again, which is annoying. This is so it won't ask
+the same question again, which is annoying. This is so it won't ask
+the same question again, which is annoying.
+
+So the responsibility of the API user that specified @code{:create t}
+is to call the @code{:save-function} if it's provided.
+
+@defun auth-source-delete SPEC
+
+TODO: how to include docstring?
+
+@end defun
+
+@defun auth-source-forget SPEC
+
+TODO: how to include docstring?
+
+@end defun
+
+@defun auth-source-forget+ SPEC
+
+TODO: how to include docstring?
+
@end defun
+@node GnuPG and EasyPG Assistant Configuration
+@appendix GnuPG and EasyPG Assistant Configuration
+
+If you don't customize @code{auth-sources}, the auth-source library
+reads @code{~/.authinfo.gpg}, which is a GnuPG encrypted file. Then
+it will check @code{~/.authinfo} but it's not recommended to use such
+an unencrypted file.
+
+In Emacs 23 or later there is an option @code{auto-encryption-mode} to
+automatically decrypt @code{*.gpg} files. It is enabled by default.
+If you are using earlier versions of Emacs, you will need:
+
+@lisp
+(require 'epa-file)
+(epa-file-enable)
+@end lisp
+
+If you want your GnuPG passwords to be cached, set up @code{gpg-agent}
+or EasyPG Assitant
+(@pxref{Caching Passphrases, , Caching Passphrases, epa}).
+
+To quick start, here are some questions:
+
+@enumerate
+@item
+Do you use GnuPG version 2 instead of GnuPG version 1?
+@item
+Do you use symmetric encryption rather than public key encryption?
+@item
+Do you want to use gpg-agent?
+@end enumerate
+
+Here are configurations depending on your answers:
+
+@multitable {111} {222} {333} {configuration configuration configuration}
+@item @b{1} @tab @b{2} @tab @b{3} @tab Configuration
+@item Yes @tab Yes @tab Yes @tab Set up gpg-agent.
+@item Yes @tab Yes @tab No @tab You can't, without gpg-agent.
+@item Yes @tab No @tab Yes @tab Set up gpg-agent.
+@item Yes @tab No @tab No @tab You can't, without gpg-agent.
+@item No @tab Yes @tab Yes @tab Set up elisp passphrase cache.
+@item No @tab Yes @tab No @tab Set up elisp passphrase cache.
+@item No @tab No @tab Yes @tab Set up gpg-agent.
+@item No @tab No @tab No @tab You can't, without gpg-agent.
+@end multitable
+
+To set up gpg-agent, follow the instruction in GnuPG manual
+(@pxref{Invoking GPG-AGENT, , Invoking GPG-AGENT, gnupg}).
+
+To set up elisp passphrase cache, set
+@code{epa-file-cache-passphrase-for-symmetric-encryption}.
+
@node Index
@chapter Index
@printindex cp
@@ -243,7 +389,3 @@ user's netrc files.
@bye
@c End:
-
-@ignore
- arch-tag: 7b835fd3-473f-40fc-9776-1c4e49d26c94
-@end ignore
diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi
index 7f9dd0daa0..2e66c78a3c 100644
--- a/doc/misc/autotype.texi
+++ b/doc/misc/autotype.texi
@@ -10,8 +10,7 @@
@c @cindex autotypist
@copying
-Copyright @copyright{} 1994, 1995, 1999, 2001, 2002, 2003, 2004, 2005,
-2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1994-1995, 1999, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -664,7 +663,3 @@ of the expansion possibilities.
@printindex vr
@bye
-
-@ignore
- arch-tag: 54001b27-5ef8-4a9d-a199-905d650fafba
-@end ignore
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index 0a595d90b8..f732eff569 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -7,6 +7,8 @@
@setchapternewpage odd
@comment %**end of header (This is for running Texinfo on a region.)
+@include emacsver.texi
+
@c The following macros are used for conditional output for single lines.
@c @texline foo
@c `foo' will appear only in TeX output
@@ -76,7 +78,6 @@
@newcount@calcpageno
@newtoks@calcoldeverypar @calcoldeverypar=@everypar
@everypar={@calceverypar@the@calcoldeverypar}
-@ifx@turnoffactive@undefinedzzz@def@turnoffactive{}@fi
@ifx@ninett@undefinedzzz@font@ninett=cmtt9@fi
@catcode`@\=0 \catcode`\@=11
\r@ggedbottomtrue
@@ -89,11 +90,11 @@
This file documents Calc, the GNU Emacs calculator.
@end ifinfo
@ifnotinfo
-This file documents Calc, the GNU Emacs calculator, included with GNU Emacs 23.3.
+This file documents Calc, the GNU Emacs calculator, included with
+GNU Emacs @value{EMACSVER}.
@end ifnotinfo
-Copyright @copyright{} 1990, 1991, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1990-1991, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1804,7 +1805,6 @@ or, in large mathematical notation,
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ 2 + { 3 \times 4 \times 5 \over 6 \times 7^8 } - 9 $$
\afterdisplay
@@ -3358,7 +3358,6 @@ Suppose we had the following set of equations:
@end group
@end ifnottex
@tex
-\turnoffactive
\beforedisplayh
$$ \openup1\jot \tabskip=0pt plus1fil
\halign to\displaywidth{\tabskip=0pt
@@ -3385,7 +3384,6 @@ This can be cast into the matrix equation,
@end group
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ \pmatrix{ 1 & 2 & 3 \cr 4 & 5 & 6 \cr 7 & 6 & 0 }
\times
@@ -3457,7 +3455,6 @@ in terms of @expr{a} and @expr{b}.
@end group
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ \eqalign{ x &+ a y = 6 \cr
x &+ b y = 10}
@@ -3483,7 +3480,6 @@ on the left by the transpose of @expr{A}:
@samp{trn(A)*A*X = trn(A)*B}.
@end ifnottex
@tex
-\turnoffactive
$A^T A \, X = A^T B$, where $A^T$ is the transpose \samp{trn(A)}.
@end tex
Now
@@ -3506,7 +3502,6 @@ system:
@end group
@end ifnottex
@tex
-\turnoffactive
\beforedisplayh
$$ \openup1\jot \tabskip=0pt plus1fil
\halign to\displaywidth{\tabskip=0pt
@@ -3778,7 +3773,6 @@ m = (N sum(x y) - sum(x) sum(y)) / (N sum(x^2) - sum(x)^2)
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ m = {N \sum x y - \sum x \sum y \over
N \sum x^2 - \left( \sum x \right)^2} $$
@@ -3820,7 +3814,6 @@ respectively. (We could have used @kbd{*} to compute @samp{sum(x^2)} and
@samp{sum(x y)}.)
@end ifnottex
@tex
-\turnoffactive
These are $\sum x$, $\sum x^2$, $\sum y$, and $\sum x y$,
respectively. (We could have used \kbd{*} to compute $\sum x^2$ and
$\sum x y$.)
@@ -3874,7 +3867,6 @@ b = (sum(y) - m sum(x)) / N
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ b = {\sum y - m \sum x \over N} $$
\afterdisplay
@@ -5223,7 +5215,6 @@ down to the formula,
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ \displaylines{
\qquad {h \over 3} (f(a) + 4 f(a+h) + 2 f(a+2h) + 4 f(a+3h) + \cdots
@@ -5245,7 +5236,6 @@ h * (f(a) + f(a+h) + f(a+2h) + f(a+3h) + ...
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ h (f(a) + f(a+h) + f(a+2h) + f(a+3h) + \cdots
+ f(a+(n-2)h) + f(a+(n-1)h)) $$
@@ -5686,7 +5676,6 @@ cos(x) = 1 - x^2 / 2! + x^4 / 4! - x^6 / 6! + ...
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ \cos x = 1 - {x^2 \over 2!} + {x^4 \over 4!} - {x^6 \over 6!} + \cdots $$
\afterdisplay
@@ -5704,7 +5693,6 @@ cos(x) = 1 - x^2 / 2! + O(x^3)
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ \cos x = 1 - {x^2 \over 2!} + O(x^3) $$
\afterdisplay
@@ -6234,7 +6222,7 @@ new_x = x - f(x)/f'(x)
@end ifnottex
@tex
\beforedisplay
-$$ x_{\rm new} = x - {f(x) \over f'(x)} $$
+$$ x_{\rm new} = x - {f(x) \over f^{\prime}(x)} $$
\afterdisplay
@end tex
@@ -6336,7 +6324,6 @@ s(n+1,m) = s(n,m-1) - n s(n,m) for n >= m >= 1.
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ \eqalign{ s(n,n) &= 1 \qquad \hbox{for } n \ge 0, \cr
s(n,0) &= 0 \qquad \hbox{for } n > 0, \cr
@@ -6875,7 +6862,6 @@ get the row sum. Similarly, use @kbd{[1 1] r 4 *} to get the column sum.
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ \eqalign{ x &+ a y = 6 \cr
x &+ b y = 10}
@@ -6939,7 +6925,6 @@ which we can solve using Calc's @samp{/} command.
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplayh
$$ \openup1\jot \tabskip=0pt plus1fil
\halign to\displaywidth{\tabskip=0pt
@@ -7074,7 +7059,6 @@ the first job is to form the matrix that describes the problem.
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ m \times x + b \times 1 = y $$
\afterdisplay
@@ -7865,7 +7849,6 @@ So the result when we take the modulo after every step is,
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ 3 (3 a + b - 511 m) + c - 511 n $$
\afterdisplay
@@ -7881,7 +7864,6 @@ the distributive law yields
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ 9 a + 3 b + c - 511\times3 m - 511 n $$
\afterdisplay
@@ -7899,9 +7881,8 @@ term. So we can take it out to get an equivalent formula with
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
-$$ 9 a + 3 b + c - 511 n' $$
+$$ 9 a + 3 b + c - 511 n^{\prime} $$
\afterdisplay
@end tex
@@ -12167,7 +12148,7 @@ You are prompted for a file name. All Calc modes are then reset to
their default values, then settings from the file you named are loaded
if this file exists, and this file becomes the one that Calc will
use in the future for commands like @kbd{m m}. The default settings
-file name is @file{~/.calc.el}. You can see the current file name by
+file name is @file{~/.emacs.d/calc.el}. You can see the current file name by
giving a blank response to the @kbd{m F} prompt. See also the
discussion of the @code{calc-settings-file} variable; @pxref{Customizing Calc}.
@@ -12289,15 +12270,21 @@ may be executed with @kbd{x} or @kbd{M-x}. Their effect is simply to
toggle the Inverse and/or Hyperbolic flags and then execute the
corresponding base command (@code{calc-sin} in this case).
-The Inverse and Hyperbolic flags apply only to the next Calculator
-command, after which they are automatically cleared. (They are also
-cleared if the next keystroke is not a Calc command.) Digits you
-type after @kbd{I} or @kbd{H} (or @kbd{K}) are treated as prefix
-arguments for the next command, not as numeric entries. The same
-is true of @kbd{C-u}, but not of the minus sign (@kbd{K -} means to
-subtract and keep arguments).
-
-The third Calc prefix flag, @kbd{K} (keep-arguments), is discussed
+@kindex O
+@pindex calc-option
+The @kbd{O} key (@code{calc-option}) sets another flag, the
+@dfn{Option Flag}, which also can alter the subsequent Calc command in
+various ways.
+
+The Inverse, Hyperbolic and Option flags apply only to the next
+Calculator command, after which they are automatically cleared. (They
+are also cleared if the next keystroke is not a Calc command.) Digits
+you type after @kbd{I}, @kbd{H} or @kbd{O} (or @kbd{K}) are treated as
+prefix arguments for the next command, not as numeric entries. The
+same is true of @kbd{C-u}, but not of the minus sign (@kbd{K -} means
+to subtract and keep arguments).
+
+Another Calc prefix flag, @kbd{K} (keep-arguments), is discussed
elsewhere. @xref{Keep Arguments}.
@node Calculation Modes, Simplification Modes, Inverse and Hyperbolic, Mode Settings
@@ -13175,12 +13162,13 @@ in the current radix. (Larger integers will still be displayed in their
entirety.)
@cindex Two's complements
-With the binary, octal and hexadecimal display modes, Calc can
-display @expr{w}-bit integers using two's complement notation. This
-option is selected with the key sequences @kbd{C-u d 2}, @kbd{C-u d 8}
-and @kbd{C-u d 6}, respectively, and a negative word size might be
-appropriate (@pxref{Binary Functions}). In two's complement
-notation, the integers in the (nearly) symmetric interval from
+Calc can display @expr{w}-bit integers using two's complement
+notation, although this is most useful with the binary, octal and
+hexadecimal display modes. This option is selected by using the
+@kbd{O} option prefix before setting the display radix, and a negative word
+size might be appropriate (@pxref{Binary Functions}). In two's
+complement notation, the integers in the (nearly) symmetric interval
+from
@texline @math{-2^{w-1}}
@infoline @expr{-2^(w-1)}
to
@@ -14133,6 +14121,10 @@ but
@texline @math{\sin(2 + x)}.
@infoline @expr{sin(2 + x)}.
+The @TeX{} specific unit names (@pxref{Predefined Units}) will not use
+the @samp{tex} prefix; the unit name for a @TeX{} point will be
+@samp{pt} instead of @samp{texpt}, for example.
+
Function and variable names not treated specially by @TeX{} and La@TeX{}
are simply written out as-is, which will cause them to come out in
italic letters in the printed document. If you invoke @kbd{d T} or
@@ -14401,7 +14393,6 @@ $$ \sin\left( a^2 \over b_i \right) $$
@end group
@end example
@tex
-\turnoffactive
$$ [3 + 4i, {3 \over 4}, 3 \pm 4, [ 3 \ldots \infty)] $$
@end tex
@sp 1
@@ -14427,7 +14418,6 @@ $$ [|a|, \left| a \over b \right|,
@end group
@end example
@tex
-\turnoffactive
$$ [\sin{a}, \sin{2 a}, \sin(2 + a), \sin\left( {a \over b} \right)] $$
@end tex
@sp 2
@@ -14460,7 +14450,6 @@ First with @samp{\def\evalto@{@}}, then with @samp{\def\evalto#1\to@{@}}:
@end group
@end example
@tex
-\turnoffactive
$$ 2 + 3 \to 5 $$
$$ 5 $$
@end tex
@@ -14475,7 +14464,6 @@ First with standard @code{\to}, then with @samp{\let\to\Rightarrow}:
@end group
@end example
@tex
-\turnoffactive
$$ [{2 + 3 \to 5}, {{a \over 2} \to {b + c \over 2}}] $$
{\let\to\Rightarrow
$$ [{2 + 3 \to 5}, {{a \over 2} \to {b + c \over 2}}] $$}
@@ -14492,7 +14480,6 @@ Matrices normally, then changing @code{\matrix} to @code{\pmatrix}:
@end group
@end example
@tex
-\turnoffactive
$$ \matrix{ {a \over b} & 0 \cr 0 & 2^{(x + 1)} } $$
$$ \pmatrix{ {a \over b} & 0 \cr 0 & 2^{(x + 1)} } $$
@end tex
@@ -16006,7 +15993,7 @@ No line breaking (@kbd{d b}).
Selections show deep structure (@kbd{j b}; @pxref{Making Selections}).
@item Save
-Record modes in @file{~/.calc.el} (@kbd{m R}; @pxref{General Mode Commands}).
+Record modes in @file{~/.emacs.d/calc.el} (@kbd{m R}; @pxref{General Mode Commands}).
@item Local
Record modes in Embedded buffer (@kbd{m R}).
@@ -17928,7 +17915,6 @@ ddb(cost, salv, life, per) = --------, book = cost - depreciation so far
@end example
@end ifnottex
@tex
-\turnoffactive
$$ \code{fv}(r, n, p) = p { (1 + r)^n - 1 \over r } $$
$$ \code{fvb}(r, n, p) = p { ((1 + r)^n - 1) (1 + r) \over r } $$
$$ \code{fvl}(r, n, p) = p (1 + r)^n $$
@@ -18584,7 +18570,6 @@ letter gamma). You can obtain these using the @kbd{H f G} [@code{gammag}]
and @kbd{H I f G} [@code{gammaG}] commands.
@end ifnottex
@tex
-\turnoffactive
The functions corresponding to the integrals that define $P(a,x)$
and $Q(a,x)$ but without the normalizing $1/\Gamma(a)$
factor are called $\gamma(a,x)$ and $\Gamma(a,x)$, respectively.
@@ -20051,6 +20036,20 @@ range are ignored. (You can tell if elements have been ignored by noting
that the counts in the result vector don't add up to the length of the
input vector.)
+If no prefix is given, then you will be prompted for a vector which
+will be used to determine the bins. (If a positive integer is given at
+this prompt, it will be still treated as if it were given as a
+prefix.) Each bin will consist of the interval of numbers closest to
+the corresponding number of this new vector; if the vector
+@expr{[a, b, c, ...]} is entered at the prompt, the bins will be
+@expr{(-inf, (a+b)/2]}, @expr{((a+b)/2, (b+c)/2]}, etc. The result of
+this command will be a vector counting how many elements of the
+original vector are in each bin.
+
+The result will then be a vector with the same length as this new vector;
+each element of the new vector will be replaced by the number of
+elements of the original vector which are closest to it.
+
@kindex H v H
@kindex H V H
With the Hyperbolic flag, @kbd{H V H} pulls two vectors from the stack.
@@ -20552,7 +20551,6 @@ this is the weighted mean of the @expr{x} values with weights
@texline @math{1 /\sigma^2}.
@infoline @expr{1 / s^2}.
@tex
-\turnoffactive
$$ \mu = { \displaystyle \sum { x_i \over \sigma_i^2 } \over
\displaystyle \sum { 1 \over \sigma_i^2 } } $$
@end tex
@@ -20586,7 +20584,6 @@ root of the reciprocal of the sum of the reciprocals of the squares
of the input errors. (I.e., the variance is the reciprocal of the
sum of the reciprocals of the variances.)
@tex
-\turnoffactive
$$ \sigma_\mu^2 = {1 \over \displaystyle \sum {1 \over \sigma_i^2}} $$
@end tex
If the inputs are plain
@@ -20596,7 +20593,6 @@ out to be equivalent to calculating the standard deviation and
then assuming each value's error is equal to this standard
deviation.)
@tex
-\turnoffactive
$$ \sigma_\mu^2 = {\sigma^2 \over N} $$
@end tex
@@ -20629,7 +20625,6 @@ command computes the harmonic mean of the data values. This is
defined as the reciprocal of the arithmetic mean of the reciprocals
of the values.
@tex
-\turnoffactive
$$ { N \over \displaystyle \sum {1 \over x_i} } $$
@end tex
@@ -20643,7 +20638,6 @@ is the @var{n}th root of the product of the values. This is also
equal to the @code{exp} of the arithmetic mean of the logarithms
of the data values.
@tex
-\turnoffactive
$$ \exp \left ( \sum { \ln x_i } \right ) =
\left ( \prod { x_i } \right)^{1 / N} $$
@end tex
@@ -20655,7 +20649,6 @@ mean'' of two numbers taken from the stack. This is computed by
replacing the two numbers with their arithmetic mean and geometric
mean, then repeating until the two values converge.
@tex
-\turnoffactive
$$ a_{i+1} = { a_i + b_i \over 2 } , \qquad b_{i+1} = \sqrt{a_i b_i} $$
@end tex
@@ -20678,7 +20671,6 @@ deviation, whose value is the square root of the sum of the squares of
the differences between the values and the mean of the @expr{N} values,
divided by @expr{N-1}.
@tex
-\turnoffactive
$$ \sigma^2 = {1 \over N - 1} \sum (x_i - \mu)^2 $$
@end tex
@@ -20705,7 +20697,6 @@ is used when the input represents a sample of the set of all
data values, so that the mean computed from the input is itself
only an estimate of the true mean.
@tex
-\turnoffactive
$$ \sigma^2 = {1 \over N} \sum (x_i - \mu)^2 $$
@end tex
@@ -20770,7 +20761,6 @@ are composed of error forms, the error for a given data point
is taken as the square root of the sum of the squares of the two
input errors.
@tex
-\turnoffactive
$$ \sigma_{x\!y}^2 = {1 \over N-1} \sum (x_i - \mu_x) (y_i - \mu_y) $$
$$ \sigma_{x\!y}^2 =
{\displaystyle {1 \over N-1}
@@ -20798,7 +20788,6 @@ This is defined by the covariance of the vectors divided by the
product of their standard deviations. (There is no difference
between sample or population statistics here.)
@tex
-\turnoffactive
$$ r_{x\!y} = { \sigma_{x\!y}^2 \over \sigma_x^2 \sigma_y^2 } $$
@end tex
@@ -21530,7 +21519,11 @@ to
@noindent
Every character not part of the sub-formula @samp{b} has been changed
-to a dot. The @samp{*} next to the line number is to remind you that
+to a dot. (If the customizable variable
+@code{calc-highlight-selections-with-faces} is non-nil, then the characters
+not part of the sub-formula are de-emphasized by using a less
+noticeable face instead of using dots. @pxref{Displaying Selections}.)
+The @samp{*} next to the line number is to remind you that
the formula has a portion of it selected. (In this case, it's very
obvious, but it might not always be. If Embedded mode is enabled,
the word @samp{Sel} also appears in the mode line because the stack
@@ -21743,6 +21736,9 @@ of the hierarchy simply by pointing to it with the cursor.
@noindent
@kindex j d
@pindex calc-show-selections
+@vindex calc-highlight-selections-with-faces
+@vindex calc-selected-face
+@vindex calc-nonselected-face
The @kbd{j d} (@code{calc-show-selections}) command controls how
selected sub-formulas are displayed. One of the alternatives is
illustrated in the above examples; if we press @kbd{j d} we switch
@@ -21757,6 +21753,13 @@ by @samp{#} signs:
. . . . 2 x + 1
@end group
@end smallexample
+If the customizable variable
+@code{calc-highlight-selections-with-faces} is non-nil, then the
+non-selected portion of the formula will be de-emphasized by using a
+less noticeable face (@code{calc-nonselected-face}) instead of dots
+and the selected sub-formula will be highlighted by using a more
+noticeable face (@code{calc-selected-face}) instead of @samp{#}
+signs. (@pxref{Customizing Calc}.)
@node Operating on Selections, Rearranging with Selections, Displaying Selections, Selecting Subformulas
@subsection Operating on Selections
@@ -24354,8 +24357,6 @@ For example, suppose the data matrix
@end example
@end ifnottex
@tex
-\turnoffactive
-\turnoffactive
\beforedisplay
$$ \pmatrix{ 1 & 2 & 3 & 4 & 5 \cr
5 & 7 & 9 & 11 & 13 }
@@ -24415,7 +24416,6 @@ chi^2 = sum((y_i - (a + b x_i))^2, i, 1, N)
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ \chi^2 = \sum_{i=1}^N (y_i - (a + b x_i))^2 $$
\afterdisplay
@@ -24606,7 +24606,6 @@ chi^2 = sum(((y_i - (a + b x_i)) / sigma_i)^2, i, 1, N)
@end example
@end ifnottex
@tex
-\turnoffactive
\beforedisplay
$$ \chi^2 = \sum_{i=1}^N \left(y_i - (a + b x_i) \over \sigma_i\right)^2 $$
\afterdisplay
@@ -25381,7 +25380,6 @@ any later ones are answered by reading additional elements from
the stack. Thus, @kbd{' k^2 @key{RET} ' k @key{RET} 1 @key{RET} 5 @key{RET} a + @key{RET}}
produces the result 55.
@tex
-\turnoffactive
$$ \sum_{k=1}^5 k^2 = 55 $$
@end tex
@@ -27677,6 +27675,8 @@ begin with the @kbd{u} prefix key.
* The Units Table::
* Predefined Units::
* User-Defined Units::
+* Logarithmic Units::
+* Musical Notes::
@end menu
@node Basic Operations on Units, The Units Table, Units, Units
@@ -27995,6 +27995,14 @@ than the point used by @TeX{}), @code{texdd} (a Didot point),
@code{texcc} (a Cicero) and @code{texsp} (a scaled @TeX{} point,
all dimensions representable in @TeX{} are multiples of this value).
+When Calc is using the @TeX{} or La@TeX{} language mode (@pxref{TeX
+and LaTeX Language Modes}), the @TeX{} specific unit names will not
+use the @samp{tex} prefix; the unit name for a @TeX{} point will be
+@samp{pt} instead of @samp{texpt}, for example. To avoid conflicts,
+the unit names for pint and parsec will simply be @samp{pint} and
+@samp{parsec} instead of @samp{pt} and @samp{pc}.
+
+
The unit @code{e} stands for the elementary (electron) unit of charge;
because algebra command could mistake this for the special constant
@expr{e}, Calc provides the alternate unit name @code{ech} which is
@@ -28030,7 +28038,7 @@ really is unitless.)
@c Describe angular units, luminosity vs. steradians problem.
-@node User-Defined Units, , Predefined Units, Units
+@node User-Defined Units, Logarithmic Units, Predefined Units, Units
@section User-Defined Units
@noindent
@@ -28108,12 +28116,321 @@ possible to create user-defined temperature units.
@cindex Calc init file, user-defined units
The @kbd{u p} (@code{calc-permanent-units}) command stores the user-defined
units in your Calc init file (the file given by the variable
-@code{calc-settings-file}, typically @file{~/.calc.el}), so that the
+@code{calc-settings-file}, typically @file{~/.emacs.d/calc.el}), so that the
units will still be available in subsequent Emacs sessions. If there
was already a set of user-defined units in your Calc init file, it
is replaced by the new set. (@xref{General Mode Commands}, for a way to
tell Calc to use a different file for the Calc init file.)
+@node Logarithmic Units, Musical Notes, User-Defined Units, Units
+@section Logarithmic Units
+
+The units @code{dB} (decibels) and @code{Np} (nepers) are logarithmic
+units which are manipulated differently than standard units. Calc
+provides commands to work with these logarithmic units.
+
+Decibels and nepers are used to measure power quantities as well as
+field quantities (quantities whose squares are proportional to power);
+these two types of quantities are handled slightly different from each
+other. By default the Calc commands work as if power quantities are
+being used; with the @kbd{H} prefix the Calc commands work as if field
+quantities are being used.
+
+The decibel level of a power
+@infoline @math{P1},
+@texline @math{P_1},
+relative to a reference power
+@infoline @math{P0},
+@texline @math{P_0},
+is defined to be
+@infoline @math{10 log10(P1/P0) dB}.
+@texline @math{10 \log_{10}(P_{1}/P_{0}) {\rm dB}}.
+(The factor of 10 is because a decibel, as its name implies, is
+one-tenth of a bel. The bel, named after Alexander Graham Bell, was
+considered to be too large of a unit and was effectively replaced by
+the decibel.) If @math{F} is a field quantity with power
+@math{P=k F^2}, then a reference quantity of
+@infoline @math{F0}
+@texline @math{F_0}
+would correspond to a power of
+@infoline @math{P0=k F0^2}.
+@texline @math{P_{0}=kF_{0}^2}.
+If
+@infoline @math{P1=k F1^2},
+@texline @math{P_{1}=kF_{1}^2},
+then
+
+@ifnottex
+@example
+10 log10(P1/P0) = 10 log10(F1^2/F0^2) = 20 log10(F1/F0).
+@end example
+@end ifnottex
+@tex
+$$ 10 \log_{10}(P_1/P_0) = 10 \log_{10}(F_1^2/F_0^2) = 20
+\log_{10}(F_1/F_0)$$
+@end tex
+
+@noindent
+In order to get the same decibel level regardless of whether a field
+quantity or the corresponding power quantity is used, the decibel
+level of a field quantity
+@infoline @math{F1},
+@texline @math{F_1},
+relative to a reference
+@infoline @math{F0},
+@texline @math{F_0},
+is defined as
+@infoline @math{20 log10(F1/F0) dB}.
+@texline @math{20 \log_{10}(F_{1}/F_{0}) {\rm dB}}.
+For example, the decibel value of a sound pressure level of
+@infoline @math{60 uPa}
+@texline @math{60 \mu{\rm Pa}}
+relative to
+@infoline @math{20 uPa}
+@texline @math{20 \mu{\rm Pa}}
+(the threshhold of human hearing) is
+@infoline @math{20 log10(60 uPa/ 20 uPa) dB = 20 log10(3) dB},
+@texline @math{20 \log_{10}(60 \mu{\rm Pa}/20 \mu{\rm Pa}) {\rm dB} = 20 \log_{10}(3) {\rm dB}},
+which is about
+@infoline @math{9.54 dB}.
+@texline @math{9.54 {\rm dB}}.
+Note that in taking the ratio, the original units cancel and so these
+logarithmic units are dimensionless.
+
+Nepers (named after John Napier, who is credited with inventing the
+logarithm) are similar to bels except they use natural logarithms instead
+of common logarithms. The neper level of a power
+@infoline @math{P1},
+@texline @math{P_1},
+relative to a reference power
+@infoline @math{P0},
+@texline @math{P_0},
+is
+@infoline @math{(1/2) ln(P1/P0) Np}.
+@texline @math{(1/2) \ln(P_1/P_0) {\rm Np}}.
+The neper level of a field
+@infoline @math{F1},
+@texline @math{F_1},
+relative to a reference field
+@infoline @math{F0},
+@texline @math{F_0},
+is
+@infoline @math{ln(F1/F0) Np}.
+@texline @math{\ln(F_1/F_0) {\rm Np}}.
+
+@vindex calc-lu-power-reference
+@vindex calc-lu-field-reference
+For power quantities, Calc uses
+@infoline @math{1 mW}
+@texline @math{1 {\rm mW}}
+as the default reference quantity; this default can be changed by changing
+the value of the customizable variable
+@code{calc-lu-power-reference} (@pxref{Customizing Calc}).
+For field quantities, Calc uses
+@infoline @math{20 uPa}
+@texline @math{20 \mu{\rm Pa}}
+as the default reference quantity; this is the value used in acoustics
+which is where decibels are commonly encountered. This default can be
+changed by changing the value of the customizable variable
+@code{calc-lu-field-reference} (@pxref{Customizing Calc}). A
+non-default reference quantity will be read from the stack if the
+capital @kbd{O} prefix is used.
+
+@kindex l q
+@pindex calc-lu-quant
+@tindex lupquant
+@tindex lufquant
+The @kbd{l q} (@code{calc-lu-quant}) [@code{lupquant}]
+command computes the power quantity corresponding to a given number of
+logarithmic units. With the capital @kbd{O} prefix, @kbd{O l q}, the
+reference level will be read from the top of the stack. (In an
+algebraic formula, @code{lupquant} can be given an optional second
+argument which will be used for the reference level.) For example,
+@code{20 dB @key{RET} l q} will return @code{100 mW};
+@code{20 dB @key{RET} 4 W @key{RET} O l q} will return @code{400 W}.
+The @kbd{H l q} [@code{lufquant}] command behaves like @kbd{l q} but
+computes field quantities instead of power quantities.
+
+@kindex l d
+@pindex calc-db
+@tindex dbpower
+@tindex dbfield
+@kindex l n
+@pindex calc-np
+@tindex nppower
+@tindex npfield
+The @kbd{l d} (@code{calc-db}) [@code{dbpower}] command will compute
+the decibel level of a power quantity using the default reference
+level; @kbd{H l d} [@code{dbfield}] will compute the decibel level of
+a field quantity. The commands @kbd{l n} (@code{calc-np})
+[@code{nppower}] and @kbd{H l n} [@code{npfield}] will similarly
+compute neper levels. With the capital @kbd{O} prefix these commands
+will read a reference level from the stack; in an algebraic formula
+the reference level can be given as an optional second argument.
+
+@kindex l +
+@pindex calc-lu-plus
+@tindex lupadd
+@tindex lufadd
+@kindex l -
+@pindex calc-lu-minus
+@tindex lupsub
+@tindex lufsub
+@kindex l *
+@pindex calc-lu-times
+@tindex lupmul
+@tindex lufmul
+@kindex l /
+@pindex calc-lu-divide
+@tindex lupdiv
+@tindex lufdiv
+The sum of two power or field quantities doesn't correspond to the sum
+of the corresponding decibel or neper levels. If the powers
+corresponding to decibel levels
+@infoline @math{D1}
+@texline @math{D_1}
+and
+@infoline @math{D2}
+@texline @math{D_2}
+are added, the corresponding decibel level ``sum'' will be
+
+@ifnottex
+@example
+ 10 log10(10^(D1/10) + 10^(D2/10)) dB.
+@end example
+@end ifnottex
+@tex
+$$ 10 \log_{10}(10^{D_1/10} + 10^{D_2/10}) {\rm dB}.$$
+@end tex
+
+@noindent
+When field quantities are combined, it often means the corresponding
+powers are added and so the above formula might be used. In
+acoustics, for example, the sound pressure level is a field quantity
+and so the decibels are often defined using the field formula, but the
+sound pressure levels are combined as the sound power levels, and so
+the above formula should be used. If two field quantities themselves
+are added, the new decibel level will be
+
+@ifnottex
+@example
+ 20 log10(10^(D1/20) + 10^(D2/20)) dB.
+@end example
+@end ifnottex
+@tex
+$$ 20 \log_{10}(10^{D_1/20} + 10^{D_2/20}) {\rm dB}.$$
+@end tex
+
+@noindent
+If the power corresponding to @math{D} dB is multiplied by a number @math{N},
+then the corresponding decibel level will be
+
+@ifnottex
+@example
+ D + 10 log10(N) dB,
+@end example
+@end ifnottex
+@tex
+$$ D + 10 \log_{10}(N) {\rm dB},$$
+@end tex
+
+@noindent
+if a field quantity is multiplied by @math{N} the corresponding decibel level
+will be
+
+@ifnottex
+@example
+ D + 20 log10(N) dB.
+@end example
+@end ifnottex
+@tex
+$$ D + 20 \log_{10}(N) {\rm dB}.$$
+@end tex
+
+@noindent
+There are similar formulas for combining nepers. The @kbd{l +}
+(@code{calc-lu-plus}) [@code{lupadd}] command will ``add'' two
+logarithmic unit power levels this way; with the @kbd{H} prefix,
+@kbd{H l +} [@code{lufadd}] will add logarithmic unit field levels.
+Similarly, logarithmic units can be ``subtracted'' with @kbd{l -}
+(@code{calc-lu-minus}) [@code{lupsub}] or @kbd{H l -} [@code{lufsub}].
+The @kbd{l *} (@code{calc-lu-times}) [@code{lupmul}] and @kbd{H l *}
+[@code{lufmul}] commands will ``multiply'' a logarithmic unit by a
+number; the @kbd{l /} (@code{calc-lu-divide}) [@code{lupdiv}] and
+@kbd{H l /} [@code{lufdiv}] commands will ``divide'' a logarithmic
+unit by a number. Note that the reference quantities don't play a role
+in this arithmetic.
+
+@node Musical Notes, , Logarithmic Units, Units
+@section Musical Notes
+
+Calc can convert between musical notes and their associated
+frequencies. Notes can be given using either scientific pitch
+notation or midi numbers. Since these note systems are basically
+logarithmic scales, Calc uses the @kbd{l} prefix for functions
+operating on notes.
+
+Scientific pitch notation refers to a note by giving a letter
+A through G, possibly followed by a flat or sharp) with a subscript
+indicating an octave number. Each octave starts with C and ends with
+B and
+@c increasing each note by a semitone will result
+@c in the sequence @expr{C}, @expr{C} sharp, @expr{D}, @expr{E} flat, @expr{E},
+@c @expr{F}, @expr{F} sharp, @expr{G}, @expr{A} flat, @expr{A}, @expr{B}
+@c flat and @expr{B}.
+the octave numbered 0 was chosen to correspond to the lowest
+audible frequency. Using this system, middle C (about 261.625 Hz)
+corresponds to the note @expr{C} in octave 4 and is denoted
+@expr{C_4}. Any frequency can be described by giving a note plus an
+offset in cents (where a cent is a ratio of frequencies so that a
+semitone consists of 100 cents).
+
+The midi note number system assigns numbers to notes so that
+@expr{C_(-1)} corresponds to the midi note number 0 and @expr{G_9}
+corresponds to the midi note number 127. A midi controller can have
+up to 128 keys and each midi note number from 0 to 127 corresponds to
+a possible key.
+
+@kindex l s
+@pindex calc-spn
+@tindex spn
+The @kbd{l s} (@code{calc-spn}) [@code{spn}] command converts either
+a frequency or a midi number to scientific pitch notation. For
+example, @code{500 Hz} gets converted to
+@code{B_4 + 21.3094853649 cents} and @code{84} to @code{C_6}.
+
+
+@kindex l m
+@pindex calc-midi
+@tindex midi
+The @kbd{l m} (@code{calc-midi}) [@code{midi}] command converts either
+a frequency or a note given in scientific pitch notation to the
+corresponding midi number. For example, @code{C_6} gets converted to 84
+and @code{440 Hz} to 69.
+
+@kindex l f
+@pindex calc-freq
+@tindex freq
+The @kbd{l f} (@code{calc-freq}) [@code{freq}] command converts either
+either a midi number or a note given in scientific pitch notation to
+the corresponding frequency. For example, @code{Asharp_2 + 30 cents}
+gets converted to @code{118.578040134 Hz} and @code{55} to
+@code{195.99771799 Hz}.
+
+Since the frequencies of notes are not usually given exactly (and are
+typically irrational), the customizable variable
+@code{calc-note-threshold} determines how close (in cents) a frequency
+needs to be to a note to be recognized as that note
+(@pxref{Customizing Calc}). This variable has a default value of
+@code{1}. For example, middle @var{C} is approximately
+@expr{261.625565302 Hz}; this frequency is often shortened to
+@expr{261.625 Hz}. Without @code{calc-note-threshold} (or a value of
+@expr{0}), Calc would convert @code{261.625 Hz} to scientific pitch
+notation @code{B_3 + 99.9962592773 cents}; with the default value of
+@code{1}, Calc converts @code{261.625 Hz} to @code{C_4}.
+
+
+
@node Store and Recall, Graphics, Units, Top
@chapter Storing and Recalling
@@ -28509,7 +28826,7 @@ names rather than prompting for the variable name.
@cindex Calc init file, variables
The @kbd{s p} (@code{calc-permanent-variable}) command saves a
variable's value permanently in your Calc init file (the file given by
-the variable @code{calc-settings-file}, typically @file{~/.calc.el}), so
+the variable @code{calc-settings-file}, typically @file{~/.emacs.d/calc.el}), so
that its value will still be available in future Emacs sessions. You
can re-execute @w{@kbd{s p}} later on to update the saved value, but the
only way to remove a saved variable is to edit your calc init file
@@ -30862,7 +31179,7 @@ Two more mode-recording modes selectable by @kbd{m R} are available
which are also available outside of Embedded mode.
(@pxref{General Mode Commands}.) They are @code{Save}, in which mode
settings are recorded permanently in your Calc init file (the file given
-by the variable @code{calc-settings-file}, typically @file{~/.calc.el})
+by the variable @code{calc-settings-file}, typically @file{~/.emacs.d/calc.el})
rather than by annotating the current document, and no-recording
mode (where there is no symbol like @code{Save} or @code{Local} in
the mode line), in which mode-changing commands do not leave any
@@ -31122,7 +31439,7 @@ The @kbd{Z P} (@code{calc-user-define-permanent}) command makes a key
binding permanent so that it will remain in effect even in future Emacs
sessions. (It does this by adding a suitable bit of Lisp code into
your Calc init file; that is, the file given by the variable
-@code{calc-settings-file}, typically @file{~/.calc.el}.) For example,
+@code{calc-settings-file}, typically @file{~/.emacs.d/calc.el}.) For example,
@kbd{Z P s} would register our @code{sincos} command permanently. If
you later wish to unregister this command you must edit your Calc init
file by hand. (@xref{General Mode Commands}, for a way to tell Calc to
@@ -31855,7 +32172,7 @@ step of @code{myfact} could have been written
A good place to put your @code{defmath} commands is your Calc init file
(the file given by @code{calc-settings-file}, typically
-@file{~/.calc.el}), which will not be loaded until Calc starts.
+@file{~/.emacs.d/calc.el}), which will not be loaded until Calc starts.
If a file named @file{.emacs} exists in your home directory, Emacs reads
and executes the Lisp forms in this file as it starts up. While it may
seem reasonable to put your favorite @code{defmath} commands there,
@@ -34933,7 +35250,7 @@ character of the prefix can simply be typed twice.
Calc is controlled by many variables, most of which can be reset
from within Calc. Some variables are less involved with actual
-calculation, and can be set outside of Calc using Emacs's
+calculation and can be set outside of Calc using Emacs's
customization facilities. These variables are listed below.
Typing @kbd{M-x customize-variable RET @var{variable-name} RET}
will bring up a buffer in which the variable's value can be redefined.
@@ -34956,7 +35273,9 @@ If @code{calc-settings-file} is not your user init file (typically
@code{nil}, then Calc will automatically load your settings file (if it
exists) the first time Calc is invoked.
-The default value for this variable is @code{"~/.calc.el"}.
+The default value for this variable is @code{"~/.emacs.d/calc.el"}
+unless the file @file{~/.calc.el} exists, in which case the default
+value will be @code{"~/.calc.el"}.
@end defvar
@defvar calc-gnuplot-name
@@ -35217,6 +35536,45 @@ should also be added to @code{calc-embedded-announce-formula-alist}
and @code{calc-embedded-open-close-plain-alist}.
@end defvar
+@defvar calc-lu-power-reference
+@defvarx calc-lu-field-reference
+See @ref{Logarithmic Units}.@*
+The variables @code{calc-lu-power-reference} and
+@code{calc-lu-field-reference} are unit expressions (written as
+strings) which Calc will use as reference quantities for logarithmic
+units.
+
+The default value of @code{calc-lu-power-reference} is @code{"mW"}
+and the default value of @code{calc-lu-field-reference} is
+@code{"20 uPa"}.
+@end defvar
+
+@defvar calc-note-threshold
+See @ref{Musical Notes}.@*
+The variable @code{calc-note-threshold} is a number (written as a
+string) which determines how close (in cents) a frequency needs to be
+to a note to be recognized as that note.
+
+The default value of @code{calc-note-threshold} is 1.
+@end defvar
+
+@defvar calc-highlight-selections-with-faces
+@defvarx calc-selected-face
+@defvarx calc-nonselected-face
+See @ref{Displaying Selections}.@*
+The variable @code{calc-highlight-selections-with-faces}
+determines how selected sub-formulas are distinguished.
+If @code{calc-highlight-selections-with-faces} is nil, then
+a selected sub-formula is distinguished either by changing every
+character not part of the sub-formula with a dot or by changing every
+character in the sub-formula with a @samp{#} sign.
+If @code{calc-highlight-selections-with-faces} is t,
+then a selected sub-formula is distinguished either by displaying the
+non-selected portion of the formula with @code{calc-nonselected-face}
+or by displaying the selected sub-formula with
+@code{calc-nonselected-face}.
+@end defvar
+
@defvar calc-multiplication-has-precedence
The variable @code{calc-multiplication-has-precedence} determines
whether multiplication has precedence over division in algebraic
@@ -35459,6 +35817,7 @@ keystrokes are not listed in this summary.
@r{ @: M @: @: @:calc-more-recursion-depth@:}
@r{ @: I M @: @: @:calc-less-recursion-depth@:}
@r{ a@: N @: @: 5 @:evalvn@:(a)}
+@r{ @: O @:command @: 32 @:@:Option}
@r{ @: P @: @: @:@:pi}
@r{ @: I P @: @: @:@:gamma}
@r{ @: H P @: @: @:@:e}
@@ -35847,6 +36206,31 @@ keystrokes are not listed in this summary.
@r{ v x@: I k T @: @: @:ltpt@:(x,v)}
@c
+@r{ a b@: l + @: @: @:lupadd@:(a,b)}
+@r{ a b@: H l + @: @: @:lufadd@:(a,b)}
+@r{ a b@: l - @: @: @:lupsub@:(a,b)}
+@r{ a b@: H l - @: @: @:lufsub@:(a,b)}
+@r{ a b@: l * @: @: @:lupmul@:(a,b)}
+@r{ a b@: H l * @: @: @:lufmul@:(a,b)}
+@r{ a b@: l / @: @: @:lupdiv@:(a,b)}
+@r{ a b@: H l / @: @: @:lufdiv@:(a,b)}
+@r{ a@: l d @: @: @:dbpower@:(a)}
+@r{ a b@: O l d @: @: @:dbpower@:(a,b)}
+@r{ a@: H l d @: @: @:dbfield@:(a)}
+@r{ a b@: O H l d @: @: @:dbfield@:(a,b)}
+@r{ a@: l n @: @: @:nppower@:(a)}
+@r{ a b@: O l n @: @: @:nppower@:(a,b)}
+@r{ a@: H l n @: @: @:npfield@:(a)}
+@r{ a b@: O H l n @: @: @:npfield@:(a,b)}
+@r{ a@: l q @: @: @:lupquant@:(a)}
+@r{ a b@: O l q @: @: @:lupquant@:(a,b)}
+@r{ a@: H l q @: @: @:lufquant@:(a)}
+@r{ a b@: O H l q @: @: @:lufquant@:(a,b)}
+@r{ a@: l s @: @: @:spn@:(a)}
+@r{ a@: l m @: @: @:midi@:(a)}
+@r{ a@: l f @: @: @:freq@:(a)}
+
+@c
@r{ @: m a @: @: 12,13 @:calc-algebraic-mode@:}
@r{ @: m d @: @: @:calc-degrees-mode@:}
@r{ @: m e @: @: @:calc-embedded-preserve-modes@:}
@@ -36569,8 +36953,3 @@ the corresponding full Lisp name is derived by adding a prefix of
@printindex fn
@bye
-
-
-@ignore
- arch-tag: 77a71809-fa4d-40be-b2cc-da3e8fb137c0
-@end ignore
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index 4b56e07226..9ae9abd5e1 100644
--- a/doc/misc/cc-mode.texi
+++ b/doc/misc/cc-mode.texi
@@ -159,9 +159,7 @@ CC Mode
@copying
This manual is for CC Mode in Emacs.
-Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright @copyright{} 1995-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -312,19 +310,19 @@ Indentation Engine Basics
Syntactic Symbols
-* Function Symbols::
-* Class Symbols::
-* Conditional Construct Symbols::
-* Switch Statement Symbols::
-* Brace List Symbols::
-* External Scope Symbols::
-* Paren List Symbols::
-* Literal Symbols::
-* Multiline Macro Symbols::
-* Objective-C Method Symbols::
-* Anonymous Class Symbol::
-* Statement Block Symbols::
-* K&R Symbols::
+* Function Symbols::
+* Class Symbols::
+* Conditional Construct Symbols::
+* Switch Statement Symbols::
+* Brace List Symbols::
+* External Scope Symbols::
+* Paren List Symbols::
+* Literal Symbols::
+* Multiline Macro Symbols::
+* Objective-C Method Symbols::
+* Java Symbols::
+* Statement Block Symbols::
+* K&R Symbols::
Customizing Indentation
@@ -3971,6 +3969,9 @@ The first line in a ``topmost'' definition. @ref{Function Symbols}.
Topmost definition continuation lines. This is only used in the parts
that aren't covered by other symbols such as @code{func-decl-cont} and
@code{knr-argdecl}. @ref{Function Symbols}.
+@item annotation-top-cont
+Topmost definition continuation lines where all previous items are
+annotations. @ref{Java Symbols}.
@item member-init-intro
First line in a member initialization list. @ref{Class Symbols}.
@item member-init-cont
@@ -3999,6 +4000,9 @@ with an open brace. @ref{Brace List Symbols}.
A statement. @ref{Function Symbols}.
@item statement-cont
A continuation of a statement. @ref{Function Symbols}.
+@item annotation-var-cont
+A continuation of a statement where all previous items are
+annotations. @ref{Java Symbols}.
@item statement-block-intro
The first line in a new statement block. @ref{Conditional Construct
Symbols}.
@@ -4112,23 +4116,23 @@ Symbols}.
@item inexpr-class
A class definition inside an expression. This is used for anonymous
classes in Java. It's also used for anonymous array initializers in
-Java. @ref{Anonymous Class Symbol}.
+Java. @ref{Java Symbols}.
@end table
@menu
-* Function Symbols::
-* Class Symbols::
-* Conditional Construct Symbols::
-* Switch Statement Symbols::
-* Brace List Symbols::
-* External Scope Symbols::
-* Paren List Symbols::
-* Literal Symbols::
-* Multiline Macro Symbols::
-* Objective-C Method Symbols::
-* Anonymous Class Symbol::
-* Statement Block Symbols::
-* K&R Symbols::
+* Function Symbols::
+* Class Symbols::
+* Conditional Construct Symbols::
+* Switch Statement Symbols::
+* Brace List Symbols::
+* External Scope Symbols::
+* Paren List Symbols::
+* Literal Symbols::
+* Multiline Macro Symbols::
+* Objective-C Method Symbols::
+* Java Symbols::
+* Statement Block Symbols::
+* K&R Symbols::
@end menu
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -4233,7 +4237,7 @@ Hitting @kbd{C-c C-s} on line 5 shows the following analysis:
@noindent
The primary syntactic symbol for this line is @code{access-label} as
-this a label keyword that specifies access protection in C++. However,
+this is a label keyword that specifies access protection in C++. However,
because this line is also a top-level construct inside a class
definition, the analysis actually shows two syntactic symbols. The
other syntactic symbol assigned to this line is @code{inclass}.
@@ -4740,7 +4744,7 @@ macros.}.
@xref{Custom Macros}, for more info about the treatment of macros.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Objective-C Method Symbols, Anonymous Class Symbol, Multiline Macro Symbols, Syntactic Symbols
+@node Objective-C Method Symbols, Java Symbols, Multiline Macro Symbols, Syntactic Symbols
@comment node-name, next, previous, up
@subsection Objective-C Method Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -4767,34 +4771,45 @@ assigned @code{objc-method-args-cont} syntax. Lines 5 and 6 are both
assigned @code{objc-method-call-cont} syntax.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Anonymous Class Symbol, Statement Block Symbols, Objective-C Method Symbols, Syntactic Symbols
+@node Java Symbols, Statement Block Symbols, Objective-C Method Symbols, Syntactic Symbols
@comment node-name, next, previous, up
-@subsection Anonymous Class Symbol (Java)
+@subsection Java Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Java has a concept of anonymous classes which can look something like
this:
@example
- 1: public void watch(Observable o) @{
- 2: o.addObserver(new Observer() @{
- 3: public void update(Observable o, Object arg) @{
- 4: history.addElement(arg);
- 5: @}
- 6: @});
- 7: @}
+ 1: @@Test
+ 2: public void watch(Observable o) @{
+ 3: @@NonNull
+ 4: Observer obs = new Observer() @{
+ 5: public void update(Observable o, Object arg) @{
+ 6: history.addElement(arg);
+ 7: @}
+ 8: @};
+ 9: o.addObserver(obs);
+ 10: @}
@end example
@ssindex inexpr-class
The brace following the @code{new} operator opens the anonymous class.
-Lines 3 and 6 are assigned the @code{inexpr-class} syntax, besides the
+Lines 5 and 8 are assigned the @code{inexpr-class} syntax, besides the
@code{inclass} symbol used in normal classes. Thus, the class will be
indented just like a normal class, with the added indentation given to
@code{inexpr-class}. An @code{inexpr-class} syntactic element doesn't
have an anchor position.
+@ssindex annotation-top-cont
+@ssindex annotation-var-cont
+Line 2 is assigned the @code{annotation-top-cont} syntax, due to it being a
+continuation of a topmost introduction with an annotation symbol preceding
+the current line. Similarly, line 4 is assigned the @code{annotation-var-cont}
+syntax due to it being a continuation of a variable declaration where preceding
+the declaration is an annotation.
+
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Statement Block Symbols, K&R Symbols, Anonymous Class Symbol, Syntactic Symbols
+@node Statement Block Symbols, K&R Symbols, Java Symbols, Syntactic Symbols
@comment node-name, next, previous, up
@subsection Statement Block Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -6997,4 +7012,3 @@ Since most @ccmode{} variables are prepended with the string
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@bye
-
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index 6bdc494a1a..afe7c94f44 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -5,8 +5,7 @@
@copying
This file documents the GNU Emacs Common Lisp emulation package.
-Copyright @copyright{} 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1993, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1017,10 +1016,10 @@ frame-visible-p window-hscroll
frame-width window-point
get-register window-start
getenv window-width
-global-key-binding x-get-cut-buffer
-keymap-parent x-get-cutbuffer
-local-key-binding x-get-secondary-selection
-mark x-get-selection
+global-key-binding x-get-secondary-selection
+keymap-parent x-get-selection
+local-key-binding
+mark
mark-marker
@end smallexample
@@ -3740,10 +3739,10 @@ that it passes in the list pointers themselves rather than the
@code{car}s of the advancing pointers.
@end defun
-@defun mapc function seq &rest more-seqs
+@defun cl-mapc function seq &rest more-seqs
This function is like @code{mapcar*}, except that the values returned
by @var{function} are ignored and thrown away rather than being
-collected into a list. The return value of @code{mapc} is @var{seq},
+collected into a list. The return value of @code{cl-mapc} is @var{seq},
the first sequence. This function is more general than the Emacs
primitive @code{mapc}.
@end defun
diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi
index b34a25b64f..e6fb00d348 100644
--- a/doc/misc/dbus.texi
+++ b/doc/misc/dbus.texi
@@ -5,8 +5,11 @@
@c @setchapternewpage odd
@c %**end of header
+@syncodeindex vr cp
+@syncodeindex fn cp
+
@copying
-Copyright @copyright{} 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 2007-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -50,7 +53,10 @@ another. An overview of D-Bus can be found at
* Asynchronous Methods:: Calling methods non-blocking.
* Receiving Method Calls:: Offering own methods.
* Signals:: Sending and receiving signals.
+* Alternative Buses:: Alternative buses.
* Errors and Events:: Errors and events.
+* Index:: Index including concepts, functions, variables.
+
* GNU Free Documentation License:: The license for this documentation.
@end menu
@@ -126,14 +132,24 @@ There are several basic functions which inspect the buses for
registered names. Internally they use the basic interface
@samp{org.freedesktop.DBus}, which is supported by all objects of a bus.
-@defun dbus-list-activatable-names
-This function returns the D-Bus service names, which can be activated.
-An activatable service is described in a service registration file.
-Under GNU/Linux, such files are located at
-@file{/usr/share/dbus-1/services/}.
+@defun dbus-list-activatable-names &optional bus
+This function returns the D-Bus service names, which can be activated
+for @var{bus}. It must be either the symbol @code{:system} (the
+default) or the symbol @code{:session}. An activatable service is
+described in a service registration file. Under GNU/Linux, such files
+are located at @file{/usr/share/dbus-1/system-services/} (for the
+@code{:system} bus) or @file{/usr/share/dbus-1/services/}. An
+activatable service is not necessarily registered at @var{bus} at already.
The result is a list of strings, which is @code{nil} when there are no
-activatable service names at all.
+activatable service names at all. Example:
+
+@lisp
+;; Check, whether the document viewer can be accessed via D-Bus.
+(member "org.gnome.evince.Daemon"
+ (dbus-list-activatable-names :session))
+@end lisp
+
@end defun
@defun dbus-list-names bus
@@ -148,7 +164,7 @@ strings like @samp{org.freedesktop.DBus}. Names starting with
@end defun
@defun dbus-list-known-names bus
-Retrieves all services which correspond to a known name in @var{bus}.
+Retrieves all registered services which correspond to a known name in @var{bus}.
A service has a known name if it doesn't start with @samp{:}. The
result is a list of strings, which is @code{nil} when there are no
known names at all.
@@ -418,7 +434,8 @@ Example:
@result{} "/org/freedesktop/SystemToolsBackends/UsersConfig"
@end lisp
-If @var{object} has no @var{attribute}, the function returns nil.
+If @var{object} has no @var{attribute}, the function returns
+@code{nil}.
@end defun
@@ -669,7 +686,7 @@ A @var{property} value can be retrieved by the function
@defun dbus-get-property bus service path interface property
This function returns the value of @var{property} of @var{interface}.
It will be checked at @var{bus}, @var{service}, @var{path}. The
-result can be any valid D-Bus value, or nil if there is no
+result can be any valid D-Bus value, or @code{nil} if there is no
@var{property}. Example:
@lisp
@@ -863,12 +880,12 @@ Lisp function call. The following mapping to D-Bus types is
applied, when the corresponding D-Bus message is created:
@example
-@multitable {@code{t} and @code{nil}} {@expansion{}} {DBUS_TYPE_BOOLEAN}
+@multitable {negative integer} {@expansion{}} {DBUS_TYPE_BOOLEAN}
@item Lisp type @tab @tab D-Bus type
@item
@item @code{t} and @code{nil} @tab @expansion{} @tab DBUS_TYPE_BOOLEAN
-@item number @tab @expansion{} @tab DBUS_TYPE_UINT32
-@item integer @tab @expansion{} @tab DBUS_TYPE_INT32
+@item natural number @tab @expansion{} @tab DBUS_TYPE_UINT32
+@item negative integer @tab @expansion{} @tab DBUS_TYPE_INT32
@item float @tab @expansion{} @tab DBUS_TYPE_DOUBLE
@item string @tab @expansion{} @tab DBUS_TYPE_STRING
@item list @tab @expansion{} @tab DBUS_TYPE_ARRAY
@@ -883,25 +900,26 @@ symbol can be prepended to the corresponding Lisp object. Basic D-Bus
types are represented by the type symbols @code{:byte},
@code{:boolean}, @code{:int16}, @code{:uint16}, @code{:int32},
@code{:uint32}, @code{:int64}, @code{:uint64}, @code{:double},
-@code{:string}, @code{:object-path} and @code{:signature}.
+@code{:string}, @code{:object-path}, @code{:signature} and
+@code{:unix-fd}.
@noindent
Example:
@lisp
-(dbus-call-method @dots{} @var{NUMBER} @var{STRING})
+(dbus-call-method @dots{} @var{NAT-NUMBER} @var{STRING})
@end lisp
is equivalent to
@lisp
-(dbus-call-method @dots{} :uint32 @var{NUMBER} :string @var{STRING})
+(dbus-call-method @dots{} :uint32 @var{NAT-NUMBER} :string @var{STRING})
@end lisp
but different to
@lisp
-(dbus-call-method @dots{} :int32 @var{NUMBER} :signature @var{STRING})
+(dbus-call-method @dots{} :int32 @var{NAT-NUMBER} :signature @var{STRING})
@end lisp
The value for a byte D-Bus type can be any integer in the range 0
@@ -994,17 +1012,18 @@ Output parameters of D-Bus methods and signals are mapped to Lisp
objects.
@example
-@multitable {DBUS_TYPE_OBJECT_PATH} {@expansion{}} {@code{t} or @code{nil}}
+@multitable {DBUS_TYPE_OBJECT_PATH} {@expansion{}} {natural number or float}
@item D-Bus type @tab @tab Lisp type
@item
@item DBUS_TYPE_BOOLEAN @tab @expansion{} @tab @code{t} or @code{nil}
-@item DBUS_TYPE_BYTE @tab @expansion{} @tab number
-@item DBUS_TYPE_UINT16 @tab @expansion{} @tab number
-@item DBUS_TYPE_INT16 @tab @expansion{} @tab number
-@item DBUS_TYPE_UINT32 @tab @expansion{} @tab number or float
-@item DBUS_TYPE_INT32 @tab @expansion{} @tab number or float
-@item DBUS_TYPE_UINT64 @tab @expansion{} @tab number or float
-@item DBUS_TYPE_INT64 @tab @expansion{} @tab number or float
+@item DBUS_TYPE_BYTE @tab @expansion{} @tab natural number
+@item DBUS_TYPE_UINT16 @tab @expansion{} @tab natural number
+@item DBUS_TYPE_INT16 @tab @expansion{} @tab integer
+@item DBUS_TYPE_UINT32 @tab @expansion{} @tab natural number or float
+@item DBUS_TYPE_UNIX_FD @tab @expansion{} @tab natural number or float
+@item DBUS_TYPE_INT32 @tab @expansion{} @tab integer or float
+@item DBUS_TYPE_UINT64 @tab @expansion{} @tab natural number or float
+@item DBUS_TYPE_INT64 @tab @expansion{} @tab integer or float
@item DBUS_TYPE_DOUBLE @tab @expansion{} @tab float
@item DBUS_TYPE_STRING @tab @expansion{} @tab string
@item DBUS_TYPE_OBJECT_PATH @tab @expansion{} @tab string
@@ -1017,9 +1036,9 @@ objects.
@end example
A float object in case of @code{DBUS_TYPE_UINT32},
-@code{DBUS_TYPE_INT32}, @code{DBUS_TYPE_UINT64} and
-@code{DBUS_TYPE_INT6432} is returned, when the C value exceeds the
-Emacs number size range.
+@code{DBUS_TYPE_INT32}, @code{DBUS_TYPE_UINT64},
+@code{DBUS_TYPE_INT64} and @code{DBUS_TYPE_UNIX_FD} is returned, when
+the C value exceeds the Emacs number size range.
The resulting list of the last 4 D-Bus compound types contains as
elements the elements of the D-Bus container, mapped according to the
@@ -1030,7 +1049,7 @@ The signal @code{PropertyModified}, discussed as example in
(@var{BOOL} stands here for either @code{nil} or @code{t}):
@lisp
-(@var{NUMBER} ((@var{STRING} @var{BOOL} @var{BOOL}) (@var{STRING} @var{BOOL} @var{BOOL}) @dots{}))
+(@var{INTEGER} ((@var{STRING} @var{BOOL} @var{BOOL}) (@var{STRING} @var{BOOL} @var{BOOL}) @dots{}))
@end lisp
@defun dbus-byte-array-to-string byte-array
@@ -1234,9 +1253,73 @@ message has been arrived, and @var{handler} is called. Example:
@cindex method calls, returning
@cindex returning method calls
-Emacs can also offer own methods, which can be called by other
-applications. These methods could be an implementation of an
-interface of a well known service, like @samp{org.freedesktop.TextEditor}.
+In order to register methods on the D-Bus, Emacs has to request a well
+known name on the D-Bus under which it will be available for other
+clients. Names on the D-Bus can be registered and unregistered using
+the following functions:
+
+@defun dbus-register-service bus service &rest flags
+Register the known name @var{service} on D-Bus @var{bus}.
+
+@var{bus} is either the symbol @code{:system} or the symbol
+@code{:session}.
+
+@var{service} is the service name to be registered on the D-Bus. It
+must be a known name.
+
+@var{flags} is a subset of the following keywords:
+
+@itemize
+@item @code{:allow-replacement}: Allow another service to become the primary
+owner if requested.
+
+@item @code{:replace-existing}: Request to replace the current primary owner.
+
+@item @code{:do-not-queue}: If we can not become the primary owner do not
+place us in the queue.
+@end itemize
+
+One of the following keywords is returned:
+
+@itemize
+
+@item @code{:primary-owner}: We have become the primary owner of the name
+@var{service}.
+
+@item @code{:in-queue}: We could not become the primary owner and
+have been placed in the queue.
+
+@item @code{:exists}: We already are in the queue.
+
+@item @code{:already-owner}: We already are the primary
+owner.
+@end itemize
+@end defun
+
+@defun dbus-unregister-service bus service
+Unregister all objects from D-Bus @var{bus}, registered by Emacs for
+@var{service}.
+
+@var{bus} is either the symbol @code{:system} or the symbol
+@code{:session}.
+
+@var{service} is the D-Bus service name of the D-Bus. It must be a
+known name. Emacs releases its association to @var{service} from
+D-Bus.
+
+One of the following keywords is returned:
+
+@itemize
+@item @code{:released}: We successfully released the name @var{service}.
+@item @code{:non-existent}: The name @var{service} does not exist on the bus.
+@item @code{:not-owner}: We are not an owner of the name @var{service}.
+@end itemize
+@end defun
+
+When a name has been chosen, Emacs can offer own methods, which can be
+called by other applications. These methods could be an
+implementation of an interface of a well known service, like
+@samp{org.freedesktop.TextEditor}.
It could be also an implementation of an own interface. In this case,
the service name must be @samp{org.gnu.Emacs}. The object path shall
@@ -1255,7 +1338,7 @@ paths, used by offered methods or signals, shall start with this
string.
@end deffn
-@defun dbus-register-method bus service path interface method handler
+@defun dbus-register-method bus service path interface method handler dont-register-service
With this function, an application registers @var{method} on the D-Bus
@var{bus}.
@@ -1263,10 +1346,11 @@ With this function, an application registers @var{method} on the D-Bus
@code{:session}.
@var{service} is the D-Bus service name of the D-Bus object
-@var{method} is registered for. It must be a known name.
+@var{method} is registered for. It must be a known name (See
+discussion of @var{dont-register-service} below).
-@var{path} is the D-Bus object path @var{service} is
-registered.
+@var{path} is the D-Bus object path @var{service} is registered (See
+discussion of @var{dont-register-service} below).
@var{interface} is the interface offered by @var{service}. It must
provide @var{method}.
@@ -1285,6 +1369,13 @@ returning a list containing the object.
In case @var{handler} shall return a reply message with an empty
argument list, @var{handler} must return the symbol @code{:ignore}.
+When @var{dont-register-service} is non-@code{nil}, the known name
+@var{service} is not registered. This means that other D-Bus clients
+have no way of noticing the newly registered method. When interfaces
+are constructed incrementally by adding single methods or properties
+at a time, @var{dont-register-service} can be used to prevent other
+clients from discovering the still incomplete interface.
+
The default D-Bus timeout when waiting for a message reply is 25
seconds. This value could be even smaller, depending on the calling
client. Therefore, @var{handler} shall not last longer than
@@ -1359,7 +1450,7 @@ The test runs then
@end example
@end defun
-@defun dbus-register-property bus service path interface property access value
+@defun dbus-register-property bus service path interface property access value &optional emits-signal dont-register-service
With this function, an application declares a @var{property} on the D-Bus
@var{bus}.
@@ -1369,8 +1460,8 @@ With this function, an application declares a @var{property} on the D-Bus
@var{service} is the D-Bus service name of the D-Bus. It must be a
known name.
-@var{path} is the D-Bus object path @var{service} is
-registered.
+@var{path} is the D-Bus object path @var{service} is registered (See
+discussion of @var{dont-register-service} below).
@var{interface} is the name of the interface used at @var{path},
@var{property} is the name of the property of @var{interface}.
@@ -1387,7 +1478,19 @@ only way to change their values. Properties with access type
The interface @samp{org.freedesktop.DBus.Properties} is added to
@var{path}, including a default handler for the @samp{Get},
-@samp{GetAll} and @samp{Set} methods of this interface. Example:
+@samp{GetAll} and @samp{Set} methods of this interface. When
+@var{emits-signal} is non-@code{nil}, the signal
+@samp{PropertiesChanged} is sent when the property is changed by
+@code{dbus-set-property}.
+
+When @var{dont-register-service} is non-@code{nil}, the known name
+@var{service} is not registered. This means that other D-Bus clients
+have no way of noticing the newly registered method. When interfaces
+are constructed incrementally by adding single methods or properties
+at a time, @var{dont-register-service} can be used to prevent other
+clients from discovering the still incomplete interface.
+
+@noindent Example:
@lisp
(dbus-register-property
@@ -1399,7 +1502,7 @@ The interface @samp{org.freedesktop.DBus.Properties} is added to
(dbus-register-property
:session "org.freedesktop.TextEditor" "/org/freedesktop/TextEditor"
- "org.freedesktop.TextEditor" "version" :readwrite emacs-version)
+ "org.freedesktop.TextEditor" "version" :readwrite emacs-version t)
@result{} ((:session "org.freedesktop.TextEditor" "version")
("org.freedesktop.TextEditor" "/org/freedesktop/TextEditor"))
@@ -1461,18 +1564,6 @@ registered for the respective service, Emacs releases its association
to the service from D-Bus.
@end defun
-@defun dbus-unregister-service bus service
-Unregister all objects from D-Bus @var{bus}, registered by Emacs for
-@var{service}.
-
-@var{bus} is either the symbol @code{:system} or the symbol
-@code{:session}.
-
-@var{service} is the D-Bus service name of the D-Bus. It must be a
-known name. Emacs releases its association to @var{service} from
-D-Bus.
-@end defun
-
@node Signals
@chapter Sending and receiving signals.
@@ -1568,11 +1659,68 @@ which objects the GNU/Linux @code{hal} daemon adds.
@end defun
+@node Alternative Buses
+@chapter Alternative buses.
+@cindex bus names
+@cindex UNIX domain socket
+
+Until now, we have spoken about the system and the session buses,
+which are the default buses to be connected to. However, it is
+possible to connect to any bus, from which the address is known. This
+is a UNIX domain socket. Everywhere, where a @var{bus} is mentioned
+as argument of a function (the symbol @code{:system} or the symbol
+@code{:session}), this address can be used instead. The connection to
+this bus must be initialized first.
+
+@defun dbus-init-bus bus
+Establish the connection to D-Bus @var{bus}.
+
+@var{bus} can be either the symbol @code{:system} or the symbol
+@code{:session}, or it can be a string denoting the address of the
+corresponding bus. For the system and session busses, this function
+is called when loading @file{dbus.el}, there is no need to call it
+again.
+
+Example: You open another session bus in a terminal window on your host:
+
+@example
+# eval `dbus-launch --auto-syntax`
+# echo $DBUS_SESSION_BUS_ADDRESS
+
+@print{} unix:abstract=/tmp/dbus-JoFtAVG92w,guid=2f320a1ebe50b7ef58e
+@end example
+
+In Emacs, you can access to this bus via its address:
+
+@lisp
+(setq my-bus
+ "unix:abstract=/tmp/dbus-JoFtAVG92w,guid=2f320a1ebe50b7ef58e")
+
+@result{} "unix:abstract=/tmp/dbus-JoFtAVG92w,guid=2f320a1ebe50b7ef58e"
+
+(dbus-init-bus my-bus)
+
+@result{} nil
+
+(dbus-get-unique-name my-bus)
+
+@result{} ":1.0"
+@end lisp
+@end defun
+
+
@node Errors and Events
@chapter Errors and events.
+@cindex debugging
@cindex errors
@cindex events
+The internal actions can be traced by running in a debug mode.
+
+@defvar dbus-debug
+If this variable is non-@code{nil}, D-Bus specific debug messages are raised.
+@end defvar
+
Input parameters of @code{dbus-call-method},
@code{dbus-call-method-non-blocking},
@code{dbus-call-method-asynchronously}, and
@@ -1587,8 +1735,7 @@ appended to the @code{dbus-error}.
@defspec dbus-ignore-errors forms@dots{}
This executes @var{forms} exactly like a @code{progn}, except that
@code{dbus-error} errors are ignored during the @var{forms}. These
-errors can be made visible when variable @code{dbus-debug} is set to
-@code{t}.
+errors can be made visible when @code{dbus-debug} is set to @code{t}.
@end defspec
Incoming D-Bus messages are handled as Emacs events, see @pxref{Misc
@@ -1636,12 +1783,12 @@ The result is either the symbol @code{:system} or the symbol @code{:session}.
@defun dbus-event-message-type event
Returns the message type of the corresponding D-Bus message. The
-result is a number.
+result is a natural number.
@end defun
@defun dbus-event-serial-number event
Returns the serial number of the corresponding D-Bus message.
-The result is a number.
+The result is a natural number.
@end defun
@defun dbus-event-service-name event
@@ -1691,12 +1838,14 @@ D-Bus applications running. Therefore, they shall check carefully,
whether a given D-Bus error is related to them.
+@node Index
+@unnumbered Index
+
+@printindex cp
+
+
@node GNU Free Documentation License
@appendix GNU Free Documentation License
@include doclicense.texi
@bye
-
-@ignore
- arch-tag: 2eeec19d-0caf-44e0-a193-329d7f9951d8
-@end ignore
diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi
index 2a49390041..99530e6356 100644
--- a/doc/misc/dired-x.texi
+++ b/doc/misc/dired-x.texi
@@ -10,6 +10,8 @@
@setfilename ../../info/dired-x
@settitle Dired Extra User's Manual
+@include emacsver.texi
+
@iftex
@finalout
@end iftex
@@ -17,8 +19,8 @@
@comment %**end of header (This is for running Texinfo on a region.)
@copying
-Copyright @copyright{} 1994, 1995, 1999, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1994-1995, 1999, 2001-2011
+Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -68,6 +70,7 @@ developing GNU and promoting software freedom.''
@ifnottex
@node Top
+@top Dired Extra
@noindent
This documents the ``extra'' features for GNU Emacs's Dired Mode that are
@@ -79,7 +82,7 @@ provided by the file @file{dired-x.el}.
Based on @file{dired.texi} by Sebastian Kremer <sk@@thp.uni-koeln.de>
@item
-For @file{dired-x.el} as distributed with GNU Emacs 23.
+For @file{dired-x.el} as distributed with GNU Emacs @value{EMACSVER}.
@end itemize
@@ -126,39 +129,24 @@ original @file{dired-x.el}).
@section Features
@cindex Features
-Some features provided by Dired Extra
+Some features provided by Dired Extra:
@enumerate
@item
-Omitting uninteresting files from Dired listing.
-@itemize @bullet
-@xref{Omitting Files in Dired}.
-@end itemize
+Omitting uninteresting files from Dired listing
+(@pxref{Omitting Files in Dired}).
@item
-Local variables for Dired directories.
-@itemize @bullet
-@xref{Local Variables}.
-@end itemize
-@item
-Guessing shell commands in Dired buffers.
-@itemize @bullet
-@xref{Shell Command Guessing}.
-@end itemize
+Guessing shell commands in Dired buffers
+(@pxref{Shell Command Guessing}).
@item
-Running Dired commands in non-Dired buffers.
-@itemize @bullet
-@xref{Virtual Dired}.
-@end itemize
+Running Dired command in non-Dired buffers
+(@pxref{Virtual Dired}).
@item
-Finding a file mentioned in a buffer.
-@itemize @bullet
-@xref{Find File At Point}.
-@end itemize
+Finding a file mentioned in a buffer
+(@pxref{Find File At Point}).
@item
-Commands using file marking.
-@itemize @bullet
-@xref{Advanced Mark Commands}.
-@end itemize
+Commands using file marking
+(@pxref{Advanced Mark Commands}).
@end enumerate
@noindent
@@ -171,30 +159,19 @@ respectively (@pxref{Find File At Point}).
@node Technical Details, , Features, Introduction
@section Technical Details
-@cindex Redefined functions
+@cindex Modified functions
@cindex @file{dired-aux.el}
-When loaded this code @emph{redefines} the following functions of GNU Emacs
-from @file{dired.el}
-
-@itemize @bullet
-@item
-@code{dired-clean-up-after-deletion}
-@item
-@code{dired-find-buffer-nocreate}
-@item
-@code{dired-initial-position}
-@end itemize
-
-@noindent
-and the following functions from @file{dired-aux.el}
-
-@itemize @bullet
-@item
-@code{dired-add-entry}
-@item
-@code{dired-read-shell-command}
-@end itemize
+When @file{dired-x.el} is loaded, some standard Dired functions from
+@file{dired.el} and @file{dired-aux.el} offer additional features.
+@code{dired-add-entry} obeys Dired Omit mode (@pxref{Omitting Files in
+Dired}), if it is active. @code{dired-find-buffer-nocreate} and
+@code{dired-initial-position} respect the value of
+@code{dired-find-subdir} (@pxref{Miscellaneous Commands}).
+@code{dired-clean-up-after-deletion} respects the value of
+@code{dired-clean-up-buffers-too}. @code{dired-read-shell-command} uses
+@code{dired-guess-shell-command} (@pxref{Shell Command Guessing}) to
+offer a smarter default command.
@node Installation, Omitting Files in Dired, Introduction, Top
@chapter Installation
@@ -261,22 +238,9 @@ for these functions. In your @file{.emacs} file put
@cindex Binding @code{dired-x-find-file}
If you choose to have @file{dired-x.el} bind @code{dired-x-find-file} over
@code{find-file} (@pxref{Find File At Point}), then you will need to set
-@code{dired-x-hands-off-my-keys} and make a call to the function
-@code{dired-x-bind-find-file} in the @code{dired-load-hook}:
-
-@example
-(add-hook 'dired-load-hook
- (lambda ()
- (load "dired-x")
- ;; Bind dired-x-find-file.
- (setq dired-x-hands-off-my-keys nil)
- ;; Make sure our binding preference is invoked.
- (dired-x-bind-find-file)
- ))
-@end example
-
-Alternatively, you can set the variable @emph{before} @file{dired-x.el} is
-loaded
+@code{dired-x-hands-off-my-keys}. To do this, either set it
+@emph{before} @file{dired-x.el} is loaded, or use @kbd{M-x customize-variable},
+or call @code{dired-x-bind-find-file} after changing the value.
@example
(add-hook 'dired-load-hook
@@ -372,28 +336,17 @@ inside your @code{dired-mode-hook} to have omitting initially turned on in
@emph{every} Dired buffer (@pxref{Installation}). You can then use @kbd{M-o} to
unomit in that buffer.
-To enable omitting automatically only in certain directories one can use Dired
-Local Variables and put
+To enable omitting automatically only in certain directories you can add
+a directory local setting
+(@pxref{Directory Variables,,,emacs,The Gnu Emacs manual}) for Dired mode
@example
-Local Variables:
-dired-omit-mode: t
-End:
+((dired-mode . ((dired-omit-mode . t))))
@end example
@noindent
-into a file @file{.dired} (the default value of
-@code{dired-local-variables-file}) in that directory (@pxref{Local Variables}).
-
-@table @code
-@findex dired-omit-here-always
-@item dired-omit-here-always
-
-This is an interactive function that creates a local variables file exactly
-like the example above (if it does not already exist) in the file
-@code{dired-local-variables-file} in the current directory and then refreshes
-the directory listing (@pxref{Local Variables}).
-@end table
+to a @file{.dir-locals.el} file in that directory. You can use the
+command @code{add-dir-local-variable} to do this.
@vindex dired-omit-files
@item dired-omit-files
@@ -499,7 +452,9 @@ then put
@end example
@noindent
-in the @code{dired-load-hook} (@pxref{Installation}).
+in the @code{dired-load-hook} (@pxref{Installation}). (Of course, a
+better way to achieve this particular goal is simply to omit @samp{-a} from
+@code{dired-listing-switches}.)
@end itemize
@@ -511,7 +466,6 @@ Loading @file{dired-x.el} will install Dired Omit by putting
call @code{dired-extra-startup}, which in turn calls @code{dired-omit-startup}
in your @code{dired-mode-hook}.
-@c FIXME does the standard dir-locals mechanism obsolete this?
@node Local Variables, Shell Command Guessing, Omitting Files in Dired, Top
@chapter Local Variables for Dired Directories
@@ -519,10 +473,15 @@ in your @code{dired-mode-hook}.
@vindex dired-local-variables-file
@vindex dired-enable-local-variables
@noindent
-When Dired visits a directory, it looks for a file whose name is the value of
-variable @code{dired-local-variables-file} (default: @file{.dired}). If such
-a file is found, Dired will temporarily insert it into the Dired buffer and
-run @code{hack-local-variables}.
+This Dired-X feature is obsolete as of Emacs 24.1. The standard Emacs
+directory local variables mechanism (@pxref{Directory
+Variables,,,emacs,The Gnu Emacs manual}) replaces it. For an example of
+the new mechanims, @pxref{Omitting Variables}.
+
+When Dired visits a directory, it looks for a file whose name is the
+value of variable @code{dired-local-variables-file} (default: @file{.dired}).
+If such a file is found, Dired will temporarily insert it into the Dired
+buffer and run @code{hack-local-variables}.
@noindent
For example, if the user puts
@@ -572,12 +531,10 @@ into the Dired buffer and run @code{hack-local-variables}.
@item dired-enable-local-variables
Default: @code{t}
-Controls the use of local-variables lists in Dired. The value can be @code{t},
-@code{nil}, or something else. A value of @code{t} means local-variables
-lists are obeyed in the @code{dired-local-variables-file}; @code{nil} means
-they are ignored; anything else means query. This variable temporarily
-overrides the value of @code{enable-local-variables} when the Dired Local
-Variables are hacked.
+Controls the use of local-variables lists in Dired. This variable
+temporarily overrides the value of @code{enable-local-variables} when
+the Dired Local Variables are hacked. It takes the same values as that
+variable. A value of @code{nil} means to ignore any Dired Local Variables.
@end table
@node Shell Command Guessing, Virtual Dired, Local Variables, Top
@@ -912,24 +869,12 @@ some commands it is appropriate that they use the current Dired
directory instead of @code{default-directory}, e.g., @code{find-file} and
@code{compile}.
-A general mechanism is provided for special handling of the working
-directory in special major modes:
-
-@table @code
-@item default-directory-alist
-@vindex default-directory-alist
-Default: @code{((dired-mode . (dired-current-directory)))}
-
-Alist of major modes and their notion of @code{default-directory}, as a
-Lisp expression to evaluate. A resulting value of @code{nil} is ignored
-in favor of @code{default-directory}.
-
-@item dired-default-directory
-@findex dired-default-directory
-Use this function like you would use the variable
-@code{default-directory}, except that @code{dired-default-directory}
-also consults the variable @code{default-directory-alist}.
-@end table
+@findex dired-smart-shell-command
+@findex shell-command
+@kindex M-!
+The command @code{dired-smart-shell-command}, bound to @kbd{M-!} in
+Dired buffers, is like @code{shell-command}, but it runs with
+@code{default-directory} bound to the current Dired directory.
@node Find File At Point, Miscellaneous Commands, Multiple Dired Directories, Top
@section Find File At Point
@@ -1038,12 +983,6 @@ inserted subdirectories.
@end table
@table @code
-@item dired-smart-shell-command
-@findex dired-smart-shell-command
-@findex shell-command
-@kindex M-!
-Like function @code{shell-command}, but in the current Dired directory.
-Bound to @kbd{M-!} in Dired buffers.
@item dired-jump
@findex dired-jump
@@ -1076,13 +1015,12 @@ file (assumed to be a UNIX mail folder).
@vindex dired-vm-read-only-folders
If you give this command a prefix argument, it will visit the folder
-read-only. This only works in VM 5, not VM 4.
+read-only.
If the variable @code{dired-vm-read-only-folders} is @code{t},
-@code{dired-vm} will
-visit all folders read-only. If it is neither @code{nil} nor @code{t}, e.g.,
-the symbol @code{if-file-read-only}, only files not writable by you are
-visited read-only. This is the recommended value if you run VM 5.
+@code{dired-vm} will visit all folders read-only. If it is neither
+@code{nil} nor @code{t}, e.g., the symbol @code{if-file-read-only}, only
+files not writable by you are visited read-only.
@vindex dired-bind-vm
If the variable @code{dired-bind-vm} is @code{t}, @code{dired-vm} will be bound
@@ -1173,7 +1111,3 @@ enhancement, then please use @kbd{M-x report-emacs-bug} to report it.
@printindex vr
@bye
-
-@ignore
- arch-tag: 201727aa-9318-4c74-a0d7-4f51c550c4de
-@end ignore
diff --git a/doc/misc/doclicense.texi b/doc/misc/doclicense.texi
index d3ae2f92b2..a511ffcd5a 100644
--- a/doc/misc/doclicense.texi
+++ b/doc/misc/doclicense.texi
@@ -505,7 +505,3 @@ to permit their use in free software.
@c Local Variables:
@c ispell-local-pdict: "ispell-dict"
@c End:
-
-@ignore
- arch-tag: c1679162-1d8a-4f02-bc52-2e71765f0165
-@end ignore
diff --git a/doc/misc/ebrowse.texi b/doc/misc/ebrowse.texi
index 58b04dc7b8..19ee970548 100644
--- a/doc/misc/ebrowse.texi
+++ b/doc/misc/ebrowse.texi
@@ -10,8 +10,7 @@
@copying
This file documents Ebrowse, a C++ class browser for GNU Emacs.
-Copyright @copyright{} 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 2000-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -47,6 +46,7 @@ developing GNU and promoting software freedom.''
@ifnottex
@node Top, Overview, (dir), (dir)
+@top Ebrowse
You can browse C++ class hierarchies from within Emacs by using
Ebrowse.
@@ -1451,7 +1451,3 @@ in on with the command @kbd{C-c C-m m}.
@printindex cp
@bye
-
-@ignore
- arch-tag: 52fe78ac-a1c4-48e7-815e-0a31acfad4bf
-@end ignore
diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi
index 57dc01d9fe..13b640a09f 100644
--- a/doc/misc/ede.texi
+++ b/doc/misc/ede.texi
@@ -5,8 +5,7 @@
@copying
This file describes EDE, the Emacs Development Environment.
-Copyright @copyright{} 1998, 1999, 2000, 2001, 2004, 2005, 2008, 2009,
-2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1998-2001, 2004-2005, 2008-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -242,7 +241,7 @@ To add the current file to an existing target, type @kbd{C-c . a}
You can add a file to more than one target; this is OK.
To remove the current file from a target, type @kbd{C-c . d}
-(@code{ede-remove-file}), or or use the @samp{Remove File} menu item
+(@code{ede-remove-file}), or use the @samp{Remove File} menu item
in the @samp{Target Options} submenu. If the file belongs to multiple
targets, this command prompts for each target it could be removed
from.
@@ -2124,7 +2123,7 @@ Results in --add-missing being passed to automake.
@end deffn
@deffn Method ede-proj-flush-autoconf :AFTER this
-Flush the configure file (current buffer) to accomodate @var{THIS}.
+Flush the configure file (current buffer) to accommodate @var{THIS}.
By flushing, remove any cruft that may be in the file. Subsequent
calls to @dfn{ede-proj-tweak-autoconf} can restore items removed by flush.
@end deffn
@@ -2175,7 +2174,7 @@ These are removed with make clean.
@end deffn
@deffn Method ede-proj-tweak-autoconf :AFTER this
-Tweak the configure file (current buffer) to accomodate @var{THIS}.
+Tweak the configure file (current buffer) to accommodate @var{THIS}.
@end deffn
@deffn Method ede-proj-compilers :AFTER obj
@@ -2685,7 +2684,7 @@ Bonus: Return a cons cell: (COMPILED . UPTODATE).
@end deffn
@deffn Method ede-proj-flush-autoconf :AFTER this
-Flush the configure file (current buffer) to accomodate @var{THIS}.
+Flush the configure file (current buffer) to accommodate @var{THIS}.
@end deffn
@deffn Method ede-buffer-mine :AFTER this buffer
@@ -2698,7 +2697,7 @@ Return the variable name for @var{THIS}'s sources.
@end deffn
@deffn Method ede-proj-tweak-autoconf :AFTER this
-Tweak the configure file (current buffer) to accomodate @var{THIS}.
+Tweak the configure file (current buffer) to accommodate @var{THIS}.
@end deffn
@deffn Method ede-update-version-in-source :AFTER this version
@@ -2778,7 +2777,7 @@ Create or update the autoload target.
@end deffn
@deffn Method ede-proj-flush-autoconf :AFTER this
-Flush the configure file (current buffer) to accomodate @var{THIS}.
+Flush the configure file (current buffer) to accommodate @var{THIS}.
@end deffn
@deffn Method ede-buffer-mine :AFTER this buffer
@@ -2797,7 +2796,7 @@ Argument @var{THIS} is the target which needs to insert an info file.
@end deffn
@deffn Method ede-proj-tweak-autoconf :AFTER this
-Tweak the configure file (current buffer) to accomodate @var{THIS}.
+Tweak the configure file (current buffer) to accommodate @var{THIS}.
@end deffn
@deffn Method ede-update-version-in-source :AFTER this version
@@ -3009,7 +3008,7 @@ The preferred interpreter for this code.
@subsubsection Specialized Methods
@deffn Method ede-proj-tweak-autoconf :AFTER this
-Tweak the configure file (current buffer) to accomodate @var{THIS}.
+Tweak the configure file (current buffer) to accommodate @var{THIS}.
@end deffn
@@ -3537,7 +3536,7 @@ For example, C code uses .o on unix, and Emacs Lisp uses .elc.
@subsubsection Specialized Methods
@deffn Method ede-proj-flush-autoconf :AFTER this
-Flush the configure file (current buffer) to accomodate @var{THIS}.
+Flush the configure file (current buffer) to accommodate @var{THIS}.
@end deffn
@deffn Method ede-proj-makefile-insert-rules :AFTER this
@@ -3559,7 +3558,7 @@ Retrieves the slot @code{sourcetype} from an object of class @code{ede-compilati
@end deffn
@deffn Method ede-proj-tweak-autoconf :AFTER this
-Tweak the configure file (current buffer) to accomodate @var{THIS}.
+Tweak the configure file (current buffer) to accommodate @var{THIS}.
@end deffn
@@ -3791,7 +3790,3 @@ For example, C code uses .o on unix, and Emacs Lisp uses .elc.
@end table
@bye
-
-@ignore
- arch-tag: c9bfdc6e-e6e9-4e87-97f7-d8348342fbf4
-@end ignore
diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi
index 8774fae506..3ba0796e63 100644
--- a/doc/misc/ediff.texi
+++ b/doc/misc/ediff.texi
@@ -25,8 +25,7 @@
This file documents Ediff, a comprehensive visual interface to Unix diff
and patch utilities.
-Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1995-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -64,6 +63,7 @@ developing GNU and promoting software freedom.''
@contents
@node Top, Introduction, (dir), (dir)
+@top Ediff
@insertcopying
@@ -759,7 +759,7 @@ Displays a list of currently active Ediff sessions---the Ediff Registry.
You can then restart any of these sessions by either clicking on a session
record or by putting the cursor over it and then typing the return key.
-(Some poor souls leave so many active Ediff sessions around that they loose
+(Some poor souls leave so many active Ediff sessions around that they lose
track of them completely... The `R' command is designed to save these
people from the recently discovered Ediff Proficiency Syndrome.)
@@ -2315,7 +2315,7 @@ other behavior.
However, Ediff temporarily resets this variable to @code{t} if it is
invoked via one of the "buffer" jobs, such as @code{ediff-buffers}.
-This is because it is all too easy to loose day's work otherwise.
+This is because it is all too easy to lose a day's work otherwise.
Besides, in a "buffer" job, the variant buffers have already been loaded
prior to starting Ediff, so Ediff just preserves status quo here.
@@ -2541,7 +2541,3 @@ Eli Zaretskii (eliz at is.elta.co.il)
@printindex cp
@bye
-
-@ignore
- arch-tag: 165ecb88-d03c-44b1-a921-b93f50b05b46
-@end ignore
diff --git a/doc/misc/edt.texi b/doc/misc/edt.texi
index 68c2db7336..8f9f8fc03a 100644
--- a/doc/misc/edt.texi
+++ b/doc/misc/edt.texi
@@ -5,8 +5,7 @@
@copying
This file documents the EDT emulation package for Emacs.
-Copyright @copyright{} 1986, 1992, 1994, 1995, 1999, 2000, 2001, 2002,
-2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+Copyright @copyright{} 1986, 1992, 1994-1995, 1999-2011
Free Software Foundation, Inc.
@quotation
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi
index f36efff3a0..8ee40288fe 100644
--- a/doc/misc/eieio.texi
+++ b/doc/misc/eieio.texi
@@ -11,7 +11,7 @@
@copying
This manual documents EIEIO, an object framework for Emacs Lisp.
-Copyright @copyright{} 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 2007-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1906,7 +1906,3 @@ Allow method overloading of method-like functions in Emacs.
@contents
@bye
-
-@ignore
- arch-tag: 7225b7c7-2462-4563-99e7-836a20172178
-@end ignore
diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi
index 6121f1afd7..a9d80d868b 100644
--- a/doc/misc/emacs-mime.texi
+++ b/doc/misc/emacs-mime.texi
@@ -1,5 +1,7 @@
\input texinfo
+@include gnus-overrides.texi
+
@setfilename ../../info/emacs-mime
@settitle Emacs MIME Manual
@synindex fn cp
@@ -9,8 +11,7 @@
@copying
This file documents the Emacs MIME interface functionality.
-Copyright @copyright{} 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1998-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -39,7 +40,12 @@ developing GNU and promoting software freedom.''
@setchapternewpage odd
@titlepage
+@ifset WEBHACKDEVEL
+@title Emacs MIME Manual (DEVELOPMENT VERSION)
+@end ifset
+@ifclear WEBHACKDEVEL
@title Emacs MIME Manual
+@end ifclear
@author by Lars Magne Ingebrigtsen
@page
@@ -374,12 +380,18 @@ message as follows:
@vindex mm-inline-large-images
When displaying inline images that are larger than the window, Emacs
does not enable scrolling, which means that you cannot see the whole
-image. To prevent this, the library tries to determine the image size
+image. To prevent this, the library tries to determine the image size
before displaying it inline, and if it doesn't fit the window, the
library will display it externally (e.g. with @samp{ImageMagick} or
-@samp{xv}). Setting this variable to @code{t} disables this check and
+@samp{xv}). Setting this variable to @code{t} disables this check and
makes the library display all inline images as inline, regardless of
-their size.
+their size. If you set this variable to @code{resize}, the image will
+be displayed resized to fit in the window, if Emacs has the ability to
+resize images.
+
+@item mm-inline-large-images-proportion
+@vindex mm-inline-images-max-proportion
+The proportion used when resizing large images.
@item mm-inline-override-types
@vindex mm-inline-override-types
@@ -394,7 +406,7 @@ variable will cause @samp{text/html} parts to be treated as attachments.
@item mm-text-html-renderer
@vindex mm-text-html-renderer
This selects the function used to render @acronym{HTML}. The predefined
-renderers are selected by the symbols @code{w3},
+renderers are selected by the symbols @code{gnus-article-html}, @code{w3},
@code{w3m}@footnote{See @uref{http://emacs-w3m.namazu.org/} for more
information about emacs-w3m}, @code{links}, @code{lynx},
@code{w3m-standalone} or @code{html2text}. If @code{nil} use an
@@ -1034,6 +1046,10 @@ flowed text, the default is to wrap after 66 characters. If hard
newline characters are not present in the buffer, no flow encoding
occurs.
+You can customize the value of the @code{mml-enable-flowed} variable
+to enable or disable the flowed encoding usage when newline
+characteres are present in the buffer.
+
On decoding flowed text, lines with soft newline characters are filled
together and wrapped after the column decided by
@code{fill-flowed-display-column}. The default is to wrap after
@@ -1469,21 +1485,9 @@ Decode a string and return the results.
@item rfc2047-encode-parameter
@findex rfc2047-encode-parameter
-Encode a parameter in the RFC2047-like style. This is a replacement for
-the @code{rfc2231-encode-string} function. @xref{rfc2231}.
-
-When attaching files as @acronym{MIME} parts, we should use the RFC2231
-encoding to specify the file names containing non-@acronym{ASCII}
-characters. However, many mail softwares don't support it in practice
-and recipients won't be able to extract files with correct names.
-Instead, the RFC2047-like encoding is acceptable generally. This
-function provides the very RFC2047-like encoding, resigning to such a
-regrettable trend. To use it, put the following line in your
-@file{~/.gnus.el} file:
-
-@lisp
-(defalias 'mail-header-encode-parameter 'rfc2047-encode-parameter)
-@end lisp
+Encode a parameter in the RFC2047-like style. This is a substitution
+for the @code{rfc2231-encode-string} function, that is the standard but
+many mailers don't support it. @xref{rfc2231}.
@end table
@@ -1889,7 +1893,3 @@ Documentation of the text/plain format parameter for flowed text.
@c mode: texinfo
@c coding: iso-8859-1
@c End:
-
-@ignore
- arch-tag: c7ef2fd0-a91c-4e10-aa52-c1a2b11b1a8d
-@end ignore
diff --git a/doc/misc/epa.texi b/doc/misc/epa.texi
index e6402fb83f..b4137a7dac 100644
--- a/doc/misc/epa.texi
+++ b/doc/misc/epa.texi
@@ -9,7 +9,7 @@
@copying
This file describes EasyPG Assistant @value{VERSION}.
-Copyright @copyright{} 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 2007-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -65,7 +65,9 @@ called EasyPG Library.
@menu
* Overview::
* Quick start::
-* Commands::
+* Commands::
+* Caching Passphrases::
+* Bug Reports::
@end menu
@node Overview
@@ -304,14 +306,14 @@ Encrypt marked files.
@section Mail-mode integration
EasyPG Assistant provides a minor mode @code{epa-mail-mode} to help
-user compose inline PGP messages. Inline PGP is a traditional style
-of sending signed/encrypted emails by embedding raw OpenPGP blobs
-inside a message body, not using modern MIME format.
+user compose inline OpenPGP messages. Inline OpenPGP is a traditional
+style of sending signed/encrypted emails by embedding raw OpenPGP
+blobs inside a message body, not using modern MIME format.
-NOTE: Inline PGP is not recommended and you should consider to use
+NOTE: Inline OpenPGP is not recommended and you should consider to use
PGP/MIME. See
@uref{http://josefsson.org/inline-openpgp-considered-harmful.html,
-Inline PGP in E-mail is bad, Mm'kay?}.
+Inline OpenPGP in E-mail is bad@comma{} Mm'kay?}.
@noindent
Once @code{epa-mail-mode} is enabled, the following keys are assigned.
@@ -319,22 +321,26 @@ You can do it by @kbd{C-u 1 M-x epa-mail-mode} or through the Customize
interface. Try @kbd{M-x customize-variable epa-global-mail-mode}.
@table @kbd
-@item C-c C-e d
+@item C-c C-e C-d and C-c C-e d
+@kindex @kbd{C-c C-e C-d}
@kindex @kbd{C-c C-e d}
@findex epa-mail-decrypt
Decrypt OpenPGP armors in the current buffer.
-@item C-c C-e v
+@item C-c C-e C-v and C-c C-e v
+@kindex @kbd{C-c C-e C-v}
@kindex @kbd{C-c C-e v}
@findex epa-mail-verify
Verify OpenPGP cleartext signed messages in the current buffer.
-@item C-c C-e s
+@item C-c C-e C-s and C-c C-e s
+@kindex @kbd{C-c C-e C-s}
@kindex @kbd{C-c C-e s}
@findex epa-mail-sign
Compose a signed message from the current buffer.
-@item C-c C-e e
+@item C-c C-e C-e and C-c C-e e
+@kindex @kbd{C-c C-e C-e}
@kindex @kbd{C-c C-e e}
@findex epa-mail-encrypt
Compose an encrypted message from the current buffer.
@@ -347,16 +353,21 @@ key in the recipient list, use @samp{encrypt-to} option in
@node Encrypting/decrypting *.gpg files
@section Encrypting/decrypting *.gpg files
-By default, every file whose extension is @samp{.gpg} will be treated
-as encrypted. That is, when you attempt to open such a file which
-already exists, the decrypted text is inserted in the buffer rather
-than encrypted one. On the other hand, when you attempt to save the
-buffer to a file whose extension is @samp{.gpg}, encrypted data is
-written.
+By default, every file whose name ends with @samp{.gpg} will be
+treated as encrypted. That is, when you open such a file, the
+decrypted text is inserted in the buffer rather than encrypted one.
+Similarly, when you save the buffer to a @samp{foo.gpg} file,
+encrypted data is written.
-If you want to temporarily disable this behavior, use @kbd{M-x
-epa-file-disable}, and then to enable this behavior use @kbd{M-x
-epa-file-enable}.
+The file name pattern for encrypted files can be controlled by
+@var{epa-file-name-regexp}.
+
+@defvar epa-file-name-regexp
+Regexp which matches filenames treated as encrypted.
+@end defvar
+
+You can disable this behavior with @kbd{M-x epa-file-disable}, and
+then get it back with @kbd{M-x epa-file-enable}.
@deffn Command epa-file-disable
Disable automatic encryption/decryption of *.gpg files.
@@ -367,23 +378,48 @@ Enable automatic encryption/decryption of *.gpg files.
@end deffn
@noindent
-@code{epa-file} will let you select recipients. If you want to
-suppress this question, it might be a good idea to put the following
-line on the first line of the text being encrypted.
+By default, @code{epa-file} will try to use symmetric encryption, aka
+password-based encryption. If you want to use public key encryption
+instead, do @kbd{M-x epa-file-select-keys}, which will pops up the key
+selection dialog.
+
+@deffn Command epa-file-select-keys
+Select recipient keys to encrypt the currently visiting file with
+public key encryption.
+@end deffn
+
+You can also change the default behavior with the variable
+@var{epa-file-select-keys}.
+
+@defvar epa-file-select-keys
+Control whether or not to pop up the key selection dialog.
+@end defvar
+
+For frequently visited files, it might be a good idea to tell Emacs
+which encryption method should be used through @xref{File Variables, ,
+, emacs, the Emacs Manual}. Use the @code{epa-file-encrypt-to} local
+variable for this.
@vindex epa-file-encrypt-to
+For example, if you want an Elisp file should be encrypted with a
+public key associated with an email address @samp{ueno@@unixuser.org},
+add the following line to the beginning of the file.
+
@cartouche
@lisp
;; -*- epa-file-encrypt-to: ("ueno@@unixuser.org") -*-
@end lisp
@end cartouche
-The file name extension of encrypted files can be controlled by
-@var{epa-file-name-regexp}.
+Instead, if you want the file always (regardless of the value of the
+@code{epa-file-select-keys} variable) encrypted with symmetric
+encryption, change the line as follows.
-@defvar epa-file-name-regexp
-Regexp which matches filenames treated as encrypted.
-@end defvar
+@cartouche
+@lisp
+;; -*- epa-file-encrypt-to: nil -*-
+@end lisp
+@end cartouche
Other variables which control the automatic encryption/decryption
behavior are below.
@@ -398,10 +434,65 @@ If non-@code{nil}, disable auto-saving when opening an encrypted file.
The default value is @code{t}.
@end defvar
+@node Caching Passphrases
+@chapter Caching Passphrases
+
+Typing passphrases is an irritating task if you frequently open and
+close the same file. GnuPG and EasyPG Assistant provide mechanisms to
+remember your passphrases. However, the configuration is a bit
+confusing since it depends on your GnuPG installation (GnuPG version 1 or
+GnuPG version 2), encryption method (symmetric or public key), and whether or
+not you want to use gpg-agent. Here are some questions:
+
+@enumerate
+@item Do you use GnuPG version 2 instead of GnuPG version 1?
+@item Do you use symmetric encryption rather than public key encryption?
+@item Do you want to use gpg-agent?
+@end enumerate
+
+Here are configurations depending on your answers:
+
+@multitable {111} {222} {333} {configuration configuration configuration}
+@item @b{1} @tab @b{2} @tab @b{3} @tab Configuration
+@item Yes @tab Yes @tab Yes @tab Set up gpg-agent.
+@item Yes @tab Yes @tab No @tab You can't, without gpg-agent.
+@item Yes @tab No @tab Yes @tab Set up gpg-agent.
+@item Yes @tab No @tab No @tab You can't, without gpg-agent.
+@item No @tab Yes @tab Yes @tab Set up elisp passphrase cache.
+@item No @tab Yes @tab No @tab Set up elisp passphrase cache.
+@item No @tab No @tab Yes @tab Set up gpg-agent.
+@item No @tab No @tab No @tab You can't, without gpg-agent.
+@end multitable
+
+To set up gpg-agent, follow the instruction in GnuPG manual.
+@pxref{Invoking GPG-AGENT, , Invoking GPG-AGENT, gnupg}.
+
+To set up elisp passphrase cache, set
+@code{epa-file-cache-passphrase-for-symmetric-encryption}.
+@xref{Encrypting/decrypting *.gpg files}.
+
+@node Bug Reports
+@chapter Bug Reports
+
+Bugs and problems with EasyPG Assistant are actively worked on by the
+Emacs development team. Feature requests and suggestions are also
+more than welcome. Use @kbd{M-x report-emacs-bug}, @pxref{Bugs, ,
+Bugs, emacs, Reporting Bugs}.
+
+When submitting a bug report, please try to describe in excruciating
+detail the steps required to reproduce the problem. Also try to
+collect necessary information to fix the bug, such as:
+
+@itemize @bullet
+@item the GnuPG version. Send the output of @samp{gpg --version}.
+@item the GnuPG configuration. Send the contents of @file{~/.gnupg/gpg.conf}.
+@end itemize
+
+Before reporting the bug, you should set @code{epg-debug} in the
+@file{~/.emacs} file and repeat the bug. Then, include the contents
+of the @samp{ *epg-debug*} buffer. Note that the first letter of the
+buffer name is a whitespace.
+
@bye
@c End:
-
-@ignore
- arch-tag: 7404e246-7d4c-4db4-9332-c1293a455a4f
-@end ignore
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi
index aa7cb893fd..b46748a08f 100644
--- a/doc/misc/erc.texi
+++ b/doc/misc/erc.texi
@@ -8,7 +8,7 @@
@copying
This manual is for ERC version 5.3.
-Copyright @copyright{} 2005, 2006, 2007, 2008, 2009, 2010, 2011
+Copyright @copyright{} 2005-2011
Free Software Foundation, Inc.
@quotation
@@ -1061,7 +1061,3 @@ We switched to using git for our version control system.
@printindex cp
@bye
-
-@ignore
- arch-tag: cf9cfaff-fc12-4297-ad15-ec2493002b1e
-@end ignore
diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi
new file mode 100644
index 0000000000..978cac6992
--- /dev/null
+++ b/doc/misc/ert.texi
@@ -0,0 +1,841 @@
+\input texinfo
+@c %**start of header
+@setfilename ../../info/ert
+@settitle Emacs Lisp Regression Testing
+@c %**end of header
+
+@dircategory Emacs
+@direntry
+* ERT: (ert). Emacs Lisp Regression Testing.
+@end direntry
+
+@copying
+Copyright @copyright{} 2008, 2010-2011 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
+and with the Back-Cover Texts as in (a) below. A copy of the license
+is included in the section entitled ``GNU Free Documentation License''
+in the Emacs manual.
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this GNU manual. Buying copies from the FSF supports it in
+developing GNU and promoting software freedom.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+@end quotation
+@end copying
+
+@node Top, Introduction, (dir), (dir)
+@top ERT: Emacs Lisp Regression Testing
+
+ERT is a tool for automated testing in Emacs Lisp. Its main features
+are facilities for defining tests, running them and reporting the
+results, and for debugging test failures interactively.
+
+ERT is similar to tools for other environments such as JUnit, but has
+unique features that take advantage of the dynamic and interactive
+nature of Emacs. Despite its name, it works well both for test-driven
+development (see
+@url{http://en.wikipedia.org/wiki/Test-driven_development}) and for
+traditional software development methods.
+
+@menu
+* Introduction:: A simple example of an ERT test.
+* How to Run Tests:: Run tests in your Emacs or from the command line.
+* How to Write Tests:: How to add tests to your Emacs Lisp code.
+* How to Debug Tests:: What to do if a test fails.
+* Extending ERT:: ERT is extensible in several ways.
+* Other Testing Concepts:: Features not in ERT.
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+How to Run Tests
+
+* Running Tests Interactively:: Run tests in your current Emacs.
+* Running Tests in Batch Mode:: Run tests in emacs -Q.
+* Test Selectors:: Choose which tests to run.
+
+How to Write Tests
+
+* The @code{should} Macro:: A powerful way to express assertions.
+* Expected Failures:: Tests for known bugs.
+* Tests and Their Environment:: Don't depend on customizations; no side effects.
+* Useful Techniques:: Some examples.
+
+How to Debug Tests
+
+* Understanding Explanations:: How ERT gives details on why an assertion failed.
+* Interactive Debugging:: Tools available in the ERT results buffer.
+
+Extending ERT
+
+* Defining Explanation Functions:: Teach ERT about more predicates.
+* Low-Level Functions for Working with Tests:: Use ERT's data for your purposes.
+
+Other Testing Concepts
+
+* Mocks and Stubs:: Stubbing out code that is irrelevant to the test.
+* Fixtures and Test Suites:: How ERT differs from tools for other languages.
+
+@end detailmenu
+@end menu
+
+@node Introduction, How to Run Tests, Top, Top
+@chapter Introduction
+
+ERT allows you to define @emph{tests} in addition to functions,
+macros, variables, and the other usual Lisp constructs. Tests are
+simply Lisp code --- code that invokes other code and checks whether
+it behaves as expected.
+
+ERT keeps track of the tests that are defined and provides convenient
+commands to run them to verify whether the definitions that are
+currently loaded in Emacs pass the tests.
+
+Some Lisp files have comments like the following (adapted from the
+package @code{pp.el}):
+
+@lisp
+;; (pp-to-string '(quote quote)) ; expected: "'quote"
+;; (pp-to-string '((quote a) (quote b))) ; expected: "('a 'b)\n"
+;; (pp-to-string '('a 'b)) ; same as above
+@end lisp
+
+The code contained in these comments can be evaluated from time to
+time to compare the output with the expected output. ERT formalizes
+this and introduces a common convention, which simplifies Emacs
+development, since programmers no longer have to manually find and
+evaluate such comments.
+
+An ERT test definition equivalent to the above comments is this:
+
+@lisp
+(ert-deftest pp-test-quote ()
+ "Tests the rendering of `quote' symbols in `pp-to-string'."
+ (should (equal (pp-to-string '(quote quote)) "'quote"))
+ (should (equal (pp-to-string '((quote a) (quote b))) "('a 'b)\n"))
+ (should (equal (pp-to-string '('a 'b)) "('a 'b)\n")))
+@end lisp
+
+If you know @code{defun}, the syntax of @code{ert-deftest} should look
+familiar: This example defines a test named @code{pp-test-quote} that
+will pass if the three calls to @code{equal} all return true
+(non-nil).
+
+@code{should} is a macro with the same meaning as @code{assert} but
+better error reporting. @xref{The @code{should} Macro}.
+
+Each test should have a name that describes what functionality the
+test tests. Test names can be chosen arbitrarily --- they are in a
+namespace separate from functions and variables --- but should follow
+the usual Emacs Lisp convention of having a prefix that indicates
+which package they belong to. Test names are displayed by ERT when
+reporting failures and can be used when selecting which tests to run.
+
+The empty parentheses @code{()} in the first line don't currently have
+any meaning and are reserved for future extension. They also make
+@code{ert-deftest}'s syntax more similar to @code{defun}.
+
+The docstring describes what feature this test tests. When running
+tests interactively, the first line of the docstring is displayed for
+tests that fail, so it is good if the first line makes sense on its
+own.
+
+The body of a test can be arbitrary Lisp code. It should have as few
+side effects as possible; each test should be written to clean up
+after itself, leaving Emacs in the same state as it was before the
+test. Tests should clean up even if they fail. @xref{Tests and Their
+Environment}.
+
+
+@node How to Run Tests, How to Write Tests, Introduction, Top
+@chapter How to Run Tests
+
+You can run tests either in the Emacs you are working in, or on the
+command line in a separate Emacs process in batch mode (i.e., with no
+user interface). The former mode is convenient during interactive
+development, the latter is useful to make sure that tests pass
+independently of your customizations, allows tests to be invoked from
+makefiles and scripts to be written that run tests in several
+different Emacs versions.
+
+@menu
+* Running Tests Interactively:: Run tests in your current Emacs.
+* Running Tests in Batch Mode:: Run tests in emacs -Q.
+* Test Selectors:: Choose which tests to run.
+@end menu
+
+
+@node Running Tests Interactively, Running Tests in Batch Mode, How to Run Tests, How to Run Tests
+@section Running Tests Interactively
+
+You can run the tests that are currently defined in your Emacs with
+the command @kbd{@kbd{M-x} ert @kbd{RET} t @kbd{RET}}. ERT will pop
+up a new buffer, the ERT results buffer, showing the results of the
+tests run. It looks like this:
+
+@example
+Selector: t
+Passed: 31
+Failed: 2 (2 unexpected)
+Total: 33/33
+
+Started at: 2008-09-11 08:39:25-0700
+Finished.
+Finished at: 2008-09-11 08:39:27-0700
+
+FF...............................
+
+F addition-test
+ (ert-test-failed
+ ((should
+ (=
+ (+ 1 2)
+ 4))
+ :form
+ (= 3 4)
+ :value nil))
+
+F list-test
+ (ert-test-failed
+ ((should
+ (equal
+ (list 'a 'b 'c)
+ '(a b d)))
+ :form
+ (equal
+ (a b c)
+ (a b d))
+ :value nil :explanation
+ (list-elt 2
+ (different-atoms c d))))
+@end example
+
+At the top, there is a summary of the results: We ran all tests in the
+current Emacs (@code{Selector: t}), 31 of them passed, and 2 failed
+unexpectedly. @xref{Expected Failures}, for an explanation of the
+term @emph{unexpected} in this context.
+
+The line of dots and @code{F}s is a progress bar where each character
+represents one test; it fills while the tests are running. A dot
+means that the test passed, an @code{F} means that it failed. Below
+the progress bar, ERT shows details about each test that had an
+unexpected result. In the example above, there are two failures, both
+due to failed @code{should} forms. @xref{Understanding Explanations},
+for more details.
+
+In the ERT results buffer, @kbd{TAB} and @kbd{S-TAB} cycle between
+buttons. Each name of a function or macro in this buffer is a button;
+moving point to it and typing @kbd{RET} jumps to its definition.
+
+Pressing @kbd{r} re-runs the test near point on its own. Pressing
+@kbd{d} re-runs it with the debugger enabled. @kbd{.} jumps to the
+definition of the test near point (@kbd{RET} has the same effect if
+point is on the name of the test). On a failed test, @kbd{b} shows
+the backtrace of the failure.
+
+@kbd{l} shows the list of @code{should} forms executed in the test.
+If any messages were generated (with the Lisp function @code{message})
+in a test or any of the code that it invoked, @kbd{m} will show them.
+
+By default, long expressions in the failure details are abbreviated
+using @code{print-length} and @code{print-level}. Pressing @kbd{L}
+while point is on a test failure will increase the limits to show more
+of the expression.
+
+
+@node Running Tests in Batch Mode, Test Selectors, Running Tests Interactively, How to Run Tests
+@section Running Tests in Batch Mode
+
+ERT supports automated invocations from the command line or from
+scripts or makefiles. There are two functions for this purpose,
+@code{ert-run-tests-batch} and @code{ert-run-tests-batch-and-exit}.
+They can be used like this:
+
+@example
+emacs -batch -L /path/to/ert -l ert.el -l my-tests.el -f ert-run-tests-batch-and-exit
+@end example
+
+This command will start up Emacs in batch mode, load ERT, load
+@code{my-tests.el}, and run all tests defined in it. It will exit
+with a zero exit status if all tests passed, or nonzero if any tests
+failed or if anything else went wrong. It will also print progress
+messages and error diagnostics to standard output.
+
+You may need additional @code{-L} flags to ensure that
+@code{my-tests.el} and all the files that it requires are on your
+@code{load-path}.
+
+
+@node Test Selectors, , Running Tests in Batch Mode, How to Run Tests
+@section Test Selectors
+
+Functions like @code{ert} accept a @emph{test selector}, a Lisp
+expression specifying a set of tests. Test selector syntax is similar
+to Common Lisp's type specifier syntax:
+
+@itemize
+@item @code{nil} selects no tests.
+@item @code{t} selects all tests.
+@item @code{:new} selects all tests that have not been run yet.
+@item @code{:failed} and @code{:passed} select tests according to their most recent result.
+@item @code{:expected}, @code{:unexpected} select tests according to their most recent result.
+@item A string selects all tests that have a name that matches the string, a regexp.
+@item A test selects that test.
+@item A symbol selects the test that the symbol names.
+@item @code{(member TESTS...)} selects TESTS, a list of tests or symbols naming tests.
+@item @code{(eql TEST)} selects TEST, a test or a symbol naming a test.
+@item @code{(and SELECTORS...)} selects the tests that match all SELECTORS.
+@item @code{(or SELECTORS...)} selects the tests that match any SELECTOR.
+@item @code{(not SELECTOR)} selects all tests that do not match SELECTOR.
+@item @code{(tag TAG)} selects all tests that have TAG on their tags list.
+@item @code{(satisfies PREDICATE)} Selects all tests that satisfy PREDICATE.
+@end itemize
+
+Selectors that are frequently useful when selecting tests to run
+include @code{t} to run all tests that are currently defined in Emacs,
+@code{"^foo-"} to run all tests in package @code{foo} --- this assumes
+that package @code{foo} uses the prefix @code{foo-} for its test names
+---, result-based selectors such as @code{(or :new :unexpected)} to
+run all tests that have either not run yet or that had an unexpected
+result in the last run, and tag-based selectors such as @code{(not
+(tag :causes-redisplay))} to run all tests that are not tagged
+@code{:causes-redisplay}.
+
+
+@node How to Write Tests, How to Debug Tests, How to Run Tests, Top
+@chapter How to Write Tests
+
+ERT lets you define tests in the same way you define functions. You
+can type @code{ert-deftest} forms in a buffer and evaluate them there
+with @code{eval-defun} or @code{compile-defun}, or you can save the
+file and load it, optionally byte-compiling it first.
+
+Just like @code{find-function} is only able to find where a function
+was defined if the function was loaded from a file, ERT is only able
+to find where a test was defined if the test was loaded from a file.
+
+
+@menu
+* The @code{should} Macro:: A powerful way to express assertions.
+* Expected Failures:: Tests for known bugs.
+* Tests and Their Environment:: Don't depend on customizations; no side effects.
+* Useful Techniques:: Some examples.
+@end menu
+
+@node The @code{should} Macro, Expected Failures, How to Write Tests, How to Write Tests
+@section The @code{should} Macro
+
+Test bodies can include arbitrary code; but to be useful, they need to
+have checks whether the code being tested (or @emph{code under test})
+does what it is supposed to do. The macro @code{should} is similar to
+@code{assert} from the cl package, but analyzes its argument form and
+records information that ERT can display to help debugging.
+
+This test definition
+
+@lisp
+(ert-deftest addition-test ()
+ (should (= (+ 1 2) 4)))
+@end lisp
+
+will produce this output when run via @kbd{M-x ert}:
+
+@example
+F addition-test
+ (ert-test-failed
+ ((should
+ (=
+ (+ 1 2)
+ 4))
+ :form
+ (= 3 4)
+ :value nil))
+@end example
+
+In this example, @code{should} recorded the fact that (= (+ 1 2) 4)
+reduced to (= 3 4) before it reduced to nil. When debugging why the
+test failed, it helps to know that the function @code{+} returned 3
+here. ERT records the return value for any predicate called directly
+within @code{should}.
+
+In addition to @code{should}, ERT provides @code{should-not}, which
+checks that the predicate returns nil, and @code{should-error}, which
+checks that the form called within it signals an error. An example
+use of @code{should-error}:
+
+@lisp
+(ert-deftest test-divide-by-zero ()
+ (should-error (/ 1 0)
+ :type 'arith-error))
+@end lisp
+
+This checks that dividing one by zero signals an error of type
+@code{arith-error}. The @code{:type} argument to @code{should-error}
+is optional; if absent, any type of error is accepted.
+@code{should-error} returns an error description of the error that was
+signalled, to allow additional checks to be made. The error
+description has the format @code{(ERROR-SYMBOL . DATA)}.
+
+There is no @code{should-not-error} macro since tests that signal an
+error fail anyway, so @code{should-not-error} is effectively the
+default.
+
+@xref{Understanding Explanations}, for more details on what
+@code{should} reports.
+
+
+@node Expected Failures, Tests and Their Environment, The @code{should} Macro, How to Write Tests
+@section Expected Failures
+
+Some bugs are complicated to fix or not very important and are left as
+@emph{known bugs}. If there is a test case that triggers the bug and
+fails, ERT will alert you of this failure every time you run all
+tests. For known bugs, this alert is a distraction. The way to
+suppress it is to add @code{:expected-result :failed} to the test
+definition:
+
+@lisp
+(ert-deftest future-bug ()
+ "Test `time-forward' with negative arguments.
+Since this functionality isn't implemented yet, the test is known to fail."
+ :expected-result :failed
+ (time-forward -1))
+@end lisp
+
+ERT will still display a small @code{f} in the progress bar as a
+reminder that there is a known bug, and will count the test as failed,
+but it will be quiet about it otherwise.
+
+An alternative to marking the test as a known failure this way is to
+delete the test. This is a good idea if there is no intent to fix it,
+i.e., if the behavior that was formerly considered a bug has become an
+accepted feature.
+
+In general, however, it can be useful to keep tests that are known to
+fail. If someone wants to fix the bug, they will have a very good
+starting point: an automated test case that reproduces the bug. This
+makes it much easier to fix the bug, demonstrate that it is fixed, and
+prevent future regressions.
+
+ERT displays the same kind of alerts for tests that pass unexpectedly
+that it displays for unexpected failures. This way, if you make code
+changes that happen to fix a bug that you weren't aware of, you will
+know to remove the @code{:expected-result} clause of that test and
+close the corresponding bug report, if any.
+
+Since @code{:expected-result} evaluates its argument when the test is
+loaded, tests can be marked as known failures only on certain Emacs
+versions, specific architectures, etc.:
+
+@lisp
+(ert-deftest foo ()
+ "A test that is expected to fail on Emacs 23 but succeed elsewhere."
+ :expected-result (if (string-match "GNU Emacs 23[.]" (emacs-version))
+ :failed
+ :passed)
+ ...)
+@end lisp
+
+
+@node Tests and Their Environment, Useful Techniques, Expected Failures, How to Write Tests
+@section Tests and Their Environment
+
+The outcome of running a test should not depend on the current state
+of the environment, and each test should leave its environment in the
+same state it found it in. In particular, a test should not depend on
+any Emacs customization variables or hooks, and if it has to make any
+changes to Emacs' state or state external to Emacs such as the file
+system, it should undo these changes before it returns, regardless of
+whether it passed or failed.
+
+Tests should not depend on the environment because any such
+dependencies can make the test brittle or lead to failures that occur
+only under certain circumstances and are hard to reproduce. Of
+course, the code under test may have settings that affect its
+behavior. In that case, it is best to make the test @code{let}-bind
+all such settings variables to set up a specific configuration for the
+duration of the test. The test can also set up a number of different
+configurations and run the code under test with each.
+
+Tests that have side effects on their environment should restore it to
+its original state because any side effects that persist after the
+test can disrupt the workflow of the programmer running the tests. If
+the code under test has side effects on Emacs' current state, such as
+on the current buffer or window configuration, the test should create
+a temporary buffer for the code to manipulate (using
+@code{with-temp-buffer}), or save and restore the window configuration
+(using @code{save-window-excursion}), respectively. For aspects of
+the state that can not be preserved with such macros, cleanup should
+be performed with @code{unwind-protect}, to ensure that the cleanup
+occurs even if the test fails.
+
+An exception to this are messages that the code under test prints with
+@code{message} and similar logging; tests should not bother restoring
+the @code{*Message*} buffer to its original state.
+
+The above guidelines imply that tests should avoid calling highly
+customizable commands such as @code{find-file}, except, of course, if
+such commands are what they want to test. The exact behavior of
+@code{find-file} depends on many settings such as
+@code{find-file-wildcards}, @code{enable-local-variables}, and
+@code{auto-mode-alist}. It is difficult to write a meaningful test if
+its behavior can be affected by so many external factors. Also,
+@code{find-file} has side effects that are hard to predict and thus
+hard to undo: It may create a new buffer or may reuse an existing
+buffer if one is already visiting the requested file; and it runs
+@code{find-file-hook}, which can have arbitrary side effects.
+
+Instead, it is better to use lower-level mechanisms with simple and
+predictable semantics like @code{with-temp-buffer}, @code{insert} or
+@code{insert-file-contents-literally}, and activating the desired mode
+by calling the corresponding function directly --- after binding the
+hook variables to nil. This avoids the above problems.
+
+
+@node Useful Techniques, , Tests and Their Environment, How to Write Tests
+@section Useful Techniques when Writing Tests
+
+Testing simple functions that have no side effects and no dependencies
+on their environment is easy. Such tests often look like this:
+
+@lisp
+(ert-deftest ert-test-mismatch ()
+ (should (eql (ert--mismatch "" "") nil))
+ (should (eql (ert--mismatch "" "a") 0))
+ (should (eql (ert--mismatch "a" "a") nil))
+ (should (eql (ert--mismatch "ab" "a") 1))
+ (should (eql (ert--mismatch "Aa" "aA") 0))
+ (should (eql (ert--mismatch '(a b c) '(a b d)) 2)))
+@end lisp
+
+This test calls the function @code{ert--mismatch} several times with
+various combinations of arguments and compares the return value to the
+expected return value. (Some programmers prefer @code{(should (eql
+EXPECTED ACTUAL))} over the @code{(should (eql ACTUAL EXPECTED))}
+shown here. ERT works either way.)
+
+Here's a more complicated test:
+
+@lisp
+(ert-deftest ert-test-record-backtrace ()
+ (let ((test (make-ert-test :body (lambda () (ert-fail "foo")))))
+ (let ((result (ert-run-test test)))
+ (should (ert-test-failed-p result))
+ (with-temp-buffer
+ (ert--print-backtrace (ert-test-failed-backtrace result))
+ (goto-char (point-min))
+ (end-of-line)
+ (let ((first-line (buffer-substring-no-properties (point-min) (point))))
+ (should (equal first-line " signal(ert-test-failed (\"foo\"))")))))))
+@end lisp
+
+This test creates a test object using @code{make-ert-test} whose body
+will immediately signal failure. It then runs that test and asserts
+that it fails. Then, it creates a temporary buffer and invokes
+@code{ert--print-backtrace} to print the backtrace of the failed test
+to the current buffer. Finally, it extracts the first line from the
+buffer and asserts that it matches what we expect. It uses
+@code{buffer-substring-no-properties} and @code{equal} to ignore text
+properties; for a test that takes properties into account,
+@code{buffer-substring} and @code{ert-equal-including-properties}
+could be used instead.
+
+The reason why this test only checks the first line of the backtrace
+is that the remainder of the backtrace is dependent on ERT's internals
+as well as whether the code is running interpreted or compiled. By
+looking only at the first line, the test checks a useful property
+--- that the backtrace correctly captures the call to @code{signal} that
+results from the call to @code{ert-fail} --- without being brittle.
+
+This example also shows that writing tests is much easier if the code
+under test was structured with testing in mind.
+
+For example, if @code{ert-run-test} accepted only symbols that name
+tests rather than test objects, the test would need a name for the
+failing test, which would have to be a temporary symbol generated with
+@code{make-symbol}, to avoid side effects on Emacs' state. Choosing
+the right interface for @code{ert-run-tests} allows the test to be
+simpler.
+
+Similarly, if @code{ert--print-backtrace} printed the backtrace to a
+buffer with a fixed name rather than the current buffer, it would be
+much harder for the test to undo the side effect. Of course, some
+code somewhere needs to pick the buffer name. But that logic is
+independent of the logic that prints backtraces, and keeping them in
+separate functions allows us to test them independently.
+
+A lot of code that you will encounter in Emacs was not written with
+testing in mind. Sometimes, the easiest way to write tests for such
+code is to restructure the code slightly to provide better interfaces
+for testing. Usually, this makes the interfaces easier to use as
+well.
+
+
+@node How to Debug Tests, Extending ERT, How to Write Tests, Top
+@chapter How to Debug Tests
+
+This section describes how to use ERT's features to understand why
+a test failed.
+
+
+@menu
+* Understanding Explanations:: How ERT gives details on why an assertion failed.
+* Interactive Debugging:: Tools available in the ERT results buffer.
+@end menu
+
+
+@node Understanding Explanations, Interactive Debugging, How to Debug Tests, How to Debug Tests
+@section Understanding Explanations
+
+Failed @code{should} forms are reported like this:
+
+@example
+F addition-test
+ (ert-test-failed
+ ((should
+ (=
+ (+ 1 2)
+ 4))
+ :form
+ (= 3 4)
+ :value nil))
+@end example
+
+ERT shows what the @code{should} expression looked like and what
+values its subexpressions had: The source code of the assertion was
+@code{(should (= (+ 1 2) 4))}, which applied the function @code{=} to
+the arguments @code{3} and @code{4}, resulting in the value
+@code{nil}. In this case, the test is wrong; it should expect 3
+rather than 4.
+
+If a predicate like @code{equal} is used with @code{should}, ERT
+provides a so-called @emph{explanation}:
+
+@example
+F list-test
+ (ert-test-failed
+ ((should
+ (equal
+ (list 'a 'b 'c)
+ '(a b d)))
+ :form
+ (equal
+ (a b c)
+ (a b d))
+ :value nil :explanation
+ (list-elt 2
+ (different-atoms c d))))
+@end example
+
+In this case, the function @code{equal} was applied to the arguments
+@code{(a b c)} and @code{(a b d)}. ERT's explanation shows that
+the item at index 2 differs between the two lists; in one list, it is
+the atom c, in the other, it is the atom d.
+
+In simple examples like the above, the explanation is unnecessary.
+But in cases where the difference is not immediately apparent, it can
+save time:
+
+@example
+F test1
+ (ert-test-failed
+ ((should
+ (equal x y))
+ :form
+ (equal a a)
+ :value nil :explanation
+ (different-symbols-with-the-same-name a a)))
+@end example
+
+ERT only provides explanations for predicates that have an explanation
+function registered. @xref{Defining Explanation Functions}.
+
+
+@node Interactive Debugging, , Understanding Explanations, How to Debug Tests
+@section Interactive Debugging
+
+Debugging failed tests works essentially the same way as debugging any
+other problems with Lisp code. Here are a few tricks specific to
+tests:
+
+@itemize
+@item Re-run the failed test a few times to see if it fails in the same way
+each time. It's good to find out whether the behavior is
+deterministic before spending any time looking for a cause. In the
+ERT results buffer, @kbd{r} re-runs the selected test.
+
+@item Use @kbd{.} to jump to the source code of the test to find out what
+exactly it does. Perhaps the test is broken rather than the code
+under test.
+
+@item If the test contains a series of @code{should} forms and you can't
+tell which one failed, use @kbd{l}, which shows you the list of all
+@code{should} forms executed during the test before it failed.
+
+@item Use @kbd{b} to view the backtrace. You can also use @kbd{d} to re-run
+the test with debugging enabled, this will enter the debugger and show
+the backtrace as well; but the top few frames shown there will not be
+relevant to you since they are ERT's own debugger hook. @kbd{b}
+strips them out, so it is more convenient.
+
+@item If the test or the code under testing prints messages using
+@code{message}, use @kbd{m} to see what messages it printed before it
+failed. This can be useful to figure out how far it got.
+
+@item You can instrument tests for debugging the same way you instrument
+@code{defun}s for debugging --- go to the source code of the test and
+type @kbd{@kbd{C-u} @kbd{C-M-x}}. Then, go back to the ERT buffer and
+re-run the test with @kbd{r} or @kbd{d}.
+
+@item If you have been editing and rearranging tests, it is possible that
+ERT remembers an old test that you have since renamed or removed ---
+renamings or removals of definitions in the source code leave around a
+stray definition under the old name in the running process, this is a
+common problem in Lisp. In such a situation, hit @kbd{D} to let ERT
+forget about the obsolete test.
+@end itemize
+
+
+@node Extending ERT, Other Testing Concepts, How to Debug Tests, Top
+@chapter Extending ERT
+
+There are several ways to add functionality to ERT.
+
+@menu
+* Defining Explanation Functions:: Teach ERT about more predicates.
+* Low-Level Functions for Working with Tests:: Use ERT's data for your purposes.
+@end menu
+
+
+@node Defining Explanation Functions, Low-Level Functions for Working with Tests, Extending ERT, Extending ERT
+@section Defining Explanation Functions
+
+The explanation function for a predicate is a function that takes the
+same arguments as the predicate and returns an @emph{explanation}.
+The explanation should explain why the predicate, when invoked with
+the arguments given to the explanation function, returns the value
+that it returns. The explanation can be any object but should have a
+comprehensible printed representation. If the return value of the
+predicate needs no explanation for a given list of arguments, the
+explanation function should return nil.
+
+To associate an explanation function with a predicate, add the
+property @code{ert-explainer} to the symbol that names the predicate.
+The value of the property should be the symbol that names the
+explanation function.
+
+
+@node Low-Level Functions for Working with Tests, , Defining Explanation Functions, Extending ERT
+@section Low-Level Functions for Working with Tests
+
+Both @code{ert-run-tests-interactively} and @code{ert-run-tests-batch}
+are implemented on top of the lower-level test handling code in the
+sections named ``Facilities for running a single test'', ``Test
+selectors'', and ``Facilities for running a whole set of tests''.
+
+If you want to write code that works with ERT tests, you should take a
+look at this lower-level code. Symbols that start with @code{ert--}
+are internal to ERT, those that start with @code{ert-} but not
+@code{ert--} are meant to be usable by other code. But there is no
+mature API yet.
+
+Contributions to ERT are welcome.
+
+
+@node Other Testing Concepts, , Extending ERT, Top
+@chapter Other Testing Concepts
+
+For information on mocks, stubs, fixtures, or test suites, see below.
+
+
+@menu
+* Mocks and Stubs:: Stubbing out code that is irrelevant to the test.
+* Fixtures and Test Suites:: How ERT differs from tools for other languages.
+@end menu
+
+@node Mocks and Stubs, Fixtures and Test Suites, Other Testing Concepts, Other Testing Concepts
+@section Other Tools for Emacs Lisp
+
+Stubbing out functions or using so-called @emph{mocks} can make it
+easier to write tests. See
+@url{http://en.wikipedia.org/wiki/Mock_object} for an explanation of
+the corresponding concepts in object-oriented languages.
+
+ERT does not have built-in support for mocks or stubs. The package
+@code{el-mock} (see @url{http://www.emacswiki.org/emacs/el-mock.el})
+offers mocks for Emacs Lisp and can be used in conjunction with ERT.
+
+
+@node Fixtures and Test Suites, , Mocks and Stubs, Other Testing Concepts
+@section Fixtures and Test Suites
+
+In many ways, ERT is similar to frameworks for other languages like
+SUnit or JUnit. However, two features commonly found in such
+frameworks are notably absent from ERT: fixtures and test suites.
+
+Fixtures, as used e.g. in SUnit or JUnit, are mainly used to provide
+an environment for a set of tests, and consist of set-up and tear-down
+functions.
+
+While fixtures are a useful syntactic simplification in other
+languages, this does not apply to Lisp, where higher-order functions
+and `unwind-protect' are available. One way to implement and use a
+fixture in ERT is
+
+@lisp
+(defun my-fixture (body)
+ (unwind-protect
+ (progn [set up]
+ (funcall body))
+ [tear down]))
+
+(ert-deftest my-test ()
+ (my-fixture
+ (lambda ()
+ [test code])))
+@end lisp
+
+(Another way would be a @code{with-my-fixture} macro.) This solves
+the set-up and tear-down part, and additionally allows any test
+to use any combination of fixtures, so it is more flexible than what
+other tools typically allow.
+
+If the test needs access to the environment the fixture sets up, the
+fixture can be modified to pass arguments to the body.
+
+These are well-known Lisp techniques. Special syntax for them could
+be added but would provide only a minor simplification.
+
+(If you are interested in such syntax, note that splitting set-up and
+tear-down into separate functions, like *Unit tools usually do, makes
+it impossible to establish dynamic `let' bindings as part of the
+fixture. So, blindly imitating the way fixtures are implemented in
+other languages would be counter-productive in Lisp.)
+
+The purpose of test suites is to group related tests together.
+
+The most common use of this is to run just the tests for one
+particular module. Since symbol prefixes are the usual way of
+separating module namespaces in Emacs Lisp, test selectors already
+solve this by allowing regexp matching on test names; e.g., the
+selector "^ert-" selects ERT's self-tests.
+
+Other uses include grouping tests by their expected execution time to
+run quick tests during interactive development and slow tests less
+frequently. This can be achieved with the @code{:tag} argument to
+@code{ert-deftest} and @code{tag} test selectors.
+
+@bye
+
+@c LocalWords: ERT Hagelberg Ohler JUnit namespace docstring ERT's
+@c LocalWords: backtrace makefiles workflow backtraces API SUnit
+@c LocalWords: subexpressions
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index 25ba50d616..0ae6a0e7fa 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -8,8 +8,7 @@
@copying
This manual is for Eshell, the Emacs shell.
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -369,6 +368,17 @@ eshell/ls is a compiled Lisp function in `em-ls.el'
/bin/ls
@end example
+If you want to discard a given built-in command, you could declare an
+alias, @ref{Aliases}. Eample:
+
+@example
+~ $ which sudo
+eshell/sudo is a compiled Lisp function in `em-unix.el'
+~ $ alias sudo '*sudo $*'
+~ $ which sudo
+sudo is an alias, defined as "*sudo $*"
+@end example
+
Some of the built-in commands have a special behaviour in Eshell:
@table @code
@@ -1004,7 +1014,3 @@ Since it keeps the cursor up where the command was invoked.
@printindex ky
@bye
-
-@ignore
- arch-tag: 776409ba-cb15-42b9-b2b6-d2bdc7ebad01
-@end ignore
diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi
index cf40bcce73..a68eda5002 100644
--- a/doc/misc/eudc.texi
+++ b/doc/misc/eudc.texi
@@ -12,8 +12,7 @@ EUDC is the Emacs Unified Directory Client, a common interface to
directory servers using various protocols such as LDAP or the CCSO white
pages directory system (PH/QI)
-Copyright @copyright{} 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1998, 2000-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -51,6 +50,7 @@ developing GNU and promoting software freedom.''
@ifnottex
@node Top, Overview, (dir), (dir)
+@top Emacs Unified Directory Client
@comment node-name, next, previous, up
@insertcopying
diff --git a/doc/misc/faq.texi b/doc/misc/faq.texi
index ae2d0867fd..7528abca58 100644
--- a/doc/misc/faq.texi
+++ b/doc/misc/faq.texi
@@ -4,16 +4,14 @@
@settitle GNU Emacs FAQ
@c %**end of header
-@c This is used in many places
-@set VER 23.3.50
+@include emacsver.texi
@c This file is maintained by Romain Francoise <[email protected]>.
@c Feel free to install changes without prior permission (but I'd
@c appreciate a notice if you do).
@copying
-Copyright @copyright{} 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-2009, 2010, 2011 Free Software Foundation, Inc.@*
+Copyright @copyright{} 2001-2011 Free Software Foundation, Inc.@*
Copyright @copyright{} 1994, 1995, 1996, 1997, 1998, 1999, 2000
Reuven M. Lerner@*
Copyright @copyright{} 1992, 1993 Steven Byrnes@*
@@ -67,7 +65,7 @@ This FAQ is maintained as a part of GNU Emacs. If you find any errors,
or have any suggestions, please use @kbd{M-x report-emacs-bug} to report
them.
-This is the version of the FAQ distributed with Emacs @value{VER}, and
+This is the version of the FAQ distributed with Emacs @value{EMACSVER}, and
mainly describes that version. Although there is some information on
older versions, details about very old releases (now only of historical
interest) have been removed. If you are interested in this, consult
@@ -504,36 +502,13 @@ contain information in either the message header
unsubscribe.
@node Contacting the FSF
-@section What is the current address of the FSF?
-@cindex Snail mail address of the FSF
-@cindex Postal address of the FSF
+@section How do I contact the FSF?
@cindex Contracting the FSF
@cindex Free Software Foundation, contacting
For up-to-date information, see
@uref{http://www.fsf.org/about/contact.html, the FSF contact web-page}.
-
-@table @asis
-
-@item E-mail
-info@@fsf.org
-
-@item Telephone
-+1-617-542-5942
-
-@item Fax
-+1-617-542-2652
-
-@item World Wide Web
-@uref{http://www.fsf.org/}
-
-@item Postal address
-Free Software Foundation@*
-51 Franklin Street, Fifth Floor@*
-Boston, MA 02110-1301@*
-USA@*
-
-@end table
+You can send general correspondence to @email{info@@fsf.org}.
@cindex Ordering GNU software
For details on how to order items directly from the FSF, see the
@@ -1010,7 +985,7 @@ conventions}).
@cindex Repository, Emacs
@cindex Bazaar repository, Emacs
-Emacs @value{VER} is the current version as of this writing. A version
+Emacs @value{EMACSVER} is the current version as of this writing. A version
number with two components (e.g. @samp{22.1}) indicates a released
version; three components indicate a development
version (e.g. @samp{23.0.50} is what will eventually become @samp{23.1}).
@@ -1067,11 +1042,11 @@ Emacs now supports using both X displays and ttys in the same session
@item
Emacs can be started as a daemon in the background.
-@cindex NeXTSTEP port
+@cindex NeXTstep port
@cindex GNUstep port
@cindex Mac OS X Cocoa
@item
-There is a new NeXTSTEP port of Emacs. This supports GNUstep and Mac OS
+There is a new NeXTstep port of Emacs. This supports GNUstep and Mac OS
X (via the Cocoa libraries). The Carbon port of Emacs, which supported
Mac OS X in Emacs 22, has been removed.
@@ -3897,9 +3872,9 @@ command.
@cindex Function keys and modifiers
@cindex Binding modifiers and function keys
-With Emacs 19 and later, you can represent modified function keys in
-vector format by adding prefixes to the function key symbol. For
-example (from the Emacs documentation):
+You can represent modified function keys in vector format by adding
+prefixes to the function key symbol. For example (from the Emacs
+documentation):
@lisp
(global-set-key [?\C-x right] 'forward-page)
@@ -4300,12 +4275,12 @@ file.
Normally, Emacs expands aliases when you send the message.
To expand them before this, use @kbd{M-x expand-mail-aliases}.
-@c FIXME there should be an interactive rebuild command for this.
@item
-Emacs normally only reads the @file{.mailrc} file once per session,
-when you start to compose your first mail message. If you edit
-@file{.mailrc}, you can type @kbd{M-: (build-mail-aliases) @key{RET}} to
-make Emacs reread @file{~/.mailrc}.
+Emacs normally only reads the @file{.mailrc} file once per session, when
+you start to compose your first mail message. If you edit the file
+after this, you can use @kbd{M-x build-mail-aliases} to make Emacs
+reread it. Prior to Emacs 24.1, this is not an interactive command, so
+you must instead type @kbd{M-: (build-mail-aliases) @key{RET}}.
@item
If you like, you can expand mail aliases as abbrevs, as soon as you
@@ -4479,7 +4454,3 @@ to the end of the @file{*Newsgroup*} buffer.
@printindex cp
@bye
-
-@ignore
- arch-tag: fee0d62d-06cf-43d8-ac21-123408eaf10f
-@end ignore
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi
index 75a660f040..74cf3d630d 100644
--- a/doc/misc/flymake.texi
+++ b/doc/misc/flymake.texi
@@ -11,7 +11,7 @@
This manual is for GNU Flymake (version @value{VERSION}, @value{UPDATED}),
which is a universal on-the-fly syntax checker for GNU Emacs.
-Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+Copyright @copyright{} 2004-2011
Free Software Foundation, Inc.
@quotation
@@ -749,7 +749,3 @@ It just kills all the active syntax check processes before calling
@printindex cp
@bye
-
-@ignore
- arch-tag: 9f0db077-5598-49ab-90b9-8df9248a63ec
-@end ignore
diff --git a/doc/misc/forms.texi b/doc/misc/forms.texi
index 1ac00e6ace..17c1d7feaf 100644
--- a/doc/misc/forms.texi
+++ b/doc/misc/forms.texi
@@ -18,8 +18,7 @@
@copying
This file documents Forms mode, a form-editing major mode for GNU Emacs.
-Copyright @copyright{} 1989, 1997, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1989, 1997, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -976,7 +975,3 @@ Software Foundation. Thanks, Richard!
@printindex cp
@bye
-
-@ignore
- arch-tag: 2ac9810b-aa49-4ea6-8030-d7f1ecd467ed
-@end ignore
diff --git a/doc/misc/gnus-coding.texi b/doc/misc/gnus-coding.texi
index 666a99fc48..ab9c0232d3 100644
--- a/doc/misc/gnus-coding.texi
+++ b/doc/misc/gnus-coding.texi
@@ -7,7 +7,7 @@
@syncodeindex pg cp
@copying
-Copyright @copyright{} 2004, 2005, 2007, 2008, 2009, 2010, 2011 Free Software
+Copyright @copyright{} 2004-2005, 2007-2011 Free Software
Foundation, Inc.
@quotation
@@ -288,14 +288,21 @@ Emacs repository might have been lost.
With the inclusion of Gnus 5.10, Miles Bader has set up an Emacs-Gnus
gateway to ensure the bug fixes from Emacs CVS are propagated to Gnus
-CVS semi-automatically. These bug fixes are installed on the stable
-branch and on the trunk. Basically the idea is that the gateway will
-cause all common files in Emacs and Gnus v5-10 to be identical except
-when there's a very good reason (e.g., the Gnus version string in Emacs
-says @samp{5.11}, but the v5-10 version string remains @samp{5.10.x}).
-Furthermore, all changes in these files in either Emacs or the v5-10
-branch will be installed into the Gnus CVS trunk, again except where
-there's a good reason.
+CVS semi-automatically.
+
+After Emacs moved to bzr and Gnus moved to git, Katsumi Yamaoka has
+taken over the chore of keeping Emacs and Gnus in sync. In general,
+changes made to one repository will usually be replicated in the other
+within a few days.
+
+Basically the idea is that the gateway will cause all common files in
+Emacs and Gnus v5-13 to be identical except when there's a very good
+reason (e.g., the Gnus version string in Emacs says @samp{5.11}, but
+the v5-13 version string remains @samp{5.13.x}). Furthermore, all
+changes in these files in either Emacs or the v5-13 branch will be
+installed into the Gnus git trunk, again except where there's a good
+reason.
+
@c (typically so far the only exception has been that the changes
@c already exist in the trunk in modified form).
Because of this, when the next major version of Gnus will be included in
@@ -311,9 +318,9 @@ If it's a file which is thought of as being outside of Gnus (e.g., the
new @file{encrypt.el}), you should probably make the change in the Emacs
tree, and it will show up in the Gnus tree a few days later.
-If you don't have Emacs CVS access (or it's inconvenient), you can
+If you don't have Emacs bzr access (or it's inconvenient), you can
change such a file in the v5-10 branch, and it should propagate to Emacs
-CVS -- however, it will get some extra scrutiny (by Miles) to see if the
+bzr -- however, it will get some extra scrutiny (by Miles) to see if the
changes are possibly controversial and need discussion on the mailing
list. Many changes are obvious bug-fixes however, so often there won't
be any problem.
@@ -321,12 +328,12 @@ be any problem.
@item
If it's to a Gnus file, and it's important enough that it should be part
of Emacs and the v5-10 branch, then you can make the change on the v5-10
-branch, and it will go into Emacs CVS and the Gnus CVS trunk (a few days
+branch, and it will go into Emacs bzr and the Gnus git trunk (a few days
later). The most prominent examples for such changes are bug-fixed
including improvements on the documentation.
If you know that there will be conflicts (perhaps because the affected
-source code is different in v5-10 and the Gnus CVS trunk), then you can
+source code is different in v5-10 and the Gnus git trunk), then you can
install your change in both places, and when I try to sync them, there
will be a conflict -- however, since in most such cases there would be a
conflict @emph{anyway}, it's often easier for me to resolve it simply if
@@ -338,9 +345,6 @@ For general Gnus development changes, of course you just make the
change on the Gnus Git trunk and it goes into Emacs a few years
later... :-)
-With the new Git repository, we'll probably set up something to
-automatically synchronize with Emacs when possible. CVS was much less
-powerful for this kind of synchronization.
@end itemize
Of course in any case, if you just can't wait for me to sync your
@@ -387,7 +391,3 @@ changed.
@c mode: texinfo
@c coding: iso-8859-1
@c End:
-
-@ignore
- arch-tag: ab15234c-2c8a-4cbd-8111-1811bcc6f931
-@end ignore
diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi
index d224d36fcd..e8e89ed2a3 100644
--- a/doc/misc/gnus-faq.texi
+++ b/doc/misc/gnus-faq.texi
@@ -1,11 +1,7 @@
@c \input texinfo @c -*-texinfo-*-
@c Uncomment 1st line before texing this file alone.
@c %**start of header
-@c Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-@c 2009, 2010, 2011 Free Software Foundation, Inc.
-@c
-@c Do not modify this file, it was generated from gnus-faq.xml, available from
-@c <URL:http://my.gnus.org/FAQ/>.
+@c Copyright (C) 1995, 2001-2011 Free Software Foundation, Inc.
@c
@setfilename gnus-faq.info
@settitle Frequently Asked Questions
@@ -40,20 +36,9 @@
@subheading Abstract
This is the new Gnus Frequently Asked Questions list.
-If you have a Web browser, the official hypertext version is at
-@uref{http://my.gnus.org/FAQ/},
-the Docbook source is available from
-@uref{http://sourceforge.net/projects/gnus/, http://sourceforge.net}.
Please submit features and suggestions to the
-@email{faq-discuss@@my.gnus.org, FAQ discussion list}.
-The list is protected against junk mail with
-@uref{http://smarden.org/qconfirm/index.html, qconfirm}. As
-a subscriber, your submissions will automatically pass. You can
-also subscribe to the list by sending a blank email to
-@email{faq-discuss-subscribe@@my.gnus.org, faq-discuss-subscribe@@my.gnus.org}
-and @uref{http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss, browse
-the archive (BROKEN)}.
+@email{ding@@gnus.org, ding list}.
@node FAQ - Changes
@subheading Changes
@@ -98,8 +83,6 @@ would like to thank Steve Baur and Per Abrahamsen for doing a wonderful
job with this FAQ before him. We would like to do the same - thanks,
Justin!
-If you have a Web browser, the official hypertext version is at:
-@uref{http://my.gnus.org/FAQ/}.
This version is much nicer than the unofficial hypertext
versions that are archived at Utrecht, Oxford, Smart Pages, Ohio
State, and other FAQ archives. See the resources question below
@@ -107,7 +90,7 @@ if you want information on obtaining it in another format.
The information contained here was compiled with the assistance
of the Gnus development mailing list, and any errors or
-misprints are the my.gnus.org team's fault, sorry.
+misprints are the Gnus team's fault, sorry.
@node FAQ 1 - Installation FAQ
@subsection Installation FAQ
@@ -1042,8 +1025,7 @@ in Gnus Country :-). It's a three step process: First we
make faces (specifications of how summary-line shall look
like) for those postings, then we'll give them some
special score and finally we'll tell Gnus to use the new
-faces. You can find detailed instructions on how to do it on
-@uref{http://my.gnus.org/node/view/224, my.gnus.org}
+faces.
@node FAQ 4-12
@subsubheading Question 4.12
@@ -1414,7 +1396,7 @@ or @uref{http://aspell.sourceforge.net/, aspell}
installed and in your Path. Then you need
@uref{http://www.kdstevens.com/~stevens/ispell-page.html, ispell.el}
and for on-the-fly spell-checking
-@uref{http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html, flyspell.el}.
+@uref{http://www-sop.inria.fr/members/Manuel.Serrano/flyspell/flyspell.html, flyspell.el}.
Ispell.el is shipped with Emacs and available through the XEmacs package system,
flyspell.el is shipped with Emacs and part of XEmacs text-modes package which is
available through the package system, so there should be no need to install them
@@ -1987,7 +1969,7 @@ server like
@uref{http://www.isc.org/products/INN/, inn}.
Then you want to fetch your Mail, popular choices
are @uref{http://www.catb.org/~esr/fetchmail/, fetchmail}
-and @uref{http://www.qcc.ca/~charlesc/software/getmail-3.0/, getmail}.
+and @uref{http://pyropus.ca/software/getmail/, getmail}.
You should tell those to write the mail to your disk and
Gnus to read it from there. Last but not least the mail
sending part: This can be done with every MTA like
@@ -2141,12 +2123,8 @@ Which websites should I know?
@subsubheading Answer
-The two most important ones are the
+The most important one is the
@uref{http://www.gnus.org, official Gnus website}.
-and it's sister site
-@uref{http://my.gnus.org, my.gnus.org (MGO)},
-hosting an archive of lisp snippets, howtos, a (not
-really finished) tutorial and this FAQ.
Tell me about other sites which are interesting.
@@ -2331,7 +2309,3 @@ NUA is an acronym for News User Agent, it's the program you
use to read and write Usenet news.
@end table
-
-@ignore
-arch-tag: 64dc5692-edb4-4848-a965-7aa0181acbb8
-@end ignore
diff --git a/doc/misc/gnus-news.el b/doc/misc/gnus-news.el
index 5939773805..485e7ce464 100644
--- a/doc/misc/gnus-news.el
+++ b/doc/misc/gnus-news.el
@@ -1,5 +1,5 @@
;;; gnus-news.el --- a hack to create GNUS-NEWS from texinfo source
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+;; Copyright (C) 2004-2011 Free Software Foundation, Inc.
;; Author: Reiner Steib <[email protected]>
;; Keywords: tools
@@ -26,8 +26,7 @@
(defvar gnus-news-header-disclaimer
"GNUS NEWS -- history of user-visible changes.
-Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright (C) 1999-2011 Free Software Foundation, Inc.
See the end of the file for license conditions.
Please send Gnus bug reports to [email protected].
@@ -113,5 +112,4 @@ paragraph-separate: \"[ ]*$\"\nend:\n")
(insert gnus-news-trailer)
(write-region (point-min) (point-max) outfile))))
-;; arch-tag: e23cdd27-eafd-4ba0-816f-98f5edb0dc29
;;; gnus-news.el ends here
diff --git a/doc/misc/gnus-news.texi b/doc/misc/gnus-news.texi
index 4e4480689a..62c1663508 100644
--- a/doc/misc/gnus-news.texi
+++ b/doc/misc/gnus-news.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
-@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 2004-2011 Free Software Foundation, Inc.
@c Permission is granted to anyone to make or distribute verbatim copies
@c of this document as received, in any medium, provided that the
@@ -18,6 +18,17 @@
@itemize @bullet
+@item Supported Emacs versions
+The following Emacs versions are supported by No Gnus:
+@itemize @bullet
+
+@item Emacs 22 and up
+@item XEmacs 21.4
+@item XEmacs 21.5
+@item SXEmacs
+
+@end itemize
+
@item Installation changes
@itemize @bullet
@@ -55,6 +66,13 @@ remove-installed-shadows}.
@itemize @bullet
+@item New version of @code{nnimap}
+
+@code{nnimap} has been reimplemented in a mostly-compatible way. See
+the Gnus manual for a description of the new interface. In
+particular, @code{nnimap-inbox} and the client side split method has
+changed.
+
@item Gnus includes the Emacs Lisp @acronym{SASL} library.
This provides a clean @acronym{API} to @acronym{SASL} mechanisms from
@@ -87,6 +105,12 @@ EasyPG is included in Emacs 23 and available separately as well.
@c ************************
@itemize @bullet
+
+@item
+Symbols like @code{gcc-self} now has the same presedence rules in
+@code{gnus-parameters} as other ``real'' variables: The last match
+wins instead of the first match.
+
@item
Old intermediate incoming mail files (@file{Incoming*}) are deleted
after a couple of days, not immediately. @xref{Mail Source
@@ -100,6 +124,9 @@ Customization}.
@itemize @bullet
+@item There's now only one variable that determines how @acronym{HTML}
+is rendered: @code{mm-text-html-renderer}.
+
@item Gnus now supports sticky article buffers. Those are article buffers
that are not reused when you select another article. @xref{Sticky
Articles}.
@@ -197,6 +224,9 @@ that are accessible from the article buffer.
@item Changes in Message mode
@itemize @bullet
+@item Gnus now defaults to saving all outgoing messages in per-month
+nnfolder archives.
+
@item Gnus now supports the ``hashcash'' client puzzle anti-spam mechanism.
Use @code{(setq message-generate-hashcash t)} to enable.
@xref{Hashcash}.
@@ -230,6 +260,16 @@ of the "Whomever writes:" line. You need to set
@code{message-insert-formatted-citation-line} as well.
@end itemize
+@item Changes in Browse Server mode
+
+@itemize @bullet
+@item Gnus' sophisticated subscription methods are now available in
+Browse Server buffers as well using the variable
+@code{gnus-browse-subscribe-newsgroup-method}.
+
+@end itemize
+
+
@item Changes in back ends
@itemize @bullet
@@ -320,12 +360,12 @@ be unchanged except that the marks will be removed when copying or
moving articles to a group that has not turned auto-expire on.
@xref{Expiring Mail}.
+@item NoCeM support has been removed.
+
+@item Carpal mode has been removed.
+
@end itemize
@end itemize
@c gnus-news.texi ends here.
-
-@ignore
- arch-tag: 872c7569-4340-4d73-9d1d-7826d9f94a51
-@end ignore
diff --git a/doc/misc/gnus-overrides.texi b/doc/misc/gnus-overrides.texi
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/doc/misc/gnus-overrides.texi
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index a3b5ddde4a..a6b79237f0 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -1,5 +1,7 @@
\input texinfo
+@include gnus-overrides.texi
+
@setfilename ../../info/gnus
@settitle Gnus Manual
@syncodeindex fn cp
@@ -9,8 +11,7 @@
@documentencoding ISO-8859-1
@copying
-Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1995-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -330,7 +331,12 @@ developing GNU and promoting software freedom.''
@titlepage
+@ifset WEBHACKDEVEL
+@title Gnus Manual (DEVELOPMENT VERSION)
+@end ifset
+@ifclear WEBHACKDEVEL
@title Gnus Manual
+@end ifclear
@author by Lars Magne Ingebrigtsen
@page
@@ -407,6 +413,7 @@ This manual corresponds to Gnus v5.13
* Composing Messages:: Information on sending mail and news.
* Select Methods:: Gnus reads all messages from various select methods.
* Scoring:: Assigning values to articles.
+* Searching:: Mail and News search engines.
* Various:: General purpose settings.
* The End:: Farewell and goodbye.
* Appendices:: Terminology, Emacs intro, @acronym{FAQ}, History, Internals.
@@ -428,7 +435,6 @@ Other related manuals
Starting Gnus
* Finding the News:: Choosing a method for getting news.
-* The First Time:: What does Gnus do the first time you start it?
* The Server is Down:: How can I read my mail then?
* Slave Gnusae:: You can have more than one Gnus active at a time.
* Fetching a Group:: Starting Gnus just to read a group.
@@ -589,7 +595,7 @@ Article Treatment
* Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
* Article Button Levels:: Controlling appearance of buttons.
* Article Date:: Grumble, UT!
-* Article Display:: Display various stuff---X-Face, Picons, Smileys
+* Article Display:: Display various stuff---X-Face, Picons, Smileys, Gravatars
* Article Signature:: What is a signature?
* Article Miscellanea:: Various other stuff.
@@ -629,10 +635,10 @@ Select Methods
* Server Buffer:: Making and editing virtual servers.
* Getting News:: Reading USENET news with Gnus.
+* Using IMAP:: Reading mail from @acronym{IMAP}.
* Getting Mail:: Reading your personal mail with Gnus.
* Browsing the Web:: Getting messages from a plethora of Web sources.
-* IMAP:: Using Gnus as a @acronym{IMAP} client.
-* Other Sources:: Reading directories, files, SOUP packets.
+* Other Sources:: Reading directories, files.
* Combined Groups:: Combining groups into one group.
* Email Based Diary:: Using mails to manage diary events in Gnus.
* Gnus Unplugged:: Reading news and mail offline.
@@ -695,43 +701,24 @@ Browsing the Web
* Archiving Mail::
* Web Searches:: Creating groups from articles that match a string.
-* Slashdot:: Reading the Slashdot comments.
-* Ultimate:: The Ultimate Bulletin Board systems.
-* Web Archive:: Reading mailing list archived on web.
* RSS:: Reading RDF site summary.
* Customizing W3:: Doing stuff to Emacs/W3 from Gnus.
-@acronym{IMAP}
-
-* Splitting in IMAP:: Splitting mail with nnimap.
-* Expiring in IMAP:: Expiring mail with nnimap.
-* Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox.
-* Expunging mailboxes:: Equivalent of a ``compress mailbox'' button.
-* A note on namespaces:: How to (not) use @acronym{IMAP} namespace in Gnus.
-* Debugging IMAP:: What to do when things don't work.
-
Other Sources
* Directory Groups:: You can read a directory as if it was a newsgroup.
* Anything Groups:: Dired? Who needs dired?
* Document Groups:: Single files can be the basis of a group.
-* SOUP:: Reading @sc{soup} packets ``offline''.
* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
+* The Empty Backend:: The backend that never has any news.
Document Groups
* Document Server Internals:: How to add your own document types.
-SOUP
-
-* SOUP Commands:: Commands for creating and sending @sc{soup} packets
-* SOUP Groups:: A back end for reading @sc{soup} packets.
-* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news.
-
Combined Groups
* Virtual Groups:: Combining articles from many groups.
-* Kibozed Groups:: Looking through parts of the newsfeed for articles.
Email Based Diary
@@ -806,6 +793,21 @@ Advanced Scoring
* Advanced Scoring Examples:: What they look like.
* Advanced Scoring Tips:: Getting the most out of it.
+Searching
+
+* nnir:: Searching with various engines.
+* nnmairix:: Searching with Mairix.
+
+nnir
+
+* What is nnir?:: What does nnir do.
+* Basic Usage:: How to perform simple searches.
+* Setting up nnir:: How to set up nnir.
+
+Setting up nnir
+
+* Associating Engines:: How to associate engines.
+
Various
* Process/Prefix:: A convention used by many treatment commands.
@@ -817,9 +819,7 @@ Various
* Compilation:: How to speed Gnus up.
* Mode Lines:: Displaying information in the mode lines.
* Highlighting and Menus:: Making buffers look all nice and cozy.
-* Buttons:: Get tendinitis in ten easy steps!
* Daemons:: Gnus can do things behind your back.
-* NoCeM:: How to avoid spam and other fatty foods.
* Undo:: Some actions can be undone.
* Predicate Specifiers:: Specifying predicates.
* Moderation:: What to do if you're a moderator.
@@ -849,6 +849,7 @@ Image Enhancements
* Smileys:: Show all those happy faces the way they were
meant to be shown.
* Picons:: How to display pictures of what you're reading.
+* Gravatars:: Display the avatar of people you read.
* XVarious:: Other XEmacsy Gnusey variables.
Thwarting Email Spam
@@ -980,7 +981,6 @@ terminology section (@pxref{Terminology}).
@menu
* Finding the News:: Choosing a method for getting news.
-* The First Time:: What does Gnus do the first time you start it?
* The Server is Down:: How can I read my mail then?
* Slave Gnusae:: You can have more than one Gnus active at a time.
* New Groups:: What is Gnus supposed to do with new groups?
@@ -996,6 +996,15 @@ terminology section (@pxref{Terminology}).
@section Finding the News
@cindex finding news
+First of all, you should know that there is a special buffer called
+@code{*Server*} that lists all the servers Gnus knows about. You can
+press @kbd{^} from the Group buffer to see it. In the Server buffer,
+you can press @kbd{RET} on a defined server to see all the groups it
+serves (subscribed or not!). You can also add or delete servers, edit
+a foreign server's definition, agentize or de-agentize a server, and
+do many other neat things. @xref{Server Buffer}.
+@xref{Foreign Groups}. @xref{Agent Basics}.
+
@vindex gnus-select-method
@c @head
The @code{gnus-select-method} variable says where Gnus should look for
@@ -1032,22 +1041,6 @@ Gnus will see whether @code{gnus-nntpserver-file}
If that fails as well, Gnus will try to use the machine running Emacs
as an @acronym{NNTP} server. That's a long shot, though.
-@vindex gnus-nntp-server
-If @code{gnus-nntp-server} is set, this variable will override
-@code{gnus-select-method}. You should therefore set
-@code{gnus-nntp-server} to @code{nil}, which is what it is by default.
-
-@vindex gnus-secondary-servers
-@vindex gnus-nntp-server
-You can also make Gnus prompt you interactively for the name of an
-@acronym{NNTP} server. If you give a non-numerical prefix to @code{gnus}
-(i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
-in the @code{gnus-secondary-servers} list (if any). You can also just
-type in the name of any server you feel like visiting. (Note that this
-will set @code{gnus-nntp-server}, which means that if you then @kbd{M-x
-gnus} later in the same Emacs session, Gnus will contact the same
-server.)
-
@findex gnus-group-browse-foreign-server
@kindex B (Group)
However, if you use one @acronym{NNTP} server regularly and are just
@@ -1080,31 +1073,6 @@ several Gnus installations, but may slow down things a bit when fetching
new articles. @xref{NNTP marks}, for more information.
-@node The First Time
-@section The First Time
-@cindex first time usage
-
-If no startup files exist (@pxref{Startup Files}), Gnus will try to
-determine what groups should be subscribed by default.
-
-@vindex gnus-default-subscribed-newsgroups
-If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
-will subscribe you to just those groups in that list, leaving the rest
-killed. Your system administrator should have set this variable to
-something useful.
-
-Since she hasn't, Gnus will just subscribe you to a few arbitrarily
-picked groups (i.e., @samp{*.newusers}). (@dfn{Arbitrary} is defined
-here as @dfn{whatever Lars thinks you should read}.)
-
-You'll also be subscribed to the Gnus documentation group, which should
-help you with most common problems.
-
-If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
-use the normal functions for handling new groups, and not do anything
-special.
-
-
@node The Server is Down
@section The Server is Down
@cindex server errors
@@ -1286,7 +1254,7 @@ parameter (@pxref{Topic Parameters}). For instance, a @code{subscribe}
topic parameter that looks like
@example
-"nnslashdot"
+"nnml"
@end example
will mean that all groups that match that regex will be subscribed under
@@ -1349,11 +1317,18 @@ but I thought it would be nice to have two of these. This variable is
more meant for setting some ground rules, while the other variable is
used more for user fiddling. By default this variable makes all new
groups that come from mail back ends (@code{nnml}, @code{nnbabyl},
-@code{nnfolder}, @code{nnmbox}, @code{nnmh}, and @code{nnmaildir})
-subscribed. If you don't like that, just set this variable to
-@code{nil}.
-
-New groups that match this regexp are subscribed using
+@code{nnfolder}, @code{nnmbox}, @code{nnmh}, @code{nnimap}, and
+@code{nnmaildir}) subscribed. If you don't like that, just set this
+variable to @code{nil}.
+
+@vindex gnus-auto-subscribed-categories
+As if that wasn't enough, @code{gnus-auto-subscribed-categories} also
+allows you to specify that new groups should be subcribed based on the
+category their select methods belong to. The default is @samp{(mail
+post-mail)}, meaning that all new groups from mail-like backends
+should be subscribed automatically.
+
+New groups that match these variables are subscribed using
@code{gnus-subscribe-options-newsgroup-method}.
@@ -1376,31 +1351,11 @@ you have read is by keeping track of article numbers. So when you
change @code{gnus-select-method}, your @file{.newsrc} file becomes
worthless.
-Gnus provides a few functions to attempt to translate a @file{.newsrc}
-file from one server to another. They all have one thing in
-common---they take a looong time to run. You don't want to use these
-functions more than absolutely necessary.
-
-@kindex M-x gnus-change-server
-@findex gnus-change-server
-If you have access to both servers, Gnus can request the headers for all
-the articles you have read and compare @code{Message-ID}s and map the
-article numbers of the read articles and article marks. The @kbd{M-x
-gnus-change-server} command will do this for all your native groups. It
-will prompt for the method you want to move to.
-
-@kindex M-x gnus-group-move-group-to-server
-@findex gnus-group-move-group-to-server
-You can also move individual groups with the @kbd{M-x
-gnus-group-move-group-to-server} command. This is useful if you want to
-move a (foreign) group from one server to another.
-
@kindex M-x gnus-group-clear-data-on-native-groups
@findex gnus-group-clear-data-on-native-groups
-If you don't have access to both the old and new server, all your marks
-and read ranges have become worthless. You can use the @kbd{M-x
-gnus-group-clear-data-on-native-groups} command to clear out all data
-that you have on your native groups. Use with caution.
+You can use the @kbd{M-x gnus-group-clear-data-on-native-groups}
+command to clear out all data that you have on your native groups.
+Use with caution.
@kindex M-x gnus-group-clear-data
@findex gnus-group-clear-data
@@ -1659,14 +1614,11 @@ of doing your job. Note that this variable is used before
@vindex gnus-no-groups-message
Message displayed by Gnus when no groups are available.
-@item gnus-play-startup-jingle
-@vindex gnus-play-startup-jingle
-If non-@code{nil}, play the Gnus jingle at startup.
-
-@item gnus-startup-jingle
-@vindex gnus-startup-jingle
-Jingle to be played if the above variable is non-@code{nil}. The
-default is @samp{Tuxedomoon.Jingle4.au}.
+@item gnus-use-backend-marks
+@vindex gnus-use-backend-marks
+If non-@code{nil}, Gnus will store article marks both in the
+@file{.newsrc.eld} file and in the backends. This will slow down
+group operation some.
@end table
@@ -1731,7 +1683,6 @@ long as Gnus is active.
* Exiting Gnus:: Stop reading news and get some work done.
* Group Topics:: A folding group mode divided into topics.
* Non-ASCII Group Names:: Accessing groups of non-English names.
-* Searching:: Mail search engines.
* Misc Group Stuff:: Other stuff that you can to do.
@end menu
@@ -2018,8 +1969,7 @@ functions for snarfing info on the group.
@vindex gnus-group-update-hook
@findex gnus-group-highlight-line
@code{gnus-group-update-hook} is called when a group line is changed.
-It will not be called when @code{gnus-visual} is @code{nil}. This hook
-calls @code{gnus-group-highlight-line} by default.
+It will not be called when @code{gnus-visual} is @code{nil}.
@node Group Maneuvering
@@ -2247,6 +2197,12 @@ selected.
@section Subscription Commands
@cindex subscription
+The following commands allow for managing your subscriptions in the
+Group buffer. If you want to subscribe to many groups, it's probably
+more convenient to go to the @ref{Server Buffer}, and choose the
+server there using @kbd{RET} or @kbd{SPC}. Then you'll have the
+commands listed in @ref{Browse Foreign Server} at hand.
+
@table @kbd
@item S t
@@ -2445,6 +2401,9 @@ one with the best level.
All groups with a level less than or equal to
@code{gnus-group-default-list-level} will be listed in the group buffer
by default.
+This variable can also be a function. In that case, that function will
+be called and the result will be used as value.
+
@vindex gnus-group-list-inactive-groups
If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
@@ -2560,6 +2519,15 @@ the command to be executed.
@section Foreign Groups
@cindex foreign groups
+If you recall how to subscribe to servers (@pxref{Finding the News})
+you will remember that @code{gnus-secondary-select-methods} and
+@code{gnus-select-method} let you write a definition in Emacs Lisp of
+what servers you want to see when you start up. The alternate
+approach is to use foreign servers and groups. ``Foreign'' here means
+they are not coming from the select methods. All foreign server
+configuration and subscriptions are stored only in the
+@file{~/.newsrc.eld} file.
+
Below are some group mode commands for making and editing general foreign
groups, as well as commands to ease the creation of a few
special-purpose groups. All these commands insert the newly created
@@ -2633,27 +2601,6 @@ for a directory name (@code{gnus-group-make-directory-group}).
@findex gnus-group-make-help-group
Make the Gnus help group (@code{gnus-group-make-help-group}).
-@item G a
-@kindex G a (Group)
-@cindex (ding) archive
-@cindex archive group
-@findex gnus-group-make-archive-group
-@vindex gnus-group-archive-directory
-@vindex gnus-group-recent-archive-directory
-Make a Gnus archive group (@code{gnus-group-make-archive-group}). By
-default a group pointing to the most recent articles will be created
-(@code{gnus-group-recent-archive-directory}), but given a prefix, a full
-group will be created from @code{gnus-group-archive-directory}.
-
-@item G k
-@kindex G k (Group)
-@findex gnus-group-make-kiboze-group
-@cindex nnkiboze
-Make a kiboze group. You will be prompted for a name, for a regexp to
-match groups to be ``included'' in the kiboze group, and a series of
-strings to match on headers (@code{gnus-group-make-kiboze-group}).
-@xref{Kibozed Groups}.
-
@item G D
@kindex G D (Group)
@findex gnus-group-enter-directory
@@ -3373,6 +3320,11 @@ List all groups with cached articles (@code{gnus-group-list-cached}).
@findex gnus-group-list-dormant
List all groups with dormant articles (@code{gnus-group-list-dormant}).
+@item A !
+@kindex A ! (Group)
+@findex gnus-group-list-ticked
+List all groups with ticked articles (@code{gnus-group-list-ticked}).
+
@item A /
@kindex A / (Group)
@findex gnus-group-list-limit
@@ -3655,8 +3607,12 @@ Enter the current group (@code{gnus-browse-select-group}).
@item u
@kindex u (Browse)
@findex gnus-browse-unsubscribe-current-group
+@vindex gnus-browse-subscribe-newsgroup-method
Unsubscribe to the current group, or, as will be the case here,
-subscribe to it (@code{gnus-browse-unsubscribe-current-group}).
+subscribe to it (@code{gnus-browse-unsubscribe-current-group}). You
+can affect the way the new group is entered into the Group buffer
+using the variable @code{gnus-browse-subscribe-newsgroup-method}. See
+@pxref{Subscription Methods} for available options.
@item l
@itemx q
@@ -4362,713 +4318,6 @@ names should be the same in both groups. Otherwise the Newsgroups
header will be displayed incorrectly in the article buffer.
-@node Searching
-@section Searching
-
-@menu
-* nnir:: Searching on IMAP, with swish, namazu, etc.
-* nnmairix:: Searching maildir, MH or mbox with Mairix.
-@end menu
-
-@cindex Searching
-
-FIXME: This node is a stub.
-
-FIXME: Add a brief overview of Gnus search capabilities. A brief
-comparison of nnir, nnmairix, contrib/gnus-namazu would be nice
-as well.
-
-FIXME: Explain difference to @ref{Searching for Articles}, add reference
-and back-reference.
-
-@node nnir
-@subsection nnir
-
-FIXME: As a first step, convert the commentary of @file{nnir} to texi.
-@cindex nnir
-
-@node nnmairix
-@subsection nnmairix
-
-@cindex mairix
-@cindex nnmairix
-This paragraph describes how to set up mairix and the back end
-@code{nnmairix} for indexing and searching your mail from within
-Gnus. Additionally, you can create permanent ``smart'' groups which are
-bound to mairix searches and are automatically updated.
-
-@menu
-* About mairix:: About the mairix mail search engine
-* nnmairix requirements:: What you will need for using nnmairix
-* What nnmairix does:: What does nnmairix actually do?
-* Setting up mairix:: Set up your mairix installation
-* Configuring nnmairix:: Set up the nnmairix back end
-* nnmairix keyboard shortcuts:: List of available keyboard shortcuts
-* Propagating marks:: How to propagate marks from nnmairix groups
-* nnmairix tips and tricks:: Some tips, tricks and examples
-* nnmairix caveats:: Some more stuff you might want to know
-@end menu
-
-@c FIXME: The markup in this section might need improvement.
-@c E.g. adding @samp, @var, @file, @command, etc.
-@c Cf. (info "(texinfo)Indicating")
-
-@node About mairix
-@subsubsection About mairix
-
-Mairix is a tool for indexing and searching words in locally stored
-mail. It was written by Richard Curnow and is licensed under the
-GPL. Mairix comes with most popular GNU/Linux distributions, but it also
-runs under Windows (with cygwin), Mac OS X and Solaris. The homepage can
-be found at
-@uref{http://www.rpcurnow.force9.co.uk/mairix/index.html}
-
-Though mairix might not be as flexible as other search tools like
-swish++ or namazu, which you can use via the @code{nnir} back end, it
-has the prime advantage of being incredibly fast. On current systems, it
-can easily search through headers and message bodies of thousands and
-thousands of mails in well under a second. Building the database
-necessary for searching might take a minute or two, but only has to be
-done once fully. Afterwards, the updates are done incrementally and
-therefore are really fast, too. Additionally, mairix is very easy to set
-up.
-
-For maximum speed though, mairix should be used with mails stored in
-@code{Maildir} or @code{MH} format (this includes the @code{nnml} back
-end), although it also works with mbox. Mairix presents the search
-results by populating a @emph{virtual} maildir/MH folder with symlinks
-which point to the ``real'' message files (if mbox is used, copies are
-made). Since mairix already presents search results in such a virtual
-mail folder, it is very well suited for using it as an external program
-for creating @emph{smart} mail folders, which represent certain mail
-searches. This is similar to a Kiboze group (@pxref{Kibozed Groups}),
-but much faster.
-
-@node nnmairix requirements
-@subsubsection nnmairix requirements
-
-Mairix searches local mail---that means, mairix absolutely must have
-direct access to your mail folders. If your mail resides on another
-server (e.g. an @acronym{IMAP} server) and you happen to have shell
-access, @code{nnmairix} supports running mairix remotely, e.g. via ssh.
-
-Additionally, @code{nnmairix} only supports the following Gnus back
-ends: @code{nnml}, @code{nnmaildir}, and @code{nnimap}. You must use
-one of these back ends for using @code{nnmairix}. Other back ends, like
-@code{nnmbox}, @code{nnfolder} or @code{nnmh}, won't work.
-
-If you absolutely must use mbox and still want to use @code{nnmairix},
-you can set up a local @acronym{IMAP} server, which you then access via
-@code{nnimap}. This is a rather massive setup for accessing some mbox
-files, so just change to MH or Maildir already... However, if you're
-really, really passionate about using mbox, you might want to look into
-the package @file{mairix.el}, which comes with Emacs 23.
-
-@node What nnmairix does
-@subsubsection What nnmairix does
-
-The back end @code{nnmairix} enables you to call mairix from within Gnus,
-either to query mairix with a search term or to update the
-database. While visiting a message in the summary buffer, you can use
-several pre-defined shortcuts for calling mairix, e.g. to quickly
-search for all mails from the sender of the current message or to
-display the whole thread associated with the message, even if the
-mails are in different folders.
-
-Additionally, you can create permanent @code{nnmairix} groups which are bound
-to certain mairix searches. This way, you can easily create a group
-containing mails from a certain sender, with a certain subject line or
-even for one specific thread based on the Message-ID. If you check for
-new mail in these folders (e.g. by pressing @kbd{g} or @kbd{M-g}), they
-automatically update themselves by calling mairix.
-
-You might ask why you need @code{nnmairix} at all, since mairix already
-creates the group, populates it with links to the mails so that you can
-then access it with Gnus, right? Well, this @emph{might} work, but often
-does not---at least not without problems. Most probably you will get
-strange article counts, and sometimes you might see mails which Gnus
-claims have already been canceled and are inaccessible. This is due to
-the fact that Gnus isn't really amused when things are happening behind
-its back. Another problem can be the mail back end itself, e.g. if you
-use mairix with an @acronym{IMAP} server (I had Dovecot complaining
-about corrupt index files when mairix changed the contents of the search
-group). Using @code{nnmairix} should circumvent these problems.
-
-@code{nnmairix} is not really a mail back end---it's actually more like
-a wrapper, sitting between a ``real'' mail back end where mairix stores
-the searches and the Gnus front end. You can choose between three
-different mail back ends for the mairix folders: @code{nnml},
-@code{nnmaildir} or @code{nnimap}. @code{nnmairix} will call the mairix
-binary so that the search results are stored in folders named
-@code{zz_mairix-<NAME>-<NUMBER>} on this mail back end, but it will
-present these folders in the Gnus front end only with @code{<NAME>}.
-You can use an existing mail back end where you already store your mail,
-but if you're uncomfortable with @code{nnmairix} creating new mail
-groups alongside your other mail, you can also create e.g. a new
-@code{nnmaildir} or @code{nnml} server exclusively for mairix, but then
-make sure those servers do not accidentally receive your new mail
-(@pxref{nnmairix caveats}). A special case exists if you want to use
-mairix remotely on an IMAP server with @code{nnimap}---here the mairix
-folders and your other mail must be on the same @code{nnimap} back end.
-
-@node Setting up mairix
-@subsubsection Setting up mairix
-
-First: create a backup of your mail folders (@pxref{nnmairix caveats}).
-
-Setting up mairix is easy: simply create a @file{.mairixrc} file with
-(at least) the following entries:
-
-@example
-# Your Maildir/MH base folder
-base=~/Maildir
-@end example
-
-This is the base folder for your mails. All the following directories
-are relative to this base folder. If you want to use @code{nnmairix}
-with @code{nnimap}, this base directory has to point to the mail
-directory where the @acronym{IMAP} server stores the mail folders!
-
-@example
-maildir= ... your maildir folders which should be indexed ...
-mh= ... your nnml/mh folders which should be indexed ...
-mbox = ... your mbox files which should be indexed ...
-@end example
-
-This specifies all your mail folders and mbox files (relative to the
-base directory!) you want to index with mairix. Note that the
-@code{nnml} back end saves mails in MH format, so you have to put those
-directories in the @code{mh} line. See the example at the end of this
-section and mairixrc's man-page for further details.
-
-@example
-omit=zz_mairix-*
-@end example
-
-@vindex nnmairix-group-prefix
-This should make sure that you don't accidentally index the mairix
-search results. You can change the prefix of these folders with the
-variable @code{nnmairix-group-prefix}.
-
-@example
-mformat= ... 'maildir' or 'mh' ...
-database= ... location of database file ...
-@end example
-
-The @code{format} setting specifies the output format for the mairix
-search folder. Set this to @code{mh} if you want to access search results
-with @code{nnml}. Otherwise choose @code{maildir}.
-
-To summarize, here is my shortened @file{.mairixrc} file as an example:
-
-@example
-base=~/Maildir
-maildir=.personal:.work:.logcheck:.sent
-mh=../Mail/nnml/*...
-mbox=../mboxmail/mailarchive_year*
-mformat=maildir
-omit=zz_mairix-*
-database=~/.mairixdatabase
-@end example
-
-In this case, the base directory is @file{~/Maildir}, where all my Maildir
-folders are stored. As you can see, the folders are separated by
-colons. If you wonder why every folder begins with a dot: this is
-because I use Dovecot as @acronym{IMAP} server, which again uses
-@code{Maildir++} folders. For testing nnmairix, I also have some
-@code{nnml} mail, which is saved in @file{~/Mail/nnml}. Since this has
-to be specified relative to the @code{base} directory, the @code{../Mail}
-notation is needed. Note that the line ends in @code{*...}, which means
-to recursively scan all files under this directory. Without the three
-dots, the wildcard @code{*} will not work recursively. I also have some
-old mbox files with archived mail lying around in @file{~/mboxmail}.
-The other lines should be obvious.
-
-See the man page for @code{mairixrc} for details and further options,
-especially regarding wildcard usage, which may be a little different
-than you are used to.
-
-Now simply call @code{mairix} to create the index for the first time.
-Note that this may take a few minutes, but every following index will do
-the updates incrementally and hence is very fast.
-
-@node Configuring nnmairix
-@subsubsection Configuring nnmairix
-
-In group mode, type @kbd{G b c}
-(@code{nnmairix-create-server-and-default-group}). This will ask you for all
-necessary information and create a @code{nnmairix} server as a foreign
-server. You will have to specify the following:
-
-@itemize @bullet
-
-@item
-The @strong{name} of the @code{nnmairix} server---choose whatever you
-want.
-
-@item
-The name of the @strong{back end server} where mairix should store its
-searches. This must be a full server name, like @code{nnml:mymail}.
-Just hit @kbd{TAB} to see the available servers. Currently, servers
-which are accessed through @code{nnmaildir}, @code{nnimap} and
-@code{nnml} are supported. As explained above, for locally stored
-mails, this can be an existing server where you store your mails.
-However, you can also create e.g. a new @code{nnmaildir} or @code{nnml}
-server exclusively for @code{nnmairix} in your secondary select methods
-(@pxref{Finding the News}). If you use a secondary @code{nnml} server
-just for mairix, make sure that you explicitly set the server variable
-@code{nnml-get-new-mail} to @code{nil}, or you might loose mail
-(@pxref{nnmairix caveats}). If you want to use mairix remotely on an
-@acronym{IMAP} server, you have to choose the corresponding
-@code{nnimap} server here.
-
-@item
-@vindex nnmairix-mairix-search-options
-The @strong{command} to call the mairix binary. This will usually just
-be @code{mairix}, but you can also choose something like @code{ssh
-SERVER mairix} if you want to call mairix remotely, e.g. on your
-@acronym{IMAP} server. If you want to add some default options to
-mairix, you could do this here, but better use the variable
-@code{nnmairix-mairix-search-options} instead.
-
-@item
-The name of the @strong{default search group}. This will be the group
-where all temporary mairix searches are stored, i.e. all searches which
-are not bound to permanent @code{nnmairix} groups. Choose whatever you
-like.
-
-@item
-If the mail back end is @code{nnimap} or @code{nnmaildir}, you will be
-asked if you work with @strong{Maildir++}, i.e. with hidden maildir
-folders (=beginning with a dot). For example, you have to answer
-@samp{yes} here if you work with the Dovecot @acronym{IMAP}
-server. Otherwise, you should answer @samp{no} here.
-
-@end itemize
-
-@node nnmairix keyboard shortcuts
-@subsubsection nnmairix keyboard shortcuts
-
-In group mode:
-
-@table @kbd
-
-@item G b c
-@kindex G b c (Group)
-@findex nnmairix-create-server-and-default-group
-Creates @code{nnmairix} server and default search group for this server
-(@code{nnmairix-create-server-and-default-group}). You should have done
-this by now (@pxref{Configuring nnmairix}).
-
-@item G b s
-@kindex G b s (Group)
-@findex nnmairix-search
-Prompts for query which is then sent to the mairix binary. Search
-results are put into the default search group which is automatically
-displayed (@code{nnmairix-search}).
-
-@item G b m
-@kindex G b m (Group)
-@findex nnmairix-widget-search
-Allows you to create a mairix search or a permanent group more
-comfortably using graphical widgets, similar to a customization
-group. Just try it to see how it works (@code{nnmairix-widget-search}).
-
-@item G b i
-@kindex G b i (Group)
-@findex nnmairix-search-interactive
-Another command for creating a mairix query more comfortably, but uses
-only the minibuffer (@code{nnmairix-search-interactive}).
-
-@item G b g
-@kindex G b g (Group)
-@findex nnmairix-create-search-group
-Creates a permanent group which is associated with a search query
-(@code{nnmairix-create-search-group}). The @code{nnmairix} back end
-automatically calls mairix when you update this group with @kbd{g} or
-@kbd{M-g}.
-
-@item G b q
-@kindex G b q (Group)
-@findex nnmairix-group-change-query-this-group
-Changes the search query for the @code{nnmairix} group under cursor
-(@code{nnmairix-group-change-query-this-group}).
-
-@item G b t
-@kindex G b t (Group)
-@findex nnmairix-group-toggle-threads-this-group
-Toggles the 'threads' parameter for the @code{nnmairix} group under cursor,
-i.e. if you want see the whole threads of the found messages
-(@code{nnmairix-group-toggle-threads-this-group}).
-
-@item G b u
-@kindex G b u (Group)
-@findex nnmairix-update-database
-@vindex nnmairix-mairix-update-options
-Calls mairix binary for updating the database
-(@code{nnmairix-update-database}). The default parameters are @code{-F}
-and @code{-Q} for making this as fast as possible (see variable
-@code{nnmairix-mairix-update-options} for defining these default
-options).
-
-@item G b r
-@kindex G b r (Group)
-@findex nnmairix-group-toggle-readmarks-this-group
-Keep articles in this @code{nnmairix} group always read or unread, or leave the
-marks unchanged (@code{nnmairix-group-toggle-readmarks-this-group}).
-
-@item G b d
-@kindex G b d (Group)
-@findex nnmairix-group-delete-recreate-this-group
-Recreate @code{nnmairix} group on the ``real'' mail back end
-(@code{nnmairix-group-delete-recreate-this-group}). You can do this if
-you always get wrong article counts with a @code{nnmairix} group.
-
-@item G b a
-@kindex G b a (Group)
-@findex nnmairix-group-toggle-allowfast-this-group
-Toggles the @code{allow-fast} parameters for group under cursor
-(@code{nnmairix-group-toggle-allowfast-this-group}). The default
-behavior of @code{nnmairix} is to do a mairix search every time you
-update or enter the group. With the @code{allow-fast} parameter set,
-mairix will only be called when you explicitly update the group, but not
-upon entering. This makes entering the group faster, but it may also
-lead to dangling symlinks if something changed between updating and
-entering the group which is not yet in the mairix database.
-
-@item G b p
-@kindex G b p (Group)
-@findex nnmairix-group-toggle-propmarks-this-group
-Toggle marks propagation for this group
-(@code{nnmairix-group-toggle-propmarks-this-group}). (@pxref{Propagating
-marks}).
-
-@item G b o
-@kindex G b o (Group)
-@findex nnmairix-propagate-marks
-Manually propagate marks (@code{nnmairix-propagate-marks}); needed only when
-@code{nnmairix-propagate-marks-upon-close} is set to @code{nil}.
-
-@end table
-
-In summary mode:
-
-@table @kbd
-
-@item $ m
-@kindex $ m (Summary)
-@findex nnmairix-widget-search-from-this-article
-Allows you to create a mairix query or group based on the current
-message using graphical widgets (same as @code{nnmairix-widget-search})
-(@code{nnmairix-widget-search-from-this-article}).
-
-@item $ g
-@kindex $ g (Summary)
-@findex nnmairix-create-search-group-from-message
-Interactively creates a new search group with query based on the current
-message, but uses the minibuffer instead of graphical widgets
-(@code{nnmairix-create-search-group-from-message}).
-
-@item $ t
-@kindex $ t (Summary)
-@findex nnmairix-search-thread-this-article
-Searches thread for the current article
-(@code{nnmairix-search-thread-this-article}). This is effectively a
-shortcut for calling @code{nnmairix-search} with @samp{m:msgid} of the
-current article and enabled threads.
-
-@item $ f
-@kindex $ f (Summary)
-@findex nnmairix-search-from-this-article
-Searches all messages from sender of the current article
-(@code{nnmairix-search-from-this-article}). This is a shortcut for
-calling @code{nnmairix-search} with @samp{f:From}.
-
-@item $ o
-@kindex $ o (Summary)
-@findex nnmairix-goto-original-article
-(Only in @code{nnmairix} groups!) Tries determine the group this article
-originally came from and displays the article in this group, so that
-e.g. replying to this article the correct posting styles/group
-parameters are applied (@code{nnmairix-goto-original-article}). This
-function will use the registry if available, but can also parse the
-article file name as a fallback method.
-
-@item $ u
-@kindex $ u (Summary)
-@findex nnmairix-remove-tick-mark-original-article
-Remove possibly existing tick mark from original article
-(@code{nnmairix-remove-tick-mark-original-article}). (@pxref{nnmairix
-tips and tricks}).
-
-@end table
-
-@node Propagating marks
-@subsubsection Propagating marks
-
-First of: you really need a patched mairix binary for using the marks
-propagation feature efficiently. Otherwise, you would have to update
-the mairix database all the time. You can get the patch at
-
-@uref{http://www.randomsample.de/mairix-maildir-patch.tar}
-
-You need the mairix v0.21 source code for this patch; everything else
-is explained in the accompanied readme file. If you don't want to use
-marks propagation, you don't have to apply these patches, but they also
-fix some annoyances regarding changing maildir flags, so it might still
-be useful to you.
-
-With the patched mairix binary, you can use @code{nnmairix} as an
-alternative to mail splitting (@pxref{Fancy Mail Splitting}). For
-example, instead of splitting all mails from @samp{david@@foobar.com}
-into a group, you can simply create a search group with the query
-@samp{f:david@@foobar.com}. This is actually what ``smart folders'' are
-all about: simply put everything in one mail folder and dynamically
-create searches instead of splitting. This is more flexible, since you
-can dynamically change your folders any time you want to. This also
-implies that you will usually read your mails in the @code{nnmairix}
-groups instead of your ``real'' mail groups.
-
-There is one problem, though: say you got a new mail from
-@samp{david@@foobar.com}; it will now show up in two groups, the
-``real'' group (your INBOX, for example) and in the @code{nnmairix}
-search group (provided you have updated the mairix database). Now you
-enter the @code{nnmairix} group and read the mail. The mail will be
-marked as read, but only in the @code{nnmairix} group---in the ``real''
-mail group it will be still shown as unread.
-
-You could now catch up the mail group (@pxref{Group Data}), but this is
-tedious and error prone, since you may overlook mails you don't have
-created @code{nnmairix} groups for. Of course, you could first use
-@code{nnmairix-goto-original-article} (@pxref{nnmairix keyboard
-shortcuts}) and then read the mail in the original group, but that's
-even more cumbersome.
-
-Clearly, the easiest way would be if marks could somehow be
-automatically set for the original article. This is exactly what
-@emph{marks propagation} is about.
-
-Marks propagation is deactivated by default. You can activate it for a
-certain @code{nnmairix} group with
-@code{nnmairix-group-toggle-propmarks-this-group} (bound to @kbd{G b
-p}). This function will warn you if you try to use it with your default
-search group; the reason is that the default search group is used for
-temporary searches, and it's easy to accidentally propagate marks from
-this group. However, you can ignore this warning if you really want to.
-
-With marks propagation enabled, all the marks you set in a @code{nnmairix}
-group should now be propagated to the original article. For example,
-you can now tick an article (by default with @kbd{!}) and this mark should
-magically be set for the original article, too.
-
-A few more remarks which you may or may not want to know:
-
-@vindex nnmairix-propagate-marks-upon-close
-Marks will not be set immediately, but only upon closing a group. This
-not only makes marks propagation faster, it also avoids problems with
-dangling symlinks when dealing with maildir files (since changing flags
-will change the file name). You can also control when to propagate marks
-via @code{nnmairix-propagate-marks-upon-close} (see the doc-string for
-details).
-
-Obviously, @code{nnmairix} will have to look up the original group for every
-article you want to set marks for. If available, @code{nnmairix} will first use
-the registry for determining the original group. The registry is very
-fast, hence you should really, really enable the registry when using
-marks propagation. If you don't have to worry about RAM and disc space,
-set @code{gnus-registry-max-entries} to a large enough value; to be on
-the safe side, choose roughly the amount of mails you index with mairix.
-
-@vindex nnmairix-only-use-registry
-If you don't want to use the registry or the registry hasn't seen the
-original article yet, @code{nnmairix} will use an additional mairix
-search for determining the file name of the article. This, of course, is
-way slower than the registry---if you set hundreds or even thousands of
-marks this way, it might take some time. You can avoid this situation by
-setting @code{nnmairix-only-use-registry} to t.
-
-Maybe you also want to propagate marks the other way round, i.e. if you
-tick an article in a "real" mail group, you'd like to have the same
-article in a @code{nnmairix} group ticked, too. For several good
-reasons, this can only be done efficiently if you use maildir. To
-immediately contradict myself, let me mention that it WON'T work with
-@code{nnmaildir}, since @code{nnmaildir} stores the marks externally and
-not in the file name. Therefore, propagating marks to @code{nnmairix}
-groups will usually only work if you use an IMAP server which uses
-maildir as its file format.
-
-@vindex nnmairix-propagate-marks-to-nnmairix-groups
-If you work with this setup, just set
-@code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t} and see what
-happens. If you don't like what you see, just set it to @code{nil} again. One
-problem might be that you get a wrong number of unread articles; this
-usually happens when you delete or expire articles in the original
-groups. When this happens, you can recreate the @code{nnmairix} group on the
-back end using @kbd{G b d}.
-
-@node nnmairix tips and tricks
-@subsubsection nnmairix tips and tricks
-
-@itemize
-@item
-Checking Mail
-
-@findex nnmairix-update-groups
-I put all my important mail groups at group level 1. The mairix groups
-have group level 5, so they do not get checked at start up (@pxref{Group
-Levels}).
-
-I use the following to check for mails:
-
-@lisp
-(defun my-check-mail-mairix-update (level)
- (interactive "P")
- ;; if no prefix given, set level=1
- (gnus-group-get-new-news (or level 1))
- (nnmairix-update-groups "mairixsearch" t t)
- (gnus-group-list-groups))
-
-(define-key gnus-group-mode-map "g" 'my-check-mail-mairix-update)
-@end lisp
-
-Instead of @samp{"mairixsearch"} use the name of your @code{nnmairix}
-server. See the doc string for @code{nnmairix-update-groups} for
-details.
-
-@item
-Example: search group for ticked articles
-
-For example, you can create a group for all ticked articles, where the
-articles always stay unread:
-
-Hit @kbd{G b g}, enter group name (e.g. @samp{important}), use
-@samp{F:f} as query and do not include threads.
-
-Now activate marks propagation for this group by using @kbd{G b p}. Then
-activate the always-unread feature by using @kbd{G b r} twice.
-
-So far so good---but how do you remove the tick marks in the @code{nnmairix}
-group? There are two options: You may simply use
-@code{nnmairix-remove-tick-mark-original-article} (bound to @kbd{$ u}) to remove
-tick marks from the original article. The other possibility is to set
-@code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t}, but see the above
-comments about this option. If it works for you, the tick marks should
-also exist in the @code{nnmairix} group and you can remove them as usual,
-e.g. by marking an article as read.
-
-When you have removed a tick mark from the original article, this
-article should vanish from the @code{nnmairix} group after you have updated the
-mairix database and updated the group. Fortunately, there is a function
-for doing exactly that: @code{nnmairix-update-groups}. See the previous code
-snippet and the doc string for details.
-
-@item
-Dealing with auto-subscription of mail groups
-
-As described before, all @code{nnmairix} groups are in fact stored on
-the mail back end in the form @samp{zz_mairix-<NAME>-<NUMBER>}. You can
-see them when you enter the back end server in the server buffer. You
-should not subscribe these groups! Unfortunately, these groups will
-usually get @emph{auto-subscribed} when you use @code{nnmaildir} or
-@code{nnml}, i.e. you will suddenly see groups of the form
-@samp{zz_mairix*} pop up in your group buffer. If this happens to you,
-simply kill these groups with C-k. For avoiding this, turn off
-auto-subscription completely by setting the variable
-@code{gnus-auto-subscribed-groups} to @code{nil} (@pxref{Filtering New
-Groups}), or if you like to keep this feature use the following kludge
-for turning it off for all groups beginning with @samp{zz_}:
-
-@lisp
-(setq gnus-auto-subscribed-groups
- "^\\(nnml\\|nnfolder\\|nnmbox\\|nnmh\\|nnbabyl\\|nnmaildir\\).*:\\([^z]\\|z$\\|\\z[^z]\\|zz$\\|zz[^_]\\|zz_$\\).*")
-@end lisp
-
-@end itemize
-
-@node nnmairix caveats
-@subsubsection nnmairix caveats
-
-@itemize
-@item
-You can create a secondary @code{nnml} server just for nnmairix, but then
-you have to explicitly set the corresponding server variable
-@code{nnml-get-new-mail} to @code{nil}. Otherwise, new mail might get
-put into this secondary server (and would never show up again). Here's
-an example server definition:
-
-@lisp
-(nnml "mairix" (nnml-directory "mairix") (nnml-get-new-mail nil))
-@end lisp
-
-(The @code{nnmaildir} back end also has a server variabe
-@code{get-new-mail}, but its default value is @code{nil}, so you don't
-have to explicitly set it if you use a @code{nnmaildir} server just for
-mairix.)
-
-@item
-If you use the Gnus registry: don't use the registry with
-@code{nnmairix} groups (put them in
-@code{gnus-registry-unfollowed-groups}). Be @emph{extra careful} if
-you use @code{gnus-registry-split-fancy-with-parent}; mails which are
-split into @code{nnmairix} groups are usually gone for good as soon as
-you check the group for new mail (yes, it has happened to me...).
-
-@item
-Therefore: @emph{Never ever} put ``real'' mails into @code{nnmairix}
-groups (you shouldn't be able to, anyway).
-
-@item
-If you use the Gnus agent (@pxref{Gnus Unplugged}): don't agentize
-@code{nnmairix} groups (though I have no idea what happens if you do).
-
-@item
-mairix does only support us-ascii characters.
-
-@item
-@code{nnmairix} uses a rather brute force method to force Gnus to
-completely reread the group on the mail back end after mairix was
-called---it simply deletes and re-creates the group on the mail
-back end. So far, this has worked for me without any problems, and I
-don't see how @code{nnmairix} could delete other mail groups than its
-own, but anyway: you really should have a backup of your mail
-folders.
-
-@item
-All necessary information is stored in the group parameters
-(@pxref{Group Parameters}). This has the advantage that no active file
-is needed, but also implies that when you kill a @code{nnmairix} group,
-it is gone for good.
-
-@item
-@findex nnmairix-purge-old-groups
-If you create and kill a lot of @code{nnmairix} groups, the
-``zz_mairix-*'' groups will accumulate on the mail back end server. To
-delete old groups which are no longer needed, call
-@code{nnmairix-purge-old-groups}. Note that this assumes that you don't
-save any ``real'' mail in folders of the form
-@code{zz_mairix-<NAME>-<NUMBER>}. You can change the prefix of
-@code{nnmairix} groups by changing the variable
-@code{nnmairix-group-prefix}.
-
-@item
-The following only applies if you @emph{don't} use the mentioned patch
-for mairix (@pxref{Propagating marks}):
-
-A problem can occur when using @code{nnmairix} with maildir folders and
-comes with the fact that maildir stores mail flags like @samp{Seen} or
-@samp{Replied} by appending chars @samp{S} and @samp{R} to the message
-file name, respectively. This implies that currently you would have to
-update the mairix database not only when new mail arrives, but also when
-mail flags are changing. The same applies to new mails which are indexed
-while they are still in the @samp{new} folder but then get moved to
-@samp{cur} when Gnus has seen the mail. If you don't update the database
-after this has happened, a mairix query can lead to symlinks pointing to
-non-existing files. In Gnus, these messages will usually appear with
-``(none)'' entries in the header and can't be accessed. If this happens
-to you, using @kbd{G b u} and updating the group will usually fix this.
-
-@end itemize
-
@node Misc Group Stuff
@section Misc Group Stuff
@@ -5249,37 +4498,6 @@ used for fetching the file.
If fetching from the first site is unsuccessful, Gnus will attempt to go
through @code{gnus-group-faq-directory} and try to open them one by one.
-@item H c
-@kindex H c (Group)
-@findex gnus-group-fetch-charter
-@vindex gnus-group-charter-alist
-@cindex charter
-Try to open the charter for the current group in a web browser
-(@code{gnus-group-fetch-charter}). Query for a group if given a
-prefix argument.
-
-Gnus will use @code{gnus-group-charter-alist} to find the location of
-the charter. If no location is known, Gnus will fetch the control
-messages for the group, which in some cases includes the charter.
-
-@item H C
-@kindex H C (Group)
-@findex gnus-group-fetch-control
-@vindex gnus-group-fetch-control-use-browse-url
-@cindex control message
-Fetch the control messages for the group from the archive at
-@code{ftp.isc.org} (@code{gnus-group-fetch-control}). Query for a
-group if given a prefix argument.
-
-If @code{gnus-group-fetch-control-use-browse-url} is non-@code{nil},
-Gnus will open the control messages in a browser using
-@code{browse-url}. Otherwise they are fetched using @code{ange-ftp}
-and displayed in an ephemeral group.
-
-Note that the control messages are compressed. To use this command
-you need to turn on @code{auto-compression-mode} (@pxref{Compressed
-Files, ,Compressed Files, emacs, The Emacs Manual}).
-
@item H d
@itemx C-c C-d
@c @icon{gnus-group-describe-group}
@@ -6034,6 +5252,11 @@ threads.
This variable can also be a number. In that case, center the window at
the given number of lines from the top.
+@item gnus-summary-stop-at-end-of-message
+@vindex gnus-summary-stop-at-end-of-message
+If non-@code{nil}, don't go to the next article when hitting
+@kbd{SPC}, and you're at the end of the article.
+
@end table
@@ -6239,9 +5462,10 @@ Scroll the current article one line backward
@findex gnus-summary-show-article
@vindex gnus-summary-show-article-charset-alist
(Re)fetch the current article (@code{gnus-summary-show-article}). If
-given a prefix, fetch the current article, but don't run any of the
-article treatment functions. This will give you a ``raw'' article, just
-the way it came from the server.
+given a prefix, show a completely ``raw'' article, just the way it
+came from the server. If given a prefix twice (i.e., @kbd{C-u C-u
+g'}), fetch the current article, but don't run any of the article
+treatment functions.
@cindex charset, view article with different charset
If given a numerical prefix, you can do semi-manual charset stuff.
@@ -6341,7 +5565,8 @@ present, that's used instead.
@findex gnus-summary-wide-reply-with-original
Mail a wide reply to the current article and include the original
message (@code{gnus-summary-wide-reply-with-original}). This command uses
-the process/prefix convention.
+the process/prefix convention, but only uses the headers from the
+first article to determine the recipients.
@item S v
@kindex S v (Summary)
@@ -6405,8 +5630,6 @@ the posting style of the current group. If given a prefix, disable that.
If the prefix is 1, prompt for a group name to find the posting style.
@item S i
-@itemx i
-@kindex i (Summary)
@kindex S i (Summary)
@findex gnus-summary-news-other-window
Prepare a news (@code{gnus-summary-news-other-window}). By default,
@@ -6744,6 +5967,12 @@ Presumably, you want to use the demon for sending due delayed articles.
Just don't forget to set that up :-)
@end table
+When delaying an article with @kbd{C-c C-j}, Message mode will
+automatically add a @code{"Date"} header with the current time. In
+many cases you probably want the @code{"Date"} header to reflect the
+time the message is sent instead. To do this, you have to delete
+@code{Date} from @code{message-draft-headers}.
+
@node Marking Articles
@section Marking Articles
@@ -6852,10 +6081,6 @@ Marked as read by a catchup (@code{gnus-catchup-mark}).
@vindex gnus-canceled-mark
Canceled article (@code{gnus-canceled-mark})
-@item F
-@vindex gnus-souped-mark
-@sc{soup}ed article (@code{gnus-souped-mark}). @xref{SOUP}.
-
@item Q
@vindex gnus-sparse-mark
Sparsely reffed article (@code{gnus-sparse-mark}). @xref{Customizing
@@ -7826,7 +7051,7 @@ This is a rather obscure variable that few will find useful. It's
intended for those non-news newsgroups where the back end has to fetch
quite a lot to present the summary buffer, and where it's impossible to
go back to parents of articles. This is mostly the case in the
-web-based groups, like the @code{nnultimate} groups.
+web-based groups.
If you don't use those, then it's safe to leave this as the default
@code{nil}. If you want to use this variable, it should be a regexp
@@ -8115,7 +7340,9 @@ predicate functions include @code{gnus-thread-sort-by-number},
Each function takes two threads and returns non-@code{nil} if the first
thread should be sorted before the other. Note that sorting really is
-normally done by looking only at the roots of each thread.
+normally done by looking only at the roots of each thread. Exceptions
+to this rule are @code{gnus-thread-sort-by-most-recent-number} and
+@code{gnus-thread-sort-by-most-recent-date}.
If you use more than one function, the primary sort key should be the
last function in the list. You should probably always include
@@ -8262,6 +7489,16 @@ These functions will be called many, many times, so they should
preferably be short and sweet to avoid slowing down Gnus too much.
It's probably a good idea to byte-compile things like this.
+@vindex gnus-async-post-fetch-function
+@findex gnus-html-prefetch-images
+After an article has been prefetched, this
+@code{gnus-async-post-fetch-function} will be called. The buffer will
+be narrowed to the region of the article that was fetched. A useful
+value would be @code{gnus-html-prefetch-images}, which will prefetch
+and store images referenced in the article, so that you don't have to
+wait for them to be fetched when you read the article. This is useful
+for @acronym{HTML} messages that have external images.
+
@vindex gnus-prefetched-article-deletion-strategy
Articles have to be removed from the asynch buffer sooner or later. The
@code{gnus-prefetched-article-deletion-strategy} says when to remove
@@ -9266,7 +8503,8 @@ these articles easier.
* Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
* Article Button Levels:: Controlling appearance of buttons.
* Article Date:: Grumble, UT!
-* Article Display:: Display various stuff---X-Face, Picons, Smileys
+* Article Display:: Display various stuff:
+ X-Face, Picons, Gravatars, Smileys.
* Article Signature:: What is a signature?
* Article Miscellanea:: Various other stuff.
@end menu
@@ -9527,6 +8765,14 @@ signature should be removed, or other symbol, meaning that the
corresponding regular expression in @code{gnus-article-banner-alist} is
used.
+For instance:
+
+@lisp
+(setq gnus-article-banner-alist
+ ((googleGroups .
+ "^\n*--~--~---------\\(.+\n\\)+")))
+@end lisp
+
Regardless of a group, you can hide things like advertisements only when
the sender of an article has a certain mail address specified in
@code{gnus-article-address-banner-alist}.
@@ -9730,6 +8976,17 @@ an attempt to provide more quoting characters. If you see something
like @code{\222} or @code{\264} where you're expecting some kind of
apostrophe or quotation mark, then try this wash.
+@item W U
+@kindex W U (Summary)
+@findex gnus-article-treat-non-ascii
+@cindex Unicode
+@cindex Non-@acronym{ASCII}
+Translate many non-@acronym{ASCII} characters into their
+@acronym{ASCII} equivalents (@code{gnus-article-treat-non-ascii}).
+This is mostly useful if you're on a terminal that has a limited font
+and does't show accented characters, ``advanced'' punctuation, and the
+like. For instance, @samp{�} is tranlated into @samp{>>}, and so on.
+
@item W Y f
@kindex W Y f (Summary)
@findex gnus-article-outlook-deuglify-article
@@ -9845,15 +9102,18 @@ If a prefix is given, a charset will be asked for. If it is a number,
the charset defined in @code{gnus-summary-show-article-charset-alist}
(@pxref{Paging the Article}) will be used.
-@vindex gnus-article-wash-function
The default is to use the function specified by
@code{mm-text-html-renderer} (@pxref{Display Customization, ,Display
Customization, emacs-mime, The Emacs MIME Manual}) to convert the
-@acronym{HTML}, but this is controlled by the
-@code{gnus-article-wash-function} variable. Pre-defined functions you
-can use include:
+@acronym{HTML}. Pre-defined functions you can use include:
@table @code
+@item shr
+Use Gnus simple html renderer.
+
+@item gnus-w3m
+Use Gnus rendered based on w3m.
+
@item w3
Use Emacs/W3.
@@ -10118,18 +9378,6 @@ string is invalid.
An alist of @code{(RATE . REGEXP)} pairs used by the function
@code{gnus-button-mid-or-mail-heuristic}.
-@c Stuff related to gnus-button-tex-level
-
-@item gnus-button-ctan-handler
-@findex gnus-button-ctan-handler
-The function to use for displaying CTAN links. It must take one
-argument, the string naming the URL.
-
-@item gnus-ctan-url
-@vindex gnus-ctan-url
-Top directory of a CTAN (Comprehensive TeX Archive Network) archive used
-by @code{gnus-button-ctan-handler}.
-
@c Misc stuff
@item gnus-article-button-face
@@ -10202,14 +9450,6 @@ Related variables and functions include
@code{gnus-button-mid-or-mail-heuristic}, and
@code{gnus-button-mid-or-mail-heuristic-alist}.
-@item gnus-button-tex-level
-@vindex gnus-button-tex-level
-Controls the display of references to @TeX{} or LaTeX stuff, e.g. for CTAN
-URLs. See the variables @code{gnus-ctan-url},
-@code{gnus-button-ctan-handler},
-@code{gnus-button-ctan-directory-regexp}, and
-@code{gnus-button-handle-ctan-bogus-regexp}.
-
@end table
@@ -10266,26 +9506,21 @@ Say how much time has elapsed between the article was posted and now
(@code{gnus-article-date-lapsed}). It looks something like:
@example
-X-Sent: 6 weeks, 4 days, 1 hour, 3 minutes, 8 seconds ago
+Date: 6 weeks, 4 days, 1 hour, 3 minutes, 8 seconds ago
@end example
-@vindex gnus-article-date-lapsed-new-header
-The value of @code{gnus-article-date-lapsed-new-header} determines
-whether this header will just be added below the old Date one, or will
-replace it.
-
-An advantage of using Gnus to read mail is that it converts simple bugs
-into wonderful absurdities.
+This line is updated continually by default. The frequency (in
+seconds) is controlled by the @code{gnus-article-update-date-headers}
+variable.
-If you want to have this line updated continually, you can put
+If you wish to switch updating off, say:
+@vindex gnus-article-update-date-headers
@lisp
-(gnus-start-date-timer)
+(setq gnus-article-update-date-headers nil)
@end lisp
-in your @file{~/.gnus.el} file, or you can run it off of some hook. If
-you want to stop the timer, you can use the @code{gnus-stop-date-timer}
-command.
+in your @file{~/.gnus.el} file.
@item W T o
@kindex W T o (Summary)
@@ -10307,6 +9542,7 @@ preferred format automatically.
@cindex picons
@cindex x-face
@cindex smileys
+@cindex gravatars
These commands add various frivolous display gimmicks to the article
buffer in Emacs versions that support them.
@@ -10323,6 +9559,9 @@ their messages with (@pxref{Smileys}).
Picons, on the other hand, reside on your own system, and Gnus will
try to match the headers to what you have (@pxref{Picons}).
+Gravatars reside on-line and are fetched from
+@uref{http://www.gravatar.com/} (@pxref{Gravatars}).
+
All these functions are toggles---if the elements already exist,
they'll be removed.
@@ -10361,12 +9600,31 @@ Piconify all mail headers (i. e., @code{Cc}, @code{To})
Piconify all news headers (i. e., @code{Newsgroups} and
@code{Followup-To}) (@code{gnus-treat-newsgroups-picon}).
+@item W D g
+@kindex W D g (Summary)
+@findex gnus-treat-from-gravatar
+Gravatarify the @code{From} header (@code{gnus-treat-from-gravatar}).
+
+@item W D h
+@kindex W D h (Summary)
+@findex gnus-treat-mail-gravatar
+Gravatarify all mail headers (i. e., @code{Cc}, @code{To})
+(@code{gnus-treat-from-gravatar}).
+
@item W D D
@kindex W D D (Summary)
@findex gnus-article-remove-images
Remove all images from the article buffer
(@code{gnus-article-remove-images}).
+@item W D W
+@kindex W D W (Summary)
+@findex gnus-html-show-images
+If you're reading an @acronym{HTML} article rendered with
+@code{gnus-article-html}, then you can insert any blocked images in
+the buffer with this command.
+(@code{gnus-html-show-images}).
+
@end table
@@ -10506,17 +9764,24 @@ the same manner:
@kindex K H (Summary)
@findex gnus-article-browse-html-article
View @samp{text/html} parts of the current article with a WWW browser.
-The message header is added to the beginning of every html part unless
-the prefix argument is given.
+Inline images embedded in a message using the @code{cid} scheme, as they
+are generally considered to be safe, will be processed properly. The
+message header is added to the beginning of every @acronym{HTML} part
+unless the prefix argument is given.
-Warning: Spammers use links to images in HTML articles to verify whether
-you have read the message. As this command passes the @acronym{HTML}
-content to the browser without eliminating these ``web bugs'' you should
-only use it for mails from trusted senders.
+Warning: Spammers use links to images (using the @code{http} scheme) in
+@acronym{HTML} articles to verify whether you have read the message. As
+this command passes the @acronym{HTML} content to the browser without
+eliminating these ``web bugs'' you should only use it for mails from
+trusted senders.
If you always want to display @acronym{HTML} parts in the browser, set
@code{mm-text-html-renderer} to @code{nil}.
+This command creates temporary files to pass @acronym{HTML} contents
+including images if any to the browser, and deletes them when exiting
+the group (if you want).
+
@item K b
@kindex K b (Summary)
Make all the @acronym{MIME} parts have buttons in front of them. This is
@@ -10831,6 +10096,16 @@ Generate and print a PostScript image of the article buffer
be run just before printing the buffer. An alternative way to print
article is to use Muttprint (@pxref{Saving Articles}).
+@item A C
+@vindex gnus-fetch-partial-articles
+@findex gnus-summary-show-complete-article
+If @code{<backend>-fetch-partial-articles} is non-@code{nil}, Gnus will
+fetch partial articles, if the backend it fetches them from supports
+it. Currently only @code{nnimap} does. If you're looking at a
+partial article, and want to see the complete article instead, then
+the @kbd{A C} command (@code{gnus-summary-show-complete-article}) will
+do so.
+
@end table
@@ -11008,9 +10283,12 @@ do not do a particularly excellent job at it. That is, @code{nnmbox},
@code{nnbabyl}, @code{nnmaildir}, @code{nnml}, are able to locate
articles from any groups, while @code{nnfolder}, and @code{nnimap} are
only able to locate articles that have been posted to the current
-group. (Anything else would be too time consuming.) @code{nnmh} does
-not support this at all.
+group. @code{nnmh} does not support this at all.
+Fortunately, the special @code{nnregistry} back end is able to locate
+articles in any groups, regardless of their back end (@pxref{Registry
+Article Refer Method, fetching by @code{Message-ID} using the
+registry}).
@node Alternative Approaches
@section Alternative Approaches
@@ -11554,18 +10832,6 @@ sieve.
@table @kbd
-@item H f
-@kindex H f (Summary)
-@findex gnus-summary-fetch-faq
-@vindex gnus-group-faq-directory
-Try to fetch the @acronym{FAQ} (list of frequently asked questions)
-for the current group (@code{gnus-summary-fetch-faq}). Gnus will try
-to get the @acronym{FAQ} from @code{gnus-group-faq-directory}, which
-is usually a directory on a remote machine. This variable can also be
-a list of directories. In that case, giving a prefix to this command
-will allow you to choose between the various sites. @code{ange-ftp}
-or @code{efs} will probably be used for fetching the file.
-
@item H d
@kindex H d (Summary)
@findex gnus-summary-describe-group
@@ -11891,8 +11157,7 @@ read the same article more than once. Unless, of course, somebody has
posted it to several groups separately. Posting the same article to
several groups (not cross-posting) is called @dfn{spamming}, and you are
by law required to send nasty-grams to anyone who perpetrates such a
-heinous crime. You may want to try NoCeM handling to filter out spam
-(@pxref{NoCeM}).
+heinous crime.
Remember: Cross-posting is kinda ok, but posting the same article
separately to several groups is not. Massive cross-posting (aka.
@@ -12023,7 +11288,7 @@ To handle @acronym{PGP} and @acronym{PGP/MIME} messages, you have to
install an OpenPGP implementation such as GnuPG. The Lisp interface
to GnuPG included with Emacs is called EasyPG (@pxref{Top, ,EasyPG,
epa, EasyPG Assistant user's manual}), but PGG (@pxref{Top, ,PGG, pgg,
-PGG Manual}), Mailcrypt, and gpg.el are also supported.
+PGG Manual}), and Mailcrypt are also supported.
@item
To handle @acronym{S/MIME} message, you need to install OpenSSL. OpenSSL 0.9.6
@@ -12062,7 +11327,7 @@ public-key matching the @samp{From:} header as the recipient;
@vindex mml1991-use
Symbol indicating elisp interface to OpenPGP implementation for
@acronym{PGP} messages. The default is @code{epg}, but @code{pgg},
-@code{mailcrypt}, and @code{gpg} are also supported although
+and @code{mailcrypt} are also supported although
deprecated. By default, Gnus uses the first available interface in
this order.
@@ -12070,7 +11335,7 @@ this order.
@vindex mml2015-use
Symbol indicating elisp interface to OpenPGP implementation for
@acronym{PGP/MIME} messages. The default is @code{epg}, but
-@code{pgg}, @code{mailcrypt}, and @code{gpg} are also supported
+@code{pgg}, and @code{mailcrypt} are also supported
although deprecated. By default, Gnus uses the first available
interface in this order.
@@ -12170,6 +11435,7 @@ tell Gnus otherwise.
@menu
* Hiding Headers:: Deciding what headers should be displayed.
* Using MIME:: Pushing articles through @acronym{MIME} before reading them.
+* HTML:: Reading @acronym{HTML} messages.
* Customizing Articles:: Tailoring the look of the articles.
* Article Keymap:: Keystrokes available in the article buffer.
* Misc Article:: Other stuff.
@@ -12466,6 +11732,75 @@ Any similarity to real events and people is purely coincidental. Ahem.
Also @pxref{MIME Commands}.
+@node HTML
+@section @acronym{HTML}
+@cindex @acronym{HTML}
+
+If you have @code{w3m} installed on your system, Gnus can display
+@acronym{HTML} articles in the article buffer. There are many Gnus
+add-ons for doing this, using various approaches, but there's one
+(sort of) built-in method that's used by default.
+
+For a complete overview, consult @xref{Display Customization,
+,Display Customization, emacs-mime, The Emacs MIME Manual}. This
+section only describes the default method.
+
+@table @code
+@item mm-text-html-renderer
+@vindex mm-text-html-renderer
+If set to @code{gnus-article-html}, Gnus will use the built-in method,
+that's based on @code{w3m}.
+
+@item gnus-blocked-images
+@vindex gnus-blocked-images
+External images that have @acronym{URL}s that match this regexp won't
+be fetched and displayed. For instance, do block all @acronym{URL}s
+that have the string ``ads'' in them, do the following:
+
+@lisp
+(setq gnus-blocked-images "ads")
+@end lisp
+
+This can also be a function to be evaluated. If so, it will be
+called with the group name as the parameter. The default value is
+@code{gnus-block-private-groups}, which will return @samp{"."} for
+anything that isn't a newsgroup. This means that no external images
+will be fetched as a result of reading mail, so that nobody can use
+web bugs (and the like) to track whether you've read email.
+
+Also @pxref{Misc Article} for @code{gnus-inhibit-images}.
+
+@item gnus-html-cache-directory
+@vindex gnus-html-cache-directory
+Gnus will download and cache images according to how
+@code{gnus-blocked-images} is set. These images will be stored in
+this directory.
+
+@item gnus-html-cache-size
+@vindex gnus-html-cache-size
+When @code{gnus-html-cache-size} bytes have been used in that
+directory, the oldest files will be deleted. The default is 500MB.
+
+@item gnus-html-frame-width
+@vindex gnus-html-frame-width
+The width to use when rendering HTML. The default is 70.
+
+@item gnus-max-image-proportion
+@vindex gnus-max-image-proportion
+How big pictures displayed are in relation to the window they're in.
+A value of 0.7 (the default) means that they are allowed to take up
+70% of the width and height of the window. If they are larger than
+this, and Emacs supports it, then the images will be rescaled down to
+fit these criteria.
+
+@end table
+
+To use this, make sure that you have @code{w3m} and @code{curl}
+installed. If you have, then Gnus should display @acronym{HTML}
+automatically.
+
+
+
@node Customizing Articles
@section Customizing Articles
@cindex article customization
@@ -12551,16 +11886,12 @@ controlling variable is a predicate list, as described above.
@vindex gnus-treat-strip-trailing-blank-lines
@vindex gnus-treat-unsplit-urls
@vindex gnus-treat-wash-html
-@vindex gnus-treat-date-english
-@vindex gnus-treat-date-iso8601
-@vindex gnus-treat-date-lapsed
-@vindex gnus-treat-date-local
-@vindex gnus-treat-date-original
-@vindex gnus-treat-date-user-defined
-@vindex gnus-treat-date-ut
+@vindex gnus-treat-date
@vindex gnus-treat-from-picon
@vindex gnus-treat-mail-picon
@vindex gnus-treat-newsgroups-picon
+@vindex gnus-treat-from-gravatar
+@vindex gnus-treat-mail-gravatar
@vindex gnus-treat-display-smileys
@vindex gnus-treat-body-boundary
@vindex gnus-treat-display-x-face
@@ -12579,7 +11910,6 @@ controlling variable is a predicate list, as described above.
@vindex gnus-treat-highlight-headers
@vindex gnus-treat-highlight-signature
@vindex gnus-treat-play-sounds
-@vindex gnus-treat-translate
@vindex gnus-treat-x-pgp-sig
@vindex gnus-treat-unfold-headers
@vindex gnus-treat-fold-headers
@@ -12611,13 +11941,39 @@ possible but those listed are probably sufficient for most people.
@xref{Article Washing}.
-@item gnus-treat-date-english (head)
-@item gnus-treat-date-iso8601 (head)
-@item gnus-treat-date-lapsed (head)
-@item gnus-treat-date-local (head)
-@item gnus-treat-date-original (head)
-@item gnus-treat-date-user-defined (head)
-@item gnus-treat-date-ut (head)
+@item gnus-treat-date (head)
+
+This will transform/add date headers according to the
+@code{gnus-article-date-headers} variable. This is a list of Date
+headers to display. The formats available are:
+
+@table @code
+@item ut
+Universal time, aka GMT, aka ZULU.
+
+@item local
+The user's local time zone.
+
+@item english
+A semi-readable English sentence.
+
+@item lapsed
+The time elapsed since the message was posted.
+
+@item combined-lapsed
+Both the original date header and a (shortened) elapsed time.
+
+@item original
+The original date header.
+
+@item iso8601
+ISO8601 format, i.e., ``2010-11-23T22:05:21''.
+
+@item user-defined
+A format done according to the @code{gnus-article-time-format}
+variable.
+
+@end table
@xref{Article Date}.
@@ -12627,6 +11983,11 @@ possible but those listed are probably sufficient for most people.
@xref{Picons}.
+@item gnus-treat-from-gravatar (head)
+@item gnus-treat-mail-gravatar (head)
+
+@xref{Gravatars}.
+
@item gnus-treat-display-smileys (t, integer)
@item gnus-treat-body-boundary (head)
@@ -12681,8 +12042,6 @@ is controlled by @code{gnus-body-boundary-delimiter}.
@vindex gnus-treat-play-sounds
@item gnus-treat-play-sounds
-@vindex gnus-treat-translate
-@item gnus-treat-translate
@item gnus-treat-ansi-sequences (t)
@vindex gnus-treat-x-pgp-sig
@item gnus-treat-x-pgp-sig (head)
@@ -12812,6 +12171,11 @@ If non-@code{nil}, use the same article buffer for all the groups.
(This is the default.) If @code{nil}, each group will have its own
article buffer.
+@item gnus-widen-article-window
+@cindex gnus-widen-article-window
+If non-@code{nil}, selecting the article buffer with the @kbd{h}
+command will ``widen'' the article window to take the entire frame.
+
@vindex gnus-article-decode-hook
@item gnus-article-decode-hook
@cindex @acronym{MIME}
@@ -12906,6 +12270,15 @@ for how to compose such messages. This requires
@uref{http://www.gnu.org/software/libidn/, GNU Libidn}, and this
variable is only enabled if you have installed it.
+@vindex gnus-inhibit-images
+@item gnus-inhibit-images
+If this is non-@code{nil}, inhibit displaying of images inline in the
+article body. It is effective to images that are in articles as
+@acronym{MIME} parts, and images in @acronym{HTML} articles rendered
+when @code{mm-text-html-renderer} (@pxref{Display Customization,
+,Display Customization, emacs-mime, The Emacs MIME Manual}) is
+@code{shr} or @code{gnus-w3m}.
+
@end table
@@ -13276,9 +12649,6 @@ messages in one file per month:
(concat "mail." (format-time-string "%Y-%m")))))
@end lisp
-@c (XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to
-@c use a different value for @code{gnus-message-archive-group} there.)
-
Now, when you send a message off, it will be stored in the appropriate
group. (If you want to disable storing for just one particular message,
you can just remove the @code{Gcc} header that has been inserted.) The
@@ -13290,27 +12660,7 @@ if (using @kbd{G r} in the group buffer) to something
nice---@samp{misc-mail-september-1995}, or whatever. New messages will
continue to be stored in the old (now empty) group.
-That's the default method of archiving sent messages. Gnus offers a
-different way for the people who don't like the default method. In that
-case you should set @code{gnus-message-archive-group} to @code{nil};
-this will disable archiving.
-
@table @code
-@item gnus-outgoing-message-group
-@vindex gnus-outgoing-message-group
-All outgoing messages will be put in this group. If you want to store
-all your outgoing mail and articles in the group @samp{nnml:archive},
-you set this variable to that value. This variable can also be a list of
-group names.
-
-If you want to have greater control over what group to put each
-message in, you can set this variable to a function that checks the
-current newsgroup name and then returns a suitable group name (or list
-of names).
-
-This variable can be used instead of @code{gnus-message-archive-group},
-but the latter is the preferred method.
-
@item gnus-gcc-mark-as-read
@vindex gnus-gcc-mark-as-read
If non-@code{nil}, automatically mark @code{Gcc} articles as read.
@@ -13405,14 +12755,20 @@ the headers of the article; if the value is @code{nil}, the header
name will be removed. If the attribute name is @code{eval}, the form
is evaluated, and the result is thrown away.
-The attribute value can be a string (used verbatim), a function with
-zero arguments (the return value will be used), a variable (its value
-will be used) or a list (it will be @code{eval}ed and the return value
-will be used). The functions and sexps are called/@code{eval}ed in the
-message buffer that is being set up. The headers of the current article
-are available through the @code{message-reply-headers} variable, which
-is a vector of the following headers: number subject from date id
-references chars lines xref extra.
+The attribute value can be a string, a function with zero arguments
+(the return value will be used), a variable (its value will be used)
+or a list (it will be @code{eval}ed and the return value will be
+used). The functions and sexps are called/@code{eval}ed in the
+message buffer that is being set up. The headers of the current
+article are available through the @code{message-reply-headers}
+variable, which is a vector of the following headers: number subject
+from date id references chars lines xref extra.
+
+In the case of a string value, if the @code{match} is a regular
+expression, a @samp{gnus-match-substitute-replacement} is proceed on
+the value to replace the positional parameters @samp{\@var{n}} by the
+corresponding parenthetical matches (see @xref{Replacing the Text that
+Matched, , Text Replacement, elisp, The Emacs Lisp Reference Manual}.)
@vindex message-reply-headers
@@ -13543,6 +12899,9 @@ If you have some messages that you wish not to send, you can use the
@kbd{D t} (@code{gnus-draft-toggle-sending}) command to mark the message
as unsendable. This is a toggling command.
+Finally, if you want to delete a draft, use the normal @kbd{B DEL}
+command (@pxref{Mail Group Commands}).
+
@node Rejected Articles
@section Rejected Articles
@@ -13670,10 +13029,10 @@ The different methods all have their peculiarities, of course.
@menu
* Server Buffer:: Making and editing virtual servers.
* Getting News:: Reading USENET news with Gnus.
+* Using IMAP:: Reading mail from @acronym{IMAP}.
* Getting Mail:: Reading your personal mail with Gnus.
* Browsing the Web:: Getting messages from a plethora of Web sources.
-* IMAP:: Using Gnus as a @acronym{IMAP} client.
-* Other Sources:: Reading directories, files, SOUP packets.
+* Other Sources:: Reading directories, files.
* Combined Groups:: Combining groups into one group.
* Email Based Diary:: Using mails to manage diary events in Gnus.
* Gnus Unplugged:: Reading news and mail offline.
@@ -13785,6 +13144,11 @@ Add a new server (@code{gnus-server-add-server}).
@findex gnus-server-edit-server
Edit a server (@code{gnus-server-edit-server}).
+@item S
+@kindex S (Server)
+@findex gnus-server-show-server
+Show the definition of a server (@code{gnus-server-show-server}).
+
@item SPACE
@kindex SPACE (Server)
@findex gnus-server-read-server
@@ -13840,6 +13204,9 @@ hence getting a correct total article count.
@end table
+Some more commands for closing, disabling, and re-opening servers are
+listed in @ref{Unavailable Servers}.
+
@node Example Methods
@subsection Example Methods
@@ -14085,6 +13452,14 @@ Close the connections to all servers in the buffer
Remove all marks to whether Gnus was denied connection from any servers
(@code{gnus-server-remove-denials}).
+@item c
+@kindex c (Server)
+@findex gnus-server-copy-server
+Copy a server and give it a new name
+(@code{gnus-server-copy-server}). This can be useful if you have a
+complex method definition, and want to use the same definition towards
+a different (physical) server.
+
@item L
@kindex L (Server)
@findex gnus-server-offline-server
@@ -14356,6 +13731,12 @@ inhibit Gnus to add a @code{Message-ID} header, you could say:
Note that not all servers support the recommended ID. This works for
INN versions 2.3.0 and later, for instance.
+@item nntp-server-list-active-group
+If @code{nil}, then always use @samp{GROUP} instead of @samp{LIST
+ACTIVE}. This is usually slower, but on misconfigured servers that
+don't update their active files often, this can help.
+
+
@end table
@menu
@@ -14379,7 +13760,12 @@ functions is also affected by commonly understood variables
@findex nntp-open-network-stream
@item nntp-open-network-stream
This is the default, and simply connects to some port or other on the
-remote system.
+remote system. If both Emacs and the server supports it, the
+connection will be upgraded to an encrypted @acronym{STARTTLS}
+connection automatically.
+
+@item network-only
+The same as the above, but don't do automatic @acronym{STARTTLS} upgrades.
@findex nntp-open-tls-stream
@item nntp-open-tls-stream
@@ -14749,6 +14135,156 @@ there.
@end table
+@node Using IMAP
+@section Using IMAP
+@cindex imap
+
+The most popular mail backend is probably @code{nnimap}, which
+provides access to @acronym{IMAP} servers. @acronym{IMAP} servers
+store mail remotely, so the client doesn't store anything locally.
+This means that it's a convenient choice when you're reading your mail
+from different locations, or with different user agents.
+
+@menu
+* Connecting to an IMAP Server:: Getting started with @acronym{IMAP}.
+* Customizing the IMAP Connection:: Variables for @acronym{IMAP} connection.
+* Client-Side IMAP Splitting:: Put mail in the correct mail box.
+@end menu
+
+
+@node Connecting to an IMAP Server
+@subsection Connecting to an IMAP Server
+
+Connecting to an @acronym{IMAP} can be very easy. Type @kbd{B} in the
+group buffer, or (if your primary interest is reading email), say
+something like:
+
+@example
+(setq gnus-select-method
+ '(nnimap "imap.gmail.com"))
+@end example
+
+You'll be prompted for a user name and password. If you grow tired of
+that, then add the following to your @file{~/.authinfo} file:
+
+@example
+machine imap.gmail.com login <username> password <password> port imap
+@end example
+
+That should basically be it for most users.
+
+
+@node Customizing the IMAP Connection
+@subsection Customizing the IMAP Connection
+
+Here's an example method that's more complex:
+
+@example
+(nnimap "imap.gmail.com"
+ (nnimap-inbox "INBOX")
+ (nnimap-split-methods default)
+ (nnimap-expunge t)
+ (nnimap-stream ssl))
+@end example
+
+@table @code
+@item nnimap-address
+The address of the server, like @samp{imap.gmail.com}.
+
+@item nnimap-server-port
+If the server uses a non-standard port, that can be specified here. A
+typical port would be @code{"imap"} or @code{"imaps"}.
+
+@item nnimap-stream
+How @code{nnimap} should connect to the server. Possible values are:
+
+@table @code
+@item undecided
+This is the default, and this first tries the @code{ssl} setting, and
+then tries the @code{network} setting.
+
+@item ssl
+This uses standard @acronym{TLS}/@acronym{SSL} connections.
+
+@item network
+Non-encrypted and unsafe straight socket connection, but will upgrade
+to encrypted @acronym{STARTTLS} if both Emacs and the server
+supports it.
+
+@item starttls
+Encrypted @acronym{STARTTLS} over the normal @acronym{IMAP} port.
+
+@item shell
+If you need to tunnel via other systems to connect to the server, you
+can use this option, and customize @code{nnimap-shell-program} to be
+what you need.
+
+@end table
+
+@item nnimap-authenticator
+Some @acronym{IMAP} servers allow anonymous logins. In that case,
+this should be set to @code{anonymous}.
+
+@item nnimap-expunge
+If non-@code{nil}, expunge articles after deleting them. This is always done
+if the server supports UID EXPUNGE, but it's not done by default on
+servers that doesn't support that command.
+
+@item nnimap-streaming
+Virtually all @code{IMAP} server support fast streaming of data. If
+you have problems connecting to the server, try setting this to @code{nil}.
+
+@item nnimap-fetch-partial-articles
+If non-@code{nil}, fetch partial articles from the server. If set to
+a string, then it's interpreted as a regexp, and parts that have
+matching types will be fetched. For instance, @samp{"text/"} will
+fetch all textual parts, while leaving the rest on the server.
+
+@end table
+
+
+@node Client-Side IMAP Splitting
+@subsection Client-Side IMAP Splitting
+
+Many people prefer to do the sorting/splitting of mail into their mail
+boxes on the @acronym{IMAP} server. That way they don't have to
+download the mail they're not all that interested in.
+
+If you do want to do client-side mail splitting, then the following
+variables are relevant:
+
+@table @code
+@item nnimap-inbox
+This is the @acronym{IMAP} mail box that will be scanned for new mail.
+
+@item nnimap-split-methods
+Uses the same syntax as @code{nnmail-split-methods} (@pxref{Splitting
+Mail}), except the symbol @code{default}, which means that it should
+use the value of the @code{nnmail-split-methods} variable.
+
+@item nnimap-split-fancy
+Uses the same syntax as @code{nnmail-split-fancy}.
+
+@item nnimap-unsplittable-articles
+List of flag symbols to ignore when doing splitting. That is,
+articles that have these flags won't be considered when splitting.
+The default is @samp{(%Deleted %Seen)}.
+
+@end table
+
+Here's a complete example @code{nnimap} backend with a client-side
+``fancy'' splitting method:
+
+@example
+(nnimap "imap.example.com"
+ (nnimap-inbox "INBOX")
+ (nnimap-split-methods
+ (| ("MailScanner-SpamCheck" "spam" "spam.detected")
+ (to "foo@@bar.com" "foo")
+ "undecided")))
+@end example
+
+
@node Getting Mail
@section Getting Mail
@cindex reading mail
@@ -14933,6 +14469,9 @@ arguments in a buffer narrowed to the headers of an incoming mail
message. The function should return a list of group names that it
thinks should carry this mail message.
+This variable can also be a fancy split method. For the syntax,
+see @ref{Fancy Mail Splitting}.
+
Note that the mail back ends are free to maul the poor, innocent,
incoming headers all they want to. They all add @code{Lines} headers;
some add @code{X-Gnus-Group} headers; most rename the Unix mbox
@@ -15307,10 +14846,7 @@ Get mail from a @acronym{IMAP} server. If you don't want to use
@acronym{IMAP} as intended, as a network mail reading protocol (ie
with nnimap), for some reason or other, Gnus let you treat it similar
to a @acronym{POP} server and fetches articles from a given
-@acronym{IMAP} mailbox. @xref{IMAP}, for more information.
-
-Note that for the Kerberos, GSSAPI, @acronym{TLS}/@acronym{SSL} and STARTTLS support you
-may need external programs and libraries, @xref{IMAP}.
+@acronym{IMAP} mailbox. @xref{Using IMAP}, for more information.
Keywords:
@@ -15402,45 +14938,6 @@ An example @acronym{IMAP} mail source:
:fetchflag "\\Seen")
@end lisp
-@item webmail
-Get mail from a webmail server, such as @uref{http://www.hotmail.com/},
-@uref{http://webmail.netscape.com/}, @uref{http://www.netaddress.com/},
-@uref{http://mail.yahoo.com/}.
-
-NOTE: Webmail largely depends on cookies. A "one-line-cookie" patch is
-required for url "4.0pre.46".
-
-WARNING: Mails may be lost. NO WARRANTY.
-
-Keywords:
-
-@table @code
-@item :subtype
-The type of the webmail server. The default is @code{hotmail}. The
-alternatives are @code{netscape}, @code{netaddress}, @code{my-deja}.
-
-@item :user
-The user name to give to the webmail server. The default is the login
-name.
-
-@item :password
-The password to give to the webmail server. If not specified, the user is
-prompted.
-
-@item :dontexpunge
-If non-@code{nil}, only fetch unread articles and don't move them to
-trash folder after finishing the fetch.
-
-@end table
-
-An example webmail source:
-
-@lisp
-(webmail :subtype 'hotmail
- :user "user-name"
- :password "secret")
-@end lisp
-
@item group
Get the actual mail source from the @code{mail-source} group parameter,
@xref{Group Parameters}.
@@ -15779,7 +15276,7 @@ after @code{save-excursion} and @code{save-restriction} in the example
above. Also note that with the nnimap backend, message bodies will
not be downloaded by default. You need to set
@code{nnimap-split-download-body} to @code{t} to do that
-(@pxref{Splitting in IMAP}).
+(@pxref{Client-Side IMAP Splitting}).
@item (! @var{func} @var{split})
If the split is a list, and the first element is @code{!}, then
@@ -16543,6 +16040,7 @@ Spool}).
@end menu
+
@node Unix Mail Box
@subsubsection Unix Mail Box
@cindex nnmbox
@@ -17258,13 +16756,12 @@ incompatible group parameters, slightly different from those of other
mail back ends.
@code{nnmaildir} is largely similar to @code{nnml}, with some notable
-differences. Each message is stored in a separate file, but the
-filename is unrelated to the article number in Gnus. @code{nnmaildir}
+differences. Each message is stored in a separate file, but the
+filename is unrelated to the article number in Gnus. @code{nnmaildir}
also stores the equivalent of @code{nnml}'s overview files in one file
-per article, so it uses about twice as many inodes as @code{nnml}. (Use
-@code{df -i} to see how plentiful your inode supply is.) If this slows
-you down or takes up very much space, consider switching to
-@uref{http://www.namesys.com/, ReiserFS} or another non-block-structured
+per article, so it uses about twice as many inodes as @code{nnml}.
+(Use @code{df -i} to see how plentiful your inode supply is.) If this
+slows you down or takes up very much space, a non-block-structured
file system.
Since maildirs don't require locking for delivery, the maildirs you use
@@ -17334,9 +16831,6 @@ interfaces to these sources.
@menu
* Archiving Mail::
* Web Searches:: Creating groups from articles that match a string.
-* Slashdot:: Reading the Slashdot comments.
-* Ultimate:: The Ultimate Bulletin Board systems.
-* Web Archive:: Reading mailing list archived on web.
* RSS:: Reading RDF site summary.
* Customizing W3:: Doing stuff to Emacs/W3 from Gnus.
@end menu
@@ -17479,159 +16973,6 @@ Format string URL to fetch an article by @code{Message-ID}.
@end table
-@node Slashdot
-@subsection Slashdot
-@cindex Slashdot
-@cindex nnslashdot
-
-@uref{http://slashdot.org/, Slashdot} is a popular news site, with
-lively discussion following the news articles. @code{nnslashdot} will
-let you read this forum in a convenient manner.
-
-The easiest way to read this source is to put something like the
-following in your @file{~/.gnus.el} file:
-
-@lisp
-(setq gnus-secondary-select-methods
- '((nnslashdot "")))
-@end lisp
-
-This will make Gnus query the @code{nnslashdot} back end for new comments
-and groups. The @kbd{F} command will subscribe each new news article as
-a new Gnus group, and you can read the comments by entering these
-groups. (Note that the default subscription method is to subscribe new
-groups as zombies. Other methods are available (@pxref{Subscription
-Methods}).
-
-If you want to remove an old @code{nnslashdot} group, the @kbd{G DEL}
-command is the most handy tool (@pxref{Foreign Groups}).
-
-When following up to @code{nnslashdot} comments (or posting new
-comments), some light @acronym{HTML}izations will be performed. In
-particular, text quoted with @samp{> } will be quoted with
-@samp{blockquote} instead, and signatures will have @samp{br} added to
-the end of each line. Other than that, you can just write @acronym{HTML}
-directly into the message buffer. Note that Slashdot filters out some
-@acronym{HTML} forms.
-
-The following variables can be altered to change its behavior:
-
-@table @code
-@item nnslashdot-threaded
-Whether @code{nnslashdot} should display threaded groups or not. The
-default is @code{t}. To be able to display threads, @code{nnslashdot}
-has to retrieve absolutely all comments in a group upon entry. If a
-threaded display is not required, @code{nnslashdot} will only retrieve
-the comments that are actually wanted by the user. Threading is nicer,
-but much, much slower than unthreaded.
-
-@item nnslashdot-login-name
-@vindex nnslashdot-login-name
-The login name to use when posting.
-
-@item nnslashdot-password
-@vindex nnslashdot-password
-The password to use when posting.
-
-@item nnslashdot-directory
-@vindex nnslashdot-directory
-Where @code{nnslashdot} will store its files. The default is
-@file{~/News/slashdot/}.
-
-@item nnslashdot-active-url
-@vindex nnslashdot-active-url
-The @acronym{URL} format string that will be used to fetch the
-information on news articles and comments. The default is@*
-@samp{http://slashdot.org/search.pl?section=&min=%d}.
-
-@item nnslashdot-comments-url
-@vindex nnslashdot-comments-url
-The @acronym{URL} format string that will be used to fetch comments.
-
-@item nnslashdot-article-url
-@vindex nnslashdot-article-url
-The @acronym{URL} format string that will be used to fetch the news
-article. The default is
-@samp{http://slashdot.org/article.pl?sid=%s&mode=nocomment}.
-
-@item nnslashdot-threshold
-@vindex nnslashdot-threshold
-The score threshold. The default is -1.
-
-@item nnslashdot-group-number
-@vindex nnslashdot-group-number
-The number of old groups, in addition to the ten latest, to keep
-updated. The default is 0.
-
-@end table
-
-
-
-@node Ultimate
-@subsection Ultimate
-@cindex nnultimate
-@cindex Ultimate Bulletin Board
-
-@uref{http://www.ultimatebb.com/, The Ultimate Bulletin Board} is
-probably the most popular Web bulletin board system used. It has a
-quite regular and nice interface, and it's possible to get the
-information Gnus needs to keep groups updated.
-
-The easiest way to get started with @code{nnultimate} is to say
-something like the following in the group buffer: @kbd{B nnultimate RET
-http://www.tcj.com/messboard/ubbcgi/ RET}. (Substitute the @acronym{URL}
-(not including @samp{Ultimate.cgi} or the like at the end) for a forum
-you're interested in; there's quite a list of them on the Ultimate web
-site.) Then subscribe to the groups you're interested in from the
-server buffer, and read them from the group buffer.
-
-The following @code{nnultimate} variables can be altered:
-
-@table @code
-@item nnultimate-directory
-@vindex nnultimate-directory
-The directory where @code{nnultimate} stores its files. The default is@*
-@file{~/News/ultimate/}.
-@end table
-
-
-@node Web Archive
-@subsection Web Archive
-@cindex nnwarchive
-@cindex Web Archive
-
-Some mailing lists only have archives on Web servers, such as
-@uref{http://www.egroups.com/} and
-@uref{http://www.mail-archive.com/}. It has a quite regular and nice
-interface, and it's possible to get the information Gnus needs to keep
-groups updated.
-
-@findex gnus-group-make-warchive-group
-The easiest way to get started with @code{nnwarchive} is to say
-something like the following in the group buffer: @kbd{M-x
-gnus-group-make-warchive-group RET @var{an_egroup} RET egroups RET
-www.egroups.com RET @var{your@@email.address} RET}. (Substitute the
-@var{an_egroup} with the mailing list you subscribed, the
-@var{your@@email.address} with your email address.), or to browse the
-back end by @kbd{B nnwarchive RET mail-archive RET}.
-
-The following @code{nnwarchive} variables can be altered:
-
-@table @code
-@item nnwarchive-directory
-@vindex nnwarchive-directory
-The directory where @code{nnwarchive} stores its files. The default is@*
-@file{~/News/warchive/}.
-
-@item nnwarchive-login
-@vindex nnwarchive-login
-The account name on the web server.
-
-@item nnwarchive-passwd
-@vindex nnwarchive-passwd
-The password for your account on the web server.
-@end table
-
@node RSS
@subsection RSS
@cindex nnrss
@@ -17718,15 +17059,6 @@ If you set @code{nnrss-use-local} to @code{t}, @code{nnrss} will read
the feeds from local files in @code{nnrss-directory}. You can use
the command @code{nnrss-generate-download-script} to generate a
download script using @command{wget}.
-
-@item nnrss-wash-html-in-text-plain-parts
-Non-@code{nil} means that @code{nnrss} renders text in @samp{text/plain}
-parts as @acronym{HTML}. The function specified by the
-@code{mm-text-html-renderer} variable (@pxref{Display Customization,
-,Display Customization, emacs-mime, The Emacs MIME Manual}) will be used
-to render text. If it is @code{nil}, which is the default, text will
-simply be folded. Leave it @code{nil} if you prefer to see
-@samp{text/html} parts.
@end table
The following code may be helpful, if you want to show the description in
@@ -17824,739 +17156,6 @@ Put that in your @file{.emacs} file, and hitting links in W3-rendered
follow the link.
-@node IMAP
-@section IMAP
-@cindex nnimap
-@cindex @acronym{IMAP}
-
-@acronym{IMAP} is a network protocol for reading mail (or news, or @dots{}),
-think of it as a modernized @acronym{NNTP}. Connecting to a @acronym{IMAP}
-server is much similar to connecting to a news server, you just
-specify the network address of the server.
-
-@acronym{IMAP} has two properties. First, @acronym{IMAP} can do
-everything that @acronym{POP} can, it can hence be viewed as a
-@acronym{POP++}. Secondly, @acronym{IMAP} is a mail storage protocol,
-similar to @acronym{NNTP} being a news storage protocol---however,
-@acronym{IMAP} offers more features than @acronym{NNTP} because news
-is more or less read-only whereas mail is read-write.
-
-If you want to use @acronym{IMAP} as a @acronym{POP++}, use an imap
-entry in @code{mail-sources}. With this, Gnus will fetch mails from
-the @acronym{IMAP} server and store them on the local disk. This is
-not the usage described in this section---@xref{Mail Sources}.
-
-If you want to use @acronym{IMAP} as a mail storage protocol, use an nnimap
-entry in @code{gnus-secondary-select-methods}. With this, Gnus will
-manipulate mails stored on the @acronym{IMAP} server. This is the kind of
-usage explained in this section.
-
-A server configuration in @file{~/.gnus.el} with a few @acronym{IMAP}
-servers might look something like the following. (Note that for
-@acronym{TLS}/@acronym{SSL}, you need external programs and libraries,
-see below.)
-
-@lisp
-(setq gnus-secondary-select-methods
- '((nnimap "simpleserver") ; @r{no special configuration}
- ; @r{perhaps a ssh port forwarded server:}
- (nnimap "dolk"
- (nnimap-address "localhost")
- (nnimap-server-port 1430))
- ; @r{a UW server running on localhost}
- (nnimap "barbar"
- (nnimap-server-port 143)
- (nnimap-address "localhost")
- (nnimap-list-pattern ("INBOX" "mail/*")))
- ; @r{anonymous public cyrus server:}
- (nnimap "cyrus.andrew.cmu.edu"
- (nnimap-authenticator anonymous)
- (nnimap-list-pattern "archive.*")
- (nnimap-stream network))
- ; @r{a ssl server on a non-standard port:}
- (nnimap "vic20"
- (nnimap-address "vic20.somewhere.com")
- (nnimap-server-port 9930)
- (nnimap-stream ssl))))
-@end lisp
-
-After defining the new server, you can subscribe to groups on the
-server using normal Gnus commands such as @kbd{U} in the Group Buffer
-(@pxref{Subscription Commands}) or via the Server Buffer
-(@pxref{Server Buffer}).
-
-The following variables can be used to create a virtual @code{nnimap}
-server:
-
-@table @code
-
-@item nnimap-address
-@vindex nnimap-address
-
-The address of the remote @acronym{IMAP} server. Defaults to the virtual
-server name if not specified.
-
-@item nnimap-server-port
-@vindex nnimap-server-port
-Port on server to contact. Defaults to port 143, or 993 for @acronym{TLS}/@acronym{SSL}.
-
-Note that this should be an integer, example server specification:
-
-@lisp
-(nnimap "mail.server.com"
- (nnimap-server-port 4711))
-@end lisp
-
-@item nnimap-list-pattern
-@vindex nnimap-list-pattern
-String or list of strings of mailboxes to limit available groups to.
-This is used when the server has very many mailboxes and you're only
-interested in a few---some servers export your home directory via
-@acronym{IMAP}, you'll probably want to limit the mailboxes to those in
-@file{~/Mail/*} then.
-
-The string can also be a cons of REFERENCE and the string as above, what
-REFERENCE is used for is server specific, but on the University of
-Washington server it's a directory that will be concatenated with the
-mailbox.
-
-Example server specification:
-
-@lisp
-(nnimap "mail.server.com"
- (nnimap-list-pattern ("INBOX" "Mail/*" "alt.sex.*"
- ("~friend/Mail/" . "list/*"))))
-@end lisp
-
-@item nnimap-stream
-@vindex nnimap-stream
-The type of stream used to connect to your server. By default, nnimap
-will detect and automatically use all of the below, with the exception
-of @acronym{TLS}/@acronym{SSL}. (@acronym{IMAP} over
-@acronym{TLS}/@acronym{SSL} is being replaced by STARTTLS, which can
-be automatically detected, but it's not widely deployed yet.)
-
-Example server specification:
-
-@lisp
-(nnimap "mail.server.com"
- (nnimap-stream ssl))
-@end lisp
-
-Please note that the value of @code{nnimap-stream} is a symbol!
-
-@itemize @bullet
-@item
-@dfn{gssapi:} Connect with GSSAPI (usually Kerberos 5). Requires the
-@samp{gsasl} or @samp{imtest} program.
-@item
-@dfn{kerberos4:} Connect with Kerberos 4. Requires the @samp{imtest} program.
-@item
-@dfn{starttls:} Connect via the STARTTLS extension (similar to
-@acronym{TLS}/@acronym{SSL}). Requires the external library @samp{starttls.el} and program
-@samp{starttls}.
-@item
-@dfn{tls:} Connect through @acronym{TLS}. Requires GNUTLS (the program
-@samp{gnutls-cli}).
-@item
-@dfn{ssl:} Connect through @acronym{SSL}. Requires OpenSSL (the program
-@samp{openssl}) or SSLeay (@samp{s_client}).
-@item
-@dfn{shell:} Use a shell command to start @acronym{IMAP} connection.
-@item
-@dfn{network:} Plain, TCP/IP network connection.
-@end itemize
-
-@vindex imap-kerberos4-program
-The @samp{imtest} program is shipped with Cyrus IMAPD. If you're
-using @samp{imtest} from Cyrus IMAPD < 2.0.14 (which includes version
-1.5.x and 1.6.x) you need to frob @code{imap-process-connection-type}
-to make @code{imap.el} use a pty instead of a pipe when communicating
-with @samp{imtest}. You will then suffer from a line length
-restrictions on @acronym{IMAP} commands, which might make Gnus seem to hang
-indefinitely if you have many articles in a mailbox. The variable
-@code{imap-kerberos4-program} contain parameters to pass to the imtest
-program.
-
-For @acronym{TLS} connection, the @code{gnutls-cli} program from GNUTLS is
-needed. It is available from
-@uref{http://www.gnu.org/software/gnutls/}.
-
-@vindex imap-gssapi-program
-This parameter specifies a list of command lines that invoke a GSSAPI
-authenticated @acronym{IMAP} stream in a subshell. They are tried
-sequentially until a connection is made, or the list has been
-exhausted. By default, @samp{gsasl} from GNU SASL, available from
-@uref{http://www.gnu.org/software/gsasl/}, and the @samp{imtest}
-program from Cyrus IMAPD (see @code{imap-kerberos4-program}), are
-tried.
-
-@vindex imap-ssl-program
-For @acronym{SSL} connections, the OpenSSL program is available from
-@uref{http://www.openssl.org/}. OpenSSL was formerly known as SSLeay,
-and nnimap support it too---although the most recent versions of
-SSLeay, 0.9.x, are known to have serious bugs making it
-useless. Earlier versions, especially 0.8.x, of SSLeay are known to
-work. The variable @code{imap-ssl-program} contain parameters to pass
-to OpenSSL/SSLeay.
-
-@vindex imap-shell-program
-@vindex imap-shell-host
-For @acronym{IMAP} connections using the @code{shell} stream, the
-variable @code{imap-shell-program} specify what program to call. Make
-sure nothing is interfering with the output of the program, e.g., don't
-forget to redirect the error output to the void.
-
-@item nnimap-authenticator
-@vindex nnimap-authenticator
-
-The authenticator used to connect to the server. By default, nnimap
-will use the most secure authenticator your server is capable of.
-
-Example server specification:
-
-@lisp
-(nnimap "mail.server.com"
- (nnimap-authenticator anonymous))
-@end lisp
-
-Please note that the value of @code{nnimap-authenticator} is a symbol!
-
-@itemize @bullet
-@item
-@dfn{gssapi:} GSSAPI (usually kerberos 5) authentication. Requires
-external program @code{gsasl} or @code{imtest}.
-@item
-@dfn{kerberos4:} Kerberos 4 authentication. Requires external program
-@code{imtest}.
-@item
-@dfn{digest-md5:} Encrypted username/password via DIGEST-MD5. Requires
-external library @code{digest-md5.el}.
-@item
-@dfn{cram-md5:} Encrypted username/password via CRAM-MD5.
-@item
-@dfn{login:} Plain-text username/password via LOGIN.
-@item
-@dfn{anonymous:} Login as ``anonymous'', supplying your email address as password.
-@end itemize
-
-@item nnimap-expunge-on-close
-@cindex expunging
-@vindex nnimap-expunge-on-close
-Unlike Parmenides the @acronym{IMAP} designers have decided things that
-don't exist actually do exist. More specifically, @acronym{IMAP} has
-this concept of marking articles @code{Deleted} which doesn't actually
-delete them, and this (marking them @code{Deleted}, that is) is what
-nnimap does when you delete an article in Gnus (with @kbd{B DEL} or
-similar).
-
-Since the articles aren't really removed when we mark them with the
-@code{Deleted} flag we'll need a way to actually delete them. Feel like
-running in circles yet?
-
-Traditionally, nnimap has removed all articles marked as @code{Deleted}
-when closing a mailbox but this is now configurable by this server
-variable.
-
-The possible options are:
-
-@table @code
-
-@item always
-The default behavior, delete all articles marked as ``Deleted'' when
-closing a mailbox.
-@item never
-Never actually delete articles. Currently there is no way of showing
-the articles marked for deletion in nnimap, but other @acronym{IMAP} clients
-may allow you to do this. If you ever want to run the EXPUNGE command
-manually, @xref{Expunging mailboxes}.
-@item ask
-When closing mailboxes, nnimap will ask if you wish to expunge deleted
-articles or not.
-
-@end table
-
-@item nnimap-importantize-dormant
-@vindex nnimap-importantize-dormant
-
-If non-@code{nil} (the default), marks dormant articles as ticked (as
-well), for other @acronym{IMAP} clients. Within Gnus, dormant articles will
-naturally still (only) be marked as dormant. This is to make dormant
-articles stand out, just like ticked articles, in other @acronym{IMAP}
-clients. (In other words, Gnus has two ``Tick'' marks and @acronym{IMAP}
-has only one.)
-
-Probably the only reason for frobbing this would be if you're trying
-enable per-user persistent dormant flags, using something like:
-
-@lisp
-(setcdr (assq 'dormant nnimap-mark-to-flag-alist)
- (format "gnus-dormant-%s" (user-login-name)))
-(setcdr (assq 'dormant nnimap-mark-to-predicate-alist)
- (format "KEYWORD gnus-dormant-%s" (user-login-name)))
-@end lisp
-
-In this case, you would not want the per-user dormant flag showing up
-as ticked for other users.
-
-@item nnimap-expunge-search-string
-@cindex expunging
-@vindex nnimap-expunge-search-string
-@cindex expiring @acronym{IMAP} mail
-
-This variable contain the @acronym{IMAP} search command sent to server when
-searching for articles eligible for expiring. The default is
-@code{"UID %s NOT SINCE %s"}, where the first @code{%s} is replaced by
-UID set and the second @code{%s} is replaced by a date.
-
-Probably the only useful value to change this to is
-@code{"UID %s NOT SENTSINCE %s"}, which makes nnimap use the Date: in
-messages instead of the internal article date. See section 6.4.4 of
-RFC 2060 for more information on valid strings.
-
-However, if @code{nnimap-search-uids-not-since-is-evil}
-is true, this variable has no effect since the search logic
-is reversed, as described below.
-
-@item nnimap-authinfo-file
-@vindex nnimap-authinfo-file
-
-A file containing credentials used to log in on servers. The format is
-(almost) the same as the @code{ftp} @file{~/.netrc} file. See the
-variable @code{nntp-authinfo-file} for exact syntax; also see
-@ref{NNTP}. An example of an .authinfo line for an IMAP server, is:
-
-@example
-machine students.uio.no login larsi password geheimnis port imap
-@end example
-
-Note that it should be @code{port imap}, or @code{port 143}, if you
-use a @code{nnimap-stream} of @code{tls} or @code{ssl}, even if the
-actual port number used is port 993 for secured IMAP. For
-convenience, Gnus will accept @code{port imaps} as a synonym of
-@code{port imap}.
-
-@item nnimap-need-unselect-to-notice-new-mail
-@vindex nnimap-need-unselect-to-notice-new-mail
-
-Unselect mailboxes before looking for new mail in them. Some servers
-seem to need this under some circumstances; it was reported that
-Courier 1.7.1 did.
-
-@item nnimap-nov-is-evil
-@vindex nnimap-nov-is-evil
-@cindex Courier @acronym{IMAP} server
-@cindex @acronym{NOV}
-
-Never generate or use a local @acronym{NOV} database. Defaults to the
-value of @code{gnus-agent}.
-
-Using a @acronym{NOV} database usually makes header fetching much
-faster, but it uses the @code{UID SEARCH UID} command, which is very
-slow on some servers (notably some versions of Courier). Since the Gnus
-Agent caches the information in the @acronym{NOV} database without using
-the slow command, this variable defaults to true if the Agent is in use,
-and false otherwise.
-
-@item nnimap-search-uids-not-since-is-evil
-@vindex nnimap-search-uids-not-since-is-evil
-@cindex Courier @acronym{IMAP} server
-@cindex expiring @acronym{IMAP} mail
-
-Avoid the @code{UID SEARCH UID @var{message numbers} NOT SINCE
-@var{date}} command, which is slow on some @acronym{IMAP} servers
-(notably, some versions of Courier). Instead, use @code{UID SEARCH SINCE
-@var{date}} and prune the list of expirable articles within Gnus.
-
-When Gnus expires your mail (@pxref{Expiring Mail}), it starts with a
-list of expirable articles and asks the IMAP server questions like ``Of
-these articles, which ones are older than a week?'' While this seems
-like a perfectly reasonable question, some IMAP servers take a long time
-to answer it, since they seemingly go looking into every old article to
-see if it is one of the expirable ones. Curiously, the question ``Of
-@emph{all} articles, which ones are newer than a week?'' seems to be
-much faster to answer, so setting this variable causes Gnus to ask this
-question and figure out the answer to the real question itself.
-
-This problem can really sneak up on you: when you first configure Gnus,
-everything works fine, but once you accumulate a couple thousand
-messages, you start cursing Gnus for being so slow. On the other hand,
-if you get a lot of email within a week, setting this variable will
-cause a lot of network traffic between Gnus and the IMAP server.
-
-@item nnimap-logout-timeout
-@vindex nnimap-logout-timeout
-
-There is a case where a connection to a @acronym{IMAP} server is unable
-to close, when connecting to the server via a certain kind of network,
-e.g. @acronym{VPN}. In that case, it will be observed that a connection
-between Emacs and the local network looks alive even if the server has
-closed a connection for some reason (typically, a timeout).
-Consequently, Emacs continues waiting for a response from the server for
-the @code{LOGOUT} command that Emacs sent, or hangs in other words. If
-you are in such a network, setting this variable to a number of seconds
-will be helpful. If it is set, a hung connection will be closed
-forcibly, after this number of seconds from the time Emacs sends the
-@code{LOGOUT} command. It should not be too small value but too large
-value will be inconvenient too. Perhaps the value 1.0 will be a good
-candidate but it might be worth trying some other values.
-
-Example server specification:
-
-@lisp
-(nnimap "mail.server.com"
- (nnimap-logout-timeout 1.0))
-@end lisp
-
-@end table
-
-@menu
-* Splitting in IMAP:: Splitting mail with nnimap.
-* Expiring in IMAP:: Expiring mail with nnimap.
-* Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox.
-* Expunging mailboxes:: Equivalent of a ``compress mailbox'' button.
-* A note on namespaces:: How to (not) use @acronym{IMAP} namespace in Gnus.
-* Debugging IMAP:: What to do when things don't work.
-@end menu
-
-
-
-@node Splitting in IMAP
-@subsection Splitting in IMAP
-@cindex splitting imap mail
-
-Splitting is something Gnus users have loved and used for years, and now
-the rest of the world is catching up. Yeah, dream on, not many
-@acronym{IMAP} servers have server side splitting and those that have
-splitting seem to use some non-standard protocol. This means that
-@acronym{IMAP} support for Gnus has to do its own splitting.
-
-And it does.
-
-(Incidentally, people seem to have been dreaming on, and Sieve has
-gaining a market share and is supported by several IMAP servers.
-Fortunately, Gnus support it too, @xref{Sieve Commands}.)
-
-Here are the variables of interest:
-
-@table @code
-
-@item nnimap-split-crosspost
-@cindex splitting, crosspost
-@cindex crosspost
-@vindex nnimap-split-crosspost
-
-If non-@code{nil}, do crossposting if several split methods match the
-mail. If @code{nil}, the first match in @code{nnimap-split-rule}
-found will be used.
-
-Nnmail equivalent: @code{nnmail-crosspost}.
-
-@item nnimap-split-inbox
-@cindex splitting, inbox
-@cindex inbox
-@vindex nnimap-split-inbox
-
-A string or a list of strings that gives the name(s) of @acronym{IMAP}
-mailboxes to split from. Defaults to @code{nil}, which means that
-splitting is disabled!
-
-@lisp
-(setq nnimap-split-inbox
- '("INBOX" ("~/friend/Mail" . "lists/*") "lists.imap"))
-@end lisp
-
-No nnmail equivalent.
-
-@item nnimap-split-rule
-@cindex splitting, rules
-@vindex nnimap-split-rule
-
-New mail found in @code{nnimap-split-inbox} will be split according to
-this variable.
-
-This variable contains a list of lists, where the first element in the
-sublist gives the name of the @acronym{IMAP} mailbox to move articles
-matching the regexp in the second element in the sublist. Got that?
-Neither did I, we need examples.
-
-@lisp
-(setq nnimap-split-rule
- '(("INBOX.nnimap"
- "^Sender: owner-nnimap@@vic20.globalcom.se")
- ("INBOX.junk" "^Subject:.*MAKE MONEY")
- ("INBOX.private" "")))
-@end lisp
-
-This will put all articles from the nnimap mailing list into mailbox
-INBOX.nnimap, all articles containing MAKE MONEY in the Subject: line
-into INBOX.junk and everything else in INBOX.private.
-
-The first string may contain @samp{\\1} forms, like the ones used by
-replace-match to insert sub-expressions from the matched text. For
-instance:
-
-@lisp
-("INBOX.lists.\\1" "^Sender: owner-\\([a-z-]+\\)@@")
-@end lisp
-
-The first element can also be the symbol @code{junk} to indicate that
-matching messages should simply be deleted. Use with care.
-
-The second element can also be a function. In that case, it will be
-called with the first element of the rule as the argument, in a buffer
-containing the headers of the article. It should return a
-non-@code{nil} value if it thinks that the mail belongs in that group.
-
-Nnmail users might recollect that the last regexp had to be empty to
-match all articles (like in the example above). This is not required in
-nnimap. Articles not matching any of the regexps will not be moved out
-of your inbox. (This might affect performance if you keep lots of
-unread articles in your inbox, since the splitting code would go over
-them every time you fetch new mail.)
-
-These rules are processed from the beginning of the alist toward the
-end. The first rule to make a match will ``win'', unless you have
-crossposting enabled. In that case, all matching rules will ``win''.
-
-This variable can also have a function as its value, the function will
-be called with the headers narrowed and should return a group where it
-thinks the article should be split to. See @code{nnimap-split-fancy}.
-
-The splitting code tries to create mailboxes if it needs to.
-
-To allow for different split rules on different virtual servers, and
-even different split rules in different inboxes on the same server,
-the syntax of this variable have been extended along the lines of:
-
-@lisp
-(setq nnimap-split-rule
- '(("my1server" (".*" (("ding" "ding@@gnus.org")
- ("junk" "From:.*Simon"))))
- ("my2server" ("INBOX" nnimap-split-fancy))
- ("my[34]server" (".*" (("private" "To:.*Simon")
- ("junk" my-junk-func))))))
-@end lisp
-
-The virtual server name is in fact a regexp, so that the same rules
-may apply to several servers. In the example, the servers
-@code{my3server} and @code{my4server} both use the same rules.
-Similarly, the inbox string is also a regexp. The actual splitting
-rules are as before, either a function, or a list with group/regexp or
-group/function elements.
-
-Nnmail equivalent: @code{nnmail-split-methods}.
-
-@item nnimap-split-predicate
-@cindex splitting
-@vindex nnimap-split-predicate
-
-Mail matching this predicate in @code{nnimap-split-inbox} will be
-split, it is a string and the default is @samp{UNSEEN UNDELETED}.
-
-This might be useful if you use another @acronym{IMAP} client to read mail in
-your inbox but would like Gnus to split all articles in the inbox
-regardless of readedness. Then you might change this to
-@samp{UNDELETED}.
-
-@item nnimap-split-fancy
-@cindex splitting, fancy
-@findex nnimap-split-fancy
-@vindex nnimap-split-fancy
-
-It's possible to set @code{nnimap-split-rule} to
-@code{nnmail-split-fancy} if you want to use fancy
-splitting. @xref{Fancy Mail Splitting}.
-
-However, to be able to have different fancy split rules for nnmail and
-nnimap back ends you can set @code{nnimap-split-rule} to
-@code{nnimap-split-fancy} and define the nnimap specific fancy split
-rule in @code{nnimap-split-fancy}.
-
-Example:
-
-@lisp
-(setq nnimap-split-rule 'nnimap-split-fancy
- nnimap-split-fancy ...)
-@end lisp
-
-Nnmail equivalent: @code{nnmail-split-fancy}.
-
-@item nnimap-split-download-body
-@findex nnimap-split-download-body
-@vindex nnimap-split-download-body
-
-Set to non-@code{nil} to download entire articles during splitting.
-This is generally not required, and will slow things down
-considerably. You may need it if you want to use an advanced
-splitting function that analyzes the body to split the article.
-
-@end table
-
-@node Expiring in IMAP
-@subsection Expiring in IMAP
-@cindex expiring @acronym{IMAP} mail
-
-Even though @code{nnimap} is not a proper @code{nnmail} derived back
-end, it supports most features in regular expiring (@pxref{Expiring
-Mail}). Unlike splitting in @acronym{IMAP} (@pxref{Splitting in
-IMAP}) it does not clone the @code{nnmail} variables (i.e., creating
-@var{nnimap-expiry-wait}) but reuse the @code{nnmail} variables. What
-follows below are the variables used by the @code{nnimap} expiry
-process.
-
-A note on how the expire mark is stored on the @acronym{IMAP} server is
-appropriate here as well. The expire mark is translated into a
-@code{imap} client specific mark, @code{gnus-expire}, and stored on the
-message. This means that likely only Gnus will understand and treat
-the @code{gnus-expire} mark properly, although other clients may allow
-you to view client specific flags on the message. It also means that
-your server must support permanent storage of client specific flags on
-messages. Most do, fortunately.
-
-If expiring @acronym{IMAP} mail seems very slow, try setting the server
-variable @code{nnimap-search-uids-not-since-is-evil}.
-
-@table @code
-
-@item nnmail-expiry-wait
-@item nnmail-expiry-wait-function
-
-These variables are fully supported. The expire value can be a
-number, the symbol @code{immediate} or @code{never}.
-
-@item nnmail-expiry-target
-
-This variable is supported, and internally implemented by calling the
-@code{nnmail} functions that handle this. It contains an optimization
-that if the destination is a @acronym{IMAP} group on the same server, the
-article is copied instead of appended (that is, uploaded again).
-
-@end table
-
-@node Editing IMAP ACLs
-@subsection Editing IMAP ACLs
-@cindex editing imap acls
-@cindex Access Control Lists
-@cindex Editing @acronym{IMAP} ACLs
-@kindex G l (Group)
-@findex gnus-group-nnimap-edit-acl
-
-ACL stands for Access Control List. ACLs are used in @acronym{IMAP} for
-limiting (or enabling) other users access to your mail boxes. Not all
-@acronym{IMAP} servers support this, this function will give an error if it
-doesn't.
-
-To edit an ACL for a mailbox, type @kbd{G l}
-(@code{gnus-group-edit-nnimap-acl}) and you'll be presented with an ACL
-editing window with detailed instructions.
-
-Some possible uses:
-
-@itemize @bullet
-@item
-Giving ``anyone'' the ``lrs'' rights (lookup, read, keep seen/unseen flags)
-on your mailing list mailboxes enables other users on the same server to
-follow the list without subscribing to it.
-@item
-At least with the Cyrus server, you are required to give the user
-``anyone'' posting ("p") capabilities to have ``plussing'' work (that is,
-mail sent to user+mailbox@@domain ending up in the @acronym{IMAP} mailbox
-INBOX.mailbox).
-@end itemize
-
-@node Expunging mailboxes
-@subsection Expunging mailboxes
-@cindex expunging
-
-@cindex expunge
-@cindex manual expunging
-@kindex G x (Group)
-@findex gnus-group-nnimap-expunge
-
-If you're using the @code{never} setting of @code{nnimap-expunge-on-close},
-you may want the option of expunging all deleted articles in a mailbox
-manually. This is exactly what @kbd{G x} does.
-
-Currently there is no way of showing deleted articles, you can just
-delete them.
-
-@node A note on namespaces
-@subsection A note on namespaces
-@cindex IMAP namespace
-@cindex namespaces
-
-The @acronym{IMAP} protocol has a concept called namespaces, described
-by the following text in the RFC2060:
-
-@display
-5.1.2. Mailbox Namespace Naming Convention
-
- By convention, the first hierarchical element of any mailbox name
- which begins with "#" identifies the "namespace" of the remainder of
- the name. This makes it possible to disambiguate between different
- types of mailbox stores, each of which have their own namespaces.
-
- For example, implementations which offer access to USENET
- newsgroups MAY use the "#news" namespace to partition the USENET
- newsgroup namespace from that of other mailboxes. Thus, the
- comp.mail.misc newsgroup would have an mailbox name of
- "#news.comp.mail.misc", and the name "comp.mail.misc" could refer
- to a different object (e.g. a user's private mailbox).
-@end display
-
-While there is nothing in this text that warrants concern for the
-@acronym{IMAP} implementation in Gnus, some servers use namespace
-prefixes in a way that does not work with how Gnus uses mailbox names.
-
-Specifically, University of Washington's @acronym{IMAP} server uses
-mailbox names like @code{#driver.mbx/read-mail} which are valid only
-in the @sc{create} and @sc{append} commands. After the mailbox is
-created (or a messages is appended to a mailbox), it must be accessed
-without the namespace prefix, i.e. @code{read-mail}. Since Gnus do
-not make it possible for the user to guarantee that user entered
-mailbox names will only be used with the CREATE and APPEND commands,
-you should simply not use the namespace prefixed mailbox names in
-Gnus.
-
-See the UoW IMAPD documentation for the @code{#driver.*/} prefix
-for more information on how to use the prefixes. They are a power
-tool and should be used only if you are sure what the effects are.
-
-@node Debugging IMAP
-@subsection Debugging IMAP
-@cindex IMAP debugging
-@cindex protocol dump (IMAP)
-
-@acronym{IMAP} is a complex protocol, more so than @acronym{NNTP} or
-@acronym{POP3}. Implementation bugs are not unlikely, and we do our
-best to fix them right away. If you encounter odd behavior, chances
-are that either the server or Gnus is buggy.
-
-If you are familiar with network protocols in general, you will
-probably be able to extract some clues from the protocol dump of the
-exchanges between Gnus and the server. Even if you are not familiar
-with network protocols, when you include the protocol dump in
-@acronym{IMAP}-related bug reports you are helping us with data
-critical to solving the problem. Therefore, we strongly encourage you
-to include the protocol dump when reporting IMAP bugs in Gnus.
-
-
-@vindex imap-log
-Because the protocol dump, when enabled, generates lots of data, it is
-disabled by default. You can enable it by setting @code{imap-log} as
-follows:
-
-@lisp
-(setq imap-log t)
-@end lisp
-
-This instructs the @code{imap.el} package to log any exchanges with
-the server. The log is stored in the buffer @samp{*imap-log*}. Look
-for error messages, which sometimes are tagged with the keyword
-@code{BAD}---but when submitting a bug, make sure to include all the
-data.
-
@node Other Sources
@section Other Sources
@@ -18568,8 +17167,8 @@ newsgroups.
* Directory Groups:: You can read a directory as if it was a newsgroup.
* Anything Groups:: Dired? Who needs dired?
* Document Groups:: Single files can be the basis of a group.
-* SOUP:: Reading @sc{soup} packets ``offline''.
* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
+* The Empty Backend:: The backend that never has any news.
@end menu
@@ -18710,6 +17309,10 @@ A @acronym{MIME} digest of messages.
@item lanl-gov-announce
Announcement messages from LANL Gov Announce.
+@cindex git commit messages
+@item git
+@code{git} commit messages.
+
@cindex forwarded messages
@item rfc822-forward
A message forwarded according to RFC822.
@@ -18936,289 +17539,6 @@ correct type. A high number means high probability; a low number
means low probability with @samp{0} being the lowest valid number.
-@node SOUP
-@subsection SOUP
-@cindex SOUP
-@cindex offline
-
-In the PC world people often talk about ``offline'' newsreaders. These
-are thingies that are combined reader/news transport monstrosities.
-With built-in modem programs. Yecchh!
-
-Of course, us Unix Weenie types of human beans use things like
-@code{uucp} and, like, @code{nntpd} and set up proper news and mail
-transport things like Ghod intended. And then we just use normal
-newsreaders.
-
-However, it can sometimes be convenient to do something that's a bit
-easier on the brain if you have a very slow modem, and you're not really
-that interested in doing things properly.
-
-A file format called @sc{soup} has been developed for transporting news
-and mail from servers to home machines and back again. It can be a bit
-fiddly.
-
-First some terminology:
-
-@table @dfn
-
-@item server
-This is the machine that is connected to the outside world and where you
-get news and/or mail from.
-
-@item home machine
-This is the machine that you want to do the actual reading and responding
-on. It is typically not connected to the rest of the world in any way.
-
-@item packet
-Something that contains messages and/or commands. There are two kinds
-of packets:
-
-@table @dfn
-@item message packets
-These are packets made at the server, and typically contain lots of
-messages for you to read. These are called @file{SoupoutX.tgz} by
-default, where @var{x} is a number.
-
-@item response packets
-These are packets made at the home machine, and typically contains
-replies that you've written. These are called @file{SoupinX.tgz} by
-default, where @var{x} is a number.
-
-@end table
-
-@end table
-
-
-@enumerate
-
-@item
-You log in on the server and create a @sc{soup} packet. You can either
-use a dedicated @sc{soup} thingie (like the @code{awk} program), or you
-can use Gnus to create the packet with its @sc{soup} commands (@kbd{O
-s} and/or @kbd{G s b}; and then @kbd{G s p}) (@pxref{SOUP Commands}).
-
-@item
-You transfer the packet home. Rail, boat, car or modem will do fine.
-
-@item
-You put the packet in your home directory.
-
-@item
-You fire up Gnus on your home machine using the @code{nnsoup} back end as
-the native or secondary server.
-
-@item
-You read articles and mail and answer and followup to the things you
-want (@pxref{SOUP Replies}).
-
-@item
-You do the @kbd{G s r} command to pack these replies into a @sc{soup}
-packet.
-
-@item
-You transfer this packet to the server.
-
-@item
-You use Gnus to mail this packet out with the @kbd{G s s} command.
-
-@item
-You then repeat until you die.
-
-@end enumerate
-
-So you basically have a bipartite system---you use @code{nnsoup} for
-reading and Gnus for packing/sending these @sc{soup} packets.
-
-@menu
-* SOUP Commands:: Commands for creating and sending @sc{soup} packets
-* SOUP Groups:: A back end for reading @sc{soup} packets.
-* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news.
-@end menu
-
-
-@node SOUP Commands
-@subsubsection SOUP Commands
-
-These are commands for creating and manipulating @sc{soup} packets.
-
-@table @kbd
-@item G s b
-@kindex G s b (Group)
-@findex gnus-group-brew-soup
-Pack all unread articles in the current group
-(@code{gnus-group-brew-soup}). This command understands the
-process/prefix convention.
-
-@item G s w
-@kindex G s w (Group)
-@findex gnus-soup-save-areas
-Save all @sc{soup} data files (@code{gnus-soup-save-areas}).
-
-@item G s s
-@kindex G s s (Group)
-@findex gnus-soup-send-replies
-Send all replies from the replies packet
-(@code{gnus-soup-send-replies}).
-
-@item G s p
-@kindex G s p (Group)
-@findex gnus-soup-pack-packet
-Pack all files into a @sc{soup} packet (@code{gnus-soup-pack-packet}).
-
-@item G s r
-@kindex G s r (Group)
-@findex nnsoup-pack-replies
-Pack all replies into a replies packet (@code{nnsoup-pack-replies}).
-
-@item O s
-@kindex O s (Summary)
-@findex gnus-soup-add-article
-This summary-mode command adds the current article to a @sc{soup} packet
-(@code{gnus-soup-add-article}). It understands the process/prefix
-convention (@pxref{Process/Prefix}).
-
-@end table
-
-
-There are a few variables to customize where Gnus will put all these
-thingies:
-
-@table @code
-
-@item gnus-soup-directory
-@vindex gnus-soup-directory
-Directory where Gnus will save intermediate files while composing
-@sc{soup} packets. The default is @file{~/SoupBrew/}.
-
-@item gnus-soup-replies-directory
-@vindex gnus-soup-replies-directory
-This is what Gnus will use as a temporary directory while sending our
-reply packets. @file{~/SoupBrew/SoupReplies/} is the default.
-
-@item gnus-soup-prefix-file
-@vindex gnus-soup-prefix-file
-Name of the file where Gnus stores the last used prefix. The default is
-@samp{gnus-prefix}.
-
-@item gnus-soup-packer
-@vindex gnus-soup-packer
-A format string command for packing a @sc{soup} packet. The default is
-@samp{tar cf - %s | gzip > $HOME/Soupout%d.tgz}.
-
-@item gnus-soup-unpacker
-@vindex gnus-soup-unpacker
-Format string command for unpacking a @sc{soup} packet. The default is
-@samp{gunzip -c %s | tar xvf -}.
-
-@item gnus-soup-packet-directory
-@vindex gnus-soup-packet-directory
-Where Gnus will look for reply packets. The default is @file{~/}.
-
-@item gnus-soup-packet-regexp
-@vindex gnus-soup-packet-regexp
-Regular expression matching @sc{soup} reply packets in
-@code{gnus-soup-packet-directory}.
-
-@end table
-
-
-@node SOUP Groups
-@subsubsection SOUP Groups
-@cindex nnsoup
-
-@code{nnsoup} is the back end for reading @sc{soup} packets. It will
-read incoming packets, unpack them, and put them in a directory where
-you can read them at leisure.
-
-These are the variables you can use to customize its behavior:
-
-@table @code
-
-@item nnsoup-tmp-directory
-@vindex nnsoup-tmp-directory
-When @code{nnsoup} unpacks a @sc{soup} packet, it does it in this
-directory. (@file{/tmp/} by default.)
-
-@item nnsoup-directory
-@vindex nnsoup-directory
-@code{nnsoup} then moves each message and index file to this directory.
-The default is @file{~/SOUP/}.
-
-@item nnsoup-replies-directory
-@vindex nnsoup-replies-directory
-All replies will be stored in this directory before being packed into a
-reply packet. The default is @file{~/SOUP/replies/}.
-
-@item nnsoup-replies-format-type
-@vindex nnsoup-replies-format-type
-The @sc{soup} format of the replies packets. The default is @samp{?n}
-(rnews), and I don't think you should touch that variable. I probably
-shouldn't even have documented it. Drats! Too late!
-
-@item nnsoup-replies-index-type
-@vindex nnsoup-replies-index-type
-The index type of the replies packet. The default is @samp{?n}, which
-means ``none''. Don't fiddle with this one either!
-
-@item nnsoup-active-file
-@vindex nnsoup-active-file
-Where @code{nnsoup} stores lots of information. This is not an ``active
-file'' in the @code{nntp} sense; it's an Emacs Lisp file. If you lose
-this file or mess it up in any way, you're dead. The default is
-@file{~/SOUP/active}.
-
-@item nnsoup-packer
-@vindex nnsoup-packer
-Format string command for packing a reply @sc{soup} packet. The default
-is @samp{tar cf - %s | gzip > $HOME/Soupin%d.tgz}.
-
-@item nnsoup-unpacker
-@vindex nnsoup-unpacker
-Format string command for unpacking incoming @sc{soup} packets. The
-default is @samp{gunzip -c %s | tar xvf -}.
-
-@item nnsoup-packet-directory
-@vindex nnsoup-packet-directory
-Where @code{nnsoup} will look for incoming packets. The default is
-@file{~/}.
-
-@item nnsoup-packet-regexp
-@vindex nnsoup-packet-regexp
-Regular expression matching incoming @sc{soup} packets. The default is
-@samp{Soupout}.
-
-@item nnsoup-always-save
-@vindex nnsoup-always-save
-If non-@code{nil}, save the replies buffer after each posted message.
-
-@end table
-
-
-@node SOUP Replies
-@subsubsection SOUP Replies
-
-Just using @code{nnsoup} won't mean that your postings and mailings end
-up in @sc{soup} reply packets automagically. You have to work a bit
-more for that to happen.
-
-@findex nnsoup-set-variables
-The @code{nnsoup-set-variables} command will set the appropriate
-variables to ensure that all your followups and replies end up in the
-@sc{soup} system.
-
-In specific, this is what it does:
-
-@lisp
-(setq message-send-news-function 'nnsoup-request-post)
-(setq message-send-mail-function 'nnsoup-request-mail)
-@end lisp
-
-And that's it, really. If you only want news to go into the @sc{soup}
-system you just use the first line. If you only want mail to be
-@sc{soup}ed you use the second.
-
-
@node Mail-To-News Gateways
@subsection Mail-To-News Gateways
@cindex mail-to-news gateways
@@ -19296,6 +17616,22 @@ So, to use this, simply say something like:
@end lisp
+@node The Empty Backend
+@subsection The Empty Backend
+@cindex nnnil
+
+@code{nnnil} is a backend that can be used as a placeholder if you
+have to specify a backend somewhere, but don't really want to. The
+classical example is if you don't want to have a primary select
+methods, but want to only use secondary ones:
+
+@lisp
+(setq gnus-select-method '(nnnil ""))
+(setq gnus-secondary-select-methods
+ '((nnimap "foo")
+ (nnml "")))
+@end lisp
+
@node Combined Groups
@section Combined Groups
@@ -19305,7 +17641,6 @@ groups.
@menu
* Virtual Groups:: Combining articles from many groups.
-* Kibozed Groups:: Looking through parts of the newsfeed for articles.
@end menu
@@ -19395,58 +17730,6 @@ from component groups---group parameters, for instance, are not
inherited.
-@node Kibozed Groups
-@subsection Kibozed Groups
-@cindex nnkiboze
-@cindex kibozing
-
-@dfn{Kibozing} is defined by the @acronym{OED} as ``grepping through
-(parts of) the news feed''. @code{nnkiboze} is a back end that will
-do this for you. Oh joy! Now you can grind any @acronym{NNTP} server
-down to a halt with useless requests! Oh happiness!
-
-@kindex G k (Group)
-To create a kibozed group, use the @kbd{G k} command in the group
-buffer.
-
-The address field of the @code{nnkiboze} method is, as with
-@code{nnvirtual}, a regexp to match groups to be ``included'' in the
-@code{nnkiboze} group. That's where most similarities between
-@code{nnkiboze} and @code{nnvirtual} end.
-
-In addition to this regexp detailing component groups, an
-@code{nnkiboze} group must have a score file to say what articles are
-to be included in the group (@pxref{Scoring}).
-
-@kindex M-x nnkiboze-generate-groups
-@findex nnkiboze-generate-groups
-You must run @kbd{M-x nnkiboze-generate-groups} after creating the
-@code{nnkiboze} groups you want to have. This command will take time.
-Lots of time. Oodles and oodles of time. Gnus has to fetch the
-headers from all the articles in all the component groups and run them
-through the scoring process to determine if there are any articles in
-the groups that are to be part of the @code{nnkiboze} groups.
-
-Please limit the number of component groups by using restrictive
-regexps. Otherwise your sysadmin may become annoyed with you, and the
-@acronym{NNTP} site may throw you off and never let you back in again.
-Stranger things have happened.
-
-@code{nnkiboze} component groups do not have to be alive---they can be dead,
-and they can be foreign. No restrictions.
-
-@vindex nnkiboze-directory
-The generation of an @code{nnkiboze} group means writing two files in
-@code{nnkiboze-directory}, which is @file{~/News/kiboze/} by default.
-One contains the @acronym{NOV} header lines for all the articles in
-the group, and the other is an additional @file{.newsrc} file to store
-information on what groups have been searched through to find
-component articles.
-
-Articles marked as read in the @code{nnkiboze} group will have
-their @acronym{NOV} lines removed from the @acronym{NOV} file.
-
-
@node Email Based Diary
@section Email Based Diary
@cindex diary
@@ -20933,7 +19216,7 @@ limit to control how often the cycling occurs. A large value improves
performance. A small value minimizes the time lost should the
connection be lost while fetching (You may need to run
@code{gnus-agent-regenerate-group} to update the group's state.
-However, all articles parsed prior to loosing the connection will be
+However, all articles parsed prior to losing the connection will be
available while unplugged). The default is 10M so it is unusual to
see any cycling.
@@ -22002,7 +20285,7 @@ is @file{ADAPT}.
@vindex gnus-adaptive-pretty-print
Adaptive score files can get huge and are not meant to be edited by
human hands. If @code{gnus-adaptive-pretty-print} is @code{nil} (the
-deafult) those files will not be written in a human readable way.
+default) those files will not be written in a human readable way.
@vindex gnus-score-exact-adapt-limit
When doing adaptive scoring, substring or fuzzy matching would probably
@@ -22776,6 +21059,1072 @@ the new score, which should be an integer.
Gnus will try to decay scores once a day. If you haven't run Gnus for
four days, Gnus will decay the scores four times, for instance.
+@node Searching
+@chapter Searching
+@cindex searching
+
+FIXME: Add a brief overview of Gnus search capabilities. A brief
+comparison of nnir, nnmairix, contrib/gnus-namazu would be nice
+as well.
+
+This chapter describes tools for searching groups and servers for
+articles matching a query and then retrieving those articles. Gnus
+provides a simpler mechanism for searching through articles in a summary buffer
+to find those matching a pattern. @xref{Searching for Articles}.
+
+@menu
+* nnir:: Searching with various engines.
+* nnmairix:: Searching with Mairix.
+@end menu
+
+@node nnir
+@section nnir
+@cindex nnir
+
+This section describes how to use @code{nnir} to search for articles
+within gnus.
+
+@menu
+* What is nnir?:: What does @code{nnir} do?
+* Basic Usage:: How to perform simple searches.
+* Setting up nnir:: How to set up @code{nnir}.
+@end menu
+
+@node What is nnir?
+@subsection What is nnir?
+
+@code{nnir} is a Gnus interface to a number of tools for searching
+through mail and news repositories. Different backends (like
+@code{nnimap} and @code{nntp}) work with different tools (called
+@dfn{engines} in @code{nnir} lingo), but all use the same basic search
+interface.
+
+The @code{nnimap} and @code{gmane} search engines should work with no
+configuration. Other engines require a local index that needs to be
+created and maintained outside of Gnus.
+
+
+@node Basic Usage
+@subsection Basic Usage
+
+In the group buffer typing @kbd{G G} will search the group on the
+current line by calling @code{gnus-group-make-nnir-group}. This prompts
+for a query string, creates an ephemeral @code{nnir} group containing
+the articles that match this query, and takes you to a summary buffer
+showing these articles. Articles may then be read, moved and deleted
+using the usual commands.
+
+The @code{nnir} group made in this way is an @code{ephemeral} group, and
+some changes are not permanent: aside from reading, moving, and
+deleting, you can't act on the original article. But there is an
+alternative: you can @emph{warp} to the original group for the article
+on the current line with @kbd{A W}, aka
+@code{gnus-warp-to-article}. Even better, the function
+@code{gnus-summary-refer-thread}, bound by default in summary buffers to
+@kbd{A T}, will first warp to the original group before it works its
+magic and includes all the articles in the thread. From here you can
+read, move and delete articles, but also copy them, alter article marks,
+whatever. Go nuts.
+
+You say you want to search more than just the group on the current line?
+No problem: just process-mark the groups you want to search. You want
+even more? Calling for an nnir search with the cursor on a topic heading
+will search all the groups under that heading.
+
+Still not enough? OK, in the server buffer
+@code{gnus-group-make-nnir-group} (now bound to @kbd{G}) will search all
+groups from the server on the current line. Too much? Want to ignore
+certain groups when searching, like spam groups? Just customize
+@code{nnir-ignored-newsgroups}.
+
+One more thing: individual search engines may have special search
+features. You can access these special features by giving a prefix-arg
+to @code{gnus-group-make-nnir-group}. If you are searching multiple
+groups with different search engines you will be prompted for the
+special search features for each engine separately.
+
+
+@node Setting up nnir
+@subsection Setting up nnir
+
+To set up nnir you may need to do some prep work. Firstly, you may need
+to configure the search engines you plan to use. Some of them, like
+@code{imap} and @code{gmane}, need no special configuration. Others,
+like @code{namazu} and @code{swish}, require configuration as described
+below. Secondly, you need to associate a search engine with a server or
+a backend.
+
+If you just want to use the @code{imap} engine to search @code{nnimap}
+servers, and the @code{gmane} engine to search @code{gmane} then you
+don't have to do anything. But you might want to read the details of the
+query language anyway.
+
+@menu
+* Associating Engines:: How to associate engines.
+* The imap Engine:: Imap configuration and usage.
+* The gmane Engine:: Gmane configuration and usage.
+* The swish++ Engine:: Swish++ configuration and usage.
+* The swish-e Engine:: Swish-e configuration and usage.
+* The namazu Engine:: Namazu configuration and usage.
+* The hyrex Engine:: Hyrex configuration and usage.
+* Customizations:: User customizable settings.
+@end menu
+
+@node Associating Engines
+@subsubsection Associating Engines
+
+
+When searching a group, @code{nnir} needs to know which search engine to
+use. You can configure a given server to use a particular engine by
+setting the server variable @code{nnir-search-engine} to the engine
+name. For example to use the @code{namazu} engine to search the server
+named @code{home} you can use
+
+@lisp
+(setq gnus-secondary-select-methods
+ '((nnml "home"
+ (nnimap-address "localhost")
+ (nnir-search-engine namazu))))
+@end lisp
+
+Alternatively you might want to use a particular engine for all servers
+with a given backend. For example, you might want to use the @code{imap}
+engine for all servers using the @code{nnimap} backend. In this case you
+can customize the variable @code{nnir-method-default-engines}. This is
+an alist of pairs of the form @code{(backend . engine)}. By default this
+variable is set to use the @code{imap} engine for all servers using the
+@code{nnimap} backend, and the @code{gmane} backend for @code{nntp}
+servers. (Don't worry, the @code{gmane} search engine won't actually try
+to search non-gmane @code{nntp} servers.) But if you wanted to use
+@code{namazu} for all your servers with an @code{nnimap} backend you
+could change this to
+
+@lisp
+'((nnimap . namazu)
+ (nntp . gmane))
+@end lisp
+
+@node The imap Engine
+@subsubsection The imap Engine
+
+The @code{imap} engine requires no configuration.
+
+Queries using the @code{imap} engine follow a simple query language.
+The search is always case-insensitive and supports the following
+features (inspired by the Google search input language):
+
+@table @samp
+
+@item Boolean query operators
+AND, OR, and NOT are supported, and parentheses can be used to control
+operator precedence, e.g. (emacs OR xemacs) AND linux. Note that
+operators must be written with all capital letters to be
+recognised. Also preceding a term with a - sign is equivalent to NOT
+term.
+
+@item Automatic AND queries
+If you specify multiple words then they will be treated as an AND
+expression intended to match all components.
+
+@item Phrase searches
+If you wrap your query in double-quotes then it will be treated as a
+literal string.
+
+@end table
+
+By default the whole message will be searched. The query can be limited
+to a specific part of a message by using a prefix-arg. After inputting
+the query this will prompt (with completion) for a message part.
+Choices include ``Whole message'', ``Subject'', ``From'', and
+``To''. Any unrecognized input is interpreted as a header name. For
+example, typing @kbd{Message-ID} in response to this prompt will limit
+the query to the Message-ID header.
+
+Finally selecting ``Imap'' will interpret the query as a raw
+@acronym{IMAP} search query. The format of such queries can be found in
+RFC3501.
+
+If you don't like the default of searching whole messages you can
+customize @code{nnir-imap-default-search-key}. For example to use
+@acronym{IMAP} queries by default
+
+@lisp
+(setq nnir-imap-default-search-key "Imap")
+@end lisp
+
+@node The gmane Engine
+@subsubsection The gmane Engine
+
+The @code{gmane} engine requires no configuration.
+
+Gmane queries follow a simple query language:
+
+@table @samp
+@item Boolean query operators
+AND, OR, NOT (or AND NOT), and XOR are supported, and brackets can be
+used to control operator precedence, e.g. (emacs OR xemacs) AND linux.
+Note that operators must be written with all capital letters to be
+recognised.
+
+@item Required and excluded terms
++ and - can be used to require or exclude terms, e.g. football -american
+
+@item Unicode handling
+The search engine converts all text to utf-8, so searching should work
+in any language.
+
+@item Stopwords
+Common English words (like 'the' and 'a') are ignored by default. You
+can override this by prefixing such words with a + (e.g. +the) or
+enclosing the word in quotes (e.g. "the").
+
+@end table
+
+The query can be limited to articles by a specific author using a
+prefix-arg. After inputting the query this will prompt for an author
+name (or part of a name) to match.
+
+@node The swish++ Engine
+@subsubsection The swish++ Engine
+
+FIXEM: Say something more here.
+
+Documentation for swish++ may be found at the swish++ sourceforge page:
+@uref{http://swishplusplus.sourceforge.net}
+
+@table @code
+
+@item nnir-swish++-program
+The name of the swish++ executable. Defaults to @code{search}
+
+@item nnir-swish++-additional-switches
+A list of strings to be given as additional arguments to
+swish++. @code{nil} by default.
+
+@item nnir-swish++-remove-prefix
+The prefix to remove from each file name returned by swish++ in order
+to get a group name. By default this is @code{$HOME/Mail}.
+
+@end table
+
+@node The swish-e Engine
+@subsubsection The swish-e Engine
+
+FIXEM: Say something more here.
+
+Documentation for swish-e may be found at the swish-e homepage
+@uref{http://swish-e.org}
+
+@table @code
+
+@item nnir-swish-e-program
+The name of the swish-e search program. Defaults to @code{swish-e}.
+
+@item nnir-swish-e-additional-switches
+A list of strings to be given as additional arguments to
+swish-e. @code{nil} by default.
+
+@item nnir-swish-e-remove-prefix
+The prefix to remove from each file name returned by swish-e in order
+to get a group name. By default this is @code{$HOME/Mail}.
+
+@end table
+
+@node The namazu Engine
+@subsubsection The namazu Engine
+
+Using the namazu engine requires creating and maintaining index files.
+One directory should contain all the index files, and nnir must be told
+where to find them by setting the @code{nnir-namazu-index-directory}
+variable.
+
+To work correctly the @code{nnir-namazu-remove-prefix} variable must
+also be correct. This is the prefix to remove from each file name
+returned by Namazu in order to get a proper group name (albeit with `/'
+instead of `.').
+
+For example, suppose that Namazu returns file names such as
+@samp{/home/john/Mail/mail/misc/42}. For this example, use the
+following setting: @code{(setq nnir-namazu-remove-prefix
+"/home/john/Mail/")} Note the trailing slash. Removing this prefix from
+the directory gives @samp{mail/misc/42}. @code{nnir} knows to remove
+the @samp{/42} and to replace @samp{/} with @samp{.} to arrive at the
+correct group name @samp{mail.misc}.
+
+Extra switches may be passed to the namazu search command by setting the
+variable @code{nnir-namazu-additional-switches}. It is particularly
+important not to pass any any switches to namazu that will change the
+output format. Good switches to use include `--sort', `--ascending',
+`--early' and `--late'. Refer to the Namazu documentation for further
+information on valid switches.
+
+Mail must first be indexed with the `mknmz' program. Read the documentation
+for namazu to create a configuration file. Here is an example:
+
+@cartouche
+@example
+ package conf; # Don't remove this line!
+
+ # Paths which will not be indexed. Don't use `^' or `$' anchors.
+ $EXCLUDE_PATH = "spam|sent";
+
+ # Header fields which should be searchable. case-insensitive
+ $REMAIN_HEADER = "from|date|message-id|subject";
+
+ # Searchable fields. case-insensitive
+ $SEARCH_FIELD = "from|date|message-id|subject";
+
+ # The max length of a word.
+ $WORD_LENG_MAX = 128;
+
+ # The max length of a field.
+ $MAX_FIELD_LENGTH = 256;
+@end example
+@end cartouche
+
+For this example, mail is stored in the directories @samp{~/Mail/mail/},
+@samp{~/Mail/lists/} and @samp{~/Mail/archive/}, so to index them go to
+the index directory set in @code{nnir-namazu-index-directory} and issue
+the following command:
+
+@example
+mknmz --mailnews ~/Mail/archive/ ~/Mail/mail/ ~/Mail/lists/
+@end example
+
+For maximum searching efficiency you might want to have a cron job run
+this command periodically, say every four hours.
+
+@node The hyrex Engine
+@subsubsection The hyrex Engine
+This engine is obsolete.
+
+@node Customizations
+@subsubsection Custimozations
+
+@table @code
+
+@item nnir-method-default-engines
+Alist of server backend - search engine pairs. The default associations
+are
+@example
+(nnimap . imap)
+(nntp . gmane)
+@end example
+
+@item nnir-ignored-newsgroups
+A regexp to match newsgroups in the active file that should be skipped
+when searching all groups on a server.
+
+@item nnir-summary-line-format
+The format specification to be used for lines in an nnir summary buffer.
+All the items from `gnus-summary-line-format' are available, along with
+three items unique to nnir summary buffers:
+
+@example
+%Z Search retrieval score value (integer)
+%G Article original full group name (string)
+%g Article original short group name (string)
+@end example
+
+If nil (the default) this will use @code{gnus-summary-line-format}.
+
+@item nnir-retrieve-headers-override-function
+If non-nil, a function that retrieves article headers rather than using
+the gnus built-in function. This function takes an article list and
+group as arguments and populates the `nntp-server-buffer' with the
+retrieved headers. It should then return either 'nov or 'headers
+indicating the retrieved header format. Failure to retrieve headers
+should return @code{nil}
+
+If this variable is nil, or if the provided function returns nil for a
+search result, @code{gnus-retrieve-headers} will be called instead."
+
+
+@end table
+
+
+@node nnmairix
+@section nnmairix
+
+@cindex mairix
+@cindex nnmairix
+This paragraph describes how to set up mairix and the back end
+@code{nnmairix} for indexing and searching your mail from within
+Gnus. Additionally, you can create permanent ``smart'' groups which are
+bound to mairix searches and are automatically updated.
+
+@menu
+* About mairix:: About the mairix mail search engine
+* nnmairix requirements:: What you will need for using nnmairix
+* What nnmairix does:: What does nnmairix actually do?
+* Setting up mairix:: Set up your mairix installation
+* Configuring nnmairix:: Set up the nnmairix back end
+* nnmairix keyboard shortcuts:: List of available keyboard shortcuts
+* Propagating marks:: How to propagate marks from nnmairix groups
+* nnmairix tips and tricks:: Some tips, tricks and examples
+* nnmairix caveats:: Some more stuff you might want to know
+@end menu
+
+@c FIXME: The markup in this section might need improvement.
+@c E.g. adding @samp, @var, @file, @command, etc.
+@c Cf. (info "(texinfo)Indicating")
+
+@node About mairix
+@subsection About mairix
+
+Mairix is a tool for indexing and searching words in locally stored
+mail. It was written by Richard Curnow and is licensed under the
+GPL. Mairix comes with most popular GNU/Linux distributions, but it also
+runs under Windows (with cygwin), Mac OS X and Solaris. The homepage can
+be found at
+@uref{http://www.rpcurnow.force9.co.uk/mairix/index.html}
+
+Though mairix might not be as flexible as other search tools like
+swish++ or namazu, which you can use via the @code{nnir} back end, it
+has the prime advantage of being incredibly fast. On current systems, it
+can easily search through headers and message bodies of thousands and
+thousands of mails in well under a second. Building the database
+necessary for searching might take a minute or two, but only has to be
+done once fully. Afterwards, the updates are done incrementally and
+therefore are really fast, too. Additionally, mairix is very easy to set
+up.
+
+For maximum speed though, mairix should be used with mails stored in
+@code{Maildir} or @code{MH} format (this includes the @code{nnml} back
+end), although it also works with mbox. Mairix presents the search
+results by populating a @emph{virtual} maildir/MH folder with symlinks
+which point to the ``real'' message files (if mbox is used, copies are
+made). Since mairix already presents search results in such a virtual
+mail folder, it is very well suited for using it as an external program
+for creating @emph{smart} mail folders, which represent certain mail
+searches.
+
+@node nnmairix requirements
+@subsection nnmairix requirements
+
+Mairix searches local mail---that means, mairix absolutely must have
+direct access to your mail folders. If your mail resides on another
+server (e.g. an @acronym{IMAP} server) and you happen to have shell
+access, @code{nnmairix} supports running mairix remotely, e.g. via ssh.
+
+Additionally, @code{nnmairix} only supports the following Gnus back
+ends: @code{nnml}, @code{nnmaildir}, and @code{nnimap}. You must use
+one of these back ends for using @code{nnmairix}. Other back ends, like
+@code{nnmbox}, @code{nnfolder} or @code{nnmh}, won't work.
+
+If you absolutely must use mbox and still want to use @code{nnmairix},
+you can set up a local @acronym{IMAP} server, which you then access via
+@code{nnimap}. This is a rather massive setup for accessing some mbox
+files, so just change to MH or Maildir already... However, if you're
+really, really passionate about using mbox, you might want to look into
+the package @file{mairix.el}, which comes with Emacs 23.
+
+@node What nnmairix does
+@subsection What nnmairix does
+
+The back end @code{nnmairix} enables you to call mairix from within Gnus,
+either to query mairix with a search term or to update the
+database. While visiting a message in the summary buffer, you can use
+several pre-defined shortcuts for calling mairix, e.g. to quickly
+search for all mails from the sender of the current message or to
+display the whole thread associated with the message, even if the
+mails are in different folders.
+
+Additionally, you can create permanent @code{nnmairix} groups which are bound
+to certain mairix searches. This way, you can easily create a group
+containing mails from a certain sender, with a certain subject line or
+even for one specific thread based on the Message-ID. If you check for
+new mail in these folders (e.g. by pressing @kbd{g} or @kbd{M-g}), they
+automatically update themselves by calling mairix.
+
+You might ask why you need @code{nnmairix} at all, since mairix already
+creates the group, populates it with links to the mails so that you can
+then access it with Gnus, right? Well, this @emph{might} work, but often
+does not---at least not without problems. Most probably you will get
+strange article counts, and sometimes you might see mails which Gnus
+claims have already been canceled and are inaccessible. This is due to
+the fact that Gnus isn't really amused when things are happening behind
+its back. Another problem can be the mail back end itself, e.g. if you
+use mairix with an @acronym{IMAP} server (I had Dovecot complaining
+about corrupt index files when mairix changed the contents of the search
+group). Using @code{nnmairix} should circumvent these problems.
+
+@code{nnmairix} is not really a mail back end---it's actually more like
+a wrapper, sitting between a ``real'' mail back end where mairix stores
+the searches and the Gnus front end. You can choose between three
+different mail back ends for the mairix folders: @code{nnml},
+@code{nnmaildir} or @code{nnimap}. @code{nnmairix} will call the mairix
+binary so that the search results are stored in folders named
+@code{zz_mairix-<NAME>-<NUMBER>} on this mail back end, but it will
+present these folders in the Gnus front end only with @code{<NAME>}.
+You can use an existing mail back end where you already store your mail,
+but if you're uncomfortable with @code{nnmairix} creating new mail
+groups alongside your other mail, you can also create e.g. a new
+@code{nnmaildir} or @code{nnml} server exclusively for mairix, but then
+make sure those servers do not accidentally receive your new mail
+(@pxref{nnmairix caveats}). A special case exists if you want to use
+mairix remotely on an IMAP server with @code{nnimap}---here the mairix
+folders and your other mail must be on the same @code{nnimap} back end.
+
+@node Setting up mairix
+@subsection Setting up mairix
+
+First: create a backup of your mail folders (@pxref{nnmairix caveats}).
+
+Setting up mairix is easy: simply create a @file{.mairixrc} file with
+(at least) the following entries:
+
+@example
+# Your Maildir/MH base folder
+base=~/Maildir
+@end example
+
+This is the base folder for your mails. All the following directories
+are relative to this base folder. If you want to use @code{nnmairix}
+with @code{nnimap}, this base directory has to point to the mail
+directory where the @acronym{IMAP} server stores the mail folders!
+
+@example
+maildir= ... your maildir folders which should be indexed ...
+mh= ... your nnml/mh folders which should be indexed ...
+mbox = ... your mbox files which should be indexed ...
+@end example
+
+This specifies all your mail folders and mbox files (relative to the
+base directory!) you want to index with mairix. Note that the
+@code{nnml} back end saves mails in MH format, so you have to put those
+directories in the @code{mh} line. See the example at the end of this
+section and mairixrc's man-page for further details.
+
+@example
+omit=zz_mairix-*
+@end example
+
+@vindex nnmairix-group-prefix
+This should make sure that you don't accidentally index the mairix
+search results. You can change the prefix of these folders with the
+variable @code{nnmairix-group-prefix}.
+
+@example
+mformat= ... 'maildir' or 'mh' ...
+database= ... location of database file ...
+@end example
+
+The @code{format} setting specifies the output format for the mairix
+search folder. Set this to @code{mh} if you want to access search results
+with @code{nnml}. Otherwise choose @code{maildir}.
+
+To summarize, here is my shortened @file{.mairixrc} file as an example:
+
+@example
+base=~/Maildir
+maildir=.personal:.work:.logcheck:.sent
+mh=../Mail/nnml/*...
+mbox=../mboxmail/mailarchive_year*
+mformat=maildir
+omit=zz_mairix-*
+database=~/.mairixdatabase
+@end example
+
+In this case, the base directory is @file{~/Maildir}, where all my Maildir
+folders are stored. As you can see, the folders are separated by
+colons. If you wonder why every folder begins with a dot: this is
+because I use Dovecot as @acronym{IMAP} server, which again uses
+@code{Maildir++} folders. For testing nnmairix, I also have some
+@code{nnml} mail, which is saved in @file{~/Mail/nnml}. Since this has
+to be specified relative to the @code{base} directory, the @code{../Mail}
+notation is needed. Note that the line ends in @code{*...}, which means
+to recursively scan all files under this directory. Without the three
+dots, the wildcard @code{*} will not work recursively. I also have some
+old mbox files with archived mail lying around in @file{~/mboxmail}.
+The other lines should be obvious.
+
+See the man page for @code{mairixrc} for details and further options,
+especially regarding wildcard usage, which may be a little different
+than you are used to.
+
+Now simply call @code{mairix} to create the index for the first time.
+Note that this may take a few minutes, but every following index will do
+the updates incrementally and hence is very fast.
+
+@node Configuring nnmairix
+@subsection Configuring nnmairix
+
+In group mode, type @kbd{G b c}
+(@code{nnmairix-create-server-and-default-group}). This will ask you for all
+necessary information and create a @code{nnmairix} server as a foreign
+server. You will have to specify the following:
+
+@itemize @bullet
+
+@item
+The @strong{name} of the @code{nnmairix} server---choose whatever you
+want.
+
+@item
+The name of the @strong{back end server} where mairix should store its
+searches. This must be a full server name, like @code{nnml:mymail}.
+Just hit @kbd{TAB} to see the available servers. Currently, servers
+which are accessed through @code{nnmaildir}, @code{nnimap} and
+@code{nnml} are supported. As explained above, for locally stored
+mails, this can be an existing server where you store your mails.
+However, you can also create e.g. a new @code{nnmaildir} or @code{nnml}
+server exclusively for @code{nnmairix} in your secondary select methods
+(@pxref{Finding the News}). If you use a secondary @code{nnml} server
+just for mairix, make sure that you explicitly set the server variable
+@code{nnml-get-new-mail} to @code{nil}, or you might lose mail
+(@pxref{nnmairix caveats}). If you want to use mairix remotely on an
+@acronym{IMAP} server, you have to choose the corresponding
+@code{nnimap} server here.
+
+@item
+@vindex nnmairix-mairix-search-options
+The @strong{command} to call the mairix binary. This will usually just
+be @code{mairix}, but you can also choose something like @code{ssh
+SERVER mairix} if you want to call mairix remotely, e.g. on your
+@acronym{IMAP} server. If you want to add some default options to
+mairix, you could do this here, but better use the variable
+@code{nnmairix-mairix-search-options} instead.
+
+@item
+The name of the @strong{default search group}. This will be the group
+where all temporary mairix searches are stored, i.e. all searches which
+are not bound to permanent @code{nnmairix} groups. Choose whatever you
+like.
+
+@item
+If the mail back end is @code{nnimap} or @code{nnmaildir}, you will be
+asked if you work with @strong{Maildir++}, i.e. with hidden maildir
+folders (=beginning with a dot). For example, you have to answer
+@samp{yes} here if you work with the Dovecot @acronym{IMAP}
+server. Otherwise, you should answer @samp{no} here.
+
+@end itemize
+
+@node nnmairix keyboard shortcuts
+@subsection nnmairix keyboard shortcuts
+
+In group mode:
+
+@table @kbd
+
+@item G b c
+@kindex G b c (Group)
+@findex nnmairix-create-server-and-default-group
+Creates @code{nnmairix} server and default search group for this server
+(@code{nnmairix-create-server-and-default-group}). You should have done
+this by now (@pxref{Configuring nnmairix}).
+
+@item G b s
+@kindex G b s (Group)
+@findex nnmairix-search
+Prompts for query which is then sent to the mairix binary. Search
+results are put into the default search group which is automatically
+displayed (@code{nnmairix-search}).
+
+@item G b m
+@kindex G b m (Group)
+@findex nnmairix-widget-search
+Allows you to create a mairix search or a permanent group more
+comfortably using graphical widgets, similar to a customization
+group. Just try it to see how it works (@code{nnmairix-widget-search}).
+
+@item G b i
+@kindex G b i (Group)
+@findex nnmairix-search-interactive
+Another command for creating a mairix query more comfortably, but uses
+only the minibuffer (@code{nnmairix-search-interactive}).
+
+@item G b g
+@kindex G b g (Group)
+@findex nnmairix-create-search-group
+Creates a permanent group which is associated with a search query
+(@code{nnmairix-create-search-group}). The @code{nnmairix} back end
+automatically calls mairix when you update this group with @kbd{g} or
+@kbd{M-g}.
+
+@item G b q
+@kindex G b q (Group)
+@findex nnmairix-group-change-query-this-group
+Changes the search query for the @code{nnmairix} group under cursor
+(@code{nnmairix-group-change-query-this-group}).
+
+@item G b t
+@kindex G b t (Group)
+@findex nnmairix-group-toggle-threads-this-group
+Toggles the 'threads' parameter for the @code{nnmairix} group under cursor,
+i.e. if you want see the whole threads of the found messages
+(@code{nnmairix-group-toggle-threads-this-group}).
+
+@item G b u
+@kindex G b u (Group)
+@findex nnmairix-update-database
+@vindex nnmairix-mairix-update-options
+Calls mairix binary for updating the database
+(@code{nnmairix-update-database}). The default parameters are @code{-F}
+and @code{-Q} for making this as fast as possible (see variable
+@code{nnmairix-mairix-update-options} for defining these default
+options).
+
+@item G b r
+@kindex G b r (Group)
+@findex nnmairix-group-toggle-readmarks-this-group
+Keep articles in this @code{nnmairix} group always read or unread, or leave the
+marks unchanged (@code{nnmairix-group-toggle-readmarks-this-group}).
+
+@item G b d
+@kindex G b d (Group)
+@findex nnmairix-group-delete-recreate-this-group
+Recreate @code{nnmairix} group on the ``real'' mail back end
+(@code{nnmairix-group-delete-recreate-this-group}). You can do this if
+you always get wrong article counts with a @code{nnmairix} group.
+
+@item G b a
+@kindex G b a (Group)
+@findex nnmairix-group-toggle-allowfast-this-group
+Toggles the @code{allow-fast} parameters for group under cursor
+(@code{nnmairix-group-toggle-allowfast-this-group}). The default
+behavior of @code{nnmairix} is to do a mairix search every time you
+update or enter the group. With the @code{allow-fast} parameter set,
+mairix will only be called when you explicitly update the group, but not
+upon entering. This makes entering the group faster, but it may also
+lead to dangling symlinks if something changed between updating and
+entering the group which is not yet in the mairix database.
+
+@item G b p
+@kindex G b p (Group)
+@findex nnmairix-group-toggle-propmarks-this-group
+Toggle marks propagation for this group
+(@code{nnmairix-group-toggle-propmarks-this-group}). (@pxref{Propagating
+marks}).
+
+@item G b o
+@kindex G b o (Group)
+@findex nnmairix-propagate-marks
+Manually propagate marks (@code{nnmairix-propagate-marks}); needed only when
+@code{nnmairix-propagate-marks-upon-close} is set to @code{nil}.
+
+@end table
+
+In summary mode:
+
+@table @kbd
+
+@item $ m
+@kindex $ m (Summary)
+@findex nnmairix-widget-search-from-this-article
+Allows you to create a mairix query or group based on the current
+message using graphical widgets (same as @code{nnmairix-widget-search})
+(@code{nnmairix-widget-search-from-this-article}).
+
+@item $ g
+@kindex $ g (Summary)
+@findex nnmairix-create-search-group-from-message
+Interactively creates a new search group with query based on the current
+message, but uses the minibuffer instead of graphical widgets
+(@code{nnmairix-create-search-group-from-message}).
+
+@item $ t
+@kindex $ t (Summary)
+@findex nnmairix-search-thread-this-article
+Searches thread for the current article
+(@code{nnmairix-search-thread-this-article}). This is effectively a
+shortcut for calling @code{nnmairix-search} with @samp{m:msgid} of the
+current article and enabled threads.
+
+@item $ f
+@kindex $ f (Summary)
+@findex nnmairix-search-from-this-article
+Searches all messages from sender of the current article
+(@code{nnmairix-search-from-this-article}). This is a shortcut for
+calling @code{nnmairix-search} with @samp{f:From}.
+
+@item $ o
+@kindex $ o (Summary)
+@findex nnmairix-goto-original-article
+(Only in @code{nnmairix} groups!) Tries determine the group this article
+originally came from and displays the article in this group, so that
+e.g. replying to this article the correct posting styles/group
+parameters are applied (@code{nnmairix-goto-original-article}). This
+function will use the registry if available, but can also parse the
+article file name as a fallback method.
+
+@item $ u
+@kindex $ u (Summary)
+@findex nnmairix-remove-tick-mark-original-article
+Remove possibly existing tick mark from original article
+(@code{nnmairix-remove-tick-mark-original-article}). (@pxref{nnmairix
+tips and tricks}).
+
+@end table
+
+@node Propagating marks
+@subsection Propagating marks
+
+First of: you really need a patched mairix binary for using the marks
+propagation feature efficiently. Otherwise, you would have to update
+the mairix database all the time. You can get the patch at
+
+@uref{http://www.randomsample.de/mairix-maildir-patch.tar}
+
+You need the mairix v0.21 source code for this patch; everything else
+is explained in the accompanied readme file. If you don't want to use
+marks propagation, you don't have to apply these patches, but they also
+fix some annoyances regarding changing maildir flags, so it might still
+be useful to you.
+
+With the patched mairix binary, you can use @code{nnmairix} as an
+alternative to mail splitting (@pxref{Fancy Mail Splitting}). For
+example, instead of splitting all mails from @samp{david@@foobar.com}
+into a group, you can simply create a search group with the query
+@samp{f:david@@foobar.com}. This is actually what ``smart folders'' are
+all about: simply put everything in one mail folder and dynamically
+create searches instead of splitting. This is more flexible, since you
+can dynamically change your folders any time you want to. This also
+implies that you will usually read your mails in the @code{nnmairix}
+groups instead of your ``real'' mail groups.
+
+There is one problem, though: say you got a new mail from
+@samp{david@@foobar.com}; it will now show up in two groups, the
+``real'' group (your INBOX, for example) and in the @code{nnmairix}
+search group (provided you have updated the mairix database). Now you
+enter the @code{nnmairix} group and read the mail. The mail will be
+marked as read, but only in the @code{nnmairix} group---in the ``real''
+mail group it will be still shown as unread.
+
+You could now catch up the mail group (@pxref{Group Data}), but this is
+tedious and error prone, since you may overlook mails you don't have
+created @code{nnmairix} groups for. Of course, you could first use
+@code{nnmairix-goto-original-article} (@pxref{nnmairix keyboard
+shortcuts}) and then read the mail in the original group, but that's
+even more cumbersome.
+
+Clearly, the easiest way would be if marks could somehow be
+automatically set for the original article. This is exactly what
+@emph{marks propagation} is about.
+
+Marks propagation is deactivated by default. You can activate it for a
+certain @code{nnmairix} group with
+@code{nnmairix-group-toggle-propmarks-this-group} (bound to @kbd{G b
+p}). This function will warn you if you try to use it with your default
+search group; the reason is that the default search group is used for
+temporary searches, and it's easy to accidentally propagate marks from
+this group. However, you can ignore this warning if you really want to.
+
+With marks propagation enabled, all the marks you set in a @code{nnmairix}
+group should now be propagated to the original article. For example,
+you can now tick an article (by default with @kbd{!}) and this mark should
+magically be set for the original article, too.
+
+A few more remarks which you may or may not want to know:
+
+@vindex nnmairix-propagate-marks-upon-close
+Marks will not be set immediately, but only upon closing a group. This
+not only makes marks propagation faster, it also avoids problems with
+dangling symlinks when dealing with maildir files (since changing flags
+will change the file name). You can also control when to propagate marks
+via @code{nnmairix-propagate-marks-upon-close} (see the doc-string for
+details).
+
+Obviously, @code{nnmairix} will have to look up the original group for every
+article you want to set marks for. If available, @code{nnmairix} will first use
+the registry for determining the original group. The registry is very
+fast, hence you should really, really enable the registry when using
+marks propagation. If you don't have to worry about RAM and disc space,
+set @code{gnus-registry-max-entries} to a large enough value; to be on
+the safe side, choose roughly the amount of mails you index with mairix.
+
+@vindex nnmairix-only-use-registry
+If you don't want to use the registry or the registry hasn't seen the
+original article yet, @code{nnmairix} will use an additional mairix
+search for determining the file name of the article. This, of course, is
+way slower than the registry---if you set hundreds or even thousands of
+marks this way, it might take some time. You can avoid this situation by
+setting @code{nnmairix-only-use-registry} to t.
+
+Maybe you also want to propagate marks the other way round, i.e. if you
+tick an article in a "real" mail group, you'd like to have the same
+article in a @code{nnmairix} group ticked, too. For several good
+reasons, this can only be done efficiently if you use maildir. To
+immediately contradict myself, let me mention that it WON'T work with
+@code{nnmaildir}, since @code{nnmaildir} stores the marks externally and
+not in the file name. Therefore, propagating marks to @code{nnmairix}
+groups will usually only work if you use an IMAP server which uses
+maildir as its file format.
+
+@vindex nnmairix-propagate-marks-to-nnmairix-groups
+If you work with this setup, just set
+@code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t} and see what
+happens. If you don't like what you see, just set it to @code{nil} again. One
+problem might be that you get a wrong number of unread articles; this
+usually happens when you delete or expire articles in the original
+groups. When this happens, you can recreate the @code{nnmairix} group on the
+back end using @kbd{G b d}.
+
+@node nnmairix tips and tricks
+@subsection nnmairix tips and tricks
+
+@itemize
+@item
+Checking Mail
+
+@findex nnmairix-update-groups
+I put all my important mail groups at group level 1. The mairix groups
+have group level 5, so they do not get checked at start up (@pxref{Group
+Levels}).
+
+I use the following to check for mails:
+
+@lisp
+(defun my-check-mail-mairix-update (level)
+ (interactive "P")
+ ;; if no prefix given, set level=1
+ (gnus-group-get-new-news (or level 1))
+ (nnmairix-update-groups "mairixsearch" t t)
+ (gnus-group-list-groups))
+
+(define-key gnus-group-mode-map "g" 'my-check-mail-mairix-update)
+@end lisp
+
+Instead of @samp{"mairixsearch"} use the name of your @code{nnmairix}
+server. See the doc string for @code{nnmairix-update-groups} for
+details.
+
+@item
+Example: search group for ticked articles
+
+For example, you can create a group for all ticked articles, where the
+articles always stay unread:
+
+Hit @kbd{G b g}, enter group name (e.g. @samp{important}), use
+@samp{F:f} as query and do not include threads.
+
+Now activate marks propagation for this group by using @kbd{G b p}. Then
+activate the always-unread feature by using @kbd{G b r} twice.
+
+So far so good---but how do you remove the tick marks in the @code{nnmairix}
+group? There are two options: You may simply use
+@code{nnmairix-remove-tick-mark-original-article} (bound to @kbd{$ u}) to remove
+tick marks from the original article. The other possibility is to set
+@code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t}, but see the above
+comments about this option. If it works for you, the tick marks should
+also exist in the @code{nnmairix} group and you can remove them as usual,
+e.g. by marking an article as read.
+
+When you have removed a tick mark from the original article, this
+article should vanish from the @code{nnmairix} group after you have updated the
+mairix database and updated the group. Fortunately, there is a function
+for doing exactly that: @code{nnmairix-update-groups}. See the previous code
+snippet and the doc string for details.
+
+@item
+Dealing with auto-subscription of mail groups
+
+As described before, all @code{nnmairix} groups are in fact stored on
+the mail back end in the form @samp{zz_mairix-<NAME>-<NUMBER>}. You can
+see them when you enter the back end server in the server buffer. You
+should not subscribe these groups! Unfortunately, these groups will
+usually get @emph{auto-subscribed} when you use @code{nnmaildir} or
+@code{nnml}, i.e. you will suddenly see groups of the form
+@samp{zz_mairix*} pop up in your group buffer. If this happens to you,
+simply kill these groups with C-k. For avoiding this, turn off
+auto-subscription completely by setting the variable
+@code{gnus-auto-subscribed-groups} to @code{nil} (@pxref{Filtering New
+Groups}), or if you like to keep this feature use the following kludge
+for turning it off for all groups beginning with @samp{zz_}:
+
+@lisp
+(setq gnus-auto-subscribed-groups
+ "^\\(nnml\\|nnfolder\\|nnmbox\\|nnmh\\|nnbabyl\\|nnmaildir\\).*:\\([^z]\\|z$\\|\\z[^z]\\|zz$\\|zz[^_]\\|zz_$\\).*")
+@end lisp
+
+@end itemize
+
+@node nnmairix caveats
+@subsection nnmairix caveats
+
+@itemize
+@item
+You can create a secondary @code{nnml} server just for nnmairix, but then
+you have to explicitly set the corresponding server variable
+@code{nnml-get-new-mail} to @code{nil}. Otherwise, new mail might get
+put into this secondary server (and would never show up again). Here's
+an example server definition:
+
+@lisp
+(nnml "mairix" (nnml-directory "mairix") (nnml-get-new-mail nil))
+@end lisp
+
+(The @code{nnmaildir} back end also has a server variabe
+@code{get-new-mail}, but its default value is @code{nil}, so you don't
+have to explicitly set it if you use a @code{nnmaildir} server just for
+mairix.)
+
+@item
+If you use the Gnus registry: don't use the registry with
+@code{nnmairix} groups (put them in
+@code{gnus-registry-unfollowed-groups}; this is the default). Be
+@emph{extra careful} if you use
+@code{gnus-registry-split-fancy-with-parent}; mails which are split
+into @code{nnmairix} groups are usually gone for good as soon as you
+check the group for new mail (yes, it has happened to me...).
+
+@item
+Therefore: @emph{Never ever} put ``real'' mails into @code{nnmairix}
+groups (you shouldn't be able to, anyway).
+
+@item
+If you use the Gnus agent (@pxref{Gnus Unplugged}): don't agentize
+@code{nnmairix} groups (though I have no idea what happens if you do).
+
+@item
+mairix does only support us-ascii characters.
+
+@item
+@code{nnmairix} uses a rather brute force method to force Gnus to
+completely reread the group on the mail back end after mairix was
+called---it simply deletes and re-creates the group on the mail
+back end. So far, this has worked for me without any problems, and I
+don't see how @code{nnmairix} could delete other mail groups than its
+own, but anyway: you really should have a backup of your mail
+folders.
+
+@item
+All necessary information is stored in the group parameters
+(@pxref{Group Parameters}). This has the advantage that no active file
+is needed, but also implies that when you kill a @code{nnmairix} group,
+it is gone for good.
+
+@item
+@findex nnmairix-purge-old-groups
+If you create and kill a lot of @code{nnmairix} groups, the
+``zz_mairix-*'' groups will accumulate on the mail back end server. To
+delete old groups which are no longer needed, call
+@code{nnmairix-purge-old-groups}. Note that this assumes that you don't
+save any ``real'' mail in folders of the form
+@code{zz_mairix-<NAME>-<NUMBER>}. You can change the prefix of
+@code{nnmairix} groups by changing the variable
+@code{nnmairix-group-prefix}.
+
+@item
+The following only applies if you @emph{don't} use the mentioned patch
+for mairix (@pxref{Propagating marks}):
+
+A problem can occur when using @code{nnmairix} with maildir folders and
+comes with the fact that maildir stores mail flags like @samp{Seen} or
+@samp{Replied} by appending chars @samp{S} and @samp{R} to the message
+file name, respectively. This implies that currently you would have to
+update the mairix database not only when new mail arrives, but also when
+mail flags are changing. The same applies to new mails which are indexed
+while they are still in the @samp{new} folder but then get moved to
+@samp{cur} when Gnus has seen the mail. If you don't update the database
+after this has happened, a mairix query can lead to symlinks pointing to
+non-existing files. In Gnus, these messages will usually appear with
+``(none)'' entries in the header and can't be accessed. If this happens
+to you, using @kbd{G b u} and updating the group will usually fix this.
+
+@end itemize
+
@iftex
@iflatex
@chapter Message
@@ -22804,9 +22153,7 @@ four days, Gnus will decay the scores four times, for instance.
* Compilation:: How to speed Gnus up.
* Mode Lines:: Displaying information in the mode lines.
* Highlighting and Menus:: Making buffers look all nice and cozy.
-* Buttons:: Get tendinitis in ten easy steps!
* Daemons:: Gnus can do things behind your back.
-* NoCeM:: How to avoid spam and other fatty foods.
* Undo:: Some actions can be undone.
* Predicate Specifiers:: Specifying predicates.
* Moderation:: What to do if you're a moderator.
@@ -22890,8 +22237,11 @@ default.
@item gnus-expert-user
@vindex gnus-expert-user
If this variable is non-@code{nil}, you will seldom be asked any
-questions by Gnus. It will simply assume you know what you're doing, no
-matter how strange.
+questions by Gnus. It will simply assume you know what you're doing,
+no matter how strange. For example, quitting Gnus, exiting a group
+without an update, catching up with a group, deleting expired
+articles, and replying by mail to a news message will not require
+confirmation.
@item gnus-interactive-catchup
@vindex gnus-interactive-catchup
@@ -23263,8 +22613,7 @@ glitches. Use at your own peril.
buffer should be given. Here's an excerpt of this variable:
@lisp
-((group (vertical 1.0 (group 1.0 point)
- (if gnus-carpal (group-carpal 4))))
+((group (vertical 1.0 (group 1.0 point)))
(article (vertical 1.0 (summary 0.25 point)
(article 1.0))))
@end lisp
@@ -23302,7 +22651,6 @@ Here's a more complicated example:
@lisp
(article (vertical 1.0 (group 4)
(summary 0.25 point)
- (if gnus-carpal (summary-carpal 4))
(article 1.0)))
@end lisp
@@ -23313,20 +22661,16 @@ occupy, not a percentage.
If the @dfn{split} looks like something that can be @code{eval}ed (to be
precise---if the @code{car} of the split is a function or a subr), this
split will be @code{eval}ed. If the result is non-@code{nil}, it will
-be used as a split. This means that there will be three buffers if
-@code{gnus-carpal} is @code{nil}, and four buffers if @code{gnus-carpal}
-is non-@code{nil}.
+be used as a split.
Not complicated enough for you? Well, try this on for size:
@lisp
(article (horizontal 1.0
(vertical 0.5
- (group 1.0)
- (gnus-carpal 4))
+ (group 1.0))
(vertical 1.0
(summary 0.25 point)
- (summary-carpal 4)
(article 1.0))))
@end lisp
@@ -23490,6 +22834,81 @@ window is displayed vertically next to another window, you may also want
to fiddle with @code{gnus-tree-minimize-window} to avoid having the
windows resized.
+@subsection Window Configuration Names
+
+Here's a list of most of the currently known window configurations,
+and when they're used:
+
+@table @code
+@item group
+The group buffer.
+
+@item summary
+Entering a group and showing only the summary.
+
+@item article
+Selecting an article.
+
+@item server
+The server buffer.
+
+@item browse
+Browsing groups from the server buffer.
+
+@item message
+Composing a (new) message.
+
+@item only-article
+Showing only the article buffer.
+
+@item edit-article
+Editing an article.
+
+@item edit-form
+Editing group parameters and the like.
+
+@item edit-score
+Editing a server definition.
+
+@item post
+Composing a news message.
+
+@item reply
+Replying or following up an article without yanking the text.
+
+@item forward
+Forwarding a message.
+
+@item reply-yank
+Replying or following up an article with yanking the text.
+
+@item mail-bound
+Bouncing a message.
+
+@item pipe
+Sending an article to an external process.
+
+@item bug
+Sending a bug report.
+
+@item score-trace
+Displaying the score trace.
+
+@item score-words
+Displaying the score words.
+
+@item split-trace
+Displaying the split trace.
+
+@item compose-bounce
+Composing a bounce message.
+
+@item mml-preview
+Previewing a @acronym{MIME} part.
+
+@end table
+
+
@subsection Example Window Configurations
@itemize @bullet
@@ -23703,62 +23122,6 @@ Hook called after creating the score mode menu.
@end table
-@node Buttons
-@section Buttons
-@cindex buttons
-@cindex mouse
-@cindex click
-
-Those new-fangled @dfn{mouse} contraptions are very popular with the
-young, hep kids who don't want to learn the proper way to do things
-these days. Why, I remember way back in the summer of '89, when I was
-using Emacs on a Tops 20 system. Three hundred users on one single
-machine, and every user was running Simula compilers. Bah!
-
-Right.
-
-@vindex gnus-carpal
-Well, you can make Gnus display bufferfuls of buttons you can click to
-do anything by setting @code{gnus-carpal} to @code{t}. Pretty simple,
-really. Tell the chiropractor I sent you.
-
-
-@table @code
-
-@item gnus-carpal-mode-hook
-@vindex gnus-carpal-mode-hook
-Hook run in all carpal mode buffers.
-
-@item gnus-carpal-button-face
-@vindex gnus-carpal-button-face
-Face used on buttons.
-
-@item gnus-carpal-header-face
-@vindex gnus-carpal-header-face
-Face used on carpal buffer headers.
-
-@item gnus-carpal-group-buffer-buttons
-@vindex gnus-carpal-group-buffer-buttons
-Buttons in the group buffer.
-
-@item gnus-carpal-summary-buffer-buttons
-@vindex gnus-carpal-summary-buffer-buttons
-Buttons in the summary buffer.
-
-@item gnus-carpal-server-buffer-buttons
-@vindex gnus-carpal-server-buffer-buttons
-Buttons in the server buffer.
-
-@item gnus-carpal-browse-buffer-buttons
-@vindex gnus-carpal-browse-buffer-buttons
-Buttons in the browse buffer.
-@end table
-
-All the @code{buttons} variables are lists. The elements in these list
-are either cons cells where the @code{car} contains a text to be displayed and
-the @code{cdr} contains a function symbol, or a simple string.
-
-
@node Daemons
@section Daemons
@cindex demons
@@ -23822,13 +23185,12 @@ your @file{~/.gnus.el} file:
(gnus-demon-add-handler 'gnus-demon-close-connections 30 t)
@end lisp
-@findex gnus-demon-add-nocem
@findex gnus-demon-add-scanmail
@findex gnus-demon-add-rescan
@findex gnus-demon-add-scan-timestamps
@findex gnus-demon-add-disconnection
Some ready-made functions to do this have been created:
-@code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection},
+@code{gnus-demon-add-disconnection},
@code{gnus-demon-add-nntp-close-connection},
@code{gnus-demon-add-scan-timestamps}, @code{gnus-demon-add-rescan}, and
@code{gnus-demon-add-scanmail}. Just put those functions in your
@@ -23847,152 +23209,6 @@ is a sure-fire way of getting booted off any respectable system. So
behave.
-@node NoCeM
-@section NoCeM
-@cindex nocem
-@cindex spam
-
-@dfn{Spamming} is posting the same article lots and lots of times.
-Spamming is bad. Spamming is evil.
-
-Spamming is usually canceled within a day or so by various anti-spamming
-agencies. These agencies usually also send out @dfn{NoCeM} messages.
-NoCeM is pronounced ``no see-'em'', and means what the name
-implies---these are messages that make the offending articles, like, go
-away.
-
-What use are these NoCeM messages if the articles are canceled anyway?
-Some sites do not honor cancel messages and some sites just honor cancels
-from a select few people. Then you may wish to make use of the NoCeM
-messages, which are distributed in the newsgroups
-@samp{news.lists.filters}, @samp{alt.nocem.misc}, etc.
-
-Gnus can read and parse the messages in this group automatically, and
-this will make spam disappear.
-
-There are some variables to customize, of course:
-
-@table @code
-@item gnus-use-nocem
-@vindex gnus-use-nocem
-Set this variable to @code{t} to set the ball rolling. It is @code{nil}
-by default.
-
-You can also set this variable to a positive number as a group level.
-In that case, Gnus scans NoCeM messages when checking new news if this
-value is not exceeding a group level that you specify as the prefix
-argument to some commands, e.g. @code{gnus},
-@code{gnus-group-get-new-news}, etc. Otherwise, Gnus does not scan
-NoCeM messages if you specify a group level that is smaller than this
-value to those commands. For example, if you use 1 or 2 on the mail
-groups and the levels on the news groups remain the default, 3 is the
-best choice.
-
-@item gnus-nocem-groups
-@vindex gnus-nocem-groups
-Gnus will look for NoCeM messages in the groups in this list. The
-default is
-@lisp
-("news.lists.filters" "alt.nocem.misc")
-@end lisp
-
-@item gnus-nocem-issuers
-@vindex gnus-nocem-issuers
-There are many people issuing NoCeM messages. This list says what
-people you want to listen to. The default is:
-
-@lisp
-("Adri Verhoef"
- "alba-nocem@@albasani.net"
- "bleachbot@@httrack.com"
- "news@@arcor-online.net"
- "news@@uni-berlin.de"
- "nocem@@arcor.de"
- "pgpmoose@@killfile.org"
- "xjsppl@@gmx.de")
-@end lisp
-
-Known despammers that you can put in this list are listed at@*
-@uref{http://www.xs4all.nl/~rosalind/nocemreg/nocemreg.html}.
-
-You do not have to heed NoCeM messages from all these people---just the
-ones you want to listen to. You also don't have to accept all NoCeM
-messages from the people you like. Each NoCeM message has a @dfn{type}
-header that gives the message a (more or less, usually less) rigorous
-definition. Common types are @samp{spam}, @samp{spew}, @samp{mmf},
-@samp{binary}, and @samp{troll}. To specify this, you have to use
-@code{(@var{issuer} @var{conditions} @dots{})} elements in the list.
-Each condition is either a string (which is a regexp that matches types
-you want to use) or a list on the form @code{(not @var{string})}, where
-@var{string} is a regexp that matches types you don't want to use.
-
-For instance, if you want all NoCeM messages from Chris Lewis except his
-@samp{troll} messages, you'd say:
-
-@lisp
-("clewis@@ferret.ocunix.on.ca" ".*" (not "troll"))
-@end lisp
-
-On the other hand, if you just want nothing but his @samp{spam} and
-@samp{spew} messages, you'd say:
-
-@lisp
-("clewis@@ferret.ocunix.on.ca" (not ".*") "spew" "spam")
-@end lisp
-
-The specs are applied left-to-right.
-
-
-@item gnus-nocem-verifyer
-@vindex gnus-nocem-verifyer
-@findex gnus-nocem-epg-verify
-@findex pgg-verify
-This should be a function for verifying that the NoCeM issuer is who she
-says she is. This variable defaults to @code{gnus-nocem-epg-verify} if
-EasyPG is available, otherwise defaults to @code{pgg-verify}. The
-function should return non-@code{nil} if the verification is successful,
-otherwise (including the case the NoCeM message was not signed) should
-return @code{nil}. If this is too slow and you don't care for
-verification (which may be dangerous), you can set this variable to
-@code{nil}.
-
-Formerly the default was @code{mc-verify}, which is a Mailcrypt
-function. While you can still use it, you can change it into
-@code{gnus-nocem-epg-verify} or @code{pgg-verify} running with GnuPG if
-you are willing to add the @acronym{PGP} public keys to GnuPG's keyring.
-
-@item gnus-nocem-directory
-@vindex gnus-nocem-directory
-This is where Gnus will store its NoCeM cache files. The default is@*
-@file{~/News/NoCeM/}.
-
-@item gnus-nocem-expiry-wait
-@vindex gnus-nocem-expiry-wait
-The number of days before removing old NoCeM entries from the cache.
-The default is 15. If you make it shorter Gnus will be faster, but you
-might then see old spam.
-
-@item gnus-nocem-check-from
-@vindex gnus-nocem-check-from
-Non-@code{nil} means check for valid issuers in message bodies.
-Otherwise don't bother fetching articles unless their author matches a
-valid issuer; that is much faster if you are selective about the
-issuers.
-
-@item gnus-nocem-check-article-limit
-@vindex gnus-nocem-check-article-limit
-If non-@code{nil}, the maximum number of articles to check in any NoCeM
-group. @code{nil} means no restriction. NoCeM groups can be huge and
-very slow to process.
-
-@end table
-
-Using NoCeM could potentially be a memory hog. If you have many living
-(i. e., subscribed or unsubscribed groups), your Emacs process will grow
-big. If this is a problem, you should kill off all (or most) of your
-unsubscribed groups (@pxref{Subscription Commands}).
-
-
@node Undo
@section Undo
@cindex undo
@@ -24126,6 +23342,7 @@ stuff, so Gnus has taken advantage of that.
* Face:: Display a funkier, teensier colored image.
* Smileys:: Show all those happy faces the way they were meant to be shown.
* Picons:: How to display pictures of what you're reading.
+* Gravatars:: Display the avatar of people you read.
* XVarious:: Other XEmacsy Gnusey variables.
@end menu
@@ -24284,7 +23501,7 @@ specifications.
The @code{gnus-face-properties-alist} variable affects the appearance of
displayed Face images. @xref{X-Face}.
-Viewing an @code{Face} header requires an Emacs that is able to display
+Viewing a @code{Face} header requires an Emacs that is able to display
PNG images.
@c Maybe add this:
@c (if (featurep 'xemacs)
@@ -24452,8 +23669,59 @@ want to add @samp{"unknown"} to this list.
Ordered list of suffixes on picon file names to try. Defaults to
@code{("xpm" "gif" "xbm")} minus those not built-in your Emacs.
+@item gnus-picon-inhibit-top-level-domains
+@vindex gnus-picon-inhibit-top-level-domains
+If non-@code{nil} (which is the default), don't display picons for
+things like @samp{.net} and @samp{.de}, which aren't usually very
+interesting.
+
+@end table
+
+@node Gravatars
+@subsection Gravatars
+
+@iftex
+@iflatex
+\include{gravatars}
+@end iflatex
+@end iftex
+
+A gravatar is an image registered to an e-mail address.
+
+You can submit yours on-line at @uref{http://www.gravatar.com}.
+
+The following variables offer control over how things are displayed.
+
+@table @code
+
+@item gnus-gravatar-size
+@vindex gnus-gravatar-size
+The size in pixels of gravatars. Gravatars are always square, so one
+number for the size is enough.
+
+@item gnus-gravatar-properties
+@vindex gnus-gravatar-properties
+List of image properties applied to Gravatar images.
+
+@item gnus-gravatar-too-ugly
+@vindex gnus-gravatar-too-ugly
+Regexp that matches mail addresses or names of people of which avatars
+should not be displayed, or @code{nil}. It default to the value of
+@code{gnus-article-x-face-too-ugly} (@pxref{X-Face}).
+
@end table
+If you want to see them in the From field, set:
+@lisp
+(setq gnus-treat-from-gravatar 'head)
+@end lisp
+
+If you want to see them in the Cc and To fields, set:
+
+@lisp
+(setq gnus-treat-mail-gravatar 'head)
+@end lisp
+
@node XVarious
@subsection Various XEmacs Variables
@@ -24789,7 +24057,7 @@ call the external tools during splitting. Example fancy split method:
Note that with the nnimap back end, message bodies will not be
downloaded by default. You need to set
@code{nnimap-split-download-body} to @code{t} to do that
-(@pxref{Splitting in IMAP}).
+(@pxref{Client-Side IMAP Splitting}).
That is about it. As some spam is likely to get through anyway, you
might want to have a nifty function to call when you happen to read
@@ -24983,12 +24251,14 @@ yourself, so that the message is processed as spam when you exit the
group:
@table @kbd
-@item M-d
+@item $
+@itemx M-d
@itemx M s x
@itemx S x
-@kindex M-d
-@kindex S x
-@kindex M s x
+@kindex $ (Summary)
+@kindex M-d (Summary)
+@kindex S x (Summary)
+@kindex M s x (Summary)
@findex gnus-summary-mark-as-spam
@findex gnus-summary-mark-as-spam
Mark current article as spam, showing it with the @samp{$} mark
@@ -25071,14 +24341,14 @@ the value @samp{spam} means @samp{nnimap+your-server:spam}. The value
@vindex nnimap-split-download-body
Note for IMAP users: if you use the @code{spam-check-bogofilter},
@code{spam-check-ifile}, and @code{spam-check-stat} spam back ends,
-you should also set the variable @code{nnimap-split-download-body}
-to @code{t}. These spam back ends are most useful when they can
-``scan'' the full message body. By default, the nnimap back end only
-retrieves the message headers; @code{nnimap-split-download-body} tells
-it to retrieve the message bodies as well. We don't set this by
-default because it will slow @acronym{IMAP} down, and that is not an
-appropriate decision to make on behalf of the user. @xref{Splitting
-in IMAP}.
+you should also set the variable @code{nnimap-split-download-body} to
+@code{t}. These spam back ends are most useful when they can ``scan''
+the full message body. By default, the nnimap back end only retrieves
+the message headers; @code{nnimap-split-download-body} tells it to
+retrieve the message bodies as well. We don't set this by default
+because it will slow @acronym{IMAP} down, and that is not an
+appropriate decision to make on behalf of the user. @xref{Client-Side
+IMAP Splitting}.
You have to specify one or more spam back ends for @code{spam-split}
to use, by setting the @code{spam-use-*} variables. @xref{Spam Back
@@ -25363,8 +24633,8 @@ From Ted Zlatanov <tzz@@lifelogs.com>.
spam-move-spam-nonspam-groups-only nil
spam-mark-only-unseen-as-spam t
spam-mark-ham-unread-before-move-from-spam-group t
- nnimap-split-rule 'nnimap-split-fancy
;; @r{understand what this does before you copy it to your own setup!}
+ ;; @r{for nnimap you'll probably want to set nnimap-split-methods, see the manual}
nnimap-split-fancy '(|
;; @r{trace references to parents and put in their group}
(: gnus-registry-split-fancy-with-parent)
@@ -26086,8 +25356,8 @@ messages stay in @samp{INBOX}:
@example
(setq spam-use-spamoracle t
spam-split-group "Junk"
+ ;; @r{for nnimap you'll probably want to set nnimap-split-methods, see the manual}
nnimap-split-inbox '("INBOX")
- nnimap-split-rule 'nnimap-split-fancy
nnimap-split-fancy '(| (: spam-split) "INBOX"))
@end example
@@ -26613,6 +25883,13 @@ the sender in addition to the Message-ID. Several strategies are
available.
@item
+Refer to messages by ID
+
+Commands like @code{gnus-summary-refer-parent-article} can take
+advantage of the registry to jump to the referred article, regardless
+of the group the message is in.
+
+@item
Store custom flags and keywords
The registry can store custom flags and keywords for a message. For
@@ -26629,20 +25906,20 @@ of all messages matching a particular set of criteria.
@end enumerate
@menu
-* Setup::
+* Gnus Registry Setup::
* Fancy splitting to parent::
+* Registry Article Refer Method::
* Store custom flags and keywords::
* Store arbitrary data::
@end menu
-@node Setup
-@subsection Setup
+@node Gnus Registry Setup
+@subsection Gnus Registry Setup
Fortunately, setting up the Gnus registry is pretty easy:
@lisp
-(setq gnus-registry-max-entries 2500
- gnus-registry-use-long-group-names t)
+(setq gnus-registry-max-entries 2500)
(gnus-registry-initialize)
@end lisp
@@ -26664,16 +25941,16 @@ what they do before you copy them blindly).
("spam" t)
("train" t))
gnus-registry-max-entries 500000
- gnus-registry-use-long-group-names t
+ ;; this is the default
gnus-registry-track-extra '(sender subject))
@end lisp
-They say: keep a lot of messages around, use long group names, track
-messages by sender and subject (not just parent Message-ID), and when
-the registry splits incoming mail, use a majority rule to decide where
-messages should go if there's more than one possibility. In addition,
-the registry should ignore messages in groups that match ``nntp'',
-``nnrss'', ``spam'', or ``train.''
+They say: keep a lot of messages around, track messages by sender and
+subject (not just parent Message-ID), and when the registry splits
+incoming mail, use a majority rule to decide where messages should go
+if there's more than one possibility. In addition, the registry
+should ignore messages in groups that match ``nntp'', ``nnrss'',
+``spam'', or ``train.''
You are doubtless impressed by all this, but you ask: ``I am a Gnus
user, I customize to live. Give me more.'' Here you go, these are
@@ -26683,19 +25960,9 @@ the general settings.
The groups that will not be followed by
@code{gnus-registry-split-fancy-with-parent}. They will still be
remembered by the registry. This is a list of regular expressions.
-@end defvar
-
-@defvar gnus-registry-ignored-groups
-The groups that will not be remembered by the registry. This is a
-list of regular expressions, also available through Group/Topic
-customization (so you can ignore or keep a specific group or a whole
-topic).
-@end defvar
-
-@defvar gnus-registry-use-long-group-names
-Whether the registry will use long group names. It's recommended to
-set this to @code{t}, although everything works if you don't. Future
-functionality will require it.
+By default any group name that ends with ``delayed'', ``drafts'',
+``queue'', or ``INBOX'', belongs to the nnmairix backend, or contains
+the word ``archive'' is not followed.
@end defvar
@defvar gnus-registry-max-entries
@@ -26703,10 +25970,52 @@ The number (an integer or @code{nil} for unlimited) of entries the
registry will keep.
@end defvar
+@defvar gnus-registry-max-pruned-entries
+The maximum number (an integer or @code{nil} for unlimited) of entries
+the registry will keep after pruning.
+@end defvar
+
@defvar gnus-registry-cache-file
-The file where the registry will be stored between Gnus sessions.
+The file where the registry will be stored between Gnus sessions. By
+default the file name is @code{.gnus.registry.eioio} in the same
+directory as your @code{.newsrc.eld}.
@end defvar
+@node Registry Article Refer Method
+@subsection Fetching by @code{Message-ID} Using the Registry
+
+The registry knows how to map each @code{Message-ID} to the group it's
+in. This can be leveraged to enhance the ``article refer method'',
+the thing that tells Gnus how to look up an article given its
+Message-ID (@pxref{Finding the Parent}).
+
+@vindex nnregistry
+@vindex gnus-refer-article-method
+
+The @code{nnregistry} refer method does exactly that. It has the
+advantage that an article may be found regardless of the group it's
+in---provided its @code{Message-ID} is known to the registry. It can
+be enabled by augmenting the start-up file with something along these
+lines:
+
+@example
+;; Keep enough entries to have a good hit rate when referring to an
+;; article using the registry. Use long group names so that Gnus
+;; knows where the article is.
+(setq gnus-registry-max-entries 2500)
+
+(gnus-registry-initialize)
+
+(setq gnus-refer-article-method
+ '(current
+ (nnregistry)
+ (nnweb "gmane" (nnweb-type gmane))))
+@end example
+
+The example above instructs Gnus to first look up the article in the
+current group, or, alternatively, using the registry, and finally, if
+all else fails, using Gmane.
+
@node Fancy splitting to parent
@subsection Fancy splitting to parent
@@ -26739,9 +26048,8 @@ following variables.
@defvar gnus-registry-track-extra
This is a list of symbols, so it's best to change it from the
-Customize interface. By default it's @code{nil}, but you may want to
-track @code{subject} and @code{sender} as well when splitting by parent.
-It may work for you. It can be annoying if your mail flow is large and
+Customize interface. By default it's @code{(subject sender)}, which
+may work for you. It can be annoying if your mail flow is large and
people don't stick to the same groups.
@end defvar
@@ -26749,7 +26057,8 @@ people don't stick to the same groups.
This is a symbol, so it's best to change it from the Customize
interface. By default it's @code{nil}, but you may want to set it to
@code{majority} or @code{first} to split by sender or subject based on
-the majority of matches or on the first found.
+the majority of matches or on the first found. I find @code{majority}
+works best.
@end defvar
@node Store custom flags and keywords
@@ -26777,6 +26086,21 @@ Call this function to mark an article with a custom registry mark. It
will offer the available marks for completion.
@end defun
+You can use @code{defalias} to install a summary line formatting
+function that will show the registry marks. There are two flavors of
+this function, either showing the marks as single characters, using
+their @code{:char} property, or showing the marks as full strings.
+
+@lisp
+;; show the marks as single characters (see the :char property in
+;; `gnus-registry-marks'):
+;; (defalias 'gnus-user-format-function-M 'gnus-registry-user-format-function-M)
+
+;; show the marks by name (see `gnus-registry-marks'):
+;; (defalias 'gnus-user-format-function-M 'gnus-registry-user-format-function-M2)
+@end lisp
+
+
@node Store arbitrary data
@subsection Store arbitrary data
@@ -26784,17 +26108,12 @@ The registry has a simple API that uses a Message-ID as the key to
store arbitrary data (as long as it can be converted to a list for
storage).
-@defun gnus-registry-store-extra-entry (id key value)
-Store @code{value} in the extra data key @code{key} for message
-@code{id}.
-@end defun
-
-@defun gnus-registry-delete-extra-entry (id key)
-Delete the extra data key @code{key} for message @code{id}.
+@defun gnus-registry-set-id-key (id key value)
+Store @code{value} under @code{key} for message @code{id}.
@end defun
-@defun gnus-registry-fetch-extra (id key)
-Get the extra data key @code{key} for message @code{id}.
+@defun gnus-registry-get-id-key (id key)
+Get the data under @code{key} for message @code{id}.
@end defun
@defvar gnus-registry-extra-entries-precious
@@ -27406,7 +26725,7 @@ wrong show.
Masanobu @sc{Umeda}---the writer of the original @sc{gnus}.
@item
-Shenghuo Zhu---uudecode.el, mm-uu.el, rfc1843.el, webmail.el,
+Shenghuo Zhu---uudecode.el, mm-uu.el, rfc1843.el,
nnwarchive and many, many other things connected with @acronym{MIME} and
other types of en/decoding, as well as general bug fixing, new
functionality and stuff.
@@ -27792,10 +27111,6 @@ You can set the process mark on both groups and articles and perform
operations on all the marked items (@pxref{Process/Prefix}).
@item
-You can grep through a subset of groups and create a group from the
-results (@pxref{Kibozed Groups}).
-
-@item
You can list subsets of groups according to, well, anything
(@pxref{Listing Groups}).
@@ -27841,10 +27156,6 @@ Buttons}).
You can do lots of strange stuff with the Gnus window & frame
configuration (@pxref{Window Layout}).
-@item
-You can click on buttons instead of using the keyboard
-(@pxref{Buttons}).
-
@end itemize
@@ -27940,8 +27251,7 @@ news batches, ClariNet briefs collections, and just about everything
else (@pxref{Document Groups}).
@item
-Gnus has a new back end (@code{nnsoup}) to create/read SOUP packets
-(@pxref{SOUP}).
+Gnus has a new back end (@code{nnsoup}) to create/read SOUP packets.
@item
The Gnus cache is much faster.
@@ -28000,13 +27310,6 @@ Mail can be re-scanned by a daemonic process (@pxref{Daemons}).
@end iftex
@item
-Gnus can make use of NoCeM files to weed out spam (@pxref{NoCeM}).
-
-@lisp
-(setq gnus-use-nocem t)
-@end lisp
-
-@item
Groups can be made permanently visible (@pxref{Listing Groups}).
@lisp
@@ -28522,9 +27825,7 @@ The revised Gnus @acronym{FAQ} is included in the manual,
@acronym{TLS} wrapper shipped with Gnus
@acronym{TLS}/@acronym{SSL} is now supported in @acronym{IMAP} and
-@acronym{NNTP} via @file{tls.el} and GNUTLS. The old
-@acronym{TLS}/@acronym{SSL} support via (external third party)
-@file{ssl.el} and OpenSSL still works.
+@acronym{NNTP} via @file{tls.el} and GNUTLS.
@item
Improved anti-spam features.
@@ -29502,11 +28803,9 @@ Gnus not to use @acronym{NOV}.
As the variables for the other back ends, there are
@code{nndiary-nov-is-evil}, @code{nndir-nov-is-evil},
@code{nnfolder-nov-is-evil}, @code{nnimap-nov-is-evil},
-@code{nnml-nov-is-evil}, @code{nnspool-nov-is-evil}, and
-@code{nnwarchive-nov-is-evil}. Note that a non-@code{nil} value for
-@code{gnus-nov-is-evil} overrides all those variables.@footnote{Although
-the back ends @code{nnkiboze}, @code{nnslashdot}, @code{nnultimate}, and
-@code{nnwfm} don't have their own nn*-nov-is-evil.}
+@code{nnml-nov-is-evil}, and @code{nnspool-nov-is-evil}. Note that a
+non-@code{nil} value for @code{gnus-nov-is-evil} overrides all those
+variables.
@end table
@@ -30104,7 +29403,7 @@ group and article numbers are when fetching articles by
on successful article retrieval.
-@item (nnchoke-request-group GROUP &optional SERVER FAST)
+@item (nnchoke-request-group GROUP &optional SERVER FAST INFO)
Get data on @var{group}. This function also has the side effect of
making @var{group} the current group.
@@ -30112,6 +29411,9 @@ making @var{group} the current group.
If @var{fast}, don't bother to return useful data, just make @var{group}
the current group.
+If @var{info}, it allows the backend to update the group info
+structure.
+
Here's an example of some result data and a definition of the same:
@example
@@ -31300,11 +30602,11 @@ that means:
(setq gnus-read-active-file 'some)
@end lisp
-On the other hand, if the manual says ``set @code{gnus-nntp-server} to
-@samp{nntp.ifi.uio.no}'', that means:
+On the other hand, if the manual says ``set @code{gnus-nntp-server-file} to
+@samp{/etc/nntpserver}'', that means:
@lisp
-(setq gnus-nntp-server "nntp.ifi.uio.no")
+(setq gnus-nntp-server-file "/etc/nntpserver")
@end lisp
So be careful not to mix up strings (the latter) with symbols (the
@@ -31337,7 +30639,3 @@ former). The manual is unambiguous, but it can be confusing.
@c mode: texinfo
@c coding: iso-8859-1
@c End:
-
-@ignore
- arch-tag: c9fa47e7-78ca-4681-bda9-9fef45d1c819
-@end ignore
diff --git a/doc/misc/gpl.texi b/doc/misc/gpl.texi
index 5b416d3cb4..1908d1f8f9 100644
--- a/doc/misc/gpl.texi
+++ b/doc/misc/gpl.texi
@@ -715,7 +715,3 @@ library, you may consider it more useful to permit linking proprietary
applications with the library. If this is what you want to do, use
the GNU Lesser General Public License instead of this License. But
first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}.
-
-@ignore
- arch-tag: 0c4a2556-f87e-464f-9b1d-efd920fcaf67
-@end ignore
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi
index 54088cef21..8e17230191 100644
--- a/doc/misc/idlwave.texi
+++ b/doc/misc/idlwave.texi
@@ -22,8 +22,7 @@ Emacs, and interacting with an IDL shell run as a subprocess.
This is edition @value{EDITION} of the IDLWAVE User Manual for IDLWAVE
@value{VERSION}.
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -58,6 +57,7 @@ developing GNU and promoting software freedom.''
@ifnottex
@node Top, Introduction, (dir), (dir)
+@top IDLWAVE
IDLWAVE is a package which supports editing source code written in the
Interactive Data Language (IDL), and running IDL as an inferior shell.
@@ -4295,7 +4295,3 @@ IDLWAVE is @samp{fsf-compat, xemacs-base, mail-lib}.
@printindex cp
@bye
-
-@ignore
- arch-tag: f1d73958-1423-4127-b8aa-f7b953d64492
-@end ignore
diff --git a/doc/misc/info.texi b/doc/misc/info.texi
index 03b9b64a39..68390a2f0c 100644
--- a/doc/misc/info.texi
+++ b/doc/misc/info.texi
@@ -14,8 +14,7 @@
This file describes how to use Info, the on-line, menu-driven GNU
documentation system.
-Copyright @copyright{} 1989, 1992, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+Copyright @copyright{} 1989, 1992, 1996-2011
Free Software Foundation, Inc.
@quotation
@@ -1508,7 +1507,3 @@ topics discussed in this document.
@printindex cp
@bye
-
-@ignore
- arch-tag: 965c1638-01d6-4156-9227-b10418b9d8e8
-@end ignore
diff --git a/doc/misc/mairix-el.texi b/doc/misc/mairix-el.texi
index ff5cd922ea..d64f316cb7 100644
--- a/doc/misc/mairix-el.texi
+++ b/doc/misc/mairix-el.texi
@@ -6,7 +6,7 @@
@documentencoding ISO-8859-1
@copying
-Copyright @copyright{} 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 2008-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -349,7 +349,3 @@ And that's it!
@bye
-
-@ignore
- arch-tag: cb81470f-e080-489d-bb67-0d11516b63b9
-@end ignore
diff --git a/doc/misc/makefile.w32-in b/doc/misc/makefile.w32-in
index 942847976e..1e497fe309 100644
--- a/doc/misc/makefile.w32-in
+++ b/doc/misc/makefile.w32-in
@@ -1,7 +1,6 @@
#### -*- Makefile -*- for documentation other than the Emacs manual.
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-# Free Software Foundation, Inc.
+# Copyright (C) 2003-2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -27,8 +26,13 @@ srcdir=.
infodir = $(srcdir)/../../info
+## Directory with emacsver.texi.
+## Currently only used by efaq; could be added to MAKEINFO.
+emacsdir = $(srcdir)/../emacs
+
# The makeinfo program is part of the Texinfo distribution.
-MAKEINFO = makeinfo --force
+MAKEINFO = makeinfo
+MAKEINFO_OPTS = --force -I$(emacsdir)
MULTI_INSTALL_INFO = $(srcdir)\..\..\nt\multi-install-info.bat
INFO_TARGETS = $(infodir)/ccmode \
$(infodir)/cl $(infodir)/dbus $(infodir)/dired-x \
@@ -43,7 +47,8 @@ INFO_TARGETS = $(infodir)/ccmode \
$(infodir)/org $(infodir)/url $(infodir)/speedbar \
$(infodir)/tramp $(infodir)/ses $(infodir)/smtpmail \
$(infodir)/flymake $(infodir)/newsticker $(infodir)/rcirc \
- $(infodir)/erc $(infodir)/remember $(infodir)/nxml-mode \
+ $(infodir)/erc $(infodir)/ert \
+ $(infodir)/remember $(infodir)/nxml-mode \
$(infodir)/epa $(infodir)/mairix-el $(infodir)/sasl \
$(infodir)/auth $(infodir)/eieio $(infodir)/ede \
$(infodir)/semantic $(infodir)/edt
@@ -54,7 +59,8 @@ DVI_TARGETS = calc.dvi cc-mode.dvi cl.dvi dbus.dvi dired-x.dvi \
ada-mode.dvi autotype.dvi idlwave.dvi eudc.dvi ebrowse.dvi \
pcl-cvs.dvi woman.dvi eshell.dvi org.dvi url.dvi \
speedbar.dvi tramp.dvi ses.dvi smtpmail.dvi flymake.dvi \
- newsticker.dvi rcirc.dvi erc.dvi remember.dvi nxml-mode.dvi \
+ newsticker.dvi rcirc.dvi erc.dvi ert.dvi \
+ remember.dvi nxml-mode.dvi \
epa.dvi mairix-el.dvi sasl.dvi auth.dvi eieio.dvi ede.dvi \
semantic.dvi edt.dvi
INFOSOURCES = info.texi
@@ -66,7 +72,7 @@ INFOSOURCES = info.texi
TEXI2DVI = texi2dvi
ENVADD = $(srcdir)\..\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" \
- "MAKEINFO=$(MAKEINFO) -I$(srcdir)" /C
+ "MAKEINFO=$(MAKEINFO) $(MAKEINFO_OPTS)" /C
info: $(INFO_TARGETS)
@@ -88,65 +94,65 @@ $(infodir)/dir:
# texi filename, contrary to GNU standards.
$(infodir)/info: $(INFOSOURCES)
- $(MAKEINFO) --no-split -o $@ info.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) --no-split -o $@ info.texi
info.dvi: $(INFOSOURCES)
$(ENVADD) $(TEXI2DVI) $(srcdir)/info.texi
$(infodir)/ccmode: cc-mode.texi
- $(MAKEINFO) cc-mode.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) cc-mode.texi
cc-mode.dvi: cc-mode.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/cc-mode.texi
$(infodir)/ada-mode: ada-mode.texi
- $(MAKEINFO) ada-mode.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) ada-mode.texi
ada-mode.dvi: ada-mode.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/ada-mode.texi
$(infodir)/pcl-cvs: pcl-cvs.texi
- $(MAKEINFO) pcl-cvs.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) pcl-cvs.texi
pcl-cvs.dvi: pcl-cvs.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/pcl-cvs.texi
$(infodir)/eshell: eshell.texi
- $(MAKEINFO) eshell.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) eshell.texi
eshell.dvi: eshell.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/eshell.texi
$(infodir)/cl: cl.texi
- $(MAKEINFO) cl.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) cl.texi
cl.dvi: cl.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/cl.texi
$(infodir)/dbus: dbus.texi
- $(MAKEINFO) dbus.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) dbus.texi
dbus.dvi: dbus.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/dbus.texi
$(infodir)/dired-x: dired-x.texi
- $(MAKEINFO) dired-x.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) dired-x.texi
dired-x.dvi: dired-x.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/dired-x.texi
$(infodir)/ediff: ediff.texi
- $(MAKEINFO) ediff.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) ediff.texi
ediff.dvi: ediff.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/ediff.texi
$(infodir)/flymake: flymake.texi
- $(MAKEINFO) flymake.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) flymake.texi
flymake.dvi: flymake.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/flymake.texi
$(infodir)/forms: forms.texi
- $(MAKEINFO) forms.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) forms.texi
forms.dvi: forms.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/forms.texi
# gnus/message/emacs-mime/sieve/pgg are part of Gnus:
$(infodir)/gnus: gnus.texi
- $(MAKEINFO) gnus.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) gnus.texi
gnus.dvi: gnus.texi
sed -e "/@iflatex/,/@end iflatex/d" $(srcdir)/gnus.texi > gnustmp.texi
$(ENVADD) $(TEXI2DVI) gnustmp.texi
@@ -154,185 +160,190 @@ gnus.dvi: gnus.texi
rm gnustmp.*
#
$(infodir)/message: message.texi
- $(MAKEINFO) message.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) message.texi
message.dvi: message.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/message.texi
#
$(infodir)/emacs-mime: emacs-mime.texi
- $(MAKEINFO) --enable-encoding emacs-mime.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) --enable-encoding emacs-mime.texi
emacs-mime.dvi: emacs-mime.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/emacs-mime.texi
#
$(infodir)/sieve: sieve.texi
- $(MAKEINFO) sieve.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) sieve.texi
sieve.dvi: sieve.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/sieve.texi
#
$(infodir)/pgg: pgg.texi
- $(MAKEINFO) pgg.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) pgg.texi
pgg.dvi: pgg.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/pgg.texi
$(infodir)/mh-e: mh-e.texi
- $(MAKEINFO) mh-e.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) mh-e.texi
mh-e.dvi: mh-e.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/mh-e.texi
$(infodir)/reftex: reftex.texi
- $(MAKEINFO) reftex.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) reftex.texi
reftex.dvi: reftex.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/reftex.texi
$(infodir)/remember: remember.texi
- $(MAKEINFO) remember.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) remember.texi
remember.dvi: remember.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/remember.texi
$(infodir)/sasl: sasl.texi
- $(MAKEINFO) sasl.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) sasl.texi
sasl.dvi: sasl.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/sasl.texi
$(infodir)/sc: sc.texi
- $(MAKEINFO) sc.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) sc.texi
sc.dvi: sc.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/sc.texi
$(infodir)/vip: vip.texi
- $(MAKEINFO) vip.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) vip.texi
vip.dvi: vip.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/vip.texi
$(infodir)/viper: viper.texi
- $(MAKEINFO) viper.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) viper.texi
viper.dvi: viper.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/viper.texi
$(infodir)/widget: widget.texi
- $(MAKEINFO) widget.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) widget.texi
widget.dvi: widget.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/widget.texi
-$(infodir)/efaq: faq.texi
- $(MAKEINFO) faq.texi
-faq.dvi: faq.texi
+$(infodir)/efaq: faq.texi $(emacsdir)/emacsver.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) faq.texi
+faq.dvi: faq.texi $(emacsdir)/emacsver.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/faq.texi
$(infodir)/autotype: autotype.texi
- $(MAKEINFO) autotype.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) autotype.texi
autotype.dvi: autotype.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/autotype.texi
-$(infodir)/calc: calc.texi
- $(MAKEINFO) calc.texi
+$(infodir)/calc: calc.texi $(emacsdir)/emacsver.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) calc.texi
-calc.dvi: calc.texi
+calc.dvi: calc.texi $(emacsdir)/emacsver.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/calc.texi
# This is produced with --no-split to avoid making files whose
# names clash on DOS 8+3 filesystems
$(infodir)/idlwave: idlwave.texi
- $(MAKEINFO) --no-split idlwave.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) --no-split idlwave.texi
idlwave.dvi: idlwave.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/idlwave.texi
$(infodir)/eudc: eudc.texi
- $(MAKEINFO) eudc.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) eudc.texi
eudc.dvi: eudc.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/eudc.texi
$(infodir)/ebrowse: ebrowse.texi
- $(MAKEINFO) ebrowse.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) ebrowse.texi
ebrowse.dvi: ebrowse.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/ebrowse.texi
$(infodir)/woman: woman.texi
- $(MAKEINFO) woman.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) woman.texi
woman.dvi: woman.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/woman.texi
$(infodir)/speedbar: speedbar.texi
- $(MAKEINFO) speedbar.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) speedbar.texi
speedbar.dvi: speedbar.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/speedbar.texi
$(infodir)/tramp: tramp.texi
- $(MAKEINFO) tramp.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) tramp.texi
tramp.dvi: tramp.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/tramp.texi
$(infodir)/ses: ses.texi
- $(MAKEINFO) ses.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) ses.texi
ses.dvi: ses.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/ses.texi
$(infodir)/smtpmail: smtpmail.texi
- $(MAKEINFO) smtpmail.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) smtpmail.texi
smtpmail.dvi: smtpmail.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/smtpmail.texi
$(infodir)/org: org.texi
- $(MAKEINFO) org.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) org.texi
org.dvi: org.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/org.texi
$(infodir)/url: url.texi
- $(MAKEINFO) url.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) url.texi
url.dvi: url.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/url.texi
$(infodir)/newsticker: newsticker.texi
- $(MAKEINFO) newsticker.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) newsticker.texi
newsticker.dvi: newsticker.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/newsticker.texi
$(infodir)/nxml-mode: nxml-mode.texi
- $(MAKEINFO) nxml-mode.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) nxml-mode.texi
nxml-mod.dvi: nxml-mode.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/nxml-mode.texi
$(infodir)/rcirc: rcirc.texi
- $(MAKEINFO) rcirc.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) rcirc.texi
rcirc.dvi: rcirc.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/rcirc.texi
$(infodir)/erc: erc.texi
- $(MAKEINFO) erc.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) erc.texi
erc.dvi: erc.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/erc.texi
+$(infodir)/ert: ert.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) ert.texi
+ert.dvi: ert.texi
+ $(ENVADD) $(TEXI2DVI) $(srcdir)/ert.texi
+
$(infodir)/epa: epa.texi
- $(MAKEINFO) epa.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) epa.texi
epa.dvi: epa.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/epa.texi
$(infodir)/mairix-el: mairix-el.texi
- $(MAKEINFO) mairix-el.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) mairix-el.texi
mairix-el.dvi: mairix-el.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/mairix-el.texi
$(infodir)/auth: auth.texi
- $(MAKEINFO) auth.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) auth.texi
auth.dvi: auth.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/auth.texi
$(infodir)/eieio: eieio.texi
- $(MAKEINFO) eieio.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) eieio.texi
eieio.dvi: eieio.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/eieio.texi
$(infodir)/ede: ede.texi
- $(MAKEINFO) ede.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) ede.texi
ede.dvi: ede.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/ede.texi
$(infodir)/semantic: semantic.texi
- $(MAKEINFO) semantic.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) semantic.texi
semantic.dvi: semantic.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/semantic.texi
$(infodir)/edt: edt.texi
- $(MAKEINFO) edt.texi
+ $(MAKEINFO) $(MAKEINFO_OPTS) edt.texi
edt.dvi: edt.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/edt.texi
@@ -358,7 +369,7 @@ clean: mostlyclean
$(infodir)/url* $(infodir)/org* \
$(infodir)/flymake* $(infodir)/newsticker* \
$(infodir)/sieve* $(infodir)/pgg* \
- $(infodir)/erc* $(infodir)/rcirc* \
+ $(infodir)/erc* $(infodir)/ert* $(infodir)/rcirc* \
$(infodir)/remember* $(infodir)/nxml-mode* \
$(infodir)/epa* $(infodir)/sasl* \
$(infodir)/mairix-el* $(infodir)/auth* \
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index cc17433326..48d0028e45 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -1,5 +1,7 @@
\input texinfo @c -*-texinfo-*-
+@include gnus-overrides.texi
+
@setfilename ../../info/message
@settitle Message Manual
@synindex fn cp
@@ -8,8 +10,7 @@
@copying
This file documents Message, the Emacs message composition mode.
-Copyright @copyright{} 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1996-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -35,7 +36,12 @@ developing GNU and promoting software freedom.''
@end iftex
@titlepage
+@ifset WEBHACKDEVEL
+@title Message Manual (DEVELOPMENT VERSION)
+@end ifset
+@ifclear WEBHACKDEVEL
@title Message Manual
+@end ifclear
@author by Lars Magne Ingebrigtsen
@page
@@ -182,6 +188,37 @@ Addresses that match the @code{message-dont-reply-to-names} regular
expression (or list of regular expressions) will be removed from the
@code{Cc} header. A value of @code{nil} means exclude your name only.
+@vindex message-prune-recipient-rules
+@code{message-prune-recipient-rules} is used to prune the addresses
+used when doing a wide reply. It's meant to be used to remove
+duplicate addresses and the like. It's a list of lists, where the
+first element is a regexp to match the address to trigger the rule,
+and the second is a regexp that will be expanded based on the first,
+to match addresses to be pruned.
+
+It's complicated to explain, but it's easy to use.
+
+For instance, if you get an email from @samp{foo@@example.org}, but
+@samp{foo@@zot.example.org} is also in the @code{Cc} list, then your
+wide reply will go out to both these addresses, since they are unique.
+
+To avoid this, do something like the following:
+
+@lisp
+(setq message-prune-recipient-rules
+ '(("^\\([^@@]+\\)@@\\(.*\\)" "\\1@@.*[.]\\2")))
+@end lisp
+
+If, for instance, you want all wide replies that involve messages from
+@samp{cvs@@example.org} to go to that address, and nowhere else (i.e.,
+remove all other recipients if @samp{cvs@@example.org} is in the
+recipient list:
+
+@lisp
+(setq message-prune-recipient-rules
+ '(("cvs@@example.org" ".")))
+@end lisp
+
@vindex message-wide-reply-confirm-recipients
If @code{message-wide-reply-confirm-recipients} is non-@code{nil} you
will be asked to confirm that you want to reply to multiple
@@ -855,6 +892,10 @@ Manual}).
@cindex internationalized domain names
@cindex non-ascii domain names
+@acronym{IDNA} is a standard way to encode non-@acronym{ASCII} domain
+names into a readable @acronym{ASCII} string. The details can be
+found in RFC 3490.
+
Message is a @acronym{IDNA}-compliant posting agent. The user
generally doesn't have to do anything to make the @acronym{IDNA}
happen---Message will encode non-@acronym{ASCII} domain names in @code{From},
@@ -1059,11 +1100,11 @@ the passphrase prompt.
@subsection Using PGP/MIME
@acronym{PGP/MIME} requires an external OpenPGP implementation, such
-as @uref{http://www.gnupg.org/, GNU Privacy Guard}. Pre-OpenPGP
-implementations such as PGP 2.x and PGP 5.x are also supported. One
+as @uref{http://www.gnupg.org/, GNU Privacy Guard}. Pre-OpenPGP
+implementations such as PGP 2.x and PGP 5.x are also supported. One
Emacs interface to the PGP implementations, PGG (@pxref{Top, ,PGG,
-pgg, PGG Manual}), is included, but Mailcrypt and Florian Weimer's
-@code{gpg.el} are also supported. @xref{PGP Compatibility}.
+pgg, PGG Manual}), is included, but Mailcrypt is also supported.
+@xref{PGP Compatibility}.
@cindex gpg-agent
Message internally calls GnuPG (the @command{gpg} command) to perform
@@ -1118,11 +1159,8 @@ If you have imported your old PGP 2.x key into GnuPG, and want to send
signed and encrypted messages to your fellow PGP 2.x users, you'll
discover that the receiver cannot understand what you send. One
solution is to use PGP 2.x instead (i.e., if you use @code{pgg}, set
-@code{pgg-default-scheme} to @code{pgp}). If you do want to use
-GnuPG, you can use a compatibility script called @code{gpg-2comp}
-available from
-@uref{http://muppet.faveve.uni-stuttgart.de/~gero/gpg-2comp/}. You
-could also convince your fellow PGP 2.x users to convert to GnuPG.
+@code{pgg-default-scheme} to @code{pgp}). You could also convince your
+fellow PGP 2.x users to convert to GnuPG.
@vindex mml-signencrypt-style-alist
As a final workaround, you can make the sign and encryption work in
two steps; separately sign, then encrypt a message. If you would like
@@ -1164,6 +1202,10 @@ The text is killed and replaced with the contents of the variable
@code{message-elide-ellipsis}. The default value is to use an ellipsis
(@samp{[...]}).
+This is a format-spec string, and you can use @samp{%l} to say how
+many lines were removed, and @samp{%c} to say how many characters were
+removed.
+
@item C-c M-k
@kindex C-c M-k
@findex message-kill-address
@@ -1422,8 +1464,10 @@ Allegedly.
@item message-default-headers
@vindex message-default-headers
-This string is inserted at the end of the headers in all message
-buffers.
+Header lines to be inserted in outgoing messages before you edit the
+message, so you can edit or delete their lines. If set to a string, it
+is directly inserted. If set to a function, it is called and its
+result is inserted.
@item message-subject-re-regexp
@vindex message-subject-re-regexp
@@ -1645,7 +1689,8 @@ the problem will actually occur.
@cindex split large message
The limitation of messages sent as message/partial. The lower bound
of message size in characters, beyond which the message should be sent
-in several parts. If it is @code{nil}, the size is unlimited.
+in several parts. If it is @code{nil} (which is the default), the
+size is unlimited.
@end table
@@ -1889,6 +1934,25 @@ posting a prepared news message.
@section Insertion Variables
@table @code
+@item message-cite-style
+@vindex message-cite-style
+The overall style to be used when replying to messages. This controls
+things like where the reply should be put relative to the original,
+how the citation is formatted, where the signature goes, etc.
+
+Value is either @code{nil} (no variable overrides) or a let-style list
+of pairs @code{(VARIABLE VALUE)} to override default values.
+
+See @code{gnus-posting-styles} to set this variable for specific
+groups. Presets to impersonate popular mail agents are available in the
+@code{message-cite-style-*} variables.
+
+@item message-cite-reply-position
+@vindex message-cite-reply-position
+Where the reply should be positioned. Available styles are
+@code{traditional} to reply inline, @code{above} for top-posting, and
+@code{below} for bottom-posting
+
@item message-ignored-cited-headers
@vindex message-ignored-cited-headers
All headers that match this regexp will be removed from yanked
@@ -2257,8 +2321,7 @@ created.
@item unique
@item t
-Create the new buffer with the name generated in the Message way. This
-is the default.
+Create the new buffer with the name generated in the Message way.
@item unsent
Similar to @code{unique} but the buffer name begins with "*unsent ".
@@ -2274,7 +2337,7 @@ type, the To address and the group name (any of these may be
@code{nil}). The function should return the new buffer name.
@end table
-The default value is @code{unique}.
+The default value is @code{unsent}.
@item message-max-buffers
@vindex message-max-buffers
@@ -2441,7 +2504,3 @@ basis of the new @code{Cc} header, except if this header is
@bye
@c End:
-
-@ignore
- arch-tag: 16ab76af-a281-4e34-aed6-5624569f7601
-@end ignore
diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi
index 1759470199..43d7bc7455 100644
--- a/doc/misc/mh-e.texi
+++ b/doc/misc/mh-e.texi
@@ -24,8 +24,7 @@
This is version @value{VERSION}@value{EDITION} of @cite{The MH-E
Manual}, last updated @value{UPDATED}.
-Copyright @copyright{} 1995, 2001, 2002, 2003, 2005, 2006, 2007, 2008,
- 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1995, 2001-2003, 2005-2011 Free Software Foundation, Inc.
@c This dual license has been agreed upon by the FSF.
diff --git a/doc/misc/newsticker.texi b/doc/misc/newsticker.texi
index f01fe23a6e..c7d8224597 100644
--- a/doc/misc/newsticker.texi
+++ b/doc/misc/newsticker.texi
@@ -13,7 +13,7 @@
This manual is for Newsticker (version @value{VERSION}, @value{UPDATED}).
@noindent
-Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+Copyright @copyright{} 2004-2011
Free Software Foundation, Inc.
@quotation
@@ -315,7 +315,3 @@ Byte-compiling newsticker.el is recommended.
@bye
-
-@ignore
- arch-tag: 7a4de539-117c-4658-b799-0b9e3d0ccec0
-@end ignore
diff --git a/doc/misc/nxml-mode.texi b/doc/misc/nxml-mode.texi
index 9ed8bcf88d..2760344041 100644
--- a/doc/misc/nxml-mode.texi
+++ b/doc/misc/nxml-mode.texi
@@ -8,7 +8,7 @@
This manual documents nxml-mode, an Emacs major mode for editing
XML with RELAX NG support.
-Copyright @copyright{} 2007, 2008, 2009, 2010, 2011
+Copyright @copyright{} 2007-2011
Free Software Foundation, Inc.
@quotation
diff --git a/doc/misc/org.texi b/doc/misc/org.texi
index b42de909d0..a0ec20c403 100644
--- a/doc/misc/org.texi
+++ b/doc/misc/org.texi
@@ -1,10 +1,16 @@
+
\input texinfo
@c %**start of header
@setfilename ../../info/org
@settitle The Org Manual
-@set VERSION 6.33x
-@set DATE November 2009
+@set VERSION 7.4
+@set DATE December 2010
+
+@c Use proper quote and backtick for code sections in PDF output
+@c Cf. Texinfo manual 14.2
+@set txicodequoteundirected
+@set txicodequotebacktick
@c Version and Contact Info
@set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
@@ -15,22 +21,236 @@
@c %**end of header
@finalout
-@c Macro definitions
+
+@c -----------------------------------------------------------------------------
+
+@c Macro definitions for commands and keys
+@c =======================================
+
+@c The behavior of the key/command macros will depend on the flag cmdnames
+@c When set, commands names are shown. When clear, they are not shown.
+
+@set cmdnames
+
+@c Below we define the following macros for Org key tables:
+
+@c orgkey{key} A key item
+@c orgcmd{key,cmd} Key with command name
+@c xorgcmd{key,cmmand} Key with command name as @itemx
+@c orgcmdnki{key,cmd} Like orgcmd, but do not index the key
+@c orgcmdtkc{text,key,cmd} Like orgcmd,special text instead of key
+@c orgcmdkkc{key1,key2,cmd} Two keys with one command name, use "or"
+@c orgcmdkxkc{key1,key2,cmd} Two keys with one command name, but
+@c different functions, so format as @itemx
+@c orgcmdkskc{key1,key2,cmd} Same as orgcmdkkc, but use "or short"
+@c xorgcmdkskc{key1,key2,cmd} Same as previous, but use @itemx
+@c orgcmdkkcc{key1,key2,cmd1,cmd2} Two keys and two commands
+
+@c a key but no command
+@c Inserts: @item key
+@macro orgkey{key}
+@kindex \key\
+@item @kbd{\key\}
+@end macro
+
+@macro xorgkey{key}
+@kindex \key\
+@itemx @kbd{\key\}
+@end macro
+
+@c one key with a command
+@c Inserts: @item KEY COMMAND
+@macro orgcmd{key,command}
+@ifset cmdnames
+@kindex \key\
+@findex \command\
@iftex
-@c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
+@item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
+@end iftex
+@ifnottex
+@item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
+@end ifnottex
+@end ifset
+@ifclear cmdnames
+@kindex \key\
+@item @kbd{\key\}
+@end ifclear
+@end macro
+
+@c One key with one command, formatted using @itemx
+@c Inserts: @itemx KEY COMMAND
+@macro xorgcmd{key,command}
+@ifset cmdnames
+@kindex \key\
+@findex \command\
+@iftex
+@itemx @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
+@end iftex
+@ifnottex
+@itemx @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
+@end ifnottex
+@end ifset
+@ifclear cmdnames
+@kindex \key\
+@itemx @kbd{\key\}
+@end ifclear
+@end macro
+
+@c one key with a command, bit do not index the key
+@c Inserts: @item KEY COMMAND
+@macro orgcmdnki{key,command}
+@ifset cmdnames
+@findex \command\
+@iftex
+@item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
+@end iftex
+@ifnottex
+@item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
+@end ifnottex
+@end ifset
+@ifclear cmdnames
+@item @kbd{\key\}
+@end ifclear
+@end macro
+
+@c one key with a command, and special text to replace key in item
+@c Inserts: @item TEXT COMMAND
+@macro orgcmdtkc{text,key,command}
+@ifset cmdnames
+@kindex \key\
+@findex \command\
+@iftex
+@item @kbd{\text\} @hskip 0pt plus 1filll @code{\command\}
+@end iftex
+@ifnottex
+@item @kbd{\text\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
+@end ifnottex
+@end ifset
+@ifclear cmdnames
+@kindex \key\
+@item @kbd{\text\}
+@end ifclear
+@end macro
+
+@c two keys with one command
+@c Inserts: @item KEY1 or KEY2 COMMAND
+@macro orgcmdkkc{key1,key2,command}
+@ifset cmdnames
+@kindex \key1\
+@kindex \key2\
+@findex \command\
+@iftex
+@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
@end iftex
-@macro Ie {}
-I.e.,
+@ifnottex
+@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
+@end ifnottex
+@end ifset
+@ifclear cmdnames
+@kindex \key1\
+@kindex \key2\
+@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\}
+@end ifclear
+@end macro
+
+@c Two keys with one command name, but different functions, so format as
+@c @itemx
+@c Inserts: @item KEY1
+@c @itemx KEY2 COMMAND
+@macro orgcmdkxkc{key1,key2,command}
+@ifset cmdnames
+@kindex \key1\
+@kindex \key2\
+@findex \command\
+@iftex
+@item @kbd{\key1\}
+@itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
+@end iftex
+@ifnottex
+@item @kbd{\key1\}
+@itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
+@end ifnottex
+@end ifset
+@ifclear cmdnames
+@kindex \key1\
+@kindex \key2\
+@item @kbd{\key1\}
+@itemx @kbd{\key2\}
+@end ifclear
@end macro
-@macro ie {}
-i.e.,
+
+@c Same as previous, but use "or short"
+@c Inserts: @item KEY1 or short KEY2 COMMAND
+@macro orgcmdkskc{key1,key2,command}
+@ifset cmdnames
+@kindex \key1\
+@kindex \key2\
+@findex \command\
+@iftex
+@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
+@end iftex
+@ifnottex
+@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
+@end ifnottex
+@end ifset
+@ifclear cmdnames
+@kindex \key1\
+@kindex \key2\
+@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
+@end ifclear
@end macro
-@macro Eg {}
-E.g.,
+
+@c Same as previous, but use @itemx
+@c Inserts: @itemx KEY1 or short KEY2 COMMAND
+@macro xorgcmdkskc{key1,key2,command}
+@ifset cmdnames
+@kindex \key1\
+@kindex \key2\
+@findex \command\
+@iftex
+@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
+@end iftex
+@ifnottex
+@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
+@end ifnottex
+@end ifset
+@ifclear cmdnames
+@kindex \key1\
+@kindex \key2\
+@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
+@end ifclear
@end macro
-@macro eg {}
-e.g.,
+
+@c two keys with two commands
+@c Inserts: @item KEY1 COMMAND1
+@c @itemx KEY2 COMMAND2
+@macro orgcmdkkcc{key1,key2,command1,command2}
+@ifset cmdnames
+@kindex \key1\
+@kindex \key2\
+@findex \command1\
+@findex \command2\
+@iftex
+@item @kbd{\key1\} @hskip 0pt plus 1filll @code{\command1\}
+@itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command2\}
+@end iftex
+@ifnottex
+@item @kbd{\key1\} @tie{}@tie{}@tie{}@tie{}(@code{\command1\})
+@itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command2\})
+@end ifnottex
+@end ifset
+@ifclear cmdnames
+@kindex \key1\
+@kindex \key2\
+@item @kbd{\key1\}
+@itemx @kbd{\key2\}
+@end ifclear
@end macro
+@c -----------------------------------------------------------------------------
+
+@iftex
+@c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
+@end iftex
@c Subheadings inside a table.
@macro tsubheading{text}
@@ -45,7 +265,7 @@ e.g.,
@copying
This manual is for Org version @value{VERSION}.
-Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation
+Copyright @copyright{} 2004-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -68,7 +288,7 @@ license to the document, as described in section 6 of the license.
@dircategory Emacs editing modes
@direntry
-* Org Mode: (org). Outline-based notes management and organizer.
+* Org Mode: (org). Outline-based notes management and organizer
@end direntry
@titlepage
@@ -76,6 +296,7 @@ license to the document, as described in section 6 of the license.
@subtitle Release @value{VERSION}
@author by Carsten Dominik
+with contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan Davison, Eric Schulte, and Thomas Dye
@c The following two commands start the copyright page.
@page
@@ -107,12 +328,14 @@ license to the document, as described in section 6 of the license.
* Markup:: Prepare text for rich export
* Exporting:: Sharing and publishing of notes
* Publishing:: Create a web site of linked Org files
+* Working With Source Code:: Export, evaluate, and tangle code blocks
* Miscellaneous:: All the rest which did not fit elsewhere
* Hacking:: How to hack your way around
* MobileOrg:: Viewing and capture on a mobile device
* History and Acknowledgments:: How Org came into being
* Main Index:: An index of Org's concepts and features
* Key Index:: Key bindings and where they are described
+* Command and Function Index:: Command names and some internal functions
* Variable Index:: Variables mentioned in the manual
@detailmenu
@@ -126,7 +349,7 @@ Introduction
* Feedback:: Bug reports, ideas, patches etc.
* Conventions:: Type-setting conventions in the manual
-Document Structure
+Document structure
* Outlines:: Org is based on Outline mode
* Headlines:: How to typeset Org tree headlines
@@ -175,7 +398,7 @@ Internal links
* Radio targets:: Make targets trigger links in plain text
-TODO Items
+TODO items
* TODO basics:: Marking and displaying TODO entries
* TODO extensions:: Workflow and assignments
@@ -206,10 +429,10 @@ Tags
* Setting tags:: How to assign tags to a headline
* Tag searches:: Searching for combinations of tags
-Properties and Columns
+Properties and columns
* Property syntax:: How properties are spelled out
-* Special properties:: Access to other Org mode features
+* Special properties:: Access to other Org-mode features
* Property searches:: Matching property values
* Property inheritance:: Passing values down the tree
* Column view:: Tabular viewing and editing
@@ -226,19 +449,19 @@ Defining columns
* Scope of column definitions:: Where defined, where valid?
* Column attributes:: Appearance and content of a column
-Dates and Times
+Dates and times
* Timestamps:: Assigning a time to a tree entry
* Creating timestamps:: Commands which insert timestamps
* Deadlines and scheduling:: Planning your work
* Clocking work time:: Tracking how long you spend on a task
-* Resolving idle time:: Resolving time if you've been idle
* Effort estimates:: Planning work effort in advance
* Relative timer:: Notes with a running timer
+* Countdown timer:: Starting a countdown timer for a task
Creating timestamps
-* The date/time prompt:: How Org mode helps you entering date and time
+* The date/time prompt:: How Org-mode helps you entering date and time
* Custom time format:: Making dates look different
Deadlines and scheduling
@@ -246,27 +469,38 @@ Deadlines and scheduling
* Inserting deadline/schedule:: Planning items
* Repeated tasks:: Items that show up again and again
+Clocking work time
+
+* Clocking commands:: Starting and stopping a clock
+* The clock table:: Detailed reports
+* Resolving idle time:: Resolving time when you've been idle
+
Capture - Refile - Archive
-* Remember:: Capture new tasks/ideas with little interruption
-* Attachments:: Add files to tasks.
+* Capture:: Capturing new stuff
+* Attachments:: Add files to tasks
* RSS Feeds:: Getting input from RSS feeds
* Protocols:: External (e.g. Browser) access to Emacs and Org
* Refiling notes:: Moving a tree from one place to another
* Archiving:: What to do with finished projects
-Remember
+Capture
+
+* Setting up capture:: Where notes will be stored
+* Using capture:: Commands to invoke and terminate capture
+* Capture templates:: Define the outline of different note types
-* Setting up Remember for Org:: Some code for .emacs to get things going
-* Remember templates:: Define the outline of different note types
-* Storing notes:: Directly get the note to where it belongs
+Capture templates
+
+* Template elements:: What is needed for a complete template entry
+* Template expansion:: Filling in information about time and context
Archiving
* Moving subtrees:: Moving a tree to an archive file
-* Internal archiving:: Switch off a tree but keep i in the file
+* Internal archiving:: Switch off a tree but keep it in the file
-Agenda Views
+Agenda views
* Agenda files:: Files being searched for agenda information
* Agenda dispatcher:: Keyboard access to agenda views
@@ -304,6 +538,7 @@ Markup for rich export
* Images and tables:: Tables and Images will be included
* Literal examples:: Source code examples with special formatting
* Include files:: Include additional files into a document
+* Index entries:: Making an index
* Macro replacement:: Use macros to create complex output
* Embedded LaTeX:: LaTeX can be freely used inside Org documents
@@ -320,7 +555,7 @@ Structural markup elements
* Horizontal rules:: Make a line
* Comment lines:: What will *not* be exported
-Embedded La@TeX{}
+Embedded @LaTeX{}
* Special symbols:: Greek letters and other symbols
* Subscripts and superscripts:: Simple syntax for raising/lowering text
@@ -333,10 +568,11 @@ Exporting
* Selective export:: Using tags to select and exclude trees
* Export options:: Per-file export settings
* The export dispatcher:: How to access exporter commands
-* ASCII export:: Exporting to plain ASCII
+* ASCII/Latin-1/UTF-8 export:: Exporting to flat files with encoding
* HTML export:: Exporting to HTML
-* LaTeX and PDF export:: Exporting to La@TeX{}, and processing to PDF
+* LaTeX and PDF export:: Exporting to @LaTeX{}, and processing to PDF
* DocBook export:: Exporting to DocBook
+* TaskJuggler export:: Exporting to TaskJuggler
* Freemind export:: Exporting to Freemind mind maps
* XOXO export:: Exporting to XOXO
* iCalendar export:: Exporting in iCalendar format
@@ -344,21 +580,23 @@ Exporting
HTML export
* HTML Export commands:: How to invoke HTML export
-* Quoting HTML tags:: Using direct HTML in Org mode
+* Quoting HTML tags:: Using direct HTML in Org-mode
* Links in HTML export:: How links will be interpreted and formatted
* Tables in HTML export:: How to modify the formatting of tables
* Images in HTML export:: How to insert figures into HTML output
+* Math formatting in HTML export:: Beautiful math also on the web
* Text areas in HTML export:: An alternative way to show an example
* CSS support:: Changing the appearance of the output
-* Javascript support:: Info and Folding in a web browser
+* JavaScript support:: Info and Folding in a web browser
-La@TeX{} and PDF export
+@LaTeX{} and PDF export
* LaTeX/PDF export commands:: Which key invokes which commands
-* Quoting LaTeX code:: Incorporating literal La@TeX{} code
-* Sectioning structure:: Changing sectioning in La@TeX{} output
-* Tables in LaTeX export:: Options for exporting tables to La@TeX{}
-* Images in LaTeX export:: How to insert figures into La@TeX{} output
+* Header and sectioning:: Setting up the export file structure
+* Quoting LaTeX code:: Incorporating literal @LaTeX{} code
+* Tables in LaTeX export:: Options for exporting tables to @LaTeX{}
+* Images in LaTeX export:: How to insert figures into @LaTeX{} output
+* Beamer class export:: Turning the file into a presentation
DocBook export
@@ -384,17 +622,72 @@ Configuration
* Publishing action:: Setting the function doing the publishing
* Publishing options:: Tweaking HTML export
* Publishing links:: Which links keep working after publishing?
-* Project page index:: Publishing a list of project files
+* Sitemap:: Generating a list of all pages
+* Generating an index:: An index that reaches across pages
Sample configuration
* Simple example:: One-component publishing
* Complex example:: A multi-component publishing example
+Working with source code
+
+* Structure of code blocks:: Code block syntax described
+* Editing source code:: Language major-mode editing
+* Exporting code blocks:: Export contents and/or results
+* Extracting source code:: Create pure source code files
+* Evaluating code blocks:: Place results of evaluation in the Org-mode buffer
+* Library of Babel:: Use and contribute to a library of useful code blocks
+* Languages:: List of supported code block languages
+* Header arguments:: Configure code block functionality
+* Results of evaluation:: How evaluation results are handled
+* Noweb reference syntax:: Literate programming in Org-mode
+* Key bindings and useful functions:: Work quickly with code blocks
+* Batch execution:: Call functions from the command line
+
+Header arguments
+
+* Using header arguments:: Different ways to set header arguments
+* Specific header arguments:: List of header arguments
+
+Using header arguments
+
+* System-wide header arguments:: Set global default values
+* Language-specific header arguments:: Set default values by language
+* Buffer-wide header arguments:: Set default values for a specific buffer
+* Header arguments in Org-mode properties:: Set default values for a buffer or heading
+* Code block specific header arguments:: The most common way to set values
+* Header arguments in function calls:: The most specific level
+
+Specific header arguments
+
+* var:: Pass arguments to code blocks
+* results:: Specify the type of results and how they will
+ be collected and handled
+* file:: Specify a path for file output
+* dir:: Specify the default (possibly remote)
+ directory for code block execution
+* exports:: Export code and/or results
+* tangle:: Toggle tangling and specify file name
+* comments:: Toggle insertion of comments in tangled
+ code files
+* no-expand:: Turn off variable assignment and noweb
+ expansion during tangling
+* session:: Preserve the state of code evaluation
+* noweb:: Toggle expansion of noweb references
+* cache:: Avoid re-evaluating unchanged code blocks
+* hlines:: Handle horizontal lines in tables
+* colnames:: Handle column names in tables
+* rownames:: Handle row names in tables
+* shebang:: Make tangled files executable
+* eval:: Limit evaluation of specific code blocks
+
Miscellaneous
* Completion:: M-TAB knows what you need
-* Speed keys:: Electic commands at the beginning of a headline
+* Easy Templates:: Quick insertion of structural elements
+* Speed keys:: Electric commands at the beginning of a headline
+* Code evaluation security:: Org mode files evaluate inline code
* Customization:: Adapting Org to your taste
* In-buffer settings:: Overview of the #+KEYWORDS
* The very busy C-c C-c key:: When in doubt, press C-c C-c
@@ -413,7 +706,7 @@ Hacking
* Add-on packages:: Available extensions
* Adding hyperlink types:: New custom link types
* Context-sensitive commands:: How to add functionality to such commands
-* Tables in arbitrary syntax:: Orgtbl for La@TeX{} and other programs
+* Tables in arbitrary syntax:: Orgtbl for @LaTeX{} and other programs
* Dynamic blocks:: Automatically filled blocks
* Special agenda views:: Customized views
* Extracting agenda information:: Postprocessing of agenda information
@@ -470,40 +763,39 @@ structured ASCII file, as HTML, or (TODO and agenda items only) as an
iCalendar file. It can also serve as a publishing tool for a set of
linked web pages.
-An important design aspect that distinguishes Org from, for example,
-Planner/Muse is that it encourages you to store every piece of information
-only once. In Planner, you have project pages, day pages and possibly
-other files, duplicating some information such as tasks. In Org,
-you only have notes files. In your notes you mark entries as tasks, and
-label them with tags and timestamps. All necessary lists, like a
-schedule for the day, the agenda for a meeting, tasks lists selected by
-tags, etc., are created dynamically when you need them.
+As a project planning environment, Org works by adding metadata to outline
+nodes. Based on this data, specific entries can be extracted in queries and
+create dynamic @i{agenda views}.
+
+Org mode contains the Org Babel environment which allows you to work with
+embedded source code blocks in a file, to facilitate code evaluation,
+documentation, and tangling.
+
+Org's automatic, context-sensitive table editor with spreadsheet
+capabilities can be integrated into any major mode by activating the
+minor Orgtbl mode. Using a translation step, it can be used to maintain
+tables in arbitrary file types, for example in @LaTeX{}. The structure
+editing and list creation capabilities can be used outside Org with
+the minor Orgstruct mode.
Org keeps simple things simple. When first fired up, it should
feel like a straightforward, easy to use outliner. Complexity is not
imposed, but a large amount of functionality is available when you need
-it. Org is a toolbox and can be used in different ways, for
-example as:
+it. Org is a toolbox and can be used in different ways and for different
+ends, for example:
@example
@r{@bullet{} an outline extension with visibility cycling and structure editing}
@r{@bullet{} an ASCII system and table editor for taking structured notes}
-@r{@bullet{} an ASCII table editor with spreadsheet-like capabilities}
@r{@bullet{} a TODO list editor}
@r{@bullet{} a full agenda and planner with deadlines and work scheduling}
@pindex GTD, Getting Things Done
-@r{@bullet{} an environment to implement David Allen's GTD system}
-@r{@bullet{} a basic database application}
-@r{@bullet{} a simple hypertext system, with HTML and La@TeX{} export}
+@r{@bullet{} an environment in which to implement David Allen's GTD system}
+@r{@bullet{} a simple hypertext system, with HTML and @LaTeX{} export}
@r{@bullet{} a publishing tool to create a set of interlinked webpages}
+@r{@bullet{} an environment for literate programming}
@end example
-Org's automatic, context-sensitive table editor with spreadsheet
-capabilities can be integrated into any major mode by activating the
-minor Orgtbl mode. Using a translation step, it can be used to maintain
-tables in arbitrary file types, for example in La@TeX{}. The structure
-editing and list creation capabilities can be used outside Org with
-the minor Orgstruct mode.
@cindex FAQ
There is a website for Org which provides links to the newest
@@ -545,18 +837,6 @@ step for this directory:
(setq load-path (cons "~/path/to/orgdir/contrib/lisp" load-path))
@end example
-@sp 2
-@cartouche
-XEmacs users now need to install the file @file{noutline.el} from
-the @file{xemacs} sub-directory of the Org distribution. Use the
-command:
-
-@example
- make install-noutline
-@end example
-@end cartouche
-@sp 2
-
@noindent Now byte-compile the Lisp files with the shell command:
@example
@@ -600,14 +880,6 @@ Do not forget to activate Org as described in the following section.
@cindex global key bindings
@cindex key bindings, global
-@iftex
-@b{Important:} @i{If you use copy-and-paste to copy Lisp code from the
-PDF documentation as viewed by some PDF viewers to your @file{.emacs} file, the
-single-quote character comes out incorrectly and the code will not work.
-You need to fix the single-quotes by hand, or copy from Info
-documentation.}
-@end iftex
-
Add the following lines to your @file{.emacs} file. The last three lines
define @emph{global} keys for the commands @command{org-store-link},
@command{org-agenda}, and @command{org-iswitchb}---please choose suitable
@@ -630,9 +902,9 @@ active. You can do this with either one of the following two lines
(add-hook 'org-mode-hook 'turn-on-font-lock) ; Org buffers only
@end lisp
-@cindex Org mode, turning on
+@cindex Org-mode, turning on
With this setup, all files with extension @samp{.org} will be put
-into Org mode. As an alternative, make the first line of a file look
+into Org-mode. As an alternative, make the first line of a file look
like this:
@example
@@ -640,7 +912,7 @@ MY PROJECTS -*- mode: org; -*-
@end example
@vindex org-insert-mode-line-in-empty-file
-@noindent which will select Org mode for this buffer no matter what
+@noindent which will select Org-mode for this buffer no matter what
the file's name is. See also the variable
@code{org-insert-mode-line-in-empty-file}.
@@ -665,10 +937,15 @@ active region by using the mouse to select a region, or pressing
If you find problems with Org, or if you have questions, remarks, or ideas
about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
If you are not a member of the mailing list, your mail will be passed to the
-list after a moderator has approved it.
-
-For bug reports, please provide as much information as possible, including
-the version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
+list after a moderator has approved it@footnote{Please consider subscribing
+to the mailing list, in order to minimize the work the mailing list
+moderators have to do.}.
+
+For bug reports, please first try to reproduce the bug with the latest
+version of Org available---if you are running an outdated version, it is
+quite possible that the bug has been fixed already. If the bug persists,
+prepare a report and provide as much information as possible, including the
+version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
(@kbd{M-x org-version @key{RET}}), as well as the Org related setup in
@file{.emacs}. The easiest way to do this is to use the command
@example
@@ -687,7 +964,7 @@ about:
@item What did you expect to happen?
@item What happened instead?
@end enumerate
-@noindent Thank you for helping to improve this mode.
+@noindent Thank you for helping to improve this program.
@subsubheading How to create a useful backtrace
@@ -742,8 +1019,20 @@ User-defined properties are capitalized; built-in properties with
special meaning are written with all capitals.
@end table
+The manual lists both the keys and the corresponding commands for accessing
+functionality. Org mode often uses the same key for different functions,
+depending on context. The command that is bound to such keys has a generic
+name, like @code{org-metaright}. In the manual we will, wherever possible,
+give the function that is internally called by the generic command. For
+example, in the chapter on document structure, @kbd{M-@key{right}} will be
+listed to call @code{org-do-demote}, while in the chapter on tables, it will
+be listed to call org-table-move-column-right.
+
+If you prefer, you can compile the manual without the command names by
+unsetting the flag @code{cmdnames} in @file{org.texi}.
+
@node Document Structure, Tables, Introduction, Top
-@chapter Document Structure
+@chapter Document structure
@cindex document structure
@cindex structure of document
@@ -783,11 +1072,14 @@ command, @command{org-cycle}, which is bound to the @key{TAB} key.
@cindex headlines
@cindex outline tree
@vindex org-special-ctrl-a/e
+@vindex org-special-ctrl-k
+@vindex org-ctrl-k-protect-subtree
-Headlines define the structure of an outline tree. The headlines in
-Org start with one or more stars, on the left margin@footnote{See
-the variable @code{org-special-ctrl-a/e} to configure special behavior
-of @kbd{C-a} and @kbd{C-e} in headlines.}. For example:
+Headlines define the structure of an outline tree. The headlines in Org
+start with one or more stars, on the left margin@footnote{See the variables
+@code{org-special-ctrl-a/e}, @code{org-special-ctrl-k}, and
+@code{org-ctrl-k-protect-subtree} to configure special behavior of @kbd{C-a},
+@kbd{C-e}, and @kbd{C-k} in headlines.}. For example:
@example
* Top level headline
@@ -828,9 +1120,8 @@ Org uses just two commands, bound to @key{TAB} and
@cindex folded, subtree visibility state
@cindex children, subtree visibility state
@cindex subtree, subtree visibility state
-@table @kbd
-@kindex @key{TAB}
-@item @key{TAB}
+@table @asis
+@orgcmd{@key{TAB},org-cycle}
@emph{Subtree cycling}: Rotate current subtree among the states
@example
@@ -852,8 +1143,7 @@ argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
@cindex overview, global visibility state
@cindex contents, global visibility state
@cindex show all, global visibility state
-@kindex S-@key{TAB}
-@item S-@key{TAB}
+@orgcmd{S-@key{TAB},org-global-cycle}
@itemx C-u @key{TAB}
@emph{Global cycling}: Rotate the entire buffer among the states
@@ -867,18 +1157,18 @@ CONTENTS view up to headlines of level N will be shown. Note that inside
tables, @kbd{S-@key{TAB}} jumps to the previous field.
@cindex show all, command
-@kindex C-u C-u C-u @key{TAB}
-@item C-u C-u C-u @key{TAB}
+@orgcmd{C-u C-u C-u @key{TAB},show-all}
Show all, including drawers.
-@kindex C-c C-r
-@item C-c C-r
+@orgcmd{C-c C-r,org-reveal}
Reveal context around point, showing the current entry, the following heading
and the hierarchy above. Useful for working near a location that has been
exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
(@pxref{Agenda commands}). With a prefix argument show, on each
-level, all sibling headings.
-@kindex C-c C-x b
-@item C-c C-x b
+level, all sibling headings. With double prefix arg, also show the entire
+subtree of the parent.
+@orgcmd{C-c C-k,show-branches}
+Expose all the headings of the subtree, CONTENT view for just one subtree.
+@orgcmd{C-c C-x b,org-tree-to-indirect-buffer}
Show the current subtree in an indirect buffer@footnote{The indirect
buffer
@ifinfo
@@ -920,9 +1210,8 @@ Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
and Columns}) will get their visibility adapted accordingly. Allowed values
for this property are @code{folded}, @code{children}, @code{content}, and
@code{all}.
-@table @kbd
-@kindex C-u C-u @key{TAB}
-@item C-u C-u @key{TAB}
+@table @asis
+@orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
Switch back to the startup visibility of the buffer, i.e. whatever is
requested by startup options and @samp{VISIBILITY} properties in individual
entries.
@@ -935,24 +1224,18 @@ entries.
@cindex headline navigation
The following commands jump to other headlines in the buffer.
-@table @kbd
-@kindex C-c C-n
-@item C-c C-n
+@table @asis
+@orgcmd{C-c C-n,outline-next-visible-heading}
Next heading.
-@kindex C-c C-p
-@item C-c C-p
+@orgcmd{C-c C-p,outline-previous-visible-heading}
Previous heading.
-@kindex C-c C-f
-@item C-c C-f
+@orgcmd{C-c C-f,org-forward-same-level}
Next heading same level.
-@kindex C-c C-b
-@item C-c C-b
+@orgcmd{C-c C-b,org-backward-same-level}
Previous heading same level.
-@kindex C-c C-u
-@item C-c C-u
+@orgcmd{C-c C-u,outline-up-heading}
Backward to higher level heading.
-@kindex C-c C-j
-@item C-c C-j
+@orgcmd{C-c C-j,org-goto}
Jump to a different place without changing the current outline
visibility. Shows the document structure in a temporary buffer, where
you can use the following keys to find your destination:
@@ -987,9 +1270,8 @@ See also the variable @code{org-goto-interface}.
@cindex sorting, of subtrees
@cindex subtrees, cut and paste
-@table @kbd
-@kindex M-@key{RET}
-@item M-@key{RET}
+@table @asis
+@orgcmd{M-@key{RET},org-insert-heading}
@vindex org-M-RET-may-split-line
Insert new heading with same level as current. If the cursor is in a
plain list item, a new item is created (@pxref{Plain lists}). To force
@@ -1004,62 +1286,48 @@ the content of that line is made the new heading. If the command is
used at the end of a folded subtree (i.e. behind the ellipses at the end
of a headline), then a headline like the current one will be inserted
after the end of the subtree.
-@kindex C-@key{RET}
-@item C-@key{RET}
+@orgcmd{C-@key{RET},org-insert-heading-respect-content}
Just like @kbd{M-@key{RET}}, except when adding a new heading below the
current heading, the new heading is placed after the body instead of before
it. This command works from anywhere in the entry.
-@kindex M-S-@key{RET}
-@item M-S-@key{RET}
+@orgcmd{M-S-@key{RET},org-insert-todo-heading}
@vindex org-treat-insert-todo-heading-as-state-change
Insert new TODO entry with same level as current heading. See also the
variable @code{org-treat-insert-todo-heading-as-state-change}.
-@kindex C-S-@key{RET}
-@item C-S-@key{RET}
+@orgcmd{C-S-@key{RET},org-insert-todo-heading-respect-content}
Insert new TODO entry with same level as current heading. Like
@kbd{C-@key{RET}}, the new headline will be inserted after the current
subtree.
-@kindex @key{TAB}
-@item @key{TAB} @r{in new, empty entry}
+@orgcmd{@key{TAB},org-cycle}
In a new entry with no text yet, the first @key{TAB} demotes the entry to
become a child of the previous one. The next @key{TAB} makes it a parent,
and so on, all the way to top level. Yet another @key{TAB}, and you are back
to the initial level.
-@kindex M-@key{left}
-@item M-@key{left}
+@orgcmd{M-@key{left},org-do-promote}
Promote current heading by one level.
-@kindex M-@key{right}
-@item M-@key{right}
+@orgcmd{M-@key{right},org-do-demote}
Demote current heading by one level.
-@kindex M-S-@key{left}
-@item M-S-@key{left}
+@orgcmd{M-S-@key{left},org-promote-subtree}
Promote the current subtree by one level.
-@kindex M-S-@key{right}
-@item M-S-@key{right}
+@orgcmd{M-S-@key{right},org-demote-subtree}
Demote the current subtree by one level.
-@kindex M-S-@key{up}
-@item M-S-@key{up}
+@orgcmd{M-S-@key{up},org-move-subtree-up}
Move subtree up (swap with previous subtree of same
level).
-@kindex M-S-@key{down}
-@item M-S-@key{down}
+@orgcmd{M-S-@key{down},org-move-subtree-down}
Move subtree down (swap with next subtree of same level).
-@kindex C-c C-x C-w
-@item C-c C-x C-w
+@orgcmd{C-c C-x C-w,org-cut-subtree}
Kill subtree, i.e. remove it from buffer but save in kill ring.
With a numeric prefix argument N, kill N sequential subtrees.
-@kindex C-c C-x M-w
-@item C-c C-x M-w
+@orgcmd{C-c C-x M-w,org-copy-subtree}
Copy subtree to kill ring. With a numeric prefix argument N, copy the N
sequential subtrees.
-@kindex C-c C-x C-y
-@item C-c C-x C-y
+@orgcmd{C-c C-x C-y,org-paste-subtree}
Yank subtree from kill ring. This does modify the level of the subtree to
make sure the tree fits in nicely at the yank position. The yank level can
also be specified with a numeric prefix argument, or by yanking after a
headline marker like @samp{****}.
-@kindex C-y
-@item C-y
+@orgcmd{C-y,org-yank}
@vindex org-yank-adjusted-subtrees
@vindex org-yank-folded-subtrees
Depending on the variables @code{org-yank-adjusted-subtrees} and
@@ -1072,19 +1340,16 @@ previously visible. Any prefix argument to this command will force a normal
force a normal yank is @kbd{C-u C-y}. If you use @code{yank-pop} after a
yank, it will yank previous kill items plainly, without adjustment and
folding.
-@kindex C-c C-x c
-@item C-c C-x c
+@orgcmd{C-c C-x c,org-clone-subtree-with-time-shift}
Clone a subtree by making a number of sibling copies of it. You will be
prompted for the number of copies to make, and you can also specify if any
timestamps in the entry should be shifted. This can be useful, for example,
to create a number of tasks related to a series of lectures to prepare. For
more details, see the docstring of the command
@code{org-clone-subtree-with-time-shift}.
-@kindex C-c C-w
-@item C-c C-w
+@orgcmd{C-c C-w,org-refile}
Refile entry or region to a different location. @xref{Refiling notes}.
-@kindex C-c ^
-@item C-c ^
+@orgcmd{C-c ^,org-sort-entries-or-items}
Sort same-level entries. When there is an active region, all entries in the
region will be sorted. Otherwise the children of the current headline are
sorted. The command prompts for the sorting method, which can be
@@ -1095,14 +1360,11 @@ of a property. Reverse sorting is possible as well. You can also supply
your own function to extract the sorting key. With a @kbd{C-u} prefix,
sorting will be case-sensitive. With two @kbd{C-u C-u} prefixes, duplicate
entries will also be removed.
-@kindex C-x n s
-@item C-x n s
+@orgcmd{C-x n s,org-narrow-to-subtree}
Narrow buffer to current subtree.
-@kindex C-x n w
-@item C-x n w
+@orgcmd{C-x n w,widen}
Widen buffer to remove narrowing.
-@kindex C-c *
-@item C-c *
+@orgcmd{C-c *,org-toggle-heading}
Turn a normal line or plain list item into a headline (so that it becomes a
subheading at its location). Also turn a headline into a normal line by
removing the stars. If there is an active region, turn all lines in the
@@ -1134,7 +1396,7 @@ functionality.
@vindex org-show-following-heading
@vindex org-show-siblings
@vindex org-show-entry-below
-An important feature of Org mode is the ability to construct @emph{sparse
+An important feature of Org-mode is the ability to construct @emph{sparse
trees} for selected information in an outline tree, so that the entire
document is folded as much as possible, but the selected information is made
visible along with the headline structure above it@footnote{See also the
@@ -1143,15 +1405,13 @@ variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
control on how much context is shown around each match.}. Just try it out
and you will see immediately how it works.
-Org mode contains several commands creating such trees, all these
+Org-mode contains several commands creating such trees, all these
commands can be accessed through a dispatcher:
-@table @kbd
-@kindex C-c /
-@item C-c /
+@table @asis
+@orgcmd{C-c /,org-sparse-tree}
This prompts for an extra key to select a sparse-tree creating command.
-@kindex C-c / r
-@item C-c / r
+@orgcmd{C-c / r,org-occur}
@vindex org-remove-highlights-with-change
Occur. Prompts for a regexp and shows a sparse tree with all matches. If
the match is in a headline, the headline is made visible. If the match is in
@@ -1202,9 +1462,9 @@ part of the document and print the resulting file.
@cindex ordered lists
Within an entry of the outline tree, hand-formatted lists can provide
-additional structure. They also provide a way to create lists of
-checkboxes (@pxref{Checkboxes}). Org supports editing such lists,
-and the HTML exporter (@pxref{Exporting}) parses and formats them.
+additional structure. They also provide a way to create lists of checkboxes
+(@pxref{Checkboxes}). Org supports editing such lists, and every exporter
+(@pxref{Exporting}) can parse and format them.
Org knows ordered lists, unordered lists, and description lists.
@itemize @bullet
@@ -1217,24 +1477,39 @@ visually indistinguishable from true headlines. In short: even though
@samp{*} is supported, it may be better to not use it for plain list items.}
as bullets.
@item
+@vindex org-plain-list-ordered-item-terminator
@emph{Ordered} list items start with a numeral followed by either a period or
-a right parenthesis, such as @samp{1.} or @samp{1)}.
+a right parenthesis@footnote{You can filter out any of them by configuring
+@code{org-plain-list-ordered-item-terminator}.}, such as @samp{1.} or
+@samp{1)}. If you want a list to start with a different value (e.g. 20), start
+the text of the item with @code{[@@20]}@footnote{If there's a checkbox in the
+item, the cookie must be put @emph{before} the checkbox.}. Those constructs
+can be used in any item of the list in order to enforce a particular
+numbering.
@item
@emph{Description} list items are unordered list items, and contain the
separator @samp{ :: } to separate the description @emph{term} from the
description.
@end itemize
-@vindex org-empty-line-terminates-plain-lists
Items belonging to the same list must have the same indentation on the first
line. In particular, if an ordered list reaches number @samp{10.}, then the
2--digit numbers must be written left-aligned with the other numbers in the
-list. Indentation also determines the end of a list item. It ends before
-the next line that is indented like the bullet/number, or less. Empty lines
-are part of the previous item, so you can have several paragraphs in one
-item. If you would like an empty line to terminate all currently open plain
-lists, configure the variable @code{org-empty-line-terminates-plain-lists}.
-Here is an example:
+list.
+
+@vindex org-list-ending-method
+@vindex org-list-end-regexp
+@vindex org-empty-line-terminates-plain-lists
+Two methods@footnote{To disable either of them, configure
+@code{org-list-ending-method}.} are provided to terminate lists. A list ends
+before the next line that is indented like the bullet/number or less, or it
+ends before two blank lines@footnote{See also
+@code{org-empty-line-terminates-plain-lists}.}. In both cases, all levels of
+the list are closed@footnote{So you cannot have a sublist, some text and then
+another sublist while still in the same top-level list item. This used to be
+possible, but it was only supported in the HTML exporter and difficult to
+manage with automatic indentation.}. For finer control, you can end lists
+with any pattern set in @code{org-list-end-regexp}. Here is an example:
@example
@group
@@ -1245,8 +1520,8 @@ Here is an example:
+ this was already my favorite scene in the book
+ I really like Miranda Otto.
3. Peter Jackson being shot by Legolas
- - on DVD only
He makes a really funny face when it happens.
+ - on DVD only
But in the end, no individual scenes matter but the film as a whole.
Important actors in this film are:
- @b{Elijah Wood} :: He plays Frodo
@@ -1261,46 +1536,54 @@ XEmacs, you should use Kyle E. Jones' @file{filladapt.el}. To turn this on,
put into @file{.emacs}: @code{(require 'filladapt)}}, and by exporting them
properly (@pxref{Exporting}). Since indentation is what governs the
structure of these lists, many structural constructs like @code{#+BEGIN_...}
-blocks can be indented to signal that they should be part of a list item.
+blocks can be indented to signal that they should be considered as a list
+item.
-The following commands act on items when the cursor is in the first line
-of an item (the line with the bullet or number).
+@vindex org-list-demote-modify-bullet
+If you find that using a different bullet for a sub-list (than that used for
+the current list-level) improves readability, customize the variable
+@code{org-list-demote-modify-bullet}.
-@table @kbd
-@kindex @key{TAB}
-@item @key{TAB}
+@vindex org-list-automatic-rules
+The following commands act on items when the cursor is in the first line of
+an item (the line with the bullet or number). Some of them imply the
+application of automatic rules to keep list structure intact. If some of
+these actions get in your way, configure @code{org-list-automatic-rules}
+to disable them individually.
+
+@table @asis
+@orgcmd{@key{TAB},org-cycle}
@vindex org-cycle-include-plain-lists
Items can be folded just like headline levels. Normally this works only if
the cursor is on a plain list item. For more details, see the variable
-@code{org-cycle-include-plain-lists}. to @code{integrate}, plain list items
-will be treated like low-level. The level of an item is then given by the
+@code{org-cycle-include-plain-lists}. If this variable is set to
+@code{integrate}, plain list items will be treated like low-level
+headlines. The level of an item is then given by the
indentation of the bullet/number. Items are always subordinate to real
headlines, however; the hierarchies remain completely separated.
-
-If @code{org-cycle-include-plain-lists} has not been set, @key{TAB}
-fixes the indentation of the current line in a heuristic way.
-@kindex M-@key{RET}
-@item M-@key{RET}
+@orgcmd{M-@key{RET},org-insert-heading}
@vindex org-M-RET-may-split-line
+@vindex org-list-automatic-rules
Insert new item at current level. With a prefix argument, force a new
heading (@pxref{Structure editing}). If this command is used in the middle
of a line, the line is @emph{split} and the rest of the line becomes the new
item@footnote{If you do not want the line to be split, customize the variable
-@code{org-M-RET-may-split-line}.}. If this command is executed in the
-@emph{whitespace before a bullet or number}, the new item is created
-@emph{before} the current item. If the command is executed in the white
-space before the text that is part of an item but does not contain the
-bullet, a bullet is added to the current line.
+@code{org-M-RET-may-split-line}.}. If this command is executed @emph{before
+an item's body}, the new item is created @emph{before} the current item. If the
+command is executed in the white space before the text that is part of an
+item but does not contain the bullet, a bullet is added to the current line.
+
+As a new item cannot be inserted in a structural construct (like an example
+or source code block) within a list, Org will instead insert it right before
+the structure, or return an error.
@kindex M-S-@key{RET}
@item M-S-@key{RET}
Insert a new item with a checkbox (@pxref{Checkboxes}).
-@kindex @key{TAB}
-@item @key{TAB} @r{in new, empty item}
+@orgcmd{@key{TAB},org-cycle}
In a new item with no text yet, the first @key{TAB} demotes the item to
-become a child of the previous one. The next @key{TAB} makes it a parent,
-and so on, all the way to the left margin. Yet another @key{TAB}, and you
-are back to the initial level.
-@kindex S-@key{up}
+become a child of the previous one. Subsequent @key{TAB}s move the item to
+meaningful levels in the list and eventually get it back to its initial
+position.
@kindex S-@key{down}
@item S-@key{up}
@itemx S-@key{down}
@@ -1317,30 +1600,45 @@ similar effect.
Move the item including subitems up/down (swap with previous/next item
of same indentation). If the list is ordered, renumbering is
automatic.
+@kindex M-@key{left}
+@kindex M-@key{right}
+@item M-@key{left}
+@itemx M-@key{right}
+Decrease/increase the indentation of an item, leaving children alone.
@kindex M-S-@key{left}
@kindex M-S-@key{right}
@item M-S-@key{left}
@itemx M-S-@key{right}
Decrease/increase the indentation of the item, including subitems.
-Initially, the item tree is selected based on current indentation.
-When these commands are executed several times in direct succession,
-the initially selected region is used, even if the new indentation
-would imply a different hierarchy. To use the new hierarchy, break
-the command chain with a cursor motion or so.
+Initially, the item tree is selected based on current indentation. When
+these commands are executed several times in direct succession, the initially
+selected region is used, even if the new indentation would imply a different
+hierarchy. To use the new hierarchy, break the command chain with a cursor
+motion or so.
+
+As a special case, using this command on the very first item of a list will
+move the whole list. This behavior can be disabled by configuring
+@code{org-list-automatic-rules}. The global indentation of a list has no
+influence on the text @emph{after} the list.
@kindex C-c C-c
@item C-c C-c
If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
-state of the checkbox. If not, this command makes sure that all the
-items on this list level use the same bullet. Furthermore, if this is
-an ordered list, make sure the numbering is OK.
+state of the checkbox. Also, makes sure that all the
+items on this list level use the same bullet and that the numbering of list
+items (if applicable) is correct.
@kindex C-c -
+@vindex org-plain-list-ordered-item-terminator
+@vindex org-list-automatic-rules
@item C-c -
Cycle the entire list level through the different itemize/enumerate bullets
-(@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}). With a numeric prefix
-argument N, select the Nth bullet from this list. If there is an active
-region when calling this, all lines will be converted to list items. If the
-first line already was a list item, any item markers will be removed from the
-list. Finally, even without an active region, a normal line will be
+(@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}) or a subset of them,
+depending on @code{org-plain-list-ordered-item-terminator}, the type of list,
+and its position@footnote{See @code{bullet} rule in
+@code{org-list-automatic-rules} for more information.}. With a numeric
+prefix argument N, select the Nth bullet from this list. If there is an
+active region when calling this, all lines will be converted to list items.
+If the first line already was a list item, any item markers will be removed
+from the list. Finally, even without an active region, a normal line will be
converted into a list item.
@kindex C-c *
@item C-c *
@@ -1367,7 +1665,7 @@ numerically, alphabetically, by time, or by custom function.
@vindex org-drawers
Sometimes you want to keep information associated with an entry, but you
-normally don't want to see it. For this, Org mode has @emph{drawers}.
+normally don't want to see it. For this, Org-mode has @emph{drawers}.
Drawers need to be configured with the variable
@code{org-drawers}@footnote{You can define drawers on a per-file basis
with a line like @code{#+DRAWERS: HIDDEN PROPERTIES STATE}}. Drawers
@@ -1385,10 +1683,17 @@ look like this:
Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and
show the entry, but keep the drawer collapsed to a single line. In order to
look inside the drawer, you need to move the cursor to the drawer line and
-press @key{TAB} there. Org mode uses the @code{PROPERTIES} drawer for
+press @key{TAB} there. Org-mode uses the @code{PROPERTIES} drawer for
storing properties (@pxref{Properties and Columns}), and you can also arrange
for state change notes (@pxref{Tracking TODO state changes}) and clock times
-(@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}.
+(@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}. If you
+want to store a quick note in the LOGBOOK drawer, in a similar way to state changes, use
+
+@table @kbd
+@kindex C-c C-z
+@item C-c C-z
+Add a time-stamped note to the LOGBOOK drawer.
+@end table
@node Blocks, Footnotes, Drawers, Document Structure
@section Blocks
@@ -1413,13 +1718,13 @@ or on a per-file basis by using
@section Footnotes
@cindex footnotes
-Org mode supports the creation of footnotes. In contrast to the
-@file{footnote.el} package, Org mode's footnotes are designed for work on a
+Org-mode supports the creation of footnotes. In contrast to the
+@file{footnote.el} package, Org-mode's footnotes are designed for work on a
larger document, not only for one-off documents like emails. The basic
syntax is similar to the one used by @file{footnote.el}, i.e. a footnote is
defined in a paragraph that is started by a footnote marker in square
brackets in column 0, no indentation allowed. If you need a paragraph break
-inside a footnote, use the La@TeX{} idiom @samp{\par}. The footnote reference
+inside a footnote, use the @LaTeX{} idiom @samp{\par}. The footnote reference
is simply the marker in square brackets, inside text. For example:
@example
@@ -1428,10 +1733,10 @@ The Org homepage[fn:1] now looks a lot better than it used to.
[fn:1] The link is: http://orgmode.org
@end example
-Org mode extends the number-based syntax to @emph{named} footnotes and
+Org-mode extends the number-based syntax to @emph{named} footnotes and
optional inline definition. Using plain numbers as markers (as
@file{footnote.el} does) is supported for backward compatibility, but not
-encouraged because of possible conflicts with La@TeX{} snippets (@pxref{Embedded
+encouraged because of possible conflicts with @LaTeX{} snippets (@pxref{Embedded
LaTeX}). Here are the valid references:
@table @code
@@ -1443,7 +1748,7 @@ snippet.
A named footnote reference, where @code{name} is a unique label word, or, for
simplicity of automatic creation, a number.
@item [fn:: This is the inline definition of this footnote]
-A La@TeX{}-like anonymous footnote where the definition is given directly at the
+A @LaTeX{}-like anonymous footnote where the definition is given directly at the
reference point.
@item [fn:name: a definition]
An inline definition of a footnote, which also specifies a name for the note.
@@ -1454,7 +1759,7 @@ Since Org allows multiple references to the same note, you can then use
@vindex org-footnote-auto-label
Footnote labels can be created automatically, or you can create names yourself.
This is handled by the variable @code{org-footnote-auto-label} and its
-corresponding @code{#+STARTUP} keywords, see the docstring of that variable
+corresponding @code{#+STARTUP} keywords. See the docstring of that variable
for details.
@noindent The following command handles footnotes:
@@ -1522,7 +1827,7 @@ you can use the usual commands to follow these links.
@cindex Orgstruct mode
@cindex minor mode for structure editing
-If you like the intuitive way the Org mode structure editing and list
+If you like the intuitive way the Org-mode structure editing and list
formatting works, you might want to use these commands in other modes like
Text mode or Mail mode as well. The minor mode @code{orgstruct-mode} makes
this possible. Toggle the mode with @kbd{M-x orgstruct-mode}, or
@@ -1537,7 +1842,7 @@ When this mode is active and the cursor is on a line that looks to Org like a
headline or the first line of a list item, most structure editing commands
will work, even if the same keys normally have different functionality in the
major mode you are using. If the cursor is not in one of those special
-lines, Orgstruct mode lurks silently in the shadow. When you use
+lines, Orgstruct mode lurks silently in the shadows. When you use
@code{orgstruct++-mode}, Org will also export indentation and autofill
settings into that mode, and detect item context after the first line of an
item.
@@ -1548,8 +1853,7 @@ item.
@cindex editing tables
Org comes with a fast and intuitive table editor. Spreadsheet-like
-calculations are supported in connection with the Emacs @file{calc}
-package
+calculations are supported using the Emacs @file{calc} package
@ifinfo
(@pxref{Top,Calc,,Calc,Gnu Emacs Calculator Manual}).
@end ifinfo
@@ -1614,8 +1918,7 @@ unpredictable for you, configure the variables
@table @kbd
@tsubheading{Creation and conversion}
-@kindex C-c |
-@item C-c |
+@orgcmd{C-c |,org-table-create-or-convert-from-region}
Convert the active region to table. If every line contains at least one
TAB character, the function assumes that the material is tab separated.
If every line contains a comma, comma-separated values (CSV) are assumed.
@@ -1629,74 +1932,55 @@ table. But it's easier just to start typing, like
@kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
@tsubheading{Re-aligning and field motion}
-@kindex C-c C-c
-@item C-c C-c
+@orgcmd{C-c C-c,org-table-align}
Re-align the table without moving the cursor.
@c
-@kindex @key{TAB}
-@item @key{TAB}
+@orgcmd{<TAB>,org-table-next-field}
Re-align the table, move to the next field. Creates a new row if
necessary.
@c
-@kindex S-@key{TAB}
-@item S-@key{TAB}
+@orgcmd{S-@key{TAB},org-table-previous-field}
Re-align, move to previous field.
@c
-@kindex @key{RET}
-@item @key{RET}
+@orgcmd{@key{RET},org-table-next-row}
Re-align the table and move down to next row. Creates a new row if
necessary. At the beginning or end of a line, @key{RET} still does
NEWLINE, so it can be used to split a table.
@c
-@kindex M-a
-@item M-a
+@orgcmd{M-a,org-table-beginning-of-field}
Move to beginning of the current table field, or on to the previous field.
-@kindex M-e
-@item M-e
+@orgcmd{M-e,org-table-end-of-field}
Move to end of the current table field, or on to the next field.
@tsubheading{Column and row editing}
-@kindex M-@key{left}
-@kindex M-@key{right}
-@item M-@key{left}
-@itemx M-@key{right}
+@orgcmdkkcc{M-@key{left},M-@key{right},org-table-move-column-left,org-table-move-column-right}
Move the current column left/right.
@c
-@kindex M-S-@key{left}
-@item M-S-@key{left}
+@orgcmd{M-S-@key{left},org-table-delete-column}
Kill the current column.
@c
-@kindex M-S-@key{right}
-@item M-S-@key{right}
+@orgcmd{M-S-@key{right},org-table-insert-column}
Insert a new column to the left of the cursor position.
@c
-@kindex M-@key{up}
-@kindex M-@key{down}
-@item M-@key{up}
-@itemx M-@key{down}
+@orgcmdkkcc{M-@key{up},M-@key{down},org-table-move-row-up,org-table-move-row-down}
Move the current row up/down.
@c
-@kindex M-S-@key{up}
-@item M-S-@key{up}
+@orgcmd{M-S-@key{up},org-table-kill-row}
Kill the current row or horizontal line.
@c
-@kindex M-S-@key{down}
-@item M-S-@key{down}
+@orgcmd{M-S-@key{down},org-table-insert-row}
Insert a new row above the current row. With a prefix argument, the line is
created below the current one.
@c
-@kindex C-c -
-@item C-c -
+@orgcmd{C-c -,org-table-insert-hline}
Insert a horizontal line below current row. With a prefix argument, the line
is created above the current line.
@c
-@kindex C-c @key{RET}
-@item C-c @key{RET}
+@orgcmd{C-c @key{RET},org-table-hline-and-move}
Insert a horizontal line below current row, and move the cursor into the row
below that line.
@c
-@kindex C-c ^
-@item C-c ^
+@orgcmd{C-c ^,org-table-sort-lines}
Sort the table lines in the region. The position of point indicates the
column to be used for sorting, and the range of lines is the range
between the nearest horizontal separator lines, or the entire table. If
@@ -1708,35 +1992,30 @@ included into the sorting. The command prompts for the sorting type
argument, alphabetic sorting will be case-sensitive.
@tsubheading{Regions}
-@kindex C-c C-x M-w
-@item C-c C-x M-w
+@orgcmd{C-c C-x M-w,org-table-copy-region}
Copy a rectangular region from a table to a special clipboard. Point and
mark determine edge fields of the rectangle. If there is no active region,
copy just the current field. The process ignores horizontal separator lines.
@c
-@kindex C-c C-x C-w
-@item C-c C-x C-w
+@orgcmd{C-c C-x C-w,org-table-cut-region}
Copy a rectangular region from a table to a special clipboard, and
blank all fields in the rectangle. So this is the ``cut'' operation.
@c
-@kindex C-c C-x C-y
-@item C-c C-x C-y
+@orgcmd{C-c C-x C-y,org-table-paste-rectangle}
Paste a rectangular region into a table.
The upper left corner ends up in the current field. All involved fields
will be overwritten. If the rectangle does not fit into the present table,
the table is enlarged as needed. The process ignores horizontal separator
lines.
@c
-@kindex M-@key{RET}
-@itemx M-@kbd{RET}
-Wrap several fields in a column like a paragraph. If there is an active
-region, and both point and mark are in the same column, the text in the
-column is wrapped to minimum width for the given number of lines. A numeric
-prefix argument may be used to change the number of desired lines. If there
-is no region, the current field is split at the cursor position and the text
-fragment to the right of the cursor is prepended to the field one line
-down. If there is no region, but you specify a prefix argument, the current
-field is made blank, and the content is appended to the field above.
+@orgcmd{M-@key{RET},org-table-wrap-region}
+Split the current field at the cursor position and move the rest to the line
+below. If there is an active region, and both point and mark are in the same
+column, the text in the column is wrapped to minimum width for the given
+number of lines. A numeric prefix argument may be used to change the number
+of desired lines. If there is no region, but you specify a prefix argument,
+the current field is made blank, and the content is appended to the field
+above.
@tsubheading{Calculations}
@cindex formula, in tables
@@ -1744,14 +2023,12 @@ field is made blank, and the content is appended to the field above.
@cindex region, active
@cindex active region
@cindex transient mark mode
-@kindex C-c +
-@item C-c +
+@orgcmd{C-c +,org-table-sum}
Sum the numbers in the current column, or in the rectangle defined by
the active region. The result is shown in the echo area and can
be inserted with @kbd{C-y}.
@c
-@kindex S-@key{RET}
-@item S-@key{RET}
+@orgcmd{S-@key{RET},org-table-copy-down}
@vindex org-table-copy-increment
When current field is empty, copy from first non-empty field above. When not
empty, copy current field down to next row and move cursor along with it.
@@ -1762,8 +2039,7 @@ increment. This key is also used by shift-selection and related modes
(@pxref{Conflicts}).
@tsubheading{Miscellaneous}
-@kindex C-c `
-@item C-c `
+@orgcmd{C-c `,org-table-edit-field}
Edit the current field in a separate window. This is useful for fields that
are not fully visible (@pxref{Column width and alignment}). When called with
a @kbd{C-u} prefix, just make the full field visible, so that it can be
@@ -1777,12 +2053,13 @@ TAB-separated text files. This command works by inserting the file into
the buffer and then converting the region to a table. Any prefix
argument is passed on to the converter, which uses it to determine the
separator.
-@item C-c |
+@orgcmd{C-c |,org-table-create-or-convert-from-region}
Tables can also be imported by pasting tabular text into the Org
buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
@kbd{C-c |} command (see above under @i{Creation and conversion}).
@c
@item M-x org-table-export
+@findex org-table-export
@vindex org-table-export-default-format
Export the table, by default as a TAB-separated file. Use for data
exchange with, for example, spreadsheet or database programs. The format
@@ -1815,13 +2092,13 @@ The width of columns is automatically determined by the table editor. And
also the alignment of a column is determined automatically from the fraction
of number-like versus non-number fields in the column.
-Sometimes a single field or a few fields need to carry more text,
-leading to inconveniently wide columns. To limit@footnote{This feature
-does not work on XEmacs.} the width of a column, one field anywhere in
-the column may contain just the string @samp{<N>} where @samp{N} is an
-integer specifying the width of the column in characters. The next
-re-align will then set the width of this column to no more than this
-value.
+Sometimes a single field or a few fields need to carry more text, leading to
+inconveniently wide columns. Or maybe you want to make a table with several
+columns having a fixed width, regardless of content. To set@footnote{This
+feature does not work on XEmacs.} the width of a column, one field anywhere
+in the column may contain just the string @samp{<N>} where @samp{N} is an
+integer specifying the width of the column in characters. The next re-align
+will then set the width of this column to this value.
@example
@group
@@ -1837,7 +2114,7 @@ value.
@noindent
Fields that are wider become clipped and end in the string @samp{=>}.
-Note that the full text is still in the buffer, it is only invisible.
+Note that the full text is still in the buffer but is hidden.
To see the full text, hold the mouse over the field---a tool-tip window
will show the full content. To edit such a field, use the command
@kbd{C-c `} (that is @kbd{C-c} followed by the backquote). This will
@@ -1858,9 +2135,13 @@ on a per-file basis with:
@end example
If you would like to overrule the automatic alignment of number-rich columns
-to the right and of string-rich column to the left, you and use @samp{<r>} or
-@samp{<l>} in a similar fashion. You may also combine alignment and field
-width like this: @samp{<l10>}.
+to the right and of string-rich column to the left, you can use @samp{<r>},
+@samp{c}@footnote{Centering does not work inside Emacs, but it does have an
+effect when exporting to HTML.} or @samp{<l>} in a similar fashion. You may
+also combine alignment and field width like this: @samp{<l10>}.
+
+Lines which only contain these formatting cookies will be removed
+automatically when exporting the document.
@node Column groups, Orgtbl mode, Column width and alignment, Tables
@section Column groups
@@ -1878,18 +2159,18 @@ a group of its own. Boundaries between column groups will upon export be
marked with vertical lines. Here is an example:
@example
-| | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
-|---+----+-----+-----+-----+---------+------------|
-| / | <> | < | | > | < | > |
-| # | 1 | 1 | 1 | 1 | 1 | 1 |
-| # | 2 | 4 | 8 | 16 | 1.4142 | 1.1892 |
-| # | 3 | 9 | 27 | 81 | 1.7321 | 1.3161 |
-|---+----+-----+-----+-----+---------+------------|
-#+TBLFM: $3=$2^2::$4=$2^3::$5=$2^4::$6=sqrt($2)::$7=sqrt(sqrt(($2)))
+| N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
+|---+-----+-----+-----+---------+------------|
+| / | < | | > | < | > |
+| 1 | 1 | 1 | 1 | 1 | 1 |
+| 2 | 4 | 8 | 16 | 1.4142 | 1.1892 |
+| 3 | 9 | 27 | 81 | 1.7321 | 1.3161 |
+|---+-----+-----+-----+---------+------------|
+#+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
@end example
It is also sufficient to just insert the column group starters after
-every vertical line you'd like to have:
+every vertical line you would like to have:
@example
| N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
@@ -1914,7 +2195,7 @@ example in mail mode, use
Furthermore, with some special setup, it is possible to maintain tables
in arbitrary syntax with Orgtbl mode. For example, it is possible to
-construct La@TeX{} tables with the underlying ease and power of
+construct @LaTeX{} tables with the underlying ease and power of
Orgtbl mode, including spreadsheet capabilities. For details, see
@ref{Tables in arbitrary syntax}.
@@ -1926,11 +2207,13 @@ Orgtbl mode, including spreadsheet capabilities. For details, see
The table editor makes use of the Emacs @file{calc} package to implement
spreadsheet-like capabilities. It can also evaluate Emacs Lisp forms to
-derive fields from other fields. While fully featured, Org's
-implementation is not identical to other spreadsheets. For example,
-Org knows the concept of a @emph{column formula} that will be
-applied to all non-header fields in a column without having to copy the
-formula to each relevant field.
+derive fields from other fields. While fully featured, Org's implementation
+is not identical to other spreadsheets. For example, Org knows the concept
+of a @emph{column formula} that will be applied to all non-header fields in a
+column without having to copy the formula to each relevant field. There is
+also a formula debugger, and a formula editor with features for highlighting
+fields in the table corresponding to the references at the point in the
+formula, moving these references by arrow keys
@menu
* References:: How to refer to another field or range
@@ -2038,6 +2321,28 @@ suppressed, so that the vector contains only the non-empty fields (but
see the @samp{E} mode switch below). If there are no non-empty fields,
@samp{[0]} is returned to avoid syntax errors in formulas.
+@subsubheading Field coordinates in formulas
+@cindex field coordinates
+@cindex coordinates, of field
+@cindex row, of field coordinates
+@cindex column, of field coordinates
+
+For Calc formulas and Lisp formulas @code{@@#} and @code{$#} can be used to
+get the row or column number of the field where the formula result goes.
+The traditional Lisp formula equivalents are @code{org-table-current-dline}
+and @code{org-table-current-column}. Examples:
+
+@example
+if(@@# % 2, $#, string("")) @r{column number on odd lines only}
+$3 = remote(FOO, @@@@#$2) @r{copy column 2 from table FOO into}
+ @r{column 3 of the current table}
+@end example
+
+@noindent For the second example, table FOO must have at least as many rows
+as the current table. Inefficient@footnote{The computation time scales as
+O(N^2) because table FOO is parsed for each field to be copied.} for large
+number of rows.
+
@subsubheading Named references
@cindex named references
@cindex references, named
@@ -2127,8 +2432,11 @@ compact. The default settings can be configured using the variable
@code{org-calc-default-modes}.
@example
-p20 @r{switch the internal precision to 20 digits}
-n3 s3 e2 f4 @r{normal, scientific, engineering, or fixed display format}
+p20 @r{set the internal Calc calculation precision to 20 digits}
+n3 s3 e2 f4 @r{Normal, scientific, engineering, or fixed}
+ @r{format of the result of Calc passed back to Org.}
+ @r{Calc formatting is unlimited in precision as}
+ @r{long as the Calc calculation precision is greater.}
D R @r{angle modes: degrees, radians}
F S @r{fraction and symbolic modes}
N @r{interpret all fields as numbers, use 0 for non-numbers}
@@ -2138,8 +2446,16 @@ L @r{literal}
@end example
@noindent
-In addition, you may provide a @code{printf} format specifier to
-reformat the final result. A few examples:
+Unless you use large integer numbers or high-precision-calculation
+and -display for floating point numbers you may alternatively provide a
+@code{printf} format specifier to reformat the Calc result after it has been
+passed back to Org instead of letting Calc already do the
+formatting@footnote{The @code{printf} reformatting is limited in precision
+because the value passed to it is converted into an @code{integer} or
+@code{double}. The @code{integer} is limited in size by truncating the
+signed value to 32 bits. The @code{double} is limited in precision to 64
+bits overall which leaves approximately 16 significant decimal digits.}.
+A few examples:
@example
$1+$2 @r{Sum of first and second field}
@@ -2152,7 +2468,7 @@ tan($1);Dp3s1 @r{Compute in degrees, precision 3, display SCI 1}
sin($1);Dp3%.1e @r{Same, but use printf specifier for display}
vmean($2..$7) @r{Compute column range mean, using vector function}
vmean($2..$7);EN @r{Same, but treat empty fields as 0}
-taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree}
+taylor($3,x=7,2) @r{Taylor series of $3, at x=7, second degree}
@end example
Calc also contains a complete set of logical operations. For example
@@ -2165,24 +2481,23 @@ if($1<20,teen,string("")) @r{``teen'' if age $1 less than 20, else empty}
@subsection Emacs Lisp forms as formulas
@cindex Lisp forms, as table formulas
-It is also possible to write a formula in Emacs Lisp; this can be useful
-for string manipulation and control structures, if Calc's
-functionality is not enough. If a formula starts with a single-quote
-followed by an opening parenthesis, then it is evaluated as a Lisp form.
-The evaluation should return either a string or a number. Just as with
-@file{calc} formulas, you can specify modes and a printf format after a
-semicolon. With Emacs Lisp forms, you need to be conscious about the way
-field references are interpolated into the form. By default, a
-reference will be interpolated as a Lisp string (in double-quotes)
-containing the field. If you provide the @samp{N} mode switch, all
-referenced elements will be numbers (non-number fields will be zero) and
-interpolated as Lisp numbers, without quotes. If you provide the
-@samp{L} flag, all fields will be interpolated literally, without quotes.
-I.e., if you want a reference to be interpreted as a string by the Lisp
-form, enclose the reference operator itself in double-quotes, like
-@code{"$3"}. Ranges are inserted as space-separated fields, so you can
-embed them in list or vector syntax. A few examples, note how the
-@samp{N} mode is used when we do computations in Lisp.
+It is also possible to write a formula in Emacs Lisp; this can be useful for
+string manipulation and control structures, if Calc's functionality is not
+enough. If a formula starts with a single-quote followed by an opening
+parenthesis, then it is evaluated as a Lisp form. The evaluation should
+return either a string or a number. Just as with @file{calc} formulas, you
+can specify modes and a printf format after a semicolon. With Emacs Lisp
+forms, you need to be conscious about the way field references are
+interpolated into the form. By default, a reference will be interpolated as
+a Lisp string (in double-quotes) containing the field. If you provide the
+@samp{N} mode switch, all referenced elements will be numbers (non-number
+fields will be zero) and interpolated as Lisp numbers, without quotes. If
+you provide the @samp{L} flag, all fields will be interpolated literally,
+without quotes. I.e., if you want a reference to be interpreted as a string
+by the Lisp form, enclose the reference operator itself in double-quotes,
+like @code{"$3"}. Ranges are inserted as space-separated fields, so you can
++embed them in list or vector syntax. Here are a few examples---note how the
+@samp{N} mode is used when we do computations in Lisp:
@example
@r{Swap the first two characters of the content of column 1}
@@ -2206,7 +2521,7 @@ evaluated, and the current field replaced with the result.
@cindex #+TBLFM
Formulas are stored in a special line starting with @samp{#+TBLFM:}
-directly below the table. If you typed the equation in the 4th field of
+directly below the table. If you type the equation in the 4th field of
the 3rd data line in the table, the formula will look like
@samp{@@3$4=$1+$2}. When inserting/deleting/swapping column and rows
with the appropriate commands, @i{absolute references} (but not relative
@@ -2220,8 +2535,7 @@ Instead of typing an equation into the field, you may also use the
following command
@table @kbd
-@kindex C-u C-c =
-@item C-u C-c =
+@orgcmd{C-u C-c =,org-table-eval-formula}
Install a new formula for the current field. The command prompts for a
formula with default taken from the @samp{#+TBLFM:} line, applies
it to the current field, and stores it.
@@ -2254,8 +2568,7 @@ Instead of typing an equation into the field, you may also use the
following command:
@table @kbd
-@kindex C-c =
-@item C-c =
+@orgcmd{C-c =,org-table-eval-formula}
Install a new formula for the current column and replace current field with
the result of the formula. The command prompts for a formula, with default
taken from the @samp{#+TBLFM} line, applies it to the current field and
@@ -2278,32 +2591,29 @@ if possible. If you prefer to only work with the internal format (like
@code{org-table-use-standard-references}.
@table @kbd
-@kindex C-c =
-@kindex C-u C-c =
-@item C-c =
-@itemx C-u C-c =
+@orgcmdkkc{C-c =,C-u C-c =,org-table-eval-formula}
Edit the formula associated with the current column/field in the
minibuffer. See @ref{Column formulas}, and @ref{Field formulas}.
-@kindex C-u C-u C-c =
-@item C-u C-u C-c =
+@orgcmd{C-u C-u C-c =,org-table-eval-formula}
Re-insert the active formula (either a
field formula, or a column formula) into the current field, so that you
can edit it directly in the field. The advantage over editing in the
minibuffer is that you can use the command @kbd{C-c ?}.
-@kindex C-c ?
-@item C-c ?
+@orgcmd{C-c ?,org-table-field-info}
While editing a formula in a table field, highlight the field(s)
referenced by the reference at the cursor position in the formula.
@kindex C-c @}
+@findex org-table-toggle-coordinate-overlays
@item C-c @}
-Toggle the display of row and column numbers for a table, using
-overlays. These are updated each time the table is aligned; you can
-force it with @kbd{C-c C-c}.
+Toggle the display of row and column numbers for a table, using overlays
+(@command{org-table-toggle-coordinate-overlays}). These are updated each
+time the table is aligned; you can force it with @kbd{C-c C-c}.
@kindex C-c @{
+@findex org-table-toggle-formula-debugger
@item C-c @{
-Toggle the formula debugger on and off. See below.
-@kindex C-c '
-@item C-c '
+Toggle the formula debugger on and off
+(@command{org-table-toggle-formula-debugger}). See below.
+@orgcmd{C-c ',org-table-edit-formulas}
Edit all formulas for the current table in a special buffer, where the
formulas will be displayed one per line. If the current field has an
active formula, the cursor in the formula editor will mark it.
@@ -2311,46 +2621,40 @@ While inside the special buffer, Org will automatically highlight
any field or range reference at the cursor position. You may edit,
remove and add formulas, and use the following commands:
@table @kbd
-@kindex C-c C-c
-@kindex C-x C-s
-@item C-c C-c
-@itemx C-x C-s
+@orgcmdkkc{C-c C-c,C-x C-s,org-table-fedit-finish}
Exit the formula editor and store the modified formulas. With @kbd{C-u}
prefix, also apply the new formulas to the entire table.
-@kindex C-c C-q
-@item C-c C-q
+@orgcmd{C-c C-q,org-table-fedit-abort}
Exit the formula editor without installing changes.
-@kindex C-c C-r
-@item C-c C-r
+@orgcmd{C-c C-r,org-table-fedit-toggle-ref-type}
Toggle all references in the formula editor between standard (like
@code{B3}) and internal (like @code{@@3$2}).
-@kindex @key{TAB}
-@item @key{TAB}
+@orgcmd{@key{TAB},org-table-fedit-lisp-indent}
Pretty-print or indent Lisp formula at point. When in a line containing
a Lisp formula, format the formula according to Emacs Lisp rules.
Another @key{TAB} collapses the formula back again. In the open
formula, @key{TAB} re-indents just like in Emacs Lisp mode.
-@kindex M-@key{TAB}
-@item M-@key{TAB}
+@orgcmd{M-@key{TAB},lisp-complete-symbol}
Complete Lisp symbols, just like in Emacs Lisp mode.
@kindex S-@key{up}
@kindex S-@key{down}
@kindex S-@key{left}
@kindex S-@key{right}
+@findex org-table-fedit-ref-up
+@findex org-table-fedit-ref-down
+@findex org-table-fedit-ref-left
+@findex org-table-fedit-ref-right
@item S-@key{up}/@key{down}/@key{left}/@key{right}
Shift the reference at point. For example, if the reference is
@code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
This also works for relative references and for hline references.
-@kindex M-S-@key{up}
-@kindex M-S-@key{down}
-@item M-S-@key{up}/@key{down}
+@orgcmdkkcc{M-S-@key{up},M-S-@key{down},org-table-fedit-line-up,org-table-fedit-line-down}
Move the test line for column formulas in the Org buffer up and
down.
-@kindex M-@key{up}
-@kindex M-@key{down}
-@item M-@key{up}/@key{down}
+@orgcmdkkcc{M-@key{up},M-@key{down},org-table-fedit-scroll-down,org-table-fedit-scroll-up}
Scroll the window displaying the table.
@kindex C-c @}
+@findex org-table-toggle-coordinate-overlays
@item C-c @}
Turn the coordinate grid in the table on and off.
@end table
@@ -2390,8 +2694,7 @@ In order to recalculate a line of a table or the entire table, use the
following commands:
@table @kbd
-@kindex C-c *
-@item C-c *
+@orgcmd{C-c *,org-table-recalculate}
Recalculate the current row by first applying the stored column formulas
from left to right, and all field formulas in the current row.
@c
@@ -2402,13 +2705,17 @@ from left to right, and all field formulas in the current row.
Recompute the entire table, line by line. Any lines before the first
hline are left alone, assuming that these are part of the table header.
@c
-@kindex C-u C-u C-c *
-@kindex C-u C-u C-c C-c
-@item C-u C-u C-c *
-@itemx C-u C-u C-c C-c
+@orgcmdkkc{C-u C-u C-c *,C-u C-u C-c C-c,org-table-iterate}
Iterate the table by recomputing it until no further changes occur.
This may be necessary if some computed fields use the value of other
fields that are computed @i{later} in the calculation sequence.
+@item M-x org-table-recalculate-buffer-tables
+@findex org-table-recalculate-buffer-tables
+Recompute all tables in the current buffer.
+@item M-x org-table-iterate-buffer-tables
+@findex org-table-iterate-buffer-tables
+Iterate all tables in the current buffer, in order to converge table-to-table
+dependencies.
@end table
@node Advanced features, , Updating the table, The spreadsheet
@@ -2418,8 +2725,7 @@ If you want the recalculation of fields to happen automatically, or if
you want to be able to assign @i{names} to fields and columns, you need
to reserve the first column of the table for special marking characters.
@table @kbd
-@kindex C-#
-@item C-#
+@orgcmd{C-#,org-table-rotate-recalc-marks}
Rotate the calculation mark in first column through the states @samp{ },
@samp{#}, @samp{*}, @samp{!}, @samp{$}. When there is an active region,
change all marks in the region.
@@ -2516,7 +2822,7 @@ functions.
@node Org-Plot, , The spreadsheet, Tables
@section Org-Plot
@cindex graph, in tables
-@cindex plot tables using gnuplot
+@cindex plot tables using Gnuplot
@cindex #+PLOT
Org-Plot can produce 2D and 3D graphs of information stored in org tables
@@ -2575,8 +2881,8 @@ Defaults to @code{lines}.
If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
@item labels
-List of labels to be used for the deps (defaults to the column headers if
-they exist).
+List of labels to be used for the @code{deps} (defaults to the column headers
+if they exist).
@item line
Specify an entire line to be inserted in the Gnuplot script.
@@ -2682,23 +2988,13 @@ text before the first headline is usually not exported, so the first such
target should be after the first headline, or in the line directly before the
first headline.}.
-If no dedicated target exists, Org will search for the words in the link. In
-the above example the search would be for @samp{my target}. Links starting
-with a star like @samp{*My Target} restrict the search to
-headlines@footnote{To insert a link targeting a headline, in-buffer
-completion can be used. Just type a star followed by a few optional letters
-into the buffer and press @kbd{M-@key{TAB}}. All headlines in the current
-buffer will be offered as completions. @xref{Handling links}, for more
-commands creating links.}. When searching, Org mode will first try an
-exact match, but then move on to more and more lenient searches. For
-example, the link @samp{[[*My Targets]]} will find any of the following:
-
-@example
-** My targets
-** TODO my targets are bright
-** my 20 targets are
-@end example
-
+If no dedicated target exists, Org will search for a headline that is exactly
+the link text but may also include a TODO keyword and tags@footnote{To insert
+a link targeting a headline, in-buffer completion can be used. Just type a
+star followed by a few optional letters into the buffer and press
+@kbd{M-@key{TAB}}. All headlines in the current buffer will be offered as
+completions.}. In non-Org files, the search will look for the words in the
+link text. In the above example the search would be for @samp{my target}.
Following a link pushes a mark onto Org's own mark ring. You can
return to the previous position with @kbd{C-c &}. Using this command
@@ -2752,14 +3048,18 @@ the colon. The following list shows examples for each link type.
@example
http://www.astro.uva.nl/~dominik @r{on the web}
+doi:10.1000/182 @r{DOI for an electronic resource}
file:/home/dominik/images/jupiter.jpg @r{file, absolute path}
/home/dominik/images/jupiter.jpg @r{same as above}
file:papers/last.pdf @r{file, relative path}
./papers/last.pdf @r{same as above}
+file:/myself@@some.where:papers/last.pdf @r{file, path on remote machine}
+/myself@@some.where:papers/last.pdf @r{same as above}
file:sometextfile::NNN @r{file with line number to jump to}
file:projects.org @r{another Org file}
file:projects.org::some words @r{text search in Org file}
file:projects.org::*task title @r{heading search in Org file}
+docview:papers/last.pdf::NNN @r{open file in doc-view mode at page NNN}
id:B7423F4D-2E8A-471B-8810-C40F074717E9 @r{Link to heading by ID}
news:comp.emacs @r{Usenet link}
mailto:adent@@galaxy.net @r{Mail link}
@@ -2776,6 +3076,7 @@ gnus:group @r{Gnus group link}
gnus:group#id @r{Gnus article link}
bbdb:R.*Stallman @r{BBDB link (with regexp)}
irc:/irc.com/#emacs/bob @r{IRC link}
+info:org:External%20links @r{Info node link (with encoded space)}
shell:ls *.org @r{A shell command}
elisp:org-agenda @r{Interactive Elisp command}
elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
@@ -2811,9 +3112,8 @@ Org provides methods to create a link in the correct syntax, to
insert it into an Org file, and to follow the link.
@table @kbd
-@kindex C-c l
+@orgcmd{C-c l,org-store-link}
@cindex storing links
-@item C-c l
Store a link to the current location. This is a @emph{global} command (you
must create the key binding yourself) which can be used in any buffer to
create a link. The link will be stored for later insertion into an Org
@@ -2869,11 +3169,10 @@ When the cursor is in an agenda view, the created link points to the
entry referenced by the current line.
@c
-@kindex C-c C-l
+@orgcmd{C-c C-l,org-insert-link}
@cindex link completion
@cindex completion, of links
@cindex inserting links
-@item C-c C-l
@vindex org-keep-stored-link-after-insertion
Insert a link@footnote{ Note that you don't have to use this command to
insert a link. Links in Org are plain text, and you can type or paste them
@@ -2903,10 +3202,9 @@ calling a special function @code{org-PREFIX-complete-link}.} For
example, if you type @kbd{file @key{RET}}, file name completion (alternative
access: @kbd{C-u C-c C-l}, see below) will be offered, and after @kbd{bbdb
@key{RET}} you can complete contact names.
-@kindex C-u C-c C-l
+@orgkey C-u C-c C-l
@cindex file name completion
@cindex completion, of file names
-@item C-u C-c C-l
When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
a file will be inserted and you may use file name completion to select
the name of the file. The path to the file is inserted relative to the
@@ -2916,14 +3214,12 @@ to the current directory using @samp{../}. Otherwise an absolute path
is used, if possible with @samp{~/} for your home directory. You can
force an absolute path with two @kbd{C-u} prefixes.
@c
-@item C-c C-l @r{(with cursor on existing link)}
+@item C-c C-l @ @r{(with cursor on existing link)}
When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
link and description parts of the link.
@c
@cindex following links
-@kindex C-c C-o
-@kindex RET
-@item C-c C-o @r{or} @key{RET}
+@orgcmd{C-c C-o,org-open-at-point}
@vindex org-file-apps
Open link at point. This will launch a web browser for URLs (using
@command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
@@ -2939,13 +3235,17 @@ visit the file with Emacs, use a @kbd{C-u} prefix. If you want to avoid
opening in Emacs, use a @kbd{C-u C-u} prefix.@*
If the cursor is on a headline, but not on a link, offer all links in the
headline and entry text.
+@orgkey @key{RET}
+@vindex org-return-follows-link
+When @code{org-return-follows-link} is set, @kbd{@key{RET}} will also follow
+the link at point.
@c
@kindex mouse-2
@kindex mouse-1
@item mouse-2
@itemx mouse-1
On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
-would. Under Emacs 22, @kbd{mouse-1} will also follow a link.
+would. Under Emacs 22 and later, @kbd{mouse-1} will also follow a link.
@c
@kindex mouse-3
@item mouse-3
@@ -2954,28 +3254,36 @@ Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
internal links to be displayed in another window@footnote{See the
variable @code{org-display-internal-link-with-indirect-buffer}}.
@c
+@orgcmd{C-c C-x C-v,org-toggle-inline-images}
+@cindex inlining images
+@cindex images, inlining
+@vindex org-startup-with-inline-images
+@cindex @code{inlineimages}, STARTUP keyword
+@cindex @code{noinlineimages}, STARTUP keyword
+Toggle the inline display of linked images. Normally this will only inline
+images that have no description part in the link, i.e. images that will also
+be inlined during export. When called with a prefix argument, also display
+images that do have a link description. You can ask for inline images to be
+displayed at startup by configuring the variable
+@code{org-startup-with-inline-images}@footnote{with corresponding
+@code{#+STARTUP} keywords @code{inlineimages} and @code{inlineimages}}.
+@orgcmd{C-c %,org-mark-ring-push}
@cindex mark ring
-@kindex C-c %
-@item C-c %
Push the current position onto the mark ring, to be able to return
easily. Commands following an internal link do this automatically.
@c
+@orgcmd{C-c &,org-mark-ring-goto}
@cindex links, returning to
-@kindex C-c &
-@item C-c &
Jump back to a recorded position. A position is recorded by the
commands following internal links, and by @kbd{C-c %}. Using this
command several times in direct succession moves through a ring of
previously recorded positions.
@c
-@kindex C-c C-x C-n
-@kindex C-c C-x C-p
+@orgcmdkkcc{C-c C-x C-n,C-c C-x C-p,org-next-link,org-previous-link}
@cindex links, finding next/previous
-@item C-c C-x C-n
-@itemx C-c C-x C-p
Move forward/backward to the next link in the buffer. At the limit of
the buffer, the search fails once, and then wraps around. The key
-bindings for this are really too long, you might want to bind this also
+bindings for this are really too long; you might want to bind this also
to @kbd{C-n} and @kbd{C-p}
@lisp
(add-hook 'org-load-hook
@@ -3013,20 +3321,22 @@ abbreviated link looks like this
@noindent
@vindex org-link-abbrev-alist
-where the tag is optional. The @i{linkword} must be a word; letter, numbers,
-@samp{-}, and @samp{_} are allowed here. Abbreviations are resolved
+where the tag is optional.
+The @i{linkword} must be a word, starting with a letter, followed by
+letters, numbers, @samp{-}, and @samp{_}. Abbreviations are resolved
according to the information in the variable @code{org-link-abbrev-alist}
that relates the linkwords to replacement text. Here is an example:
-@lisp
+@smalllisp
@group
(setq org-link-abbrev-alist
'(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
("google" . "http://www.google.com/search?q=")
- ("ads" . "http://adsabs.harvard.edu/cgi-bin/
- nph-abs_connect?author=%s&db_key=AST")))
+ ("gmap" . "http://maps.google.com/maps?q=%s")
+ ("omap" . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
+ ("ads" . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))
@end group
-@end lisp
+@end smalllisp
If the replacement text contains the string @samp{%s}, it will be
replaced with the tag. Otherwise the tag will be appended to the string
@@ -3035,8 +3345,11 @@ be called with the tag as the only argument to create the link.
With the above setting, you could link to a specific bug with
@code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
-@code{[[google:OrgMode]]} and find out what the Org author is
-doing besides Emacs hacking with @code{[[ads:Dominik,C]]}.
+@code{[[google:OrgMode]]}, show the map location of the Free Software
+Foundation @code{[[gmap:51 Franklin Street, Boston]]} or of Carsten office
+@code{[[omap:Science Park 904, Amsterdam, The Netherlands]]} and find out
+what the Org author is doing besides Emacs hacking with
+@code{[[ads:Dominik,C]]}.
If you need special abbreviations just for a single Org buffer, you
can define them in the file with
@@ -3075,6 +3388,7 @@ link, together with an explanation:
[[file:~/code/main.c::255]]
[[file:~/xx.org::My Target]]
[[file:~/xx.org::*My Target]]
+[[file:~/xx.org::#my-custom-id]]
[[file:~/xx.org::/regexp/]]
@end example
@@ -3089,10 +3403,12 @@ link will become an HTML reference to the corresponding named anchor in
the linked file.
@item *My Target
In an Org file, restrict search to headlines.
+@item #my-custom-id
+Link to a heading with a @code{CUSTOM_ID} property
@item /regexp/
Do a regular expression search for @code{regexp}. This uses the Emacs
command @code{occur} to list all matches in a separate window. If the
-target file is in Org mode, @code{org-occur} is used to create a
+target file is in Org-mode, @code{org-occur} is used to create a
sparse tree with the matches.
@c If the target file is a directory,
@c @code{grep} will be used to search all files in the directory.
@@ -3128,10 +3444,10 @@ for Bib@TeX{} database files, and you can use the corresponding code as
an implementation example. See the file @file{org-bibtex.el}.
@node TODO Items, Tags, Hyperlinks, Top
-@chapter TODO Items
+@chapter TODO items
@cindex TODO items
-Org mode does not maintain TODO lists as separate documents@footnote{Of
+Org-mode does not maintain TODO lists as separate documents@footnote{Of
course, you can make a document that contains only long lists of TODO items,
but this is not required.}. Instead, TODO items are an integral part of the
notes file, because TODO items usually come up while taking notes! With Org
@@ -3140,7 +3456,7 @@ information is not duplicated, and the entire context from which the TODO
item emerged is always present.
Of course, this technique for managing TODO items scatters them
-throughout your notes file. Org mode compensates for this by providing
+throughout your notes file. Org-mode compensates for this by providing
methods to give you an overview of all the things that you have to do.
@menu
@@ -3166,9 +3482,8 @@ Any headline becomes a TODO item when it starts with the word
The most important commands to work with TODO entries are:
@table @kbd
-@kindex C-c C-t
+@orgcmd{C-c C-t,org-todo}
@cindex cycling, of TODO states
-@item C-c C-t
Rotate the TODO state of the current item among
@example
@@ -3179,8 +3494,7 @@ Rotate the TODO state of the current item among
The same rotation can also be done ``remotely'' from the timeline and
agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
-@kindex C-u C-c C-t
-@item C-u C-c C-t
+@orgkey{C-u C-c C-t}
Select a specific keyword using completion or (if it has been set up)
the fast selection interface. For the latter, you need to assign keys
to TODO states, see @ref{Per-file keywords}, and @ref{Setting tags}, for
@@ -3188,37 +3502,32 @@ more information.
@kindex S-@key{right}
@kindex S-@key{left}
+@item S-@key{right} @ @r{/} @ S-@key{left}
@vindex org-treat-S-cursor-todo-selection-as-state-change
-@item S-@key{right}
-@itemx S-@key{left}
Select the following/preceding TODO state, similar to cycling. Useful
mostly if more than two TODO states are possible (@pxref{TODO
extensions}). See also @ref{Conflicts}, for a discussion of the interaction
with @code{shift-selection-mode}. See also the variable
@code{org-treat-S-cursor-todo-selection-as-state-change}.
-@kindex C-c C-v
-@kindex C-c / t
+@orgcmd{C-c / t,org-show-todo-key}
@cindex sparse tree, for TODO
-@item C-c C-v
-@itemx C-c / t
@vindex org-todo-keywords
View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds the
-entire buffer, but shows all TODO items and the headings hierarchy above
-them. With a prefix argument, search for a specific TODO. You will be
-prompted for the keyword, and you can also give a list of keywords like
-@code{KWD1|KWD2|...} to list entries that match any one of these keywords.
-With numeric prefix argument N, show the tree for the Nth keyword in the
-variable @code{org-todo-keywords}. With two prefix arguments, find all TODO
-and DONE entries.
-@kindex C-c a t
-@item C-c a t
-Show the global TODO list. Collects the TODO items from all agenda
-files (@pxref{Agenda Views}) into a single buffer. The new buffer will
-be in @code{agenda-mode}, which provides commands to examine and
-manipulate the TODO entries from the new buffer (@pxref{Agenda
-commands}). @xref{Global TODO list}, for more information.
-@kindex S-M-@key{RET}
-@item S-M-@key{RET}
+entire buffer, but shows all TODO items (with not-DONE state) and the
+headings hierarchy above them. With a prefix argument (or by using @kbd{C-c
+/ T}), search for a specific TODO. You will be prompted for the keyword, and
+you can also give a list of keywords like @code{KWD1|KWD2|...} to list
+entries that match any one of these keywords. With numeric prefix argument
+N, show the tree for the Nth keyword in the variable
+@code{org-todo-keywords}. With two prefix arguments, find all TODO states,
+both un-done and done.
+@orgcmd{C-c a t,org-todo-list}
+Show the global TODO list. Collects the TODO items (with not-DONE states)
+from all agenda files (@pxref{Agenda Views}) into a single buffer. The new
+buffer will be in @code{agenda-mode}, which provides commands to examine and
+manipulate the TODO entries from the new buffer (@pxref{Agenda commands}).
+@xref{Global TODO list}, for more information.
+@orgcmd{S-M-@key{RET},org-insert-todo-heading}
Insert a new TODO entry below the current one.
@end table
@@ -3233,7 +3542,7 @@ option @code{org-todo-state-tags-triggers} for details.
@vindex org-todo-keywords
By default, marked TODO entries have one of only two states: TODO and
-DONE. Org mode allows you to classify TODO items in more complex ways
+DONE. Org-mode allows you to classify TODO items in more complex ways
with @emph{TODO keywords} (stored in @code{org-todo-keywords}). With
special setup, the TODO keyword system can work differently in different
files.
@@ -3258,7 +3567,7 @@ TODO items in particular (@pxref{Tags}).
You can use TODO keywords to indicate different @emph{sequential} states
in the process of working on an item, for example@footnote{Changing
-this variable only becomes effective after restarting Org mode in a
+this variable only becomes effective after restarting Org-mode in a
buffer.}:
@lisp
@@ -3301,7 +3610,7 @@ be set up like this:
In this case, different keywords do not indicate a sequence, but rather
different types. So the normal work flow would be to assign a task to a
-person, and later to mark it DONE. Org mode supports this style by adapting
+person, and later to mark it DONE. Org-mode supports this style by adapting
the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
@kbd{t} command in the timeline and agenda buffers.}. When used several
times in succession, it will still cycle through all names, in order to first
@@ -3309,10 +3618,10 @@ select the right type for a task. But when you return to the item after some
time and execute @kbd{C-c C-t} again, it will switch from any name directly
to DONE. Use prefix arguments or completion to quickly select a specific
name. You can also review the items of a specific TODO type in a sparse tree
-by using a numeric prefix to @kbd{C-c C-v}. For example, to see all things
-Lucy has to do, you would use @kbd{C-3 C-c C-v}. To collect Lucy's items
+by using a numeric prefix to @kbd{C-c / t}. For example, to see all things
+Lucy has to do, you would use @kbd{C-3 C-c / t}. To collect Lucy's items
from all agenda files into a single buffer, you would use the numeric prefix
-argument as well when creating the global TODO list: @kbd{C-3 C-c t}.
+argument as well when creating the global TODO list: @kbd{C-3 C-c a t}.
@node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
@subsection Multiple keyword sets in one file
@@ -3332,7 +3641,7 @@ like this:
(sequence "|" "CANCELED")))
@end lisp
-The keywords should all be different, this helps Org mode to keep track
+The keywords should all be different, this helps Org-mode to keep track
of which subsequence should be used for a given entry. In this setup,
@kbd{C-c C-t} only operates within a subsequence, so it switches from
@code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
@@ -3429,9 +3738,9 @@ Remember that the keywords after the vertical bar (or the last keyword
if no bar is there) must always mean that the item is DONE (although you
may use a different word). After changing one of these lines, use
@kbd{C-c C-c} with the cursor still in the line to make the changes
-known to Org mode@footnote{Org mode parses these lines only when
-Org mode is activated after visiting a file. @kbd{C-c C-c} with the
-cursor in a line starting with @samp{#+} is simply restarting Org mode
+known to Org-mode@footnote{Org-mode parses these lines only when
+Org-mode is activated after visiting a file. @kbd{C-c C-c} with the
+cursor in a line starting with @samp{#+} is simply restarting Org-mode
for the current buffer.}.
@node Faces for TODO keywords, TODO dependencies, Per-file keywords, TODO extensions
@@ -3441,7 +3750,7 @@ for the current buffer.}.
@vindex org-todo @r{(face)}
@vindex org-done @r{(face)}
@vindex org-todo-keyword-faces
-Org mode highlights TODO keywords with special faces: @code{org-todo}
+Org-mode highlights TODO keywords with special faces: @code{org-todo}
for keywords indicating that an item still has to be acted upon, and
@code{org-done} for keywords indicating that an item is finished. If
you are using more than 2 different states, you might want to use
@@ -3451,15 +3760,16 @@ special faces for some of them. This can be done using the variable
@lisp
@group
(setq org-todo-keyword-faces
- '(("TODO" . org-warning)
- ("DEFERRED" . shadow)
- ("CANCELED" . (:foreground "blue" :weight bold))))
+ '(("TODO" . org-warning) ("STARTED" . "yellow")
+ ("CANCELED" . (:foreground "blue" :weight bold))))
@end group
@end lisp
-While using a list with face properties as shown for CANCELED
-@emph{should} work, this does not aways seem to be the case. If
-necessary, define a special face and use that.
+While using a list with face properties as shown for CANCELED @emph{should}
+work, this does not aways seem to be the case. If necessary, define a
+special face and use that. A string is interpreted as a color. The variable
+@code{org-faces-easy-properties} determines if that color is interpreted as a
+foreground or a background color.
@node TODO dependencies, , Faces for TODO keywords, TODO extensions
@subsection TODO dependencies
@@ -3494,8 +3804,7 @@ example:
@end example
@table @kbd
-@kindex C-c C-x o
-@item C-c C-x o
+@orgcmd{C-c C-x o,org-toggle-ordered-property}
@vindex org-track-ordered-property-with-tag
@cindex property, ORDERED
Toggle the @code{ORDERED} property of the current entry. A property is used
@@ -3503,8 +3812,7 @@ for this behavior because this should be local to the current entry, not
inherited like a tag. However, if you would like to @i{track} the value of
this property with a tag for better visibility, customize the variable
@code{org-track-ordered-property-with-tag}.
-@kindex C-u C-u C-u C-c C-t
-@item C-u C-u C-u C-c C-t
+@orgkey{C-u C-u C-u C-c C-t}
Change TODO state, circumventing any state blocking.
@end table
@@ -3530,7 +3838,7 @@ module @file{org-depend.el}.
@cindex progress logging
@cindex logging, of progress
-Org mode can automatically record a timestamp and possibly a note when
+Org-mode can automatically record a timestamp and possibly a note when
you mark a TODO item as DONE, or even each time you change the state of
a TODO item. This system is highly configurable, settings can be on a
per-keyword basis and can be localized to a file or even a subtree. For
@@ -3548,7 +3856,7 @@ work time}.
The most basic logging is to keep track of @emph{when} a certain TODO
item was finished. This is achieved with@footnote{The corresponding
-in-buffer setting is: @code{#+STARTUP: logdone}}.
+in-buffer setting is: @code{#+STARTUP: logdone}}
@lisp
(setq org-log-done 'time)
@@ -3594,7 +3902,7 @@ behavior---the recommended drawer for this is called @code{LOGBOOK}. You can
also overrule the setting of this variable for a subtree by setting a
@code{LOG_INTO_DRAWER} property.
-Since it is normally too much to record a note for every state, Org mode
+Since it is normally too much to record a note for every state, Org-mode
expects configuration on a per-keyword basis for this. This is achieved by
adding special markers @samp{!} (for a timestamp) and @samp{@@} (for a note)
in parentheses after each keyword. For example, with the setting
@@ -3608,7 +3916,7 @@ in parentheses after each keyword. For example, with the setting
@vindex org-log-done
you not only define global TODO keywords and fast access keys, but also
request that a time is recorded when the entry is set to
-DONE@footnote{It is possible that Org mode will record two timestamps
+DONE@footnote{It is possible that Org-mode will record two timestamps
when you are using both @code{org-log-done} and state change logging.
However, it will never prompt for two notes---if you have configured
both, the state change recording note will take precedence and cancel
@@ -3668,7 +3976,10 @@ The habit is a TODO, with a TODO keyword representing an open state.
@item
The property @code{STYLE} is set to the value @code{habit}.
@item
-The TODO has a scheduled date, with a @code{.+} style repeat interval.
+The TODO has a scheduled date, usually with a @code{.+} style repeat
+interval. A @code{++} style may be appropriate for habits with time
+constraints, e.g., must be done on weekends, or a @code{+} style for an
+unusual habit that can have a backlog, e.g., weekly reports.
@item
The TODO may also have minimum and maximum ranges specified by using the
syntax @samp{.+2d/3d}, which says that you want to do the task at least every
@@ -3724,7 +4035,7 @@ If the task was going to be overdue the next day.
If the task was overdue on that day.
@end table
-In addition to coloring each day, the day is also marked with an asterix if
+In addition to coloring each day, the day is also marked with an asterisk if
the task was actually done that day, and an exclamation mark to show where
the current day falls in the graph.
@@ -3754,38 +4065,37 @@ which should only be done in certain contexts, for example.
@section Priorities
@cindex priorities
-If you use Org mode extensively, you may end up enough TODO items that
+If you use Org-mode extensively, you may end up with enough TODO items that
it starts to make sense to prioritize them. Prioritizing can be done by
-placing a @emph{priority cookie} into the headline of a TODO item, like
-this
+placing a @emph{priority cookie} into the headline of a TODO item, like this
@example
*** TODO [#A] Write letter to Sam Fortune
@end example
@noindent
-By default, Org mode supports three priorities: @samp{A}, @samp{B}, and
-@samp{C}. @samp{A} is the highest priority. An entry without a cookie
-is treated as priority @samp{B}. Priorities make a difference only in
-the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they have
-no inherent meaning to Org mode.
+@vindex org-priority-faces
+By default, Org-mode supports three priorities: @samp{A}, @samp{B}, and
+@samp{C}. @samp{A} is the highest priority. An entry without a cookie is
+treated just like priority @samp{B}. Priorities make a difference only for
+sorting in the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they
+have no inherent meaning to Org-mode. The cookies can be highlighted with
+special faces by customizing the variable @code{org-priority-faces}.
-Priorities can be attached to any outline tree entries; they do not need
-to be TODO items.
+Priorities can be attached to any outline node; they do not need to be TODO
+items.
@table @kbd
-@kindex @kbd{C-c ,}
@item @kbd{C-c ,}
-Set the priority of the current headline. The command prompts for a
-priority character @samp{A}, @samp{B} or @samp{C}. When you press
-@key{SPC} instead, the priority cookie is removed from the headline.
-The priorities can also be changed ``remotely'' from the timeline and
-agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
+@kindex @kbd{C-c ,}
+@findex org-priority
+Set the priority of the current headline (@command{org-priority}). The
+command prompts for a priority character @samp{A}, @samp{B} or @samp{C}.
+When you press @key{SPC} instead, the priority cookie is removed from the
+headline. The priorities can also be changed ``remotely'' from the timeline
+and agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
@c
-@kindex S-@key{up}
-@kindex S-@key{down}
-@item S-@key{up}
-@itemx S-@key{down}
+@orgcmdkkcc{S-@key{up},S-@key{down},org-priority-up,org-priority-down}
@vindex org-priority-start-cycle-with-default
Increase/decrease priority of current headline@footnote{See also the option
@code{org-priority-start-cycle-with-default}.}. Note that these keys are
@@ -3821,7 +4131,7 @@ with detailed subtasks on the tree@footnote{To keep subtasks out of the
global TODO list, see the @code{org-agenda-todo-list-sublevels}.}. To keep
the overview over the fraction of subtasks that are already completed, insert
either @samp{[/]} or @samp{[%]} anywhere in the headline. These cookies will
-be updates each time the todo status of a child changes, or when pressing
+be updated each time the TODO status of a child changes, or when pressing
@kbd{C-c C-c} on the cookie. For example:
@example
@@ -3874,13 +4184,16 @@ large number of subtasks (@pxref{Checkboxes}).
@section Checkboxes
@cindex checkboxes
-Every item in a plain list (@pxref{Plain lists}) can be made into a
-checkbox by starting it with the string @samp{[ ]}. This feature is
-similar to TODO items (@pxref{TODO Items}), but is more lightweight.
-Checkboxes are not included into the global TODO list, so they are often
-great to split a task into a number of simple steps. Or you can use
-them in a shopping list. To toggle a checkbox, use @kbd{C-c C-c}, or
-use the mouse (thanks to Piotr Zielinski's @file{org-mouse.el}).
+@vindex org-list-automatic-rules
+Every item in a plain list@footnote{With the exception of description
+lists. But you can allow it by modifying @code{org-list-automatic-rules}
+accordingly.} (@pxref{Plain lists}) can be made into a checkbox by starting
+it with the string @samp{[ ]}. This feature is similar to TODO items
+(@pxref{TODO Items}), but is more lightweight. Checkboxes are not included
+into the global TODO list, so they are often great to split a task into a
+number of simple steps. Or you can use them in a shopping list. To toggle a
+checkbox, use @kbd{C-c C-c}, or use the mouse (thanks to Piotr Zielinski's
+@file{org-mouse.el}).
Here is an example of a checkbox list.
@@ -3932,13 +4245,11 @@ off a box while there are unchecked boxes above it.
@noindent The following commands work with checkboxes:
@table @kbd
-@kindex C-c C-c
-@item C-c C-c
+@orgcmd{C-c C-c,org-toggle-checkbox}
Toggle checkbox status or (with prefix arg) checkbox presence at point. With
double prefix argument, set it to @samp{[-]}, which is considered to be an
intermediate state.
-@kindex C-c C-x C-b
-@item C-c C-x C-b
+@orgcmd{C-c C-x C-b,org-toggle-checkbox}
Toggle checkbox status or (with prefix arg) checkbox presence at point. With
double prefix argument, set it to @samp{[-]}, which is considered to be an
intermediate state.
@@ -3953,13 +4264,11 @@ this headline and the next (so @emph{not} the entire subtree).
@item
If there is no active region, just toggle the checkbox at point.
@end itemize
-@kindex M-S-@key{RET}
-@item M-S-@key{RET}
+@orgcmd{M-S-@key{RET},org-insert-todo-heading}
Insert a new item with a checkbox.
This works only if the cursor is already in a plain list item
(@pxref{Plain lists}).
-@kindex C-c C-x o
-@item C-c C-x o
+@orgcmd{C-c C-x o,org-toggle-ordered-property}
@vindex org-track-ordered-property-with-tag
@cindex property, ORDERED
Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
@@ -3968,8 +4277,7 @@ this should be local to the current entry, not inherited like a tag.
However, if you would like to @i{track} the value of this property with a tag
for better visibility, customize the variable
@code{org-track-ordered-property-with-tag}.
-@kindex C-c #
-@item C-c #
+@orgcmd{C-c #,org-update-statistics-cookies}
Update the statistics cookie in the current outline entry. When called with
a @kbd{C-u} prefix, update the entire file. Checkbox statistic cookies are
updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
@@ -3987,7 +4295,7 @@ entry twice (checkboxes with @kbd{C-c C-c}).
@cindex sparse tree, tag based
An excellent way to implement labels and contexts for cross-correlating
-information is to assign @i{tags} to headlines. Org mode has extensive
+information is to assign @i{tags} to headlines. Org-mode has extensive
support for tags.
@vindex org-tag-faces
@@ -4063,19 +4371,17 @@ After a colon, @kbd{M-@key{TAB}} offers completion on tags. There is
also a special command for inserting tags:
@table @kbd
-@kindex C-c C-q
-@item C-c C-q
+@orgcmd{C-c C-q,org-set-tags-command}
@cindex completion, of tags
@vindex org-tags-column
-Enter new tags for the current headline. Org mode will either offer
+Enter new tags for the current headline. Org-mode will either offer
completion or a special single-key interface for setting tags, see
below. After pressing @key{RET}, the tags will be inserted and aligned
to @code{org-tags-column}. When called with a @kbd{C-u} prefix, all
tags in the current buffer will be aligned to that column, just to make
things look nice. TAGS are automatically realigned after promotion,
demotion, and TODO state changes (@pxref{TODO basics}).
-@kindex C-c C-c
-@item C-c C-c
+@orgcmd{C-c C-c,org-set-tags-command}
When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
@end table
@@ -4111,7 +4417,7 @@ by adding a STARTUP option line to that file:
#+STARTUP: noptag
@end example
-By default Org mode uses the standard minibuffer completion facilities for
+By default Org-mode uses the standard minibuffer completion facilities for
entering tags. However, it also implements another, quicker, tag selection
method called @emph{fast tag selection}. This allows you to select and
deselect tags with just a single key press. For this to work well you should
@@ -4242,18 +4548,13 @@ Once a system of tags has been set up, it can be used to collect related
information into special lists.
@table @kbd
-@kindex C-c \
-@kindex C-c / m
-@item C-c \
-@itemx C-c / m
+@orgcmdkkc{C-c / m,C-c \,org-match-sparse-tree}
Create a sparse tree with all headlines matching a tags search. With a
@kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
-@kindex C-c a m
-@item C-c a m
+@orgcmd{C-c a m,org-tags-view}
Create a global list of tag matches from all agenda files.
@xref{Matching tags and properties}.
-@kindex C-c a M
-@item C-c a M
+@orgcmd{C-c a M,org-tags-view}
@vindex org-tags-match-list-sublevels
Create a global list of tag matches from all agenda files, but check
only TODO items and force checking subitems (see variable
@@ -4270,11 +4571,11 @@ and properties. For a complete description with many examples, see
@node Properties and Columns, Dates and Times, Tags, Top
-@chapter Properties and Columns
+@chapter Properties and columns
@cindex properties
Properties are a set of key-value pairs associated with an entry. There
-are two main applications for properties in Org mode. First, properties
+are two main applications for properties in Org-mode. First, properties
are like tags, but with a value. Second, you can use properties to
implement (very basic) database capabilities in an Org buffer. For
an example of the first application, imagine maintaining a file where
@@ -4291,7 +4592,7 @@ Properties can be conveniently edited and viewed in column view
@menu
* Property syntax:: How properties are spelled out
-* Special properties:: Access to other Org mode features
+* Special properties:: Access to other Org-mode features
* Property searches:: Matching property values
* Property inheritance:: Passing values down the tree
* Column view:: Tabular viewing and editing
@@ -4354,33 +4655,29 @@ Org files.
The following commands help to work with properties:
@table @kbd
-@kindex M-@key{TAB}
-@item M-@key{TAB}
+@orgcmd{M-@key{TAB},org-complete}
After an initial colon in a line, complete property keys. All keys used
in the current file will be offered as possible completions.
-@kindex C-c C-x p
-@item C-c C-x p
+@orgcmd{C-c C-x p,org-set-property}
Set a property. This prompts for a property name and a value. If
necessary, the property drawer is created as well.
@item M-x org-insert-property-drawer
+@findex org-insert-property-drawer
Insert a property drawer into the current entry. The drawer will be
inserted early in the entry, but after the lines with planning
information like deadlines.
-@kindex C-c C-c
-@item C-c C-c
+@orgcmd{C-c C-c,org-property-action}
With the cursor in a property drawer, this executes property commands.
-@item C-c C-c s
+@orgcmd{C-c C-c s,org-set-property}
Set a property in the current entry. Both the property and the value
can be inserted using completion.
-@kindex S-@key{right}
-@kindex S-@key{left}
-@item S-@key{left}/@key{right}
+@orgcmdkkcc{S-@key{right},S-@key{left},org-property-next-allowed-value,org-property-previous-allowed-value}
Switch property at point to the next/previous allowed value.
-@item C-c C-c d
+@orgcmd{C-c C-c d,org-delete-property}
Remove a property from the current entry.
-@item C-c C-c D
+@orgcmd{C-c C-c D,org-delete-property-globally}
Globally remove a property, from all entries in the current file.
-@item C-c C-c c
+@orgcmd{C-c C-c c,org-compute-property-at-point}
Compute the property at point, using the operator and scope from the
nearest column format definition.
@end table
@@ -4389,7 +4686,7 @@ nearest column format definition.
@section Special properties
@cindex properties, special
-Special properties provide an alternative access method to Org mode
+Special properties provide an alternative access method to Org-mode
features, like the TODO state or the priority of an entry, discussed in the
previous chapters. This interface exists so that you can include
these states in a column view (@pxref{Column view}), or to use them in
@@ -4407,6 +4704,7 @@ used as keys in the properties drawer:
@cindex property, special, TIMESTAMP
@cindex property, special, TIMESTAMP_IA
@cindex property, special, CLOCKSUM
+@cindex property, special, BLOCKED
@c guessing that ITEM is needed in this area; also, should this list be sorted?
@cindex property, special, ITEM
@example
@@ -4422,6 +4720,7 @@ TIMESTAMP @r{The first keyword-less timestamp in the entry.}
TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
CLOCKSUM @r{The sum of CLOCK intervals in the subtree. @code{org-clock-sum}}
@r{must be run first to compute the values.}
+BLOCKED @r{"t" if task is currently blocked by children or siblings}
ITEM @r{The content of the entry.}
@end example
@@ -4433,18 +4732,13 @@ ITEM @r{The content of the entry.}
To create sparse trees and special lists with selection based on properties,
the same commands are used as for tag searches (@pxref{Tag searches}).
@table @kbd
-@kindex C-c \
-@kindex C-c / m
-@item C-c \
-@itemx C-c / m
+@orgcmdkkc{C-c / m,C-c \,org-match-sparse-tree}
Create a sparse tree with all matching entries. With a
@kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
-@kindex C-c a m
-@item C-c a m
+@orgcmd{C-c a m,org-tags-view}
Create a global list of tag/property matches from all agenda files.
@xref{Matching tags and properties}.
-@kindex C-c a M
-@item C-c a M
+@orgcmd{C-c a M,org-tags-view}
@vindex org-tags-match-list-sublevels
Create a global list of tag matches from all agenda files, but check
only TODO items and force checking of subitems (see variable
@@ -4458,12 +4752,11 @@ There is also a special command for creating sparse trees based on a
single property:
@table @kbd
-@kindex C-c / p
-@item C-c / p
+@orgkey{C-c / p}
Create a sparse tree based on the value of a property. This first
prompts for the name of a property, and then for a value. A sparse tree
is created with all entries that define this property with the given
-value. If you enclose the value into curly braces, it is interpreted as
+value. If you enclose the value in curly braces, it is interpreted as
a regular expression and matched against the property values.
@end table
@@ -4473,18 +4766,20 @@ a regular expression and matched against the property values.
@cindex inheritance, of properties
@vindex org-use-property-inheritance
-The outline structure of Org-mode documents lends itself for an
+The outline structure of Org-mode documents lends itself to an
inheritance model of properties: if the parent in a tree has a certain
-property, the children can inherit this property. Org mode does not
+property, the children can inherit this property. Org-mode does not
turn this on by default, because it can slow down property searches
significantly and is often not needed. However, if you find inheritance
useful, you can turn it on by setting the variable
@code{org-use-property-inheritance}. It may be set to @code{t} to make
all properties inherited from the parent, to a list of properties
that should be inherited, or to a regular expression that matches
-inherited properties.
+inherited properties. If a property has the value @samp{nil}, this is
+interpreted as an explicit undefine of the property, so that inheritance
+search will stop at this value and return @code{nil}.
-Org mode has a few properties for which inheritance is hard-coded, at
+Org-mode has a few properties for which inheritance is hard-coded, at
least for the special applications for which they are used:
@cindex property, COLUMNS
@@ -4515,7 +4810,7 @@ subtree (@pxref{Tracking TODO state changes}).
A great way to view and edit properties in an outline tree is
@emph{column view}. In column view, each outline node is turned into a
table row. Columns in this table provide access to properties of the
-entries. Org mode implements columns by overlaying a tabular structure
+entries. Org-mode implements columns by overlaying a tabular structure
over the headline of each item. While the headlines have been turned
into a table row, you can still change the visibility of the outline
tree. For example, you get a compact table by switching to CONTENTS
@@ -4591,15 +4886,15 @@ optional. The individual parts have the following meaning:
@var{property} @r{The property that should be edited in this column.}
@r{Special properties representing meta data are allowed here}
@r{as well (@pxref{Special properties})}
-(title) @r{The header text for the column. If omitted, the}
- @r{property name is used.}
+@var{title} @r{The header text for the column. If omitted, the property}
+ @r{name is used.}
@{@var{summary-type}@} @r{The summary type. If specified, the column values for}
@r{parent nodes are computed from the children.}
@r{Supported summary types are:}
@{+@} @r{Sum numbers in this column.}
@{+;%.1f@} @r{Like @samp{+}, but format result with @samp{%.1f}.}
@{$@} @r{Currency, short for @samp{+;%.2f}.}
- @{:@} @r{Sum times, HH:MM:SS, plain numbers are hours.}
+ @{:@} @r{Sum times, HH:MM, plain numbers are hours.}
@{X@} @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
@{X/@} @r{Checkbox status, @samp{[n/m]}.}
@{X%@} @r{Checkbox status, @samp{[n%]}.}
@@ -4609,9 +4904,10 @@ optional. The individual parts have the following meaning:
@{:min@} @r{Smallest time value in column.}
@{:max@} @r{Largest time value.}
@{:mean@} @r{Arithmetic mean of time values.}
- @{@@min@} @r{Minimum age (in days/hours/mins/seconds).}
- @{@@max@} @r{Maximum age (in days/hours/mins/seconds).}
- @{@@mean@} @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
+ @{@@min@} @r{Minimum age (in days/hours/mins/seconds).}
+ @{@@max@} @r{Maximum age (in days/hours/mins/seconds).}
+ @{@@mean@} @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
+ @{est+@} @r{Add low-high estimates.}
@end example
@noindent
@@ -4619,6 +4915,22 @@ Be aware that you can only have one summary type for any property you
include. Subsequent columns referencing the same property will all display the
same summary information.
+The @code{est+} summary type requires further explanation. It is used for
+combining estimates, expressed as low-high ranges. For example, instead
+of estimating a particular task will take 5 days, you might estimate it as
+5-6 days if you're fairly confident you know how much work is required, or
+1-10 days if you don't really know what needs to be done. Both ranges
+average at 5.5 days, but the first represents a more predictable delivery.
+
+When combining a set of such estimates, simply adding the lows and highs
+produces an unrealistically wide result. Instead, @code{est+} adds the
+statistical mean and variance of the sub-tasks, generating a final estimate
+from the sum. For example, suppose you had ten tasks, each of which was
+estimated at 0.5 to 2 days of work. Straight addition produces an estimate
+of 5 to 20 days, representing what to expect if everything goes either
+extremely well or extremely poorly. In contrast, @code{est+} estimates the
+full job more realistically, at 10-15 days.
+
Here is an example for a complete columns definition, along with allowed
values.
@@ -4651,8 +4963,7 @@ in the subtree.
@table @kbd
@tsubheading{Turning column view on and off}
-@kindex C-c C-x C-c
-@item C-c C-x C-c
+@orgcmd{C-c C-x C-c,org-columns}
@vindex org-columns-default-format
Turn on column view. If the cursor is before the first headline in the file,
column view is turned on for the entire file, using the @code{#+COLUMNS}
@@ -4663,14 +4974,11 @@ for the tree starting at the entry that contains the @code{:COLUMNS:}
property. If no such property is found, the format is taken from the
@code{#+COLUMNS} line or from the variable @code{org-columns-default-format},
and column view is established for the current entry and its subtree.
-@kindex r
-@item r
+@orgcmd{r,org-columns-redo}
Recreate the column view, to include recent changes made in the buffer.
-@kindex g
-@item g
+@orgcmd{g,org-columns-redo}
Same as @kbd{r}.
-@kindex q
-@item q
+@orgcmd{q,org-columns-quit}
Exit column view.
@tsubheading{Editing values}
@item @key{left} @key{right} @key{up} @key{down}
@@ -4681,40 +4989,30 @@ Move through the column view from field to field.
Switch to the next/previous allowed value of the field. For this, you
have to have specified allowed values for a property.
@item 1..9,0
-Directly select the nth allowed value, @kbd{0} selects the 10th value.
-@kindex n
-@kindex p
-@itemx n / p
+Directly select the Nth allowed value, @kbd{0} selects the 10th value.
+@orgcmdkkcc{n,p,org-columns-next-allowed-value,org-columns-previous-allowed-value}
Same as @kbd{S-@key{left}/@key{right}}
-@kindex e
-@item e
+@orgcmd{e,org-columns-edit-value}
Edit the property at point. For the special properties, this will
invoke the same interface that you normally use to change that
property. For example, when editing a TAGS property, the tag completion
or fast selection interface will pop up.
-@kindex C-c C-c
-@item C-c C-c
+@orgcmd{C-c C-c,org-columns-set-tags-or-toggle}
When there is a checkbox at point, toggle it.
-@kindex v
-@item v
+@orgcmd{v,org-columns-show-value}
View the full value of this property. This is useful if the width of
the column is smaller than that of the value.
-@kindex a
-@item a
+@orgcmd{a,org-columns-edit-allowed}
Edit the list of allowed values for this property. If the list is found
in the hierarchy, the modified values is stored there. If no list is
found, the new value is stored in the first entry that is part of the
current column view.
@tsubheading{Modifying the table structure}
-@kindex <
-@kindex >
-@item < / >
+@orgcmdkkcc{<,>,org-columns-narrow,org-columns-widen}
Make the column narrower/wider by one character.
-@kindex S-M-@key{right}
-@item S-M-@key{right}
+@orgcmd{S-M-@key{right},org-columns-new}
Insert a new column, to the left of the current column.
-@kindex S-M-@key{left}
-@item S-M-@key{left}
+@orgcmd{S-M-@key{left},org-columns-delete}
Delete the current column.
@end table
@@ -4770,20 +5068,16 @@ column view is @code{ITEM}.
The following commands insert or update the dynamic block:
@table @kbd
-@kindex C-c C-x i
-@item C-c C-x i
+@orgcmd{C-c C-x i,org-insert-columns-dblock}
Insert a dynamic block capturing a column view. You will be prompted
for the scope or ID of the view.
-@kindex C-c C-c
-@item C-c C-c
-@kindex C-c C-x C-u
-@itemx C-c C-x C-u
+@orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
Update dynamic block at point. The cursor needs to be in the
@code{#+BEGIN} line of the dynamic block.
-@kindex C-u C-c C-x C-u
-@item C-u C-c C-x C-u
+@orgcmd{C-u C-c C-x C-u,org-update-all-dblocks}
Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
-you have several clock table blocks in a buffer.
+you have several clock table blocks, column-capturing blocks or other dynamic
+blocks in a buffer.
@end table
You can add formulas to the column view table and you may add plotting
@@ -4810,7 +5104,7 @@ features based on them. For more information see @ref{Using the
property API}.
@node Dates and Times, Capture - Refile - Archive, Properties and Columns, Top
-@chapter Dates and Times
+@chapter Dates and times
@cindex dates
@cindex times
@cindex timestamp
@@ -4818,9 +5112,9 @@ property API}.
To assist project planning, TODO items can be labeled with a date and/or
a time. The specially formatted string carrying the date and time
-information is called a @emph{timestamp} in Org mode. This may be a
+information is called a @emph{timestamp} in Org-mode. This may be a
little confusing because timestamp is often used as indicating when
-something was created or last changed. However, in Org mode this term
+something was created or last changed. However, in Org-mode this term
is used in a much wider sense.
@menu
@@ -4828,9 +5122,9 @@ is used in a much wider sense.
* Creating timestamps:: Commands which insert timestamps
* Deadlines and scheduling:: Planning your work
* Clocking work time:: Tracking how long you spend on a task
-* Resolving idle time:: Resolving time if you've been idle
* Effort estimates:: Planning work effort in advance
* Relative timer:: Notes with a running timer
+* Countdown timer:: Starting a countdown timer for a task
@end menu
@@ -4845,7 +5139,7 @@ is used in a much wider sense.
A timestamp is a specification of a date (possibly with a time or a range of
times) in a special format, either @samp{<2003-09-16 Tue>} or
@samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16 Tue
-12:00-12:30>}@footnote{This is inspired by the standard ISO 6801 date/time
+12:00-12:30>}@footnote{This is inspired by the standard ISO 8601 date/time
format. To use an alternative format, see @ref{Custom time format}.}. A
timestamp can appear anywhere in the headline or body of an Org tree entry.
Its presence causes entries to be shown on specific dates in the agenda
@@ -4876,7 +5170,7 @@ following will show up in the agenda every Wednesday:
@end example
@item Diary-style sexp entries
-For more complex date specifications, Org mode supports using the
+For more complex date specifications, Org-mode supports using the
special sexp diary entries implemented in the Emacs calendar/diary
package. For example
@@ -4915,20 +5209,18 @@ angular ones. These timestamps are inactive in the sense that they do
@cindex creating timestamps
@cindex timestamps, creating
-For Org mode to recognize timestamps, they need to be in the specific
+For Org-mode to recognize timestamps, they need to be in the specific
format. All commands listed below produce timestamps in the correct
format.
@table @kbd
-@kindex C-c .
-@item C-c .
+@orgcmd{C-c .,org-time-stamp}
Prompt for a date and insert a corresponding timestamp. When the cursor is
at an existing timestamp in the buffer, the command is used to modify this
timestamp instead of inserting a new one. When this command is used twice in
succession, a time range is inserted.
@c
-@kindex C-c !
-@item C-c !
+@orgcmd{C-c !,org-time-stamp-inactive}
Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
an agenda entry.
@c
@@ -4941,32 +5233,23 @@ Like @kbd{C-c .} and @kbd{C-c !}, but use the alternative format which
contains date and time. The default time can be rounded to multiples of 5
minutes, see the option @code{org-time-stamp-rounding-minutes}.
@c
-@kindex C-c <
-@item C-c <
+@orgcmd{C-c <,org-date-from-calendar}
Insert a timestamp corresponding to the cursor date in the Calendar.
@c
-@kindex C-c >
-@item C-c >
+@orgcmd{C-c >,org-goto-calendar}
Access the Emacs calendar for the current date. If there is a
timestamp in the current line, go to the corresponding date
instead.
@c
-@kindex C-c C-o
-@item C-c C-o
+@orgcmd{C-c C-o,org-open-at-point}
Access the agenda for the date given by the timestamp or -range at
point (@pxref{Weekly/daily agenda}).
@c
-@kindex S-@key{left}
-@kindex S-@key{right}
-@item S-@key{left}
-@itemx S-@key{right}
+@orgcmdkkcc{S-@key{left},S-@key{right},org-timestamp-down-day,org-timestamp-up-day}
Change date at cursor by one day. These key bindings conflict with
shift-selection and related modes (@pxref{Conflicts}).
@c
-@kindex S-@key{up}
-@kindex S-@key{down}
-@item S-@key{up}
-@itemx S-@key{down}
+@orgcmdkkcc{S-@key{up},S-@key{down},org-timestamp-up,org-timestamp-down-down}
Change the item under the cursor in a timestamp. The cursor can be on a
year, month, day, hour or minute. When the timestamp contains a time range
like @samp{15:30-16:30}, modifying the first time will also shift the second,
@@ -4976,9 +5259,8 @@ timestamp, these same keys modify the priority of an item.
(@pxref{Priorities}). The key bindings also conflict with shift-selection and
related modes (@pxref{Conflicts}).
@c
-@kindex C-c C-y
+@orgcmd{C-c C-y,org-evaluate-time-range}
@cindex evaluate time range
-@item C-c C-y
Evaluate a time range by computing the difference between start and end.
With a prefix argument, insert result after the time range (in a table: into
the following column).
@@ -4986,7 +5268,7 @@ the following column).
@menu
-* The date/time prompt:: How Org mode helps you entering date and time
+* The date/time prompt:: How Org-mode helps you entering date and time
* Custom time format:: Making dates look different
@end menu
@@ -4996,17 +5278,17 @@ the following column).
@cindex time, reading in minibuffer
@vindex org-read-date-prefer-future
-When Org mode prompts for a date/time, the default is shown in default
+When Org-mode prompts for a date/time, the default is shown in default
date/time format, and the prompt therefore seems to ask for a specific
format. But it will in fact accept any string containing some date and/or
time information, and it is really smart about interpreting your input. You
can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
-copied from an email message. Org mode will find whatever information is in
+copied from an email message. Org-mode will find whatever information is in
there and derive anything you have not specified from the @emph{default date
and time}. The default is usually the current date and time, but when
modifying an existing timestamp, or when entering the second stamp of a
range, it is taken from the stamp in the buffer. When filling in
-information, Org mode assumes that most of the time you will want to enter a
+information, Org-mode assumes that most of the time you will want to enter a
date in the future: if you omit the month/year and the given day/month is
@i{before} today, it will assume that you mean a future date@footnote{See the
variable @code{org-read-date-prefer-future}. You may set that variable to
@@ -5015,14 +5297,16 @@ tomorrow.}. If the date has been automatically shifted into the future, the
time prompt will show this with @samp{(=>F).}
For example, let's assume that today is @b{June 13, 2006}. Here is how
-various inputs will be interpreted, the items filled in by Org mode are
+various inputs will be interpreted, the items filled in by Org-mode are
in @b{bold}.
@example
3-2-5 --> 2003-02-05
+2/5/3 --> 2003-02-05
14 --> @b{2006}-@b{06}-14
12 --> @b{2006}-@b{07}-12
-Fri --> nearest Friday (defaultdate or later)
+2/5 --> @b{2007}-02-05
+Fri --> nearest Friday (default date or later)
sep 15 --> @b{2006}-09-15
feb 15 --> @b{2007}-02-15
sep 12 9 --> 2009-09-12
@@ -5039,7 +5323,7 @@ letter ([dwmy]) to indicate change in days, weeks, months, or years. With a
single plus or minus, the date is always relative to today. With a
double plus or minus, it is relative to the default date. If instead of
a single letter, you use the abbreviation of day name, the date will be
-the nth such day. E.g.
+the Nth such day. E.g.
@example
+0 --> today
@@ -5057,6 +5341,16 @@ The function understands English month and weekday abbreviations. If
you want to use unabbreviated names and/or other languages, configure
the variables @code{parse-time-months} and @code{parse-time-weekdays}.
+You can specify a time range by giving start and end times or by giving a
+start time and a duration (in HH:MM format). Use `-' or `-@{@}-' as the separator
+in the former case and use '+' as the separator in the latter case. E.g.
+
+@example
+11am-1:15pm --> 11:00-13:15
+11am--1:15pm --> same as above
+11am+2:15 --> same as above
+@end example
+
@cindex calendar, for selecting date
@vindex org-popup-calendar-for-date-prompt
Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
@@ -5069,6 +5363,8 @@ from the minibuffer:
@kindex <
@kindex >
+@kindex M-v
+@kindex C-v
@kindex mouse-1
@kindex S-@key{right}
@kindex S-@key{left}
@@ -5078,12 +5374,13 @@ from the minibuffer:
@kindex M-S-@key{left}
@kindex @key{RET}
@example
-> / < @r{Scroll calendar forward/backward by one month.}
+@key{RET} @r{Choose date at cursor in calendar.}
mouse-1 @r{Select date by clicking on it.}
S-@key{right}/@key{left} @r{One day forward/backward.}
S-@key{down}/@key{up} @r{One week forward/backward.}
M-S-@key{right}/@key{left} @r{One month forward/backward.}
-@key{RET} @r{Choose date in calendar.}
+> / < @r{Scroll calendar forward/backward by one month.}
+M-v / C-v @r{Scroll calendar forward/backward by 3 months.}
@end example
@vindex org-read-date-display-live
@@ -5102,20 +5399,19 @@ minibuffer@footnote{If you find this distracting, turn the display of with
@vindex org-display-custom-times
@vindex org-time-stamp-custom-formats
-Org mode uses the standard ISO notation for dates and times as it is
+Org-mode uses the standard ISO notation for dates and times as it is
defined in ISO 8601. If you cannot get used to this and require another
representation of date and time to keep you happy, you can get it by
customizing the variables @code{org-display-custom-times} and
@code{org-time-stamp-custom-formats}.
@table @kbd
-@kindex C-c C-x C-t
-@item C-c C-x C-t
+@orgcmd{C-c C-x C-t,org-toggle-time-stamp-overlays}
Toggle the display of custom formats for dates and times.
@end table
@noindent
-Org mode needs the default format for scanning, so the custom date/time
+Org-mode needs the default format for scanning, so the custom date/time
format does not @emph{replace} the default format---instead it is put
@emph{over} the default format using text properties. This has the
following consequences:
@@ -5131,7 +5427,7 @@ just like @kbd{S-@key{left}/@key{right}}. At the end of the stamp, the
time will be changed by one minute.
@item
If the timestamp contains a range of clock times or a repeater, these
-will not be overlayed, but remain in the buffer as they were.
+will not be overlaid, but remain in the buffer as they were.
@item
When you delete a timestamp character-by-character, it will only
disappear from the buffer after @emph{all} (invisible) characters
@@ -5183,8 +5479,8 @@ The headline will be listed under the given date@footnote{It will still
be listed on that date after it has been marked DONE. If you don't like
this, set the variable @code{org-agenda-skip-scheduled-if-done}.}. In
addition, a reminder that the scheduled date has passed will be present
-in the compilation for @emph{today}, until the entry is marked DONE.
-I.e. the task will automatically be forwarded until completed.
+in the compilation for @emph{today}, until the entry is marked DONE, i.e.
+the task will automatically be forwarded until completed.
@example
*** TODO Call Trillian for a date on New Years Eve.
@@ -5192,23 +5488,23 @@ I.e. the task will automatically be forwarded until completed.
@end example
@noindent
-@b{Important:} Scheduling an item in Org mode should @i{not} be
+@b{Important:} Scheduling an item in Org-mode should @i{not} be
understood in the same way that we understand @i{scheduling a meeting}.
Setting a date for a meeting is just a simple appointment, you should
mark this entry with a simple plain timestamp, to get this item shown
on the date where it applies. This is a frequent misunderstanding by
-Org users. In Org mode, @i{scheduling} means setting a date when you
+Org users. In Org-mode, @i{scheduling} means setting a date when you
want to start working on an action item.
@end table
You may use timestamps with repeaters in scheduling and deadline
-entries. Org mode will issue early and late warnings based on the
+entries. Org-mode will issue early and late warnings based on the
assumption that the timestamp represents the @i{nearest instance} of
the repeater. However, the use of diary sexp entries like
@c
@code{<%%(diary-float t 42)>}
@c
-in scheduling and deadline timestamps is limited. Org mode does not
+in scheduling and deadline timestamps is limited. Org-mode does not
know enough about the internals of each sexp function to issue early and
late warnings. However, it will show the item on each day where the
sexp entry matches.
@@ -5226,8 +5522,7 @@ an item:
@table @kbd
@c
-@kindex C-c C-d
-@item C-c C-d
+@orgcmd{C-c C-d,org-deadline}
Insert @samp{DEADLINE} keyword along with a stamp. The insertion will happen
in the line directly following the headline. When called with a prefix arg,
an existing deadline will be removed from the entry. Depending on the
@@ -5237,8 +5532,7 @@ and @code{nologredeadline}}, a note will be taken when changing an existing
deadline.
@c FIXME Any CLOSED timestamp will be removed.????????
@c
-@kindex C-c C-s
-@item C-c C-s
+@orgcmd{C-c C-s,org-schedule}
Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
happen in the line directly following the headline. Any CLOSED timestamp
will be removed. When called with a prefix argument, remove the scheduling
@@ -5248,18 +5542,16 @@ keywords @code{logredeadline}, @code{lognoteredeadline}, and
@code{nologredeadline}}, a note will be taken when changing an existing
scheduling time.
@c
-@kindex C-c C-x C-k
+@orgcmd{C-c C-x C-k,org-mark-entry-for-agenda-action}
@kindex k a
@kindex k s
-@item C-c C-x C-k
Mark the current entry for agenda action. After you have marked the entry
like this, you can open the agenda or the calendar to find an appropriate
date. With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
schedule the marked item.
@c
-@kindex C-c / d
+@orgcmd{C-c / d,org-check-deadlines}
@cindex sparse tree, for deadlines
-@item C-c / d
@vindex org-deadline-warning-days
Create a sparse tree with all deadlines that are either past-due, or
which will become due within @code{org-deadline-warning-days}.
@@ -5267,12 +5559,10 @@ With @kbd{C-u} prefix, show all deadlines in the file. With a numeric
prefix, check that many days. For example, @kbd{C-1 C-c / d} shows
all deadlines due tomorrow.
@c
-@kindex C-c / b
-@item C-c / b
+@orgcmd{C-c / b,org-check-before-date}
Sparse tree for deadlines and scheduled items before a given date.
@c
-@kindex C-c / a
-@item C-c / a
+@orgcmd{C-c / a,org-check-after-date}
Sparse tree for deadlines and scheduled items after a given date.
@end table
@@ -5281,7 +5571,7 @@ Sparse tree for deadlines and scheduled items after a given date.
@cindex tasks, repeated
@cindex repeated tasks
-Some tasks need to be repeated again and again. Org mode helps to
+Some tasks need to be repeated again and again. Org-mode helps to
organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
or plain timestamp. In the following example
@example
@@ -5295,17 +5585,21 @@ from that time. If you need both a repeater and a special warning period in
a deadline entry, the repeater should come first and the warning period last:
@code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
-Deadlines and scheduled items produce entries in the agenda when they
-are over-due, so it is important to be able to mark such an entry as
-completed once you have done so. When you mark a DEADLINE or a SCHEDULE
-with the TODO keyword DONE, it will no longer produce entries in the
-agenda. The problem with this is, however, that then also the
-@emph{next} instance of the repeated entry will not be active. Org mode
-deals with this in the following way: When you try to mark such an entry
-DONE (using @kbd{C-c C-t}), it will shift the base date of the repeating
-timestamp by the repeater interval, and immediately set the entry state
-back to TODO. In the example above, setting the state to DONE would
-actually switch the date like this:
+@vindex org-todo-repeat-to-state
+Deadlines and scheduled items produce entries in the agenda when they are
+over-due, so it is important to be able to mark such an entry as completed
+once you have done so. When you mark a DEADLINE or a SCHEDULE with the TODO
+keyword DONE, it will no longer produce entries in the agenda. The problem
+with this is, however, that then also the @emph{next} instance of the
+repeated entry will not be active. Org-mode deals with this in the following
+way: When you try to mark such an entry DONE (using @kbd{C-c C-t}), it will
+shift the base date of the repeating timestamp by the repeater interval, and
+immediately set the entry state back to TODO@footnote{In fact, the target
+state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
+the variable @code{org-todo-repeat-to-state}. If neither of these is
+specified, the target state defaults to the first state of the TODO state
+sequence.}. In the example above, setting the state to DONE would actually
+switch the date like this:
@example
** TODO Pay the rent
@@ -5327,11 +5621,11 @@ With the @samp{+1m} cookie, the date shift will always be exactly one
month. So if you have not paid the rent for three months, marking this
entry DONE will still keep it as an overdue deadline. Depending on the
task, this may not be the best way to handle it. For example, if you
-forgot to call you father for 3 weeks, it does not make sense to call
+forgot to call your father for 3 weeks, it does not make sense to call
him 3 times in a single day to make up for it. Finally, there are tasks
like changing batteries which should always repeat a certain time
-@i{after} the last time you did it. For these tasks, Org mode has
-special repeaters markers with @samp{++} and @samp{.+}. For example:
+@i{after} the last time you did it. For these tasks, Org-mode has
+special repeaters @samp{++} and @samp{.+}. For example:
@example
** TODO Call Father
@@ -5354,10 +5648,12 @@ subtree, with dates shifted in each copy. The command @kbd{C-c C-x c} was
created for this purpose, it is described in @ref{Structure editing}.
-@node Clocking work time, Resolving idle time, Deadlines and scheduling, Dates and Times
+@node Clocking work time, Effort estimates, Deadlines and scheduling, Dates and Times
@section Clocking work time
+@cindex clocking time
+@cindex time clocking
-Org mode allows you to clock the time you spend on specific tasks in a
+Org-mode allows you to clock the time you spend on specific tasks in a
project. When you start working on an item, you can start the clock.
When you stop working on that task, or when you mark the task done, the
clock is stopped and the corresponding time interval is recorded. It
@@ -5376,9 +5672,17 @@ on this task while outside Emacs, use @code{(setq org-clock-persist t)}.}
will be found (@pxref{Resolving idle time}) and you will be prompted about
what to do with it.
+@menu
+* Clocking commands:: Starting and stopping a clock
+* The clock table:: Detailed reports
+* Resolving idle time:: Resolving time when you've been idle
+@end menu
+
+@node Clocking commands, The clock table, Clocking work time, Clocking work time
+@subsection Clocking commands
+
@table @kbd
-@kindex C-c C-x C-i
-@item C-c C-x C-i
+@orgcmd{C-c C-x C-i,org-clock-in}
@vindex org-clock-into-drawer
Start the clock on the current item (clock-in). This inserts the CLOCK
keyword together with a timestamp. If this is not the first clocking of
@@ -5408,8 +5712,8 @@ show all time clocked on this tasks today (see also the variable
@code{auto} which is the default@footnote{See also the variable
@code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
mode line entry will pop up a menu with clocking options.
-@kindex C-c C-x C-o
-@item C-c C-x C-o
+@c
+@orgcmd{C-c C-x C-o,org-clock-out}
@vindex org-log-note-clock-out
Stop the clock (clock-out). This inserts another timestamp at the same
location where the clock was last started. It also directly computes
@@ -5418,30 +5722,24 @@ HH:MM}. See the variable @code{org-log-note-clock-out} for the
possibility to record an additional note together with the clock-out
timestamp@footnote{The corresponding in-buffer setting is:
@code{#+STARTUP: lognoteclock-out}}.
-@kindex C-c C-x C-e
-@item C-c C-x C-e
+@orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
Update the effort estimate for the current clock task.
@kindex C-c C-y
@kindex C-c C-c
-@item C-c C-y @ @ @r{or}@ @ C-c C-c
+@orgcmdkkc{C-c C-c,C-c C-y,org-evaluate-time-range}
Recompute the time interval after changing one of the timestamps. This
is only necessary if you edit the timestamps directly. If you change
them with @kbd{S-@key{cursor}} keys, the update is automatic.
-@kindex C-c C-t
-@item C-c C-t
+@orgcmd{C-c C-t,org-todo}
Changing the TODO state of an item to DONE automatically stops the clock
if it is running in this same item.
-@kindex C-c C-x C-x
-@item C-c C-x C-x
+@orgcmd{C-c C-x C-x,org-clock-cancel}
Cancel the current clock. This is useful if a clock was started by
mistake, or if you ended up working on something else.
-@kindex C-c C-x C-j
-@item C-c C-x C-j
-Jump to the entry that contains the currently running clock. With a
-@kbd{C-u} prefix arg, select the target task from a list of recently clocked
-tasks.
-@kindex C-c C-x C-d
-@item C-c C-x C-d
+@orgcmd{C-c C-x C-j,org-clock-goto}
+Jump to the headline of the currently clocked in task. With a @kbd{C-u}
+prefix arg, select the target task from a list of recently clocked tasks.
+@orgcmd{C-c C-x C-d,org-clock-display}
@vindex org-remove-highlights-with-change
Display time summaries for each subtree in the current buffer. This
puts overlays at the end of each headline, showing the total time
@@ -5449,24 +5747,60 @@ recorded under that heading, including the time of any subheadings. You
can use visibility cycling to study the tree, but the overlays disappear
when you change the buffer (see variable
@code{org-remove-highlights-with-change}) or press @kbd{C-c C-c}.
-@kindex C-c C-x C-r
-@item C-c C-x C-r
+@end table
+
+The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
+the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
+worked on or closed during a day.
+
+@node The clock table, Resolving idle time, Clocking commands, Clocking work time
+@subsection The clock table
+@cindex clocktable, dynamic block
+@cindex report, of clocked time
+
+Org mode can produce quite complex reports based on the time clocking
+information. Such a report is called a @emph{clock table}, because it is
+formatted as one or several Org tables.
+
+@table @kbd
+@orgcmd{C-c C-x C-r,org-clock-report}
Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
report as an Org-mode table into the current file. When the cursor is
at an existing clock table, just update it. When called with a prefix
argument, jump to the first clock report in the current document and
update it.
+@orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
+Update dynamic block at point. The cursor needs to be in the
+@code{#+BEGIN} line of the dynamic block.
+@orgkey{C-u C-c C-x C-u}
+Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
+you have several clock table blocks in a buffer.
+@orgcmdkxkc{S-@key{left},S-@key{right},org-clocktable-try-shift}
+Shift the current @code{:block} interval and update the table. The cursor
+needs to be in the @code{#+BEGIN: clocktable} line for this command. If
+@code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
+@end table
+
+
+Here is an example of the frame for a clock table as it is inserted into the
+buffer with the @kbd{C-c C-x C-r} command:
+
@cindex #+BEGIN, clocktable
@example
#+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
#+END: clocktable
@end example
@noindent
-If such a block already exists at point, its content is replaced by the
-new table. The @samp{BEGIN} line can specify options:
+@vindex org-clocktable-defaults
+The @samp{BEGIN} line and specify a number of options to define the scope,
+structure, and formatting of the report. Defaults for all these options can
+be configured in the variable @code{org-clocktable-defaults}.
+
+@noindent First there are options that determine which clock entries are to
+be selected:
@example
:maxlevel @r{Maximum level depth to which times are listed in the table.}
-:emphasize @r{When @code{t}, emphasize level one and level two items.}
+ @r{Clocks at deeper levels will be summed into the upper level.}
:scope @r{The scope to consider. This can be any of the following:}
nil @r{the current buffer or narrowed region}
file @r{the full current buffer}
@@ -5483,6 +5817,7 @@ new table. The @samp{BEGIN} line can specify options:
2007-12-31 @r{New year eve 2007}
2007-12 @r{December 2007}
2007-W50 @r{ISO-week 50 in 2007}
+ 2007-Q2 @r{2nd quarter in 2007}
2007 @r{the year 2007}
today, yesterday, today-@var{N} @r{a relative day}
thisweek, lastweek, thisweek-@var{N} @r{a relative week}
@@ -5493,13 +5828,33 @@ new table. The @samp{BEGIN} line can specify options:
:tend @r{A time string specifying when to stop considering times.}
:step @r{@code{week} or @code{day}, to split the table into chunks.}
@r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
+:stepskip0 @r{Do not show steps that have zero time.}
+:fileskip0 @r{Do not show table sections from files which did not contribute.}
+:tags @r{A tags match to select entries that should contribute}.
+@end example
+
+Then there are options which determine the formatting of the table. There
+options are interpreted by the function @code{org-clocktable-write-default},
+but you can specify your own function using the @code{:formatter} parameter.
+@example
+:emphasize @r{When @code{t}, emphasize level one and level two items.}
:link @r{Link the item headlines in the table to their origins.}
+:narrow @r{An integer to limit the width of the headline column in}
+ @r{the org table. If you write it like @samp{50!}, then the}
+ @r{headline will also be shortened in export.}
+:indent @r{Indent each headline field according to its level.}
+:tcolumns @r{Number of columns to be used for times. If this is smaller}
+ @r{than @code{:maxlevel}, lower levels will be lumped into one column.}
+:level @r{Should a level number column be included?}
+:compact @r{Abbreviation for @code{:level nil :indent t :narrow 40! :tcolumns 1}}
+ @r{All are overwritten except if there is an explicit @code{:narrow}}
+:timestamp @r{A timestamp for the entry, when available. Look for SCHEDULED,}
+ @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
:formula @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
@r{As a special case, @samp{:formula %} adds a column with % time.}
- @r{If you do not specify a formula here, any existing formula.}
+ @r{If you do not specify a formula here, any existing formula}
@r{below the clock table will survive updates and be evaluated.}
-:timestamp @r{A timestamp for the entry, when available. Look for SCHEDULED,}
- @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
+:formatter @r{A function to format clock data and insert it into the buffer.}
@end example
To get a clock summary of the current level 1 tree, for the current
day, you could write
@@ -5521,31 +5876,15 @@ A summary of the current subtree with % times would be
#+BEGIN: clocktable :scope subtree :link t :formula %
#+END: clocktable
@end example
-@kindex C-c C-c
-@item C-c C-c
-@kindex C-c C-x C-u
-@itemx C-c C-x C-u
-Update dynamic block at point. The cursor needs to be in the
-@code{#+BEGIN} line of the dynamic block.
-@kindex C-u C-c C-x C-u
-@item C-u C-c C-x C-u
-Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
-you have several clock table blocks in a buffer.
-@kindex S-@key{left}
-@kindex S-@key{right}
-@item S-@key{left}
-@itemx S-@key{right}
-Shift the current @code{:block} interval and update the table. The cursor
-needs to be in the @code{#+BEGIN: clocktable} line for this command. If
-@code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
-@end table
-
-The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
-the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
-worked on or closed during a day.
+A horizontally compact representation of everything clocked during last week
+would be
+@example
+#+BEGIN: clocktable :scope agenda :block lastweek :compact t
+#+END: clocktable
+@end example
-@node Resolving idle time, Effort estimates, Clocking work time, Dates and Times
-@section Resolving idle time
+@node Resolving idle time, , The clock table, Clocking work time
+@subsection Resolving idle time
@cindex resolve idle time
@cindex idle, resolve, dangling
@@ -5585,8 +5924,8 @@ use the shift key and press @kbd{S}. Remember that using shift will always
leave you clocked out, no matter which option you choose.
@item C
To cancel the clock altogether, use @kbd{C}. Note that if instead of
-cancelling you subtract the away time, and the resulting clock amount is less
-than a minute, the clock will still be cancelled rather than clutter up the
+canceling you subtract the away time, and the resulting clock amount is less
+than a minute, the clock will still be canceled rather than clutter up the
log with an empty entry.
@end table
@@ -5606,13 +5945,13 @@ If you restart Emacs and clock into any task, Org will notice that you have a
dangling clock which was never clocked out from your last session. Using
that clock's starting time as the beginning of the unaccounted-for period,
Org will ask how you want to resolve that time. The logic and behavior is
-identical to dealing with away time due to idleness, it's just happening due
+identical to dealing with away time due to idleness; it's just happening due
to a recovery event rather than a set amount of idle time.
You can also check all the files visited by your Org agenda for dangling
clocks at any time using @kbd{M-x org-resolve-clocks}.
-@node Effort estimates, Relative timer, Resolving idle time, Dates and Times
+@node Effort estimates, Relative timer, Clocking work time, Dates and Times
@section Effort estimates
@cindex effort estimates
@@ -5628,13 +5967,11 @@ used with the variable @code{org-effort-property}.}. You can set the effort
for an entry with the following commands:
@table @kbd
-@kindex C-c C-x e
-@item C-c C-x e
+@orgcmd{C-c C-x e,org-set-effort}
Set the effort estimate for the current entry. With a numeric prefix
-argument, set it to the NTH allowed value (see below). This command is also
+argument, set it to the Nth allowed value (see below). This command is also
accessible from the agenda with the @kbd{e} key.
-@kindex C-c C-x C-e
-@item C-c C-x C-e
+@orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
Modify the effort estimate of the item currently being clocked.
@end table
@@ -5677,7 +6014,7 @@ with the @kbd{/} key in the agenda (@pxref{Agenda commands}). If you have
these estimates defined consistently, two or three key presses will narrow
down the list to stuff that fits into an available time slot.
-@node Relative timer, , Effort estimates, Dates and Times
+@node Relative timer, Countdown timer, Effort estimates, Dates and Times
@section Taking notes with a relative timer
@cindex relative timer
@@ -5686,194 +6023,356 @@ be useful to have access to times relative to a starting time. Org provides
such a relative timer and make it easy to create timed notes.
@table @kbd
-@kindex C-c C-x .
-@item C-c C-x .
+@orgcmd{C-c C-x .,org-timer}
Insert a relative time into the buffer. The first time you use this, the
timer will be started. When called with a prefix argument, the timer is
restarted.
-@kindex C-c C-x -
-@item C-c C-x -
+@orgcmd{C-c C-x -,org-timer-item}
Insert a description list item with the current relative time. With a prefix
argument, first reset the timer to 0.
-@kindex M-@key{RET}
-@item M-@key{RET}
+@orgcmd{M-@key{RET},org-insert-heading}
Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
new timer items.
+@c for key sequences with a comma, command name macros fail :(
@kindex C-c C-x ,
@item C-c C-x ,
-Pause the timer, or continue it if it is already paused.
+Pause the timer, or continue it if it is already paused
+(@command{org-timer-pause-or-continue}).
@c removed the sentence because it is redundant to the following item
@kindex C-u C-c C-x ,
@item C-u C-c C-x ,
Stop the timer. After this, you can only start a new timer, not continue the
old one. This command also removes the timer from the mode line.
-@kindex C-c C-x 0
-@item C-c C-x 0
+@orgcmd{C-c C-x 0,org-timer-start}
Reset the timer without inserting anything into the buffer. By default, the
timer is reset to 0. When called with a @kbd{C-u} prefix, reset the timer to
specific starting offset. The user is prompted for the offset, with a
default taken from a timer string at point, if any, So this can be used to
restart taking notes after a break in the process. When called with a double
-prefix argument @kbd{C-c C-u}, change all timer strings in the active region
+prefix argument @kbd{C-u C-u}, change all timer strings in the active region
by a certain amount. This can be used to fix timer strings if the timer was
not started at exactly the right moment.
@end table
+@node Countdown timer, , Relative timer, Dates and Times
+@section Countdown timer
+@cindex Countdown timer
+@kindex C-c C-x ;
+@kindex ;
+
+Calling @code{org-timer-set-timer} from an Org-mode buffer runs a countdown
+timer. Use @key{;} from agenda buffers, @key{C-c C-x ;} everwhere else.
+
+@code{org-timer-set-timer} prompts the user for a duration and displays a
+countdown timer in the modeline. @code{org-timer-default-timer} sets the
+default countdown value. Giving a prefix numeric argument overrides this
+default value.
+
@node Capture - Refile - Archive, Agenda Views, Dates and Times, Top
@chapter Capture - Refile - Archive
@cindex capture
An important part of any organization system is the ability to quickly
capture new ideas and tasks, and to associate reference material with them.
-Org uses the @file{remember.el} package to create tasks, and stores files
+Org does this using a process called @i{capture}. It also can store files
related to a task (@i{attachments}) in a special directory. Once in the
system, tasks and projects need to be moved around. Moving completed project
trees to an archive file keeps the system compact and fast.
@menu
-* Remember:: Capture new tasks/ideas with little interruption
-* Attachments:: Add files to tasks.
+* Capture:: Capturing new stuff
+* Attachments:: Add files to tasks
* RSS Feeds:: Getting input from RSS feeds
* Protocols:: External (e.g. Browser) access to Emacs and Org
* Refiling notes:: Moving a tree from one place to another
* Archiving:: What to do with finished projects
@end menu
-@node Remember, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
-@section Remember
-@cindex @file{remember.el}
+@node Capture, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
+@section Capture
+@cindex capture
-The Remember package by John Wiegley lets you store quick notes with little
-interruption of your work flow. It is an excellent way to add new notes and
-tasks to Org files. The @code{remember.el} package is part of Emacs 23, not
-Emacs 22. See @uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for
-more information.
+Org's method for capturing new items is heavily inspired by John Wiegley
+excellent remember package. Up to version 6.36 Org used a special setup
+for @file{remember.el}. @file{org-remember.el} is still part of Org-mode for
+backward compatibility with existing setups. You can find the documentation
+for org-remember at @url{http://orgmode.org/org-remember.pdf}.
+
+The new capturing setup described here is preferred and should be used by new
+users. To convert your @code{org-remember-templates}, run the command
+@example
+@kbd{M-x org-capture-import-remember-templates @key{RET}}
+@end example
+@noindent and then customize the new variable with @kbd{M-x
+customize-variable org-capture-templates}, check the result, and save the
+customization. You can then use both remember and capture until
+you are familiar with the new mechanism.
-Org significantly expands the possibilities of Remember: you may define
-templates for different note types, and associate target files and headlines
-with specific templates. It also allows you to select the location where a
-note should be stored interactively, on the fly.
+Capture lets you quickly store notes with little interruption of your work
+flow. The basic process of capturing is very similar to remember, but Org
+does enhance it with templates and more.
@menu
-* Setting up Remember for Org:: Some code for .emacs to get things going
-* Remember templates:: Define the outline of different note types
-* Storing notes:: Directly get the note to where it belongs
+* Setting up capture:: Where notes will be stored
+* Using capture:: Commands to invoke and terminate capture
+* Capture templates:: Define the outline of different note types
@end menu
-@node Setting up Remember for Org, Remember templates, Remember, Remember
-@subsection Setting up Remember for Org
+@node Setting up capture, Using capture, Capture, Capture
+@subsection Setting up capture
-The following customization will tell Remember to use Org files as
-target, and to create annotations compatible with Org links.
+The following customization sets a default target file for notes, and defines
+a global key@footnote{Please select your own key, @kbd{C-c c} is only a
+suggestion.} for capturing new material.
+@vindex org-default-notes-file
@example
-(org-remember-insinuate)
-(setq org-directory "~/path/to/my/orgfiles/")
(setq org-default-notes-file (concat org-directory "/notes.org"))
-(define-key global-map "\C-cr" 'org-remember)
+(define-key global-map "\C-cc" 'org-capture)
@end example
-@noindent
-The last line binds the command @code{org-remember} to a global
-key@footnote{Please select your own key, @kbd{C-c r} is only a
-suggestion.}. @code{org-remember} basically just calls Remember,
-but it makes a few things easier: if there is an active region, it will
-automatically copy the region into the Remember buffer. It also allows
-to jump to the buffer and location where Remember notes are being
-stored: just call @code{org-remember} with a prefix argument. If you
-use two prefix arguments, Org jumps to the location where the last
-remember note was stored.
-
-The Remember buffer will actually use @code{org-mode} as its major mode, so
-that all editing features of Org mode are available. In addition to this, a
-minor mode @code{org-remember-mode} is turned on, for the single purpose that
-you can use its keymap @code{org-remember-mode-map} to overwrite some of
-Org mode's key bindings.
-
-You can also call @code{org-remember} in a special way from the agenda,
-using the @kbd{k r} key combination. With this access, any timestamps
-inserted by the selected Remember template (see below) will default to
-the cursor date in the agenda, rather than to the current date.
-
-@node Remember templates, Storing notes, Setting up Remember for Org, Remember
-@subsection Remember templates
-@cindex templates, for Remember
-
-In combination with Org, you can use templates to generate
-different types of Remember notes. For example, if you would like
-to use one template to create general TODO entries, another one for
-journal entries, and a third one for collecting random ideas, you could
-use:
-
-@example
-(setq org-remember-templates
- '(("Todo" ?t "* TODO %?\n %i\n %a" "~/org/TODO.org" "Tasks")
- ("Journal" ?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org")
- ("Idea" ?i "* %^@{Title@}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas")))
-@end example
-
-@vindex org-remember-default-headline
-@vindex org-directory
-@noindent In these entries, the first string is just a name, and the
-character specifies how to select the template. It is useful if the
-character is also the first letter of the name. The next string specifies
-the template. Two more (optional) strings give the file in which, and the
-headline under which, the new note should be stored. The file (if not
-present or @code{nil}) defaults to @code{org-default-notes-file}, the heading
-to @code{org-remember-default-headline}. If the file name is not an absolute
-path, it will be interpreted relative to @code{org-directory}.
-
-The heading can also be the symbols @code{top} or @code{bottom} to send notes
-as level 1 entries to the beginning or end of the file, respectively. It may
-also be the symbol @code{date-tree}. Then, a tree with year on level 1,
-month on level 2 and day on level three will be build in the file, and the
-entry will be filed into the tree under the current date@footnote{If the file
-contains an entry with a @code{DATE_TREE} property, the entire date tree will
-be build under that entry.}
-
-An optional sixth element specifies the contexts in which the user can select
-the template. This element can be a list of major modes or a function.
-@code{org-remember} will first check whether the function returns @code{t} or
-if we are in any of the listed major modes, and exclude templates for which
-this condition is not fulfilled. Templates that do not specify this element
-at all, or that use @code{nil} or @code{t} as a value will always be
-selectable.
-
-So for example:
-
-@example
-(setq org-remember-templates
- '(("Bug" ?b "* BUG %?\n %i\n %a" "~/org/BUGS.org" "Bugs" (emacs-lisp-mode))
- ("Journal" ?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org" "X" my-check)
- ("Idea" ?i "* %^@{Title@}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas")))
-@end example
+@node Using capture, Capture templates, Setting up capture, Capture
+@subsection Using capture
-@noindent
-The first template will only be available when invoking @code{org-remember}
-from an buffer in @code{emacs-lisp-mode}. The second template will only be
-available when the function @code{my-check} returns @code{t}. The third
-template will be proposed in any context.
+@table @kbd
+@orgcmd{C-c c,org-capture}
+Call the command @code{org-capture}. Note that this keybinding is global and
+not active by default - you need to install it. If you have templates
+defined @pxref{Capture templates}, it will offer these templates for
+selection or use a new Org outline node as the default template. It will
+insert the template into the target file and switch to an indirect buffer
+narrowed to this new node. You may then insert the information you want.
+
+@orgcmd{C-c C-c,org-capture-finalize}
+Once you have finished entering information into the capture buffer, @kbd{C-c
+C-c} will return you to the window configuration before the capture process,
+so that you can resume your work without further distraction. When called
+with a prefix arg, finalize and then jump to the captured item.
+
+@orgcmd{C-c C-w,org-capture-refile}
+Finalize the capture process by refiling (@pxref{Refiling notes}) the note to
+a different place. Please realize that this is a normal refiling command
+that will be executed---so the cursor position at the moment you run this
+command is important. If you have inserted a tree with a parent and
+children, first move the cursor back to the parent. Any prefix argument
+given to this command will be passed on to the @code{org-refile} command.
+
+@orgcmd{C-c C-k,org-capture-kill}
+Abort the capture process and return to the previous state.
+
+@end table
+
+You can also call @code{org-capture} in a special way from the agenda, using
+the @kbd{k c} key combination. With this access, any timestamps inserted by
+the selected capture template will default to the cursor date in the agenda,
+rather than to the current date.
+
+To find the locations of the last stored capture, use @code{org-capture} with
+prefix commands:
+
+@table @kbd
+@orgkey{C-u C-c c}
+Visit the target location of a cpature template. You get to select the
+template in the usual way.
+@orgkey{C-u C-u C-c c}
+Visit the last stored capture item in its buffer.
+@end table
+
+@node Capture templates, , Using capture, Capture
+@subsection Capture templates
+@cindex templates, for Capture
+
+You can use templates for different types of capture items, and
+for different target locations. The easiest way to create such templates is
+through the customize interface.
+
+@table @kbd
+@orgkey{C-c c C}
+Customize the variable @code{org-capture-templates}.
+@end table
+
+Before we give the formal description of template definitions, let's look at
+an example. Say you would like to use one template to create general TODO
+entries, and you want to put these entries under the heading @samp{Tasks} in
+your file @file{~/org/gtd.org}. Also, a date tree in the file
+@file{journal.org} should capture journal entries. A possible configuration
+would look like:
+
+@example
+(setq org-capture-templates
+ '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
+ "* TODO %?\n %i\n %a")
+ ("j" "Journal" entry (file+datetree "~/org/journal.org")
+ "* %?\nEntered on %U\n %i\n %a")))
+@end example
-When you call @kbd{M-x org-remember} (or @kbd{M-x remember}) to remember
-something, Org will prompt for a key to select the template (if you have
-more than one template) and then prepare the buffer like
+@noindent If you then press @kbd{C-c c t}, Org will prepare the template
+for you like this:
@example
* TODO
- [[file:@var{link to where you called remember}]]
+ [[file:@var{link to where you initiated capture}]]
@end example
@noindent
-During expansion of the template, special @kbd{%}-escapes@footnote{If you
-need one of these sequences literally, escape the @kbd{%} with a backslash.}
-allow dynamic insertion of content:
+During expansion of the template, @code{%a} has been replaced by a link to
+the location from where you called the capture command. This can be
+extremely useful for deriving tasks from emails, for example. You fill in
+the task definition, press @code{C-c C-c} and Org returns you to the same
+place where you started the capture process.
+
+
+@menu
+* Template elements:: What is needed for a complete template entry
+* Template expansion:: Filling in information about time and context
+@end menu
+
+@node Template elements, Template expansion, Capture templates, Capture templates
+@subsubsection Template elements
+
+Now lets look at the elements of a template definition. Each entry in
+@code{org-capture-templates} is a list with the following items:
+
+@table @var
+@item keys
+The keys that will select the template, as a string, characters
+only, for example @code{"a"} for a template to be selected with a
+single key, or @code{"bt"} for selection with two keys. When using
+several keys, keys using the same prefix key must be sequential
+in the list and preceded by a 2-element entry explaining the
+prefix key, for example
@example
+ ("b" "Templates for marking stuff to buy")
+@end example
+@noindent If you do not define a template for the @kbd{C} key, this key will
+be used to open the customize buffer for this complex variable.
+
+@item description
+A short string describing the template, which will be shown during
+selection.
+
+@item type
+The type of entry, a symbol. Valid values are:
+@table @code
+@item entry
+An Org-mode node, with a headline. Will be filed as the child of the
+target entry or as a top-level entry. The target file should be an Org-mode
+file.
+@item item
+A plain list item, placed in the first plain list at the target
+location. Again the target file should be an Org file.
+@item checkitem
+A checkbox item. This only differs from the plain list item by the
+default template.
+@item table-line
+a new line in the first table at the target location. Where exactly the
+line will be inserted depends on the properties @code{:prepend} and
+@code{:table-line-pos} (see below).
+@item plain
+Text to be inserted as it is.
+@end table
+
+@item target
+@vindex org-default-notes-file
+Specification of where the captured item should be placed. In Org-mode
+files, targets usually define a node. Entries will become children of this
+node. Other types will be added to the table or list in the body of this
+node. Most target specifications contain a file name. If that file name is
+the empty string, it defaults to @code{org-default-notes-file}.
+
+Valid values are:
+@table @code
+@item (file "path/to/file")
+Text will be placed at the beginning or end of that file.
+
+@item (id "id of existing org entry")
+Filing as child of this entry, or in the body of the entry.
+
+@item (file+headline "path/to/file" "node headline")
+Fast configuration if the target heading is unique in the file.
+
+@item (file+olp "path/to/file" "Level 1 heading" "Level 2" ...)
+For non-unique headings, the full path is safer.
+
+@item (file+regexp "path/to/file" "regexp to find location")
+Use a regular expression to position the cursor.
+
+@item (file+datetree "path/to/file")
+Will create a heading in a date tree for today's date.
+
+@item (file+datetree+prompt "path/to/file")
+Will create a heading in a date tree, but will prompt for the date.
+
+@item (file+function "path/to/file" function-finding-location)
+A function to find the right location in the file.
+
+@item (clock)
+File to the entry that is currently being clocked.
+
+@item (function function-finding-location)
+Most general way, write your own function to find both
+file and location.
+@end table
+
+@item template
+The template for creating the capture item. If you leave this empty, an
+appropriate default template will be used. Otherwise this is a string with
+escape codes, which will be replaced depending on time and context of the
+capture call. The string with escapes may be loaded from a template file,
+using the special syntax @code{(file "path/to/template")}. See below for
+more details.
+
+@item properties
+The rest of the entry is a property list of additional options.
+Recognized properties are:
+@table @code
+@item :prepend
+Normally new captured information will be appended at
+the target location (last child, last table line, last list item...).
+Setting this property will change that.
+
+@item :immediate-finish
+When set, do not offer to edit the information, just
+file it away immediately. This makes sense if the template only needs
+information that can be added automatically.
+
+@item :empty-lines
+Set this to the number of lines to insert
+before and after the new item. Default 0, only common other value is 1.
+
+@item :clock-in
+Start the clock in this item.
+
+@item :clock-resume
+If starting the capture interrupted a clock, restart that clock when finished
+with the capture.
+
+@item :unnarrowed
+Do not narrow the target buffer, simply show the full buffer. Default is to
+narrow it so that you only see the new material.
+
+@item :kill-buffer
+If the target file was not yet visited when capture was invoked, kill the
+buffer again after capture is completed.
+@end table
+@end table
+
+@node Template expansion, , Template elements, Capture templates
+@subsubsection Template expansion
+
+In the template itself, special @kbd{%}-escapes@footnote{If you need one of
+these sequences literally, escape the @kbd{%} with a backslash.} allow
+dynamic insertion of content:
+
+@comment SJE: should these sentences terminate in period?
+@smallexample
%^@{@var{prompt}@} @r{prompt the user for a string and replace this sequence with it.}
@r{You may specify a default value and a completion table with}
@r{%^@{prompt|default|completion2|completion3...@}}
@r{The arrow keys access a prompt-specific history.}
%a @r{annotation, normally the link created with @code{org-store-link}}
%A @r{like @code{%a}, but prompt for the description part}
-%i @r{initial content, the region when remember is called with C-u.}
+%i @r{initial content, the region when capture is called while the}
+ @r{region is active.}
@r{The entire text will be indented like @code{%i} itself.}
%t @r{timestamp, date only}
%T @r{timestamp with date and time}
@@ -5885,124 +6384,58 @@ allow dynamic insertion of content:
%x @r{Content of the X clipboard.}
%^C @r{Interactive selection of which kill or clip to use.}
%^L @r{Like @code{%^C}, but insert as link.}
+%k @r{title of the currently clocked task}
+%K @r{link to the currently clocked task}
%^g @r{prompt for tags, with completion on tags in target file.}
-%k @r{title of currently clocked task}
-%K @r{link to currently clocked task}
%^G @r{prompt for tags, with completion all tags in all agenda files.}
%^@{@var{prop}@}p @r{Prompt the user for a value for property @var{prop}}
%:keyword @r{specific information for certain link types, see below}
%[@var{file}] @r{insert the contents of the file given by @var{file}}
%(@var{sexp}) @r{evaluate Elisp @var{sexp} and replace with the result}
-%! @r{immediately store note after completing the template}
- @r{(skipping the @kbd{C-c C-c} that normally triggers storing)}
-%& @r{jump to target location immediately after storing note}
-@end example
+@end smallexample
@noindent
For specific link types, the following keywords will be
defined@footnote{If you define your own link types (@pxref{Adding
hyperlink types}), any property you store with
-@code{org-store-link-props} can be accessed in remember templates in a
+@code{org-store-link-props} can be accessed in capture templates in a
similar way.}:
@vindex org-from-is-user-regexp
-@example
+@smallexample
Link type | Available keywords
-------------------+----------------------------------------------
-bbdb | %:name %:company
-bbdb | %::server %:port %:nick
-vm, wl, mh, rmail | %:type %:subject %:message-id
- | %:from %:fromname %:fromaddress
- | %:to %:toname %:toaddress
- | %:fromto @r{(either "to NAME" or "from NAME")@footnote{This will always be the other, not the user. See the variable @code{org-from-is-user-regexp}.}}
-gnus | %:group, @r{for messages also all email fields}
-w3, w3m | %:url
-info | %:file %:node
-calendar | %:date"
-@end example
+bbdb | %:name %:company
+irc | %:server %:port %:nick
+vm, wl, mh, mew, rmail | %:type %:subject %:message-id
+ | %:from %:fromname %:fromaddress
+ | %:to %:toname %:toaddress
+ | %:date @r{(message date header field)}
+ | %:date-timestamp @r{(date as active timestamp)}
+ | %:date-timestamp-inactive @r{(date as inactive timestamp)}
+ | %:fromto @r{(either "to NAME" or "from NAME")@footnote{This will always be the other, not the user. See the variable @code{org-from-is-user-regexp}.}}
+gnus | %:group, @r{for messages also all email fields}
+w3, w3m | %:url
+info | %:file %:node
+calendar | %:date
+@end smallexample
@noindent
To place the cursor after template expansion use:
-@example
+@smallexample
%? @r{After completing the template, position cursor here.}
-@end example
-
-@noindent
-If you change your mind about which template to use, call
-@code{org-remember} in the remember buffer. You may then select a new
-template that will be filled with the previous context information.
-
-@node Storing notes, , Remember templates, Remember
-@subsection Storing notes
-
-@vindex org-remember-clock-out-on-exit
-When you are finished preparing a note with Remember, you have to press
-@kbd{C-c C-c} to file the note away. If you have started the clock in the
-Remember buffer, you will first be asked if you want to clock out
-now@footnote{To avoid this query, configure the variable
-@code{org-remember-clock-out-on-exit}.}. If you answer @kbd{n}, the clock
-will continue to run after the note was filed away.
-
-The handler will then store the note in the file and under the headline
-specified in the template, or it will use the default file and headline.
-The window configuration will be restored, sending you back to the working
-context before the call to Remember. To re-use the location found
-during the last call to Remember, exit the Remember buffer with
-@kbd{C-0 C-c C-c}, i.e. specify a zero prefix argument to @kbd{C-c C-c}.
-Another special case is @kbd{C-2 C-c C-c} which files the note as a child of
-the currently clocked item.
-
-@vindex org-remember-store-without-prompt
-If you want to store the note directly to a different place, use
-@kbd{C-1 C-c C-c} instead to exit Remember@footnote{Configure the
-variable @code{org-remember-store-without-prompt} to make this behavior
-the default.}. The handler will then first prompt for a target file---if
-you press @key{RET}, the value specified for the template is used.
-Then the command offers the headings tree of the selected file, with the
-cursor position at the default headline (if you specified one in the
-template). You can either immediately press @key{RET} to get the note
-placed there. Or you can use the following keys to find a different
-location:
-@example
-@key{TAB} @r{Cycle visibility.}
-@key{down} / @key{up} @r{Next/previous visible headline.}
-n / p @r{Next/previous visible headline.}
-f / b @r{Next/previous headline same level.}
-u @r{One level up.}
-@c 0-9 @r{Digit argument.}
-@end example
-@noindent
-Pressing @key{RET} or @key{left} or @key{right}
-then leads to the following result.
-
-@vindex org-reverse-note-order
-@multitable @columnfractions 0.2 0.15 0.65
-@item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
-@item on headline @tab @key{RET} @tab as sublevel of the heading at cursor, first or last
-@item @tab @tab depending on @code{org-reverse-note-order}.
-@item @tab @key{left}/@key{right} @tab as same level, before/after current heading
-@item buffer-start @tab @key{RET} @tab as level 2 heading at end of file or level 1 at beginning
-@item @tab @tab depending on @code{org-reverse-note-order}.
-@item not on headline @tab @key{RET}
- @tab at cursor position, level taken from context.
-@end multitable
-
-Before inserting the text into a tree, the function ensures that the text has
-a headline, i.e. a first line that starts with a @samp{*}. If not, a
-headline is constructed from the current date. If you have indented the text
-of the note below the headline, the indentation will be adapted if inserting
-the note into the tree requires demotion from level 1.
+@end smallexample
-@node Attachments, RSS Feeds, Remember, Capture - Refile - Archive
+@node Attachments, RSS Feeds, Capture, Capture - Refile - Archive
@section Attachments
@cindex attachments
@vindex org-attach-directory
It is often useful to associate reference material with an outline node/task.
Small chunks of plain text can simply be stored in the subtree of a project.
-Hyperlinks (@pxref{Hyperlinks}) can be used to establish associations with
+Hyperlinks (@pxref{Hyperlinks}) can establish associations with
files that live elsewhere on your computer or in the cloud, like emails or
source code files belonging to a project. Another method is @i{attachments},
which are files located in a directory belonging to an outline node. Org
@@ -6019,19 +6452,17 @@ choice to an entry. You can also make children inherit the attachment
directory from a parent, so that an entire subtree uses the same attached
directory.
-@noindent The following commands deal with attachments.
+@noindent The following commands deal with attachments:
@table @kbd
-@kindex C-c C-a
-@item C-c C-a
+@orgcmd{C-c C-a,org-attach}
The dispatcher for commands related to the attachment system. After these
-keys, a list of commands is displayed and you need to press an additional key
+keys, a list of commands is displayed and you must press an additional key
to select a command:
@table @kbd
-@kindex C-c C-a a
-@item a
+@orgcmdtkc{a,C-c C-a a,org-attach-attach}
@vindex org-attach-method
Select a file and move it into the task's attachment directory. The file
will be copied, moved, or linked, depending on @code{org-attach-method}.
@@ -6044,52 +6475,42 @@ Note that hard links are not supported on all systems.
Attach a file using the copy/move/link method.
Note that hard links are not supported on all systems.
-@kindex C-c C-a n
-@item n
+@orgcmdtkc{n,C-c C-a n,org-attach-new}
Create a new attachment as an Emacs buffer.
-@kindex C-c C-a z
-@item z
+@orgcmdtkc{z,C-c C-a z,org-attach-sync}
Synchronize the current task with its attachment directory, in case you added
attachments yourself.
-@kindex C-c C-a o
-@item o
+@orgcmdtkc{p,C-c C-a o,org-attach-open}
@vindex org-file-apps
-Open current task's attachment. If there are more than one, prompt for a
+Open current task's attachment. If there is more than one, prompt for a
file name first. Opening will follow the rules set by @code{org-file-apps}.
For more details, see the information on following hyperlinks
(@pxref{Handling links}).
-@kindex C-c C-a O
-@item O
+@orgcmdtkc{O,C-c C-a O,org-attach-open-in-emacs}
Also open the attachment, but force opening the file in Emacs.
-@kindex C-c C-a f
-@item f
+@orgcmdtkc{f,C-c C-a f,org-attach-reveal}
Open the current task's attachment directory.
-@kindex C-c C-a F
-@item F
+@orgcmdtkc{F,C-c C-a F,org-attach-reveal-in-emacs}
Also open the directory, but force using @command{dired} in Emacs.
-@kindex C-c C-a d
-@item d
+@orgcmdtkc{d,C-c C-a d,org-attach-delete-one}
Select and delete a single attachment.
-@kindex C-c C-a D
-@item D
+@orgcmdtkc{D,C-c C-a D,org-attach-delete-all}
Delete all of a task's attachments. A safer way is to open the directory in
@command{dired} and delete from there.
-@kindex C-c C-a s
-@item C-c C-a s
+@orgcmdtkc{s,C-c C-a s,org-attach-set-directory}
@cindex property, ATTACH_DIR
Set a specific directory as the entry's attachment directory. This works by
putting the directory path into the @code{ATTACH_DIR} property.
-@kindex C-c C-a i
-@item C-c C-a i
+@orgcmdtkc{i,C-c C-a i,org-attach-set-inherit}
@cindex property, ATTACH_DIR_INHERIT
Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
same directory for attachments as the parent does.
@@ -6099,31 +6520,34 @@ same directory for attachments as the parent does.
@node RSS Feeds, Protocols, Attachments, Capture - Refile - Archive
@section RSS feeds
@cindex RSS feeds
+@cindex Atom feeds
-Org has the capability to add and change entries based on information found in
-RSS feeds. You could use this to make a task out of each new podcast in a
+Org can add and change entries based on information found in RSS feeds and
+Atom feeds. You could use this to make a task out of each new podcast in a
podcast feed. Or you could use a phone-based note-creating service on the
-web to import tasks into Org. To access feeds, you need to configure the
-variable @code{org-feed-alist}. The docstring of this variable has detailed
+web to import tasks into Org. To access feeds, configure the variable
+@code{org-feed-alist}. The docstring of this variable has detailed
information. Here is just an example:
@example
(setq org-feed-alist
- '(("ReQall" "http://www.reqall.com/user/feeds/rss/a1b2c3....."
- "~/org/feeds.org" "ReQall Entries")
+ '(("Slashdot"
+ "http://rss.slashdot.org/Slashdot/slashdot"
+ "~/txt/org/feeds.org" "Slashdot Entries")))
@end example
+
@noindent
-will configure that new items from the feed provided by @file{reqall.com}
-will result in new entries in the file @file{~/org/feeds.org} under the
-heading @samp{ReQall Entries}, whenever the following command is used:
+will configure that new items from the feed provided by
+@code{rss.slashdot.org} will result in new entries in the file
+@file{~/org/feeds.org} under the heading @samp{Slashdot Entries}, whenever
+the following command is used:
@table @kbd
-@kindex C-c C-x g
+@orgcmd{C-c C-x g,org-feed-update-all}
@item C-c C-x g
Collect items from the feeds configured in @code{org-feed-alist} and act upon
them.
-@kindex C-c C-x G
-@item C-c C-x G
+@orgcmd{C-c C-x G,org-feed-goto-inbox}
Prompt for a feed name and go to the inbox configured for this feed.
@end table
@@ -6136,8 +6560,8 @@ list of drawers in that file:
#+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
@end example
-For more information, see @file{org-feed.el} and the docstring of
-@code{org-feed-alist}.
+For more information, including how to read atom feeds, see
+@file{org-feed.el} and the docstring of @code{org-feed-alist}.
@node Protocols, Refiling notes, RSS Feeds, Capture - Refile - Archive
@section Protocols for external access
@@ -6147,7 +6571,7 @@ For more information, see @file{org-feed.el} and the docstring of
You can set up Org for handling protocol calls from outside applications that
are passed to Emacs through the @file{emacsserver}. For example, you can
configure bookmarks in your web browser to send a link to the current page to
-Org and create a note from it using Remember (@pxref{Remember}). Or you
+Org and create a note from it using capture (@pxref{Capture}). Or you
could create a bookmark that will tell Emacs to open the local source file of
a remote website you are looking at with the browser. See
@uref{http://orgmode.org/worg/org-contrib/org-protocol.php} for detailed
@@ -6163,13 +6587,14 @@ right location, and then pasting the note is cumbersome. To simplify this
process, you can use the following special command:
@table @kbd
-@kindex C-c C-w
-@item C-c C-w
+@orgcmd{C-c C-w,org-refile}
@vindex org-reverse-note-order
@vindex org-refile-targets
@vindex org-refile-use-outline-path
@vindex org-outline-path-complete-in-steps
@vindex org-refile-allow-creating-parent-nodes
+@vindex org-log-refile
+@vindex org-refile-use-cache
Refile the entry or region at point. This command offers possible locations
for refiling the entry and lets you select one with completion. The item (or
all items in the region) is filed below the target heading as a subitem.
@@ -6183,14 +6608,23 @@ the variables @code{org-refile-use-outline-path} and
@code{org-outline-path-complete-in-steps}. If you would like to be able to
create new nodes as new parents for refiling on the fly, check the
variable @code{org-refile-allow-creating-parent-nodes}.
-@kindex C-u C-c C-w
-@item C-u C-c C-w
+When the variable @code{org-log-refile}@footnote{with corresponding
+@code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
+and @code{nologrefile}} is set, a time stamp or a note will be
+recorded when an entry has been refiled.
+@orgkey{C-u C-c C-w}
Use the refile interface to jump to a heading.
-@kindex C-u C-u C-c C-w
-@item C-u C-u C-c C-w
+@orgcmd{C-u C-u C-c C-w,org-refile-goto-last-stored}
Jump to the location where @code{org-refile} last moved a tree to.
@item C-2 C-c C-w
Refile as the child of the item currently being clocked.
+@item C-0 C-c C-w @ @r{or} @ C-u C-u C-u C-c C-w
+
+@orgcmdtkc{C-0 C-c C-w @ @r{or} @ C-u C-u C-u C-c C-w,C-0 C-c C-w,org-refile-cache-clear}
+
+Clear the target cache. Caching of refile targets can be turned on by
+setting @code{org-refile-use-cache}. To make the command see new possible
+targets, you have to clear the cache with this command.
@end table
@node Archiving, , Refiling notes, Capture - Refile - Archive
@@ -6203,8 +6637,7 @@ agenda. Archiving is important to keep your working files compact and global
searches like the construction of agenda views fast.
@table @kbd
-@kindex C-c C-x C-a
-@item C-c C-x C-a
+@orgcmd{C-c C-x C-a,org-archive-subtree-default}
@vindex org-archive-default-command
Archive the current entry using the command specified in the variable
@code{org-archive-default-command}.
@@ -6212,7 +6645,7 @@ Archive the current entry using the command specified in the variable
@menu
* Moving subtrees:: Moving a tree to an archive file
-* Internal archiving:: Switch off a tree but keep i in the file
+* Internal archiving:: Switch off a tree but keep it in the file
@end menu
@node Moving subtrees, Internal archiving, Archiving, Archiving
@@ -6223,14 +6656,11 @@ The most common archiving action is to move a project tree to another file,
the archive file.
@table @kbd
-@kindex C-c $
-@kindex C-c C-x C-s
-@item C-c C-x C-s@ @r{or short} @ C-c $
+@orgcmdkskc{C-c C-x C-s,C-c $,org-archive-subtree}
@vindex org-archive-location
Archive the subtree starting at the cursor position to the location
given by @code{org-archive-location}.
-@kindex C-u C-c C-x C-s
-@item C-u C-c C-x C-s
+@orgkey{C-u C-c C-x C-s}
Check if any direct children of the current headline could be moved to
the archive. To do this, each subtree is checked for open TODO entries.
If none are found, the command offers to move it to the archive
@@ -6305,31 +6735,27 @@ Archived trees are not exported (@pxref{Exporting}), only the headline
is. Configure the details using the variable
@code{org-export-with-archived-trees}.
@item
-@vindex org-columns-skip-arrchived-trees
+@vindex org-columns-skip-archived-trees
Archived trees are excluded from column view unless the variable
-@code{org-columns-skip-arrchived-trees} is configured to @code{nil}.
+@code{org-columns-skip-archived-trees} is configured to @code{nil}.
@end itemize
-The following commands help managing the ARCHIVE tag:
+The following commands help manage the ARCHIVE tag:
@table @kbd
-@kindex C-c C-x a
-@item C-c C-x a
+@orgcmd{C-c C-x a,org-toggle-archive-tag}
Toggle the ARCHIVE tag for the current headline. When the tag is set,
the headline changes to a shadowed face, and the subtree below it is
hidden.
-@kindex C-u C-c C-x a
-@item C-u C-c C-x a
+@orgkey{C-u C-c C-x a}
Check if any direct children of the current headline should be archived.
To do this, each subtree is checked for open TODO entries. If none are
found, the command offers to set the ARCHIVE tag for the child. If the
cursor is @emph{not} on a headline when this command is invoked, the
level 1 trees will be checked.
-@kindex C-@kbd{TAB}
-@item C-@kbd{TAB}
+@orgcmd{C-@kbd{TAB},org-force-cycle-archived}
Cycle a tree even if it is tagged with ARCHIVE.
-@kindex C-c C-x A
-@item C-c C-x A
+@orgcmd{C-c C-x A,org-archive-to-archive-sibling}
Move the current entry to the @emph{Archive Sibling}. This is a sibling of
the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}. The
entry becomes a child of that sibling and in this way retains a lot of its
@@ -6339,7 +6765,7 @@ outline.
@node Agenda Views, Markup, Capture - Refile - Archive, Top
-@chapter Agenda Views
+@chapter Agenda views
@cindex agenda views
Due to the way Org works, TODO items, time-stamped items, and
@@ -6422,18 +6848,15 @@ the easiest way to maintain it is through the following commands
@cindex files, adding to agenda list
@table @kbd
-@kindex C-c [
-@item C-c [
+@orgcmd{C-c [,org-agenda-to-front}
Add current file to the list of agenda files. The file is added to
the front of the list. If it was already in the list, it is moved to
the front. With a prefix argument, file is added/moved to the end.
-@kindex C-c ]
-@item C-c ]
+@orgcmd{C-c ],org-remove-file}
Remove current file from the list of agenda files.
@kindex C-,
-@kindex C-'
-@item C-,
-@itemx C-'
+@orgcmd{C-',org-cycle-agenda-files}
+@itemx C-,
Cycle through agenda file list, visiting one file after the other.
@kindex M-x org-iswitchb
@item M-x org-iswitchb
@@ -6453,16 +6876,14 @@ you may press @kbd{<} once or several times in the dispatcher
extended period, use the following commands:
@table @kbd
-@kindex C-c C-x <
-@item C-c C-x <
+@orgcmd{C-c C-x <,org-agenda-set-restriction-lock}
Permanently restrict the agenda to the current subtree. When with a
prefix argument, or with the cursor before the first headline in a file,
the agenda scope is set to the entire file. This restriction remains in
effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
or @kbd{>} in the agenda dispatcher. If there is a window displaying an
agenda view, the new restriction takes effect immediately.
-@kindex C-c C-x >
-@item C-c C-x >
+@orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
Remove the permanent restriction created by @kbd{C-c C-x <}.
@end table
@@ -6470,14 +6891,12 @@ Remove the permanent restriction created by @kbd{C-c C-x <}.
When working with @file{speedbar.el}, you can use the following commands in
the Speedbar frame:
@table @kbd
-@kindex <
-@item < @r{in the speedbar frame}
+@orgcmdtkc{< @r{in the speedbar frame},<,org-speedbar-set-agenda-restriction}
Permanently restrict the agenda to the item---either an Org file or a subtree
in such a file---at the cursor in the Speedbar frame.
If there is a window displaying an agenda view, the new restriction takes
effect immediately.
-@kindex >
-@item > @r{in the speedbar frame}
+@orgcmdtkc{> @r{in the speedbar frame},>,org-agenda-remove-restriction-lock}
Lift the restriction.
@end table
@@ -6557,18 +6976,23 @@ paper agenda, showing all the tasks for the current week or day.
@table @kbd
@cindex org-agenda, command
-@kindex C-c a a
-@item C-c a a
-@vindex org-agenda-ndays
+@orgcmd{C-c a a,org-agenda-list}
Compile an agenda for the current week from a list of Org files. The agenda
shows the entries for each day. With a numeric prefix@footnote{For backward
compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
listed before the agenda. This feature is deprecated, use the dedicated TODO
list, or a block agenda instead (@pxref{Block agenda}).} (like @kbd{C-u 2 1
-C-c a a}) you may set the number of days to be displayed (see also the
-variable @code{org-agenda-ndays})
+C-c a a}) you may set the number of days to be displayed.
@end table
+@vindex org-agenda-span
+@vindex org-agenda-ndays
+The default number of days displayed in the agenda is set by the variable
+@code{org-agenda-span} (or the obsolete @code{org-agenda-ndays}). This
+variable can be set to any number of days you want to see by default in the
+agenda, or to a span name, such a @code{day}, @code{week}, @code{month} or
+@code{year}.
+
Remote editing from the agenda buffer means, for example, that you can
change the dates of deadlines and appointments from the agenda buffer.
The commands available in the Agenda buffer are listed in @ref{Agenda
@@ -6586,7 +7010,7 @@ anniversaries, lunar phases, sunrise/set, recurrent appointments
Org. It can be very useful to combine output from Org with
the diary.
-In order to include entries from the Emacs diary into Org mode's
+In order to include entries from the Emacs diary into Org-mode's
agenda, you only need to customize the variable
@lisp
@@ -6595,7 +7019,7 @@ agenda, you only need to customize the variable
@noindent After that, everything will happen automatically. All diary
entries including holidays, anniversaries, etc., will be included in the
-agenda buffer created by Org mode. @key{SPC}, @key{TAB}, and
+agenda buffer created by Org-mode. @key{SPC}, @key{TAB}, and
@key{RET} can be used from the agenda buffer to jump to the diary
file in order to edit existing diary entries. The @kbd{i} command to
insert new entries for the current date works in the agenda buffer, as
@@ -6606,7 +7030,7 @@ between calendar and agenda.
If you are using the diary only for sexp entries and holidays, it is
faster to not use the above setting, but instead to copy or even move
-the entries into an Org file. Org mode evaluates diary-style sexp
+the entries into an Org file. Org-mode evaluates diary-style sexp
entries, and does it faster because there is no overhead for first
creating the diary display. Note that the sexp entries must start at
the left margin, no whitespace is allowed before them. For example,
@@ -6618,8 +7042,8 @@ will be made in the agenda:
#+CATEGORY: Holiday
%%(org-calendar-holiday) ; special function for holiday names
#+CATEGORY: Ann
-%%(diary-anniversary 14 5 1956) Arthur Dent is %d years old
-%%(diary-anniversary 2 10 1869) Mahatma Gandhi would be %d years old
+%%(diary-anniversary 5 14 1956)@footnote{Note that the order of the arguments (month, day, year) depends on the setting of @code{calendar-date-style}.} Arthur Dent is %d years old
+%%(diary-anniversary 10 2 1869) Mahatma Gandhi would be %d years old
@end example
@subsubheading Anniversaries from BBDB
@@ -6636,7 +7060,7 @@ following to one your your agenda files:
* Anniversaries
:PROPERTIES:
:CATEGORY: Anniv
- :END
+ :END:
%%(org-bbdb-anniversaries)
@end example
@@ -6679,22 +7103,20 @@ The global TODO list contains all unfinished TODO items formatted and
collected into a single place.
@table @kbd
-@kindex C-c a t
-@item C-c a t
-Show the global TODO list. This collects the TODO items from all
-agenda files (@pxref{Agenda Views}) into a single buffer. The buffer is in
-@code{agenda-mode}, so there are commands to examine and manipulate
-the TODO entries directly from that buffer (@pxref{Agenda commands}).
-@kindex C-c a T
-@item C-c a T
+@orgcmd{C-c a t,org-todo-list}
+Show the global TODO list. This collects the TODO items from all agenda
+files (@pxref{Agenda Views}) into a single buffer. By default, this lists
+items with a state the is not a DONE state. The buffer is in
+@code{agenda-mode}, so there are commands to examine and manipulate the TODO
+entries directly from that buffer (@pxref{Agenda commands}).
+@orgcmd{C-c a T,org-todo-list}
@cindex TODO keyword matching
@vindex org-todo-keywords
-Like the above, but allows selection of a specific TODO keyword. You
-can also do this by specifying a prefix argument to @kbd{C-c a t}. With
-a @kbd{C-u} prefix you are prompted for a keyword, and you may also
-specify several keywords by separating them with @samp{|} as the boolean OR
-operator. With a numeric prefix, the nth keyword in
-@code{org-todo-keywords} is selected.
+Like the above, but allows selection of a specific TODO keyword. You can
+also do this by specifying a prefix argument to @kbd{C-c a t}. You are
+prompted for a keyword, and you may also specify several keywords by
+separating them with @samp{|} as the boolean OR operator. With a numeric
+prefix, the Nth keyword in @code{org-todo-keywords} is selected.
@kindex r
The @kbd{r} key in the agenda buffer regenerates it, and you can give
a prefix argument to this command to change the selected TODO keyword,
@@ -6716,13 +7138,15 @@ it more compact:
@item
@vindex org-agenda-todo-ignore-scheduled
@vindex org-agenda-todo-ignore-deadlines
+@vindex org-agenda-todo-ignore-timestamp
@vindex org-agenda-todo-ignore-with-date
Some people view a TODO item that has been @emph{scheduled} for execution or
have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
Configure the variables @code{org-agenda-todo-ignore-scheduled},
-@code{org-agenda-todo-ignore-deadlines}, and/or
-@code{org-agenda-todo-ignore-with-date} to exclude such items from the
-global TODO list.
+@code{org-agenda-todo-ignore-deadlines},
+@code{org-agenda-todo-ignore-timestamp} and/or
+@code{org-agenda-todo-ignore-with-date} to exclude such items from the global
+TODO list.
@item
@vindex org-agenda-todo-list-sublevels
TODO items may have sublevels to break up the task into subtasks. In
@@ -6745,22 +7169,21 @@ syntax described here also applies when creating sparse trees with @kbd{C-c /
m}.
@table @kbd
-@kindex C-c a m
-@item C-c a m
+@orgcmd{C-c a m,org-tags-view}
Produce a list of all headlines that match a given set of tags. The
command prompts for a selection criterion, which is a boolean logic
expression with tags, like @samp{+work+urgent-withboss} or
@samp{work|home} (@pxref{Tags}). If you often need a specific search,
define a custom command for it (@pxref{Agenda dispatcher}).
-@kindex C-c a M
-@item C-c a M
+@orgcmd{C-c a M,org-tags-view}
@vindex org-tags-match-list-sublevels
@vindex org-agenda-tags-todo-honor-ignore-options
-Like @kbd{C-c a m}, but only select headlines that are also TODO items and
-force checking subitems (see variable @code{org-tags-match-list-sublevels}).
-To exclude scheduled/deadline items, see the variable
-@code{org-agenda-tags-todo-honor-ignore-options}. Matching specific TODO
-keywords together with a tags match is also possible, see @ref{Tag searches}.
+Like @kbd{C-c a m}, but only select headlines that are also TODO items in a
+not-DONE state and force checking subitems (see variable
+@code{org-tags-match-list-sublevels}). To exclude scheduled/deadline items,
+see the variable @code{org-agenda-tags-todo-honor-ignore-options}. Matching
+specific TODO keywords together with a tags match is also possible, see
+@ref{Tag searches}.
@end table
The commands available in the tags list are described in @ref{Agenda
@@ -6865,7 +7288,7 @@ other properties will slow down the search. However, once you have paid the
price by accessing one property, testing additional properties is cheap
again.
-You can configure Org mode to use property inheritance during a search, but
+You can configure Org-mode to use property inheritance during a search, but
beware that this can slow down searches considerably. See @ref{Property
inheritance}, for details.
@@ -6874,12 +7297,13 @@ different way to test TODO states in a search. For this, terminate the
tags/property part of the search string (which may include several terms
connected with @samp{|}) with a @samp{/} and then specify a Boolean
expression just for TODO keywords. The syntax is then similar to that for
-tags, but should be applied with care: for example, a positive
-selection on several TODO keywords cannot meaningfully be combined with
-boolean AND. However, @emph{negative selection} combined with AND can be
-meaningful. To make sure that only lines are checked that actually have any
-TODO keyword (resulting in a speed-up), use @kbd{C-c a M}, or equivalently
-start the TODO part after the slash with @samp{!}. Examples:
+tags, but should be applied with care: for example, a positive selection on
+several TODO keywords cannot meaningfully be combined with boolean AND.
+However, @emph{negative selection} combined with AND can be meaningful. To
+make sure that only lines are checked that actually have any TODO keyword
+(resulting in a speed-up), use @kbd{C-c a M}, or equivalently start the TODO
+part after the slash with @samp{!}. Using @kbd{C-c a M} or @samp{/!} will
+not match TODO keywords in a DONE state. Examples:
@table @samp
@item work/WAITING
@@ -6897,13 +7321,12 @@ Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
@cindex timeline, single file
@cindex time-sorted view
-The timeline summarizes all time-stamped items from a single Org mode
+The timeline summarizes all time-stamped items from a single Org-mode
file in a @emph{time-sorted view}. The main purpose of this command is
to give an overview over events in a project.
@table @kbd
-@kindex C-c a L
-@item C-c a L
+@orgcmd{C-c a L,org-timeline}
Show a time-sorted view of the Org file, with all time-stamped items.
When called with a @kbd{C-u} prefix, all unfinished TODO entries
(scheduled or not) are also listed under the current date.
@@ -6919,12 +7342,11 @@ The commands available in the timeline buffer are listed in
@cindex text search
@cindex searching, for text
-This agenda view is a general text search facility for Org mode entries.
+This agenda view is a general text search facility for Org-mode entries.
It is particularly useful to find notes.
@table @kbd
-@kindex C-c a s
-@item C-c a s
+@orgcmd{C-c a s,org-search-view}
This is a special search that lets you select entries by matching a substring
or specific words using a boolean logic.
@end table
@@ -6936,7 +7358,9 @@ logic. The search string @samp{+computer +wifi -ethernet -@{8\.11[bg]@}}
will search for note entries that contain the keywords @code{computer}
and @code{wifi}, but not the keyword @code{ethernet}, and which are also
not matched by the regular expression @code{8\.11[bg]}, meaning to
-exclude both 8.11b and 8.11g.
+exclude both 8.11b and 8.11g. The first @samp{+} is necessary to turn on
+word search, other @samp{+} characters are optional. For more details, see
+the docstring of the command @code{org-search-view}.
@vindex org-agenda-text-search-extra-files
Note that in addition to the agenda files, this command will also search
@@ -6949,12 +7373,11 @@ If you are following a system like David Allen's GTD to organize your
work, one of the ``duties'' you have is a regular review to make sure
that all projects move along. A @emph{stuck} project is a project that
has no defined next actions, so it will never show up in the TODO lists
-Org mode produces. During the review, you need to identify such
+Org-mode produces. During the review, you need to identify such
projects and define next actions for them.
@table @kbd
-@kindex C-c a #
-@item C-c a #
+@orgcmd{C-c a #,org-agenda-list-stuck-projects}
List projects that are stuck.
@kindex C-c a !
@item C-c a !
@@ -6968,7 +7391,7 @@ work for you. The built-in default assumes that all your projects are
level-2 headlines, and that a project is not stuck if it has at least
one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
-Let's assume that you, in your own way of using Org mode, identify
+Let's assume that you, in your own way of using Org-mode, identify
projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
indicate a project that should not be considered yet. Let's further
assume that the TODO keyword DONE marks finished projects, and that NEXT
@@ -6995,7 +7418,7 @@ will still be searched for stuck projects.
@cindex presentation, of agenda items
@vindex org-agenda-prefix-format
-Before displaying items in an agenda view, Org mode visually prepares
+Before displaying items in an agenda view, Org-mode visually prepares
the items and sorts them. Each item occupies a single line. The line
starts with a @emph{prefix} that contains the @emph{category}
(@pxref{Categories}) of the item and other important information. You can
@@ -7013,6 +7436,7 @@ associated with the item.
@subsection Categories
@cindex category
+@cindex #+CATEGORY
The category is a broad label assigned to each agenda item. By default,
the category is simply derived from the file name, but you can also
specify it with a special line in the buffer, like this@footnote{For
@@ -7038,11 +7462,15 @@ special category you want to apply as the value.
The display in the agenda buffer looks best if the category is not
longer than 10 characters.
+@noindent
+You can set up icons for category by customizing the
+@code{org-agenda-category-icon-alist} variable.
+
@node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
@subsection Time-of-day specifications
@cindex time-of-day specification
-Org mode checks each agenda item for a time-of-day specification. The
+Org-mode checks each agenda item for a time-of-day specification. The
time can be part of the timestamp that triggered inclusion into the
agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
ranges can be specified with two timestamps, like
@@ -7054,7 +7482,7 @@ plain text (like @samp{12:45} or a @samp{8:30-1pm}). If the agenda
integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
specifications in diary entries are recognized as well.
-For agenda display, Org mode extracts the time and displays it in a
+For agenda display, Org-mode extracts the time and displays it in a
standard 24 hour format as part of the prefix. The example times in
the previous paragraphs would end up in the agenda like this:
@@ -7140,40 +7568,26 @@ the other commands, the cursor needs to be in the desired line.
@table @kbd
@tsubheading{Motion}
@cindex motion commands in agenda
-@kindex n
-@item n
+@orgcmd{n,org-agenda-next-line}
Next line (same as @key{up} and @kbd{C-p}).
-@kindex p
-@item p
+@orgcmd{p,org-agenda-previous-line}
Previous line (same as @key{down} and @kbd{C-n}).
@tsubheading{View/Go to Org file}
-@kindex mouse-3
-@kindex @key{SPC}
-@item mouse-3
-@itemx @key{SPC}
+@orgcmdkkc{@key{SPC},mouse-3,org-agenda-show-and-scroll-up}
Display the original location of the item in another window.
With prefix arg, make sure that the entire entry is made visible in the
outline, not only the heading.
@c
-@kindex L
-@item L
+@orgcmd{L,org-agenda-recenter}
Display original location and recenter that window.
@c
-@kindex mouse-2
-@kindex mouse-1
-@kindex @key{TAB}
-@item mouse-2
-@itemx mouse-1
-@itemx @key{TAB}
-Go to the original location of the item in another window. Under Emacs
-22, @kbd{mouse-1} will also works for this.
+@orgcmdkkc{@key{TAB},mouse-2,org-agenda-goto}
+Go to the original location of the item in another window.
@c
-@kindex @key{RET}
-@itemx @key{RET}
+@orgcmd{@key{RET},org-agenda-switch-to}
Go to the original location of the item and delete other windows.
@c
-@kindex F
-@item F
+@orgcmd{F,org-agenda-follow-mode}
@vindex org-agenda-start-with-follow-mode
Toggle Follow mode. In Follow mode, as you move the cursor through
the agenda buffer, the other window always shows the corresponding
@@ -7181,15 +7595,13 @@ location in the Org file. The initial setting for this mode in new
agenda buffers can be set with the variable
@code{org-agenda-start-with-follow-mode}.
@c
-@kindex C-c C-x b
-@item C-c C-x b
+@orgcmd{C-c C-x b,org-agenda-tree-to-indirect-buffer}
Display the entire subtree of the current item in an indirect buffer. With a
numeric prefix argument N, go up to level N and then take that tree. If N is
negative, go up that many levels. With a @kbd{C-u} prefix, do not remove the
previously used indirect buffer.
-@kindex C-c C-o
-@item C-c C-o
+@orgcmd{C-c C-o,org-agenda-open-link}
Follow a link in the entry. This will offer a selection of any links in the
text belonging to the referenced Org node. If there is only one link, it
will be followed without a selection prompt.
@@ -7200,16 +7612,20 @@ will be followed without a selection prompt.
@item o
Delete other windows.
@c
-@kindex v d
-@kindex d
-@kindex v w
-@kindex w
-@kindex v m
-@kindex v y
-@item v d @ @r{or short} @ d
-@itemx v w @ @r{or short} @ w
-@itemx v m
-@itemx v y
+@c @kindex v d
+@c @kindex d
+@c @kindex v w
+@c @kindex w
+@c @kindex v m
+@c @kindex v y
+@c @item v d @ @r{or short} @ d
+@c @itemx v w @ @r{or short} @ w
+@c @itemx v m
+@c @itemx v y
+@orgcmdkskc{v d,d,org-aganda-day-view}
+@xorgcmdkskc{v w,w,org-aganda-day-view}
+@xorgcmd{v m,org-agenda-month-view}
+@xorgcmd{v y,org-agenda-month-year}
Switch to day/week/month/year view. When switching to day or week view,
this setting becomes the default for subsequent agenda commands. Since
month and year views are slow to create, they do not become the default.
@@ -7221,32 +7637,28 @@ argument as well. For example, @kbd{200712 w} will jump to week 12 in
2007. If such a year specification has only one or two digits, it will
be mapped to the interval 1938-2037.
@c
-@kindex f
-@item f
-@vindex org-agenda-ndays
-Go forward in time to display the following @code{org-agenda-ndays} days.
+@orgcmd{f,org-agenda-later}
+Go forward in time to display the following @code{org-agenda-current-span} days.
For example, if the display covers a week, switch to the following week.
-With prefix arg, go forward that many times @code{org-agenda-ndays} days.
+With prefix arg, go forward that many times @code{org-agenda-current-span} days.
@c
-@kindex b
-@item b
+@orgcmd{b,org-agenda-earlier}
Go backward in time to display earlier dates.
@c
-@kindex .
-@item .
+@orgcmd{.,org-agenda-goto-today}
Go to today.
@c
-@kindex j
-@item j
+@orgcmd{j,org-agenda-goto-date}
Prompt for a date and go there.
@c
-@kindex D
-@item D
+@orgcmd{J,org-agenda-clock-goto}
+Go to the currently clocked-in task @i{in the agenda buffer}.
+@c
+@orgcmd{D,org-agenda-toggle-diary}
Toggle the inclusion of diary entries. See @ref{Weekly/daily agenda}.
@c
-@kindex v l
-@kindex l
-@item v l @ @r{or short} @ l
+@orgcmdkskc{v l,l,org-agenda-log-mode}
+@kindex v L
@vindex org-log-done
@vindex org-agenda-log-mode-items
Toggle Logbook mode. In Logbook mode, entries that were marked DONE while
@@ -7256,35 +7668,31 @@ types that should be included in log mode using the variable
@code{org-agenda-log-mode-items}. When called with a @kbd{C-u} prefix, show
all possible logbook entries, including state changes. When called with two
prefix args @kbd{C-u C-u}, show only logging information, nothing else.
+@kbd{v L} is equivalent to @kbd{C-u v l}.
@c
-@kindex v [
-@kindex [
-@item v [ @ @r{or short} @ [
+@orgcmdkskc{v [,[,org-agenda-manipulate-query-add}
Include inactive timestamps into the current view. Only for weekly/daily
agenda and timeline views.
@c
-@kindex v a
-@kindex v A
-@item v a
-@itemx v A
+@orgcmd{v a,org-agenda-archives-mode}
+@xorgcmd{v A,org-agenda-archives-mode 'files}
Toggle Archives mode. In Archives mode, trees that are marked
@code{ARCHIVED} are also scanned when producing the agenda. When you use the
capital @kbd{A}, even all archive files are included. To exit archives mode,
press @kbd{v a} again.
@c
-@kindex v R
-@kindex R
-@item v R @ @r{or short} @ R
+@orgcmdkskc{v R,R,org-agenda-clockreport-mode}
@vindex org-agenda-start-with-clockreport-mode
Toggle Clockreport mode. In Clockreport mode, the daily/weekly agenda will
always show a table with the clocked times for the timespan and file scope
covered by the current agenda view. The initial setting for this mode in new
agenda buffers can be set with the variable
-@code{org-agenda-start-with-clockreport-mode}.
+@code{org-agenda-start-with-clockreport-mode}. By using a prefix argument
+when toggling this mode (i.e. @kbd{C-u R}), the clock table will not show
+contributions from entries that are hidden by agenda filtering@footnote{Only
+tags filtering will be respected here, effort filtering is ignored.}.
@c
-@kindex v E
-@kindex E
-@item v E @ @r{or short} @ E
+@orgcmdkskc{v E,E,org-agenda-entry-text-mode}
@vindex org-agenda-start-with-entry-text-mode
@vindex org-agenda-entry-text-maxlines
Toggle entry text mode. In entry text mode, a number of lines from the Org
@@ -7293,33 +7701,26 @@ The maximum number of lines is given by the variable
@code{org-agenda-entry-text-maxlines}. Calling this command with a numeric
prefix argument will temporarily modify that number to the prefix value.
@c
-@kindex G
-@item G
+@orgcmd{G,org-agenda-toggle-time-grid}
@vindex org-agenda-use-time-grid
@vindex org-agenda-time-grid
Toggle the time grid on and off. See also the variables
@code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
@c
-@kindex r
-@item r
+@orgcmd{r,org-agenda-rodo}
Recreate the agenda buffer, for example to reflect the changes after
modification of the timestamps of items with @kbd{S-@key{left}} and
@kbd{S-@key{right}}. When the buffer is the global TODO list, a prefix
argument is interpreted to create a selective list for a specific TODO
keyword.
-@kindex g
-@item g
+@orgcmd{g,org-agenda-rodo}
Same as @kbd{r}.
@c
-@kindex s
-@kindex C-x C-s
-@item s
-@itemx C-x C-s
+@orgcmdkskc{C-x C-s,s,org-save-all-org-buffers}
Save all Org buffers in the current Emacs session, and also the locations of
IDs.
@c
-@kindex C-c C-x C-c
-@item C-c C-x C-c
+@orgcmd{C-c C-x C-c,org-agenda-columns}
@vindex org-columns-default-format
Invoke column view (@pxref{Column view}) in the agenda buffer. The column
view format is taken from the entry at point, or (if there is no entry at
@@ -7328,8 +7729,7 @@ that entry would be in the original buffer (taken from a property, from a
@code{#+COLUMNS} line, or from the default variable
@code{org-columns-default-format}), will be used in the agenda.
-@kindex C-c C-x >
-@item C-c C-x >
+@orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
Remove the restriction lock on the agenda, if it is currently restricted to a
file or subtree (@pxref{Agenda files}).
@@ -7339,18 +7739,19 @@ file or subtree (@pxref{Agenda files}).
@cindex effort filtering, in agenda
@cindex query editing, in agenda
-@kindex /
-@item /
+@orgcmd{/,org-agenda-filter-by-tag}
@vindex org-agenda-filter-preset
Filter the current agenda view with respect to a tag and/or effort estimates.
The difference between this and a custom agenda command is that filtering is
very fast, so that you can switch quickly between different filters without
-having to recreate the agenda@footnote{Custom commands can preset a filter by
+having to recreate the agenda.@footnote{Custom commands can preset a filter by
binding the variable @code{org-agenda-filter-preset} as an option. This
filter will then be applied to the view and persist as a basic filter through
-refreshes and more secondary filtering.}
+refreshes and more secondary filtering. The filter is a global property of
+the entire agenda view---in a block agenda, you should only set this in the
+global options section, not in the section of an individual block.}
-You will be prompted for a tag selection letter, SPC will mean any tag at
+You will be prompted for a tag selection letter; @key{SPC} will mean any tag at
all. Pressing @key{TAB} at that prompt will offer use completion to select a
tag (including any tags that do not have a selection character). The command
then hides all entries that do not contain or inherit this tag. When called
@@ -7362,7 +7763,7 @@ Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
immediately use the @kbd{\} command.
@vindex org-sort-agenda-noeffort-is-high
-In order to filter for effort estimates, you should set-up allowed
+In order to filter for effort estimates, you should set up allowed
efforts globally, for example
@lisp
(setq org-global-properties
@@ -7405,13 +7806,13 @@ Internet, and outside of business hours, with something like this:
@end group
@end lisp
-@kindex \
-@item \
+@orgcmd{\,org-agenda-filter-by-tag-refine}
Narrow the current agenda filter by an additional condition. When called with
prefix arg, remove the entries that @emph{do} have the tag, or that do match
the effort criterion. You can achieve the same effect by pressing @kbd{+} or
@kbd{-} as the first key after the @kbd{/} command.
+@c
@kindex [
@kindex ]
@kindex @{
@@ -7427,7 +7828,6 @@ negative search term which @i{must not} occur/match in the entry for it to be
selected.
@end table
-@page
@tsubheading{Remote editing}
@cindex remote editing, from agenda
@@ -7436,114 +7836,89 @@ Digit argument.
@c
@cindex undoing remote-editing events
@cindex remote editing, undo
-@kindex C-_
-@item C-_
+@orgcmd{C-_,org-agenda-undo}
Undo a change due to a remote editing command. The change is undone
both in the agenda buffer and in the remote buffer.
@c
-@kindex t
-@item t
+@orgcmd{t,org-agenda-todo}
Change the TODO state of the item, both in the agenda and in the
original org file.
@c
-@kindex C-S-@key{right}
-@kindex C-S-@key{left}
-@item C-S-@key{right}@r{/}@key{left}
+@orgcmd{C-S-@key{right},org-agenda-todo-nextset}
+@orgcmd{C-S-@key{left},org-agenda-todo-previousset}
Switch to the next/previous set of TODO keywords.
@c
-@kindex C-k
-@item C-k
+@orgcmd{C-k,org-agenda-kill}
@vindex org-agenda-confirm-kill
Delete the current agenda item along with the entire subtree belonging
to it in the original Org file. If the text to be deleted remotely
is longer than one line, the kill needs to be confirmed by the user. See
variable @code{org-agenda-confirm-kill}.
@c
-@kindex C-c C-w
-@item C-c C-w
+@orgcmd{C-c C-w,org-agenda-refile}
Refile the entry at point.
@c
-@kindex C-c C-x C-a
-@kindex a
-@item C-c C-x C-a @ @r{or short} @ a
+@orgcmdkskc{C-c C-x C-a,a,org-agenda-archive-default-with-confirmation}
@vindex org-archive-default-command
Archive the subtree corresponding to the entry at point using the default
archiving command set in @code{org-archive-default-command}. When using the
@code{a} key, confirmation will be required.
@c
-@kindex C-c C-x a
-@item C-c C-x a
+@orgcmd{C-c C-x a,org-agenda-toggle-archive-tag}
Toggle the ARCHIVE tag for the current headline.
@c
-@kindex C-c C-x A
-@item C-c C-x A
+@orgcmd{C-c C-x A,org-agenda-archive-to-archive-sibling}
Move the subtree corresponding to the current entry to its @emph{archive
sibling}.
@c
-@kindex $
-@kindex C-c C-x C-s
-@item C-c C-x C-s @ @r{or short} @ $
+@orgcmdkskc{C-c C-x C-s,$,org-agenda-archive}
Archive the subtree corresponding to the current headline. This means the
entry will be moved to the configured archive location, most likely a
different file.
@c
-@kindex T
-@item T
+@orgcmd{T,org-agenda-show-tags}
@vindex org-agenda-show-inherited-tags
Show all tags associated with the current item. This is useful if you have
turned off @code{org-agenda-show-inherited-tags}, but still want to see all
tags of a headline occasionally.
@c
-@kindex :
-@item :
+@orgcmd{:,org-agenda-set-tags}
Set tags for the current headline. If there is an active region in the
agenda, change a tag for all headings in the region.
@c
@kindex ,
@item ,
-Set the priority for the current item. Org mode prompts for the
-priority character. If you reply with @key{SPC}, the priority cookie
-is removed from the entry.
+Set the priority for the current item (@command{org-agenda-priority}).
+Org-mode prompts for the priority character. If you reply with @key{SPC}, the
+priority cookie is removed from the entry.
@c
-@kindex P
-@item P
+@orgcmd{P,org-agenda-show-priority}
Display weighted priority of current item.
@c
-@kindex +
-@kindex S-@key{up}
-@item +
-@itemx S-@key{up}
+@orgcmdkkc{+,S-@key{up},org-agenda-priority-up}
Increase the priority of the current item. The priority is changed in
the original buffer, but the agenda is not resorted. Use the @kbd{r}
key for this.
@c
-@kindex -
-@kindex S-@key{down}
-@item -
-@itemx S-@key{down}
+@orgcmdkkc{-,S-@key{down},org-agenda-priority-down}
Decrease the priority of the current item.
@c
-@kindex z
-@item z
+@orgcmdkkc{z,C-c C-z,org-agenda-add-note}
@vindex org-log-into-drawer
-Add a note to the entry. This note will be recorded, and then files to the
+Add a note to the entry. This note will be recorded, and then filed to the
same location where state change notes are put. Depending on
-@code{org-log-into-drawer}, this maybe inside a drawer.
+@code{org-log-into-drawer}, this may be inside a drawer.
@c
-@kindex C-c C-a
-@item C-c C-a
+@orgcmd{C-c C-a,org-attach}
Dispatcher for all command related to attachments.
@c
-@kindex C-c C-s
-@item C-c C-s
-Schedule this item
+@orgcmd{C-c C-s,org-agenda-schedule}
+Schedule this item. With prefix arg remove the scheduling timestamp
@c
-@kindex C-c C-d
-@item C-c C-d
-Set a deadline for this item.
+@orgcmd{C-c C-d,org-agenda-deadline}
+Set a deadline for this item. With prefix arg remove the deadline.
@c
-@kindex k
-@item k
+@orgcmd{k,org-agenda-action}
Agenda actions, to set dates for selected items to the cursor date.
This command also works in the calendar! The command prompts for an
additional key:
@@ -7552,14 +7927,13 @@ m @r{Mark the entry at point for action. You can also make entries}
@r{in Org files with @kbd{C-c C-x C-k}.}
d @r{Set the deadline of the marked entry to the date at point.}
s @r{Schedule the marked entry at the date at point.}
-r @r{Call @code{org-remember} with the cursor date as default date.}
+r @r{Call @code{org-capture} with the cursor date as default date.}
@end example
@noindent
Press @kbd{r} afterward to refresh the agenda and see the effect of the
command.
@c
-@kindex S-@key{right}
-@item S-@key{right}
+@orgcmd{S-@key{right},org-agenda-do-date-later}
Change the timestamp associated with the current line by one day into the
future. With a numeric prefix argument, change it by that many days. For
example, @kbd{3 6 5 S-@key{right}} will change it by a year. With a
@@ -7569,56 +7943,48 @@ a double @kbd{C-u C-u} prefix, do the same for changing minutes. The stamp
is changed in the original Org file, but the change is not directly reflected
in the agenda buffer. Use @kbd{r} or @kbd{g} to update the buffer.
@c
-@kindex S-@key{left}
-@item S-@key{left}
+@orgcmd{S-@key{left},org-agenda-do-date-earlier}
Change the timestamp associated with the current line by one day
into the past.
@c
-@kindex >
-@item >
-Change the timestamp associated with the current line to today.
-The key @kbd{>} has been chosen, because it is the same as @kbd{S-.}
-on my keyboard.
+@orgcmd{>,org-agenda-date-prompt}
+Change the timestamp associated with the current line. The key @kbd{>} has
+been chosen, because it is the same as @kbd{S-.} on my keyboard.
@c
-@kindex I
-@item I
+@orgcmd{I,org-agenda-clock-in}
Start the clock on the current item. If a clock is running already, it
is stopped first.
@c
-@kindex O
-@item O
+@orgcmd{O,org-agenda-clock-out}
Stop the previously started clock.
@c
-@kindex X
-@item X
+@orgcmd{X,org-agenda-clock-cancel}
Cancel the currently running clock.
-
-@kindex J
-@item J
+@c
+@orgcmd{J,org-agenda-clock-goto}
Jump to the running clock in another window.
@tsubheading{Bulk remote editing selected entries}
@cindex remote editing, bulk, from agenda
-@kindex m
-@item s
-Mark the entry at point for bulk action.
-
-@kindex u
-@item u
+@orgcmd{m,org-agenda-bulk-mark}
+Mark the entry at point for bulk action. With prefix arg, mark that many
+successive entries.
+@c
+@orgcmd{u,org-agenda-bulk-unmark}
Unmark entry for bulk action.
-
-@kindex U
-@item U
+@c
+@orgcmd{U,org-agenda-bulk-remove-all-marks}
Unmark all marked entries for bulk action.
-
-@kindex B
-@item B
+@c
+@orgcmd{B,org-agenda-bulk-action}
Bulk action: act on all marked entries in the agenda. This will prompt for
-another key to select the action to be applied:
+another key to select the action to be applied. The prefix arg to @kbd{B}
+will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
+these special timestamps.
@example
r @r{Prompt for a single refile target and move all entries. The entries}
- @r{will no longer be in the agenda, refresh (@kbd{g}) to bring them back.}
+ @r{will no longer be in the agenda; refresh (@kbd{g}) to bring them back.}
$ @r{Archive all selected entries.}
A @r{Archive entries by moving them to their respective archive siblings.}
t @r{Change TODO state. This prompts for a single TODO keyword and}
@@ -7629,23 +7995,24 @@ t @r{Change TODO state. This prompts for a single TODO keyword and}
s @r{Schedule all items to a new date. To shift existing schedule dates}
@r{by a fixed number of days, use something starting with double plus}
@r{at the prompt, for example @samp{++8d} or @samp{++2w}.}
+S @r{Reschedule randomly by N days. N will be prompted for. With prefix}
+ @r{arg (@kbd{C-u B S}), scatter only accross weekdays.}
d @r{Set deadline to a specific date.}
@end example
@tsubheading{Calendar commands}
@cindex calendar commands, from agenda
-@kindex c
-@item c
+
+@orgcmd{c,org-agenda-goto-calendar}
Open the Emacs calendar and move to the date at the agenda cursor.
@c
-@item c
-When in the calendar, compute and show the Org mode agenda for the
+@orgcmd{c,org-calendar-goto-agenda}
+When in the calendar, compute and show the Org-mode agenda for the
date at the cursor.
@c
@cindex diary entries, creating from agenda
-@kindex i
-@item i
+@orgcmd{i,org-agenda-diary-entry}
@vindex org-agenda-diary-file
Insert a new entry into the diary, using the date at the cursor and (for
block entries) the date at the mark. This will add to the Emacs diary
@@ -7658,29 +8025,25 @@ If you configure @code{org-agenda-diary-file} to point to an Org-mode file,
Org will create entries (in org-mode syntax) in that file instead. Most
entries will be stored in a date-based outline tree that will later make it
easy to archive appointments from previous months/years. The tree will be
-build under an entry with a @code{DATE_TREE} property, or else with years as
-top-level entries. Emacs will prompt you for the entry text - if you specify
+built under an entry with a @code{DATE_TREE} property, or else with years as
+top-level entries. Emacs will prompt you for the entry text---if you specify
it, the entry will be created in @code{org-agenda-diary-file} without further
interaction. If you directly press @key{RET} at the prompt without typing
text, the target file will be shown in another window for you to finish the
entry there. See also the @kbd{k r} command.
@c
-@kindex M
-@item M
+@orgcmd{M,org-agenda-phases-of-moon}
Show the phases of the moon for the three months around current date.
@c
-@kindex S
-@item S
+@orgcmd{S,org-agenda-sunrise-sunset}
Show sunrise and sunset times. The geographical location must be set
with calendar variables, see the documentation for the Emacs calendar.
@c
-@kindex C
-@item C
+@orgcmd{C,org-agenda-convert-date}
Convert the date at cursor into many other cultural and historic
calendars.
@c
-@kindex H
-@item H
+@orgcmd{H,org-agenda-holidays}
Show holidays for three months around the cursor date.
@item M-x org-export-icalendar-combine-agenda-files
@@ -7688,8 +8051,7 @@ Export a single iCalendar file containing entries from all agenda files.
This is a globally available command, and also available in the agenda menu.
@tsubheading{Exporting to a file}
-@kindex C-x C-w
-@item C-x C-w
+@orgcmd{C-x C-w,org-write-agenda}
@cindex exporting agenda views
@cindex agenda views, exporting
@vindex org-agenda-exporter-settings
@@ -7702,13 +8064,11 @@ argument, immediately open the newly created file. Use the variable
for @file{htmlize} to be used during export.
@tsubheading{Quit and Exit}
-@kindex q
-@item q
+@orgcmd{q,org-agenda-quit}
Quit agenda, remove the agenda buffer.
@c
-@kindex x
@cindex agenda files, removing buffers
-@item x
+@orgcmd{x,org-agenda-exit}
Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
for the compilation of the agenda. Buffers created by the user to
visit Org files will not be removed.
@@ -7838,7 +8198,7 @@ command @kbd{C-c a o} provides a similar view for office tasks.
@cindex options, for custom agenda views
@vindex org-agenda-custom-commands
-Org mode contains a number of variables regulating agenda construction
+Org-mode contains a number of variables regulating agenda construction
and display. The global variables define the behavior for all agenda
commands, including the custom commands. However, if you want to change
some settings just for a single custom view, you can do so. Setting
@@ -7874,7 +8234,7 @@ For command sets creating a block agenda,
@code{org-agenda-custom-commands} has two separate spots for setting
options. You can add options that should be valid for just a single
command in the set, and options that should be valid for all commands in
-the set. The former are just added to the command entry, the latter
+the set. The former are just added to the command entry; the latter
must come after the list of command entries. Going back to the block
agenda example (@pxref{Block agenda}), let's change the sorting strategy
for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
@@ -7910,7 +8270,7 @@ yourself.
@cindex agenda views, exporting
If you are away from your computer, it can be very useful to have a printed
-version of some agenda views to carry around. Org mode can export custom
+version of some agenda views to carry around. Org-mode can export custom
agenda views as plain text, HTML@footnote{You need to install Hrvoje Niksic's
@file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
ghostscript @file{ps2pdf} utility must be installed on the system. Selecting
@@ -7918,8 +8278,7 @@ a PDF file with also create the postscript file.}, and iCalendar files. If
you want to do this only occasionally, use the command
@table @kbd
-@kindex C-x C-w
-@item C-x C-w
+@orgcmd{C-x C-w,org-write-agenda}
@cindex exporting agenda views
@cindex agenda views, exporting
@vindex org-agenda-exporter-settings
@@ -7975,7 +8334,7 @@ or absolute.
@end lisp
The extension of the file name determines the type of export. If it is
-@file{.html}, Org mode will use the @file{htmlize.el} package to convert
+@file{.html}, Org-mode will use the @file{htmlize.el} package to convert
the buffer to HTML and save it to this file name. If the extension is
@file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
Postscript output. If the extension is @file{.ics}, iCalendar export is
@@ -7989,8 +8348,7 @@ Instead, there is a special command to produce @emph{all} specified
files in one step:
@table @kbd
-@kindex C-c a e
-@item C-c a e
+@orgcmd{C-c a e,org-store-agenda-views}
Export all agenda views that have export file names associated with
them.
@end table
@@ -8030,7 +8388,7 @@ or, if you need to modify some parameters@footnote{Quoting depends on the
system you use, please check the FAQ for examples.}
@example
emacs -eval '(org-batch-store-agenda-views \
- org-agenda-ndays 30 \
+ org-agenda-span month \
org-agenda-start-day "2007-11-01" \
org-agenda-include-diary nil \
org-agenda-files (quote ("~/org/project.org")))' \
@@ -8057,8 +8415,7 @@ quite useful to use column view also from the agenda, where entries are
collected by certain criteria.
@table @kbd
-@kindex C-c C-x C-c
-@item C-c C-x C-c
+@orgcmd{C-c C-x C-c,org-agenda-columns}
Turn on column view in the agenda.
@end table
@@ -8085,7 +8442,7 @@ turning on column view in the agenda will visit all relevant agenda files and
make sure that the computations of this property are up to date. This is
also true for the special @code{CLOCKSUM} property. Org will then sum the
values displayed in the agenda. In the daily/weekly agenda, the sums will
-cover a single day, in all other views they cover the entire block. It is
+cover a single day; in all other views they cover the entire block. It is
vital to realize that the agenda may show the same entry @emph{twice} (for
example as scheduled and as a deadline), and it may show two entries from the
same hierarchy (for example a @emph{parent} and its @emph{child}). In these
@@ -8108,8 +8465,8 @@ the agenda).
When exporting Org-mode documents, the exporter tries to reflect the
structure of the document as accurately as possible in the backend. Since
-export targets like HTML, La@TeX{}, or DocBook allow much richer formatting,
-Org mode has rules on how to prepare text for rich export. This section
+export targets like HTML, @LaTeX{}, or DocBook allow much richer formatting,
+Org-mode has rules on how to prepare text for rich export. This section
summarizes the markup rules used in an Org-mode buffer.
@menu
@@ -8117,6 +8474,7 @@ summarizes the markup rules used in an Org-mode buffer.
* Images and tables:: Tables and Images will be included
* Literal examples:: Source code examples with special formatting
* Include files:: Include additional files into a document
+* Index entries:: Making an index
* Macro replacement:: Use macros to create complex output
* Embedded LaTeX:: LaTeX can be freely used inside Org documents
@end menu
@@ -8201,9 +8559,9 @@ the table of contents entirely, by configuring the variable
@cindex text before first headline, markup rules
@cindex #+TEXT
-Org mode normally exports the text before the first headline, and even uses
+Org-mode normally exports the text before the first headline, and even uses
the first line as the document title. The text will be fully marked up. If
-you need to include literal HTML, La@TeX{}, or DocBook code, use the special
+you need to include literal HTML, @LaTeX{}, or DocBook code, use the special
constructs described below in the sections for the individual exporters.
@vindex org-export-skip-text-before-1st-heading
@@ -8296,7 +8654,7 @@ different backends support this to varying degrees.
You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
and @code{~verbatim~}, and, if you must, @samp{+strike-through+}. Text
in the code and verbatim string is not processed for Org-mode specific
-syntax, it is exported verbatim.
+syntax; it is exported verbatim.
@node Horizontal rules, Comment lines, Emphasis and monospace, Structural markup elements
@subheading Horizontal rules
@@ -8329,11 +8687,12 @@ Toggle the COMMENT keyword at the beginning of an entry.
@cindex tables, markup rules
@cindex #+CAPTION
@cindex #+LABEL
-Both the native Org mode tables (@pxref{Tables}) and tables formatted with
-the @file{table.el} package will be exported properly. For Org mode tables,
+Both the native Org-mode tables (@pxref{Tables}) and tables formatted with
+the @file{table.el} package will be exported properly. For Org-mode tables,
the lines before the first horizontal separator line will become table header
lines. You can use the following lines somewhere before the table to assign
-a caption and a label for cross references:
+a caption and a label for cross references, and in the text you can refer to
+the object with @code{\ref@{tab:basic-data@}}:
@example
#+CAPTION: This is the caption for the next table (or link)
@@ -8343,12 +8702,12 @@ a caption and a label for cross references:
@end example
@cindex inlined images, markup rules
-Some backends (HTML, La@TeX{}, and DocBook) allow you to directly include
+Some backends (HTML, @LaTeX{}, and DocBook) allow you to directly include
images into the exported document. Org does this, if a link to an image
files does not have a description part, for example @code{[[./img/a.jpg]]}.
If you wish to define a caption for the image and maybe a label for internal
-cross references, you sure that the link is on a line by itself precede it
-with:
+cross references, make sure that the link is on a line by itself and precede
+it with @code{#+CAPTION} and @code{#+LABEL} as follows:
@example
#+CAPTION: This is the caption for the next figure link (or table)
@@ -8360,6 +8719,7 @@ You may also define additional attributes for the figure. As this is
backend-specific, see the sections about the individual backends for more
information.
+@xref{Handling links,the discussion of image links}.
@node Literal examples, Include files, Images and tables, Markup
@section Literal examples
@@ -8391,20 +8751,31 @@ Here is an example
@cindex formatting source code, markup rules
If the example is source code from a programming language, or any other text
that can be marked up by font-lock in Emacs, you can ask for the example to
-look like the fontified Emacs buffer@footnote{Currently this works for the
-HTML backend, and requires the @file{htmlize.el} package version 1.34 or
-later. It also works for LaTeX with the listings package, if you turn on the
-option @code{org-export-latex-listings} and make sure that the listings
-package is included by the LaTeX header.}. This is done with the @samp{src}
-block, where you also need to specify the name of the major mode that should
-be used to fontify the example:
+look like the fontified Emacs buffer@footnote{This works automatically for
+the HTML backend (it requires version 1.34 of the @file{htmlize.el} package,
+which is distributed with Org). Fontified code chunks in LaTeX can be
+achieved using either the listings or the
+@url{http://code.google.com/p/minted, minted,} package. To use listings, turn
+on the variable @code{org-export-latex-listings} and ensure that the listings
+package is included by the LaTeX header (e.g. by configuring
+@code{org-export-latex-packages-alist}). See the listings documentation for
+configuration options, including obtaining colored output. For minted it is
+necessary to install the program @url{http://pygments.org, pygments}, in
+addition to setting @code{org-export-latex-minted}, ensuring that the minted
+package is included by the LaTeX header, and ensuring that the
+@code{-shell-escape} option is passed to @file{pdflatex} (see
+@code{org-latex-to-pdf-process}). See the documentation of the variables
+@code{org-export-latex-listings} and @code{org-export-latex-minted} for
+further details.}. This is done with the @samp{src} block, where you also
+need to specify the name of the major mode that should be used to fontify the
+example:
@cindex #+BEGIN_SRC
@example
#+BEGIN_SRC emacs-lisp
-(defun org-xor (a b)
- "Exclusive or."
- (if a (not b) b))
+ (defun org-xor (a b)
+ "Exclusive or."
+ (if a (not b) b))
#+END_SRC
@end example
@@ -8450,8 +8821,8 @@ Edit the source code example at point in its native mode. This works by
switching to a temporary buffer with the source code. You need to exit by
pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*}
or @samp{#} will get a comma prepended, to keep them from being interpreted
-by Org as outline nodes or special comments. These commas will be striped
-for editing with @kbd{C-c '}, and also for export.}, the edited version will
+by Org as outline nodes or special comments. These commas will be stripped
+for editing with @kbd{C-c '}, and also for export.}. The edited version will
then replace the old version in the Org buffer. Fixed-width regions
(where each line starts with a colon followed by a space) will be edited
using @code{artist-mode}@footnote{You may select a different-mode with the
@@ -8461,14 +8832,14 @@ fixed-width region.
@kindex C-c l
@item C-c l
Calling @code{org-store-link} while editing a source code example in a
-temporary buffer created with @kbd{C-c '} will prompt for a label, make sure
+temporary buffer created with @kbd{C-c '} will prompt for a label. Make sure
that it is unique in the current buffer, and insert it with the proper
formatting like @samp{(ref:label)} at the end of the current line. Then the
label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
@end table
-@node Include files, Macro replacement, Literal examples, Markup
+@node Include files, Index entries, Literal examples, Markup
@section Include files
@cindex include files, markup rules
@@ -8482,12 +8853,14 @@ include your @file{.emacs} file, you could use:
@noindent
The optional second and third parameter are the markup (e.g. @samp{quote},
@samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
-language for formatting the contents. The markup is optional, if it is not
-given, the text will be assumed to be in Org mode format and will be
+language for formatting the contents. The markup is optional; if it is not
+given, the text will be assumed to be in Org-mode format and will be
processed normally. The include line will also allow additional keyword
parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
-first line and for each following line, as well as any options accepted by
-the selected markup. For example, to include a file as an item, use
+first line and for each following line, @code{:minlevel} in order to get
+org-mode content demoted to a specified level, as well as any options
+accepted by the selected markup. For example, to include a file as an item,
+use
@example
#+INCLUDE: "~/snippets/xx" :prefix1 " + " :prefix " "
@@ -8499,8 +8872,25 @@ the selected markup. For example, to include a file as an item, use
Visit the include file at point.
@end table
+@node Index entries, Macro replacement, Include files, Markup
+@section Index entries
+@cindex index entries, for publishing
+
+You can specify entries that will be used for generating an index during
+publishing. This is done by lines starting with @code{#+INDEX}. An entry
+the contains an exclamation mark will create a sub item. See @ref{Generating
+an index} for more information.
+
+@example
+* Curriculum Vitae
+#+INDEX: CV
+#+INDEX: Application!CV
+@end example
+
+
-@node Macro replacement, Embedded LaTeX, Include files, Markup
+
+@node Macro replacement, Embedded LaTeX, Index entries, Markup
@section Macro replacement
@cindex macro replacement, during export
@cindex #+MACRO
@@ -8526,23 +8916,19 @@ construct complex HTML code.
@node Embedded LaTeX, , Macro replacement, Markup
-@section Embedded La@TeX{}
+@section Embedded @LaTeX{}
@cindex @TeX{} interpretation
-@cindex La@TeX{} interpretation
-
-Plain ASCII is normally sufficient for almost all note taking. One
-exception, however, are scientific notes which need to be able to contain
-mathematical symbols and the occasional formula. La@TeX{}@footnote{La@TeX{}
-is a macro system based on Donald E. Knuth's @TeX{} system. Many of the
-features described here as ``La@TeX{}'' are really from @TeX{}, but for
-simplicity I am blurring this distinction.} is widely used to typeset
-scientific documents. Org mode supports embedding La@TeX{} code into its
-files, because many academics are used to reading La@TeX{} source code, and
-because it can be readily processed into images for HTML production.
-
-It is not necessary to mark La@TeX{} macros and code in any special way.
-If you observe a few conventions, Org mode knows how to find it and what
-to do with it.
+@cindex @LaTeX{} interpretation
+
+Plain ASCII is normally sufficient for almost all note taking. Exceptions
+include scientific notes, which often require mathematical symbols and the
+occasional formula. @LaTeX{}@footnote{@LaTeX{} is a macro system based on
+Donald E. Knuth's @TeX{} system. Many of the features described here as
+``@LaTeX{}'' are really from @TeX{}, but for simplicity I am blurring this
+distinction.} is widely used to typeset scientific documents. Org-mode
+supports embedding @LaTeX{} code into its files, because many academics are
+used to writing and reading @LaTeX{} source code, and because it can be
+readily processed to produce pretty output for a number of export backends.
@menu
* Special symbols:: Greek letters and other symbols
@@ -8557,48 +8943,61 @@ to do with it.
@cindex math symbols
@cindex special symbols
@cindex @TeX{} macros
-@cindex La@TeX{} fragments, markup rules
+@cindex @LaTeX{} fragments, markup rules
@cindex HTML entities
-@cindex La@TeX{} entities
+@cindex @LaTeX{} entities
-You can use La@TeX{} macros to insert special symbols like @samp{\alpha} to
+You can use @LaTeX{} macros to insert special symbols like @samp{\alpha} to
indicate the Greek letter, or @samp{\to} to indicate an arrow. Completion
for these macros is available, just type @samp{\} and maybe a few letters,
-and press @kbd{M-@key{TAB}} to see possible completions. Unlike La@TeX{}
-code, Org mode allows these macros to be present without surrounding math
+and press @kbd{M-@key{TAB}} to see possible completions. Unlike @LaTeX{}
+code, Org-mode allows these macros to be present without surrounding math
delimiters, for example:
@example
Angles are written as Greek letters \alpha, \beta and \gamma.
@end example
-@vindex org-html-entities
+@vindex org-entities
During export, these symbols will be transformed into the native format of
the exporter backend. Strings like @code{\alpha} will be exported as
-@code{&alpha;} in the HTML output, and as @code{$\alpha$} in the La@TeX{}
+@code{&alpha;} in the HTML output, and as @code{$\alpha$} in the @LaTeX{}
output. Similarly, @code{\nbsp} will become @code{&nbsp;} in HTML and
-@code{~} in La@TeX{}. If you need such a symbol inside a word, terminate it
+@code{~} in @LaTeX{}. If you need such a symbol inside a word, terminate it
like this: @samp{\Aacute@{@}stor}.
A large number of entities is provided, with names taken from both HTML and
-La@TeX{}, see the variable @code{org-html-entities} for the complete list.
+@LaTeX{}; see the variable @code{org-entities} for the complete list.
@samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
@samp{...} are all converted into special commands creating hyphens of
different lengths or a compact set of dots.
+If you would like to see entities displayed as UTF8 characters, use the
+following command@footnote{You can turn this on by default by setting the
+variable @code{org-pretty-entities}, or on a per-file base with the
+@code{#+STARTUP} option @code{entitiespretty}.}:
+
+@table @kbd
+@kindex C-c C-x \
+@item C-c C-x \
+Toggle display of entities as UTF-8 characters. This does not change the
+buffer content which remains plain ASCII, but it overlays the UTF-8 character
+for display purposes only.
+@end table
+
@node Subscripts and superscripts, LaTeX fragments, Special symbols, Embedded LaTeX
@subsection Subscripts and superscripts
@cindex subscript
@cindex superscript
-Just like in La@TeX{}, @samp{^} and @samp{_} are used to indicate super-
+Just like in @LaTeX{}, @samp{^} and @samp{_} are used to indicate super-
and subscripts. Again, these can be used without embedding them in
math-mode delimiters. To increase the readability of ASCII text, it is
not necessary (but OK) to surround multi-character sub- and superscripts
with curly braces. For example
@example
-The mass if the sun is M_sun = 1.989 x 10^30 kg. The radius of
+The mass of the sun is M_sun = 1.989 x 10^30 kg. The radius of
the sun is R_@{sun@} = 6.96 x 10^8 m.
@end example
@@ -8614,39 +9013,49 @@ convention, or use, on a per-file basis:
#+OPTIONS: ^:@{@}
@end example
+@noindent With this setting, @samp{a_b} will not be interpreted as a
+subscript, but @samp{a_@{b@}} will.
+
+@table @kbd
+@kindex C-c C-x \
+@item C-c C-x \
+In addition to showing entities as UTF-8 characters, this command will also
+format sub- and superscripts in a WYSIWYM way.
+@end table
@node LaTeX fragments, Previewing LaTeX fragments, Subscripts and superscripts, Embedded LaTeX
-@subsection La@TeX{} fragments
-@cindex La@TeX{} fragments
+@subsection @LaTeX{} fragments
+@cindex @LaTeX{} fragments
@vindex org-format-latex-header
-With symbols, sub- and superscripts, HTML is pretty much at its end when
-it comes to representing mathematical formulas@footnote{Yes, there is
-MathML, but that is not yet fully supported by many browsers, and there
-is no decent converter for turning La@TeX{} or ASCII representations of
-formulas into MathML. So for the time being, converting formulas into
-images seems the way to go.}. More complex expressions need a dedicated
-formula processor. To this end, Org mode can contain arbitrary La@TeX{}
-fragments. It provides commands to preview the typeset result of these
-fragments, and upon export to HTML, all fragments will be converted to
-images and inlined into the HTML document@footnote{The La@TeX{} export
-will not use images for displaying La@TeX{} fragments but include these
-fragments directly into the La@TeX{} code.}. For this to work you
-need to be on a system with a working La@TeX{} installation. You also
+Going beyond symbols and sub- and superscripts, a full formula language is
+needed. Org-mode can contain @LaTeX{} math fragments, and it supports ways
+to process these for several export backends. When exporting to @LaTeX{},
+the code is obviously left as it is. When exporting to HTML, Org invokes the
+@uref{http://www.mathjax.org, MathJax library} (@pxref{Math formatting in
+HTML export}) to process and display the math@footnote{If you plan to use
+this regularly or on pages with significant page views, you should install
+@file{MathJax} on your own
+server in order to limit the load of our server.}. Finally, it can also
+process the mathematical expressions into images@footnote{For this to work
+you need to be on a system with a working @LaTeX{} installation. You also
need the @file{dvipng} program, available at
-@url{http://sourceforge.net/projects/dvipng/}. The La@TeX{} header that
-will be used when processing a fragment can be configured with the
-variable @code{org-format-latex-header}.
+@url{http://sourceforge.net/projects/dvipng/}. The @LaTeX{} header that will
+be used when processing a fragment can be configured with the variable
+@code{org-format-latex-header}.} that can be displayed in a browser or in
+DocBook documents.
-La@TeX{} fragments don't need any special marking at all. The following
-snippets will be identified as La@TeX{} source code:
+@LaTeX{} fragments don't need any special marking at all. The following
+snippets will be identified as @LaTeX{} source code:
@itemize @bullet
@item
-Environments of any kind. The only requirement is that the
-@code{\begin} statement appears on a new line, preceded by only
-whitespace.
+Environments of any kind@footnote{When @file{MathJax} is used, only the
+environment recognized by @file{MathJax} will be processed. When
+@file{dvipng} is used to create images, any @LaTeX{} environments will be
+handled.}. The only requirement is that the @code{\begin} statement appears
+on a new line, preceded by only whitespace.
@item
-Text within the usual La@TeX{} math delimiters. To avoid conflicts with
+Text within the usual @LaTeX{} math delimiters. To avoid conflicts with
currency specifications, single @samp{$} characters are only recognized as
math delimiters if the enclosed text contains at most two line breaks, is
directly attached to the @samp{$} characters with no whitespace in between,
@@ -8670,19 +9079,33 @@ either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
@vindex org-format-latex-options
If you need any of the delimiter ASCII sequences for other purposes, you
can configure the option @code{org-format-latex-options} to deselect the
-ones you do not wish to have interpreted by the La@TeX{} converter.
+ones you do not wish to have interpreted by the @LaTeX{} converter.
+
+@vindex org-export-with-LaTeX-fragments
+LaTeX processing can be configured with the variable
+@code{org-export-with-LaTeX-fragments}. The default setting is @code{t}
+which means @file{MathJax} for HTML, and no processing for DocBook, ASCII and
+LaTeX backends. You can also set this variable on a per-file basis using one
+of these lines:
+
+@example
+#+OPTIONS: LaTeX:t @r{Do the right thing automatically (MathJax)}
+#+OPTIONS: LaTeX:dvipng @r{Force using dvipng images}
+#+OPTIONS: LaTeX:nil @r{Do not process @LaTeX{} fragments at all}
+#+OPTIONS: LaTeX:verbatim @r{Verbatim export, for jsMath or so}
+@end example
@node Previewing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
@subsection Previewing LaTeX fragments
@cindex LaTeX fragments, preview
-La@TeX{} fragments can be processed to produce preview images of the
-typeset expressions:
+If you have @file{dvipng} installed, @LaTeX{} fragments can be processed to
+produce preview images of the typeset expressions:
@table @kbd
@kindex C-c C-x C-l
@item C-c C-x C-l
-Produce a preview image of the La@TeX{} fragment at point and overlay it
+Produce a preview image of the @LaTeX{} fragment at point and overlay it
over the source code. If there is no fragment at point, process all
fragments in the current entry (between two headlines). When called
with a prefix argument, process the entire subtree. When called with
@@ -8699,26 +9122,18 @@ some aspects of the preview. In particular, the @code{:scale} (and for HTML
export, @code{:html-scale}) property can be used to adjust the size of the
preview images.
-During HTML export (@pxref{HTML export}), all La@TeX{} fragments are
-converted into images and inlined into the document if the following
-setting is active:
-
-@lisp
-(setq org-export-with-LaTeX-fragments t)
-@end lisp
-
@node CDLaTeX mode, , Previewing LaTeX fragments, Embedded LaTeX
@subsection Using CDLa@TeX{} to enter math
@cindex CDLa@TeX{}
CDLa@TeX{} mode is a minor mode that is normally used in combination with a
-major La@TeX{} mode like AUC@TeX{} in order to speed-up insertion of
-environments and math templates. Inside Org mode, you can make use of
+major @LaTeX{} mode like AUC@TeX{} in order to speed-up insertion of
+environments and math templates. Inside Org-mode, you can make use of
some of the features of CDLa@TeX{} mode. You need to install
@file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
-Don't use CDLa@TeX{} mode itself under Org mode, but use the light
-version @code{org-cdlatex-mode} that comes as part of Org mode. Turn it
+Don't use CDLa@TeX{} mode itself under Org-mode, but use the light
+version @code{org-cdlatex-mode} that comes as part of Org-mode. Turn it
on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
Org files with
@@ -8735,7 +9150,7 @@ Environment templates can be inserted with @kbd{C-c @{}.
@item
@kindex @key{TAB}
The @key{TAB} key will do template expansion if the cursor is inside a
-La@TeX{} fragment@footnote{Org mode has a method to test if the cursor is
+@LaTeX{} fragment@footnote{Org-mode has a method to test if the cursor is
inside such a fragment, see the documentation of the function
@code{org-inside-LaTeX-fragment-p}.}. For example, @key{TAB} will
expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
@@ -8749,7 +9164,7 @@ To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
@kindex _
@kindex ^
@vindex cdlatex-simplify-sub-super-scripts
-Pressing @kbd{_} and @kbd{^} inside a La@TeX{} fragment will insert these
+Pressing @kbd{_} and @kbd{^} inside a @LaTeX{} fragment will insert these
characters together with a pair of braces. If you use @key{TAB} to move
out of the braces, and if the braces surround only a single character or
macro, they are removed again (depending on the variable
@@ -8757,14 +9172,14 @@ macro, they are removed again (depending on the variable
@item
@kindex `
Pressing the backquote @kbd{`} followed by a character inserts math
-macros, also outside La@TeX{} fragments. If you wait more than 1.5 seconds
+macros, also outside @LaTeX{} fragments. If you wait more than 1.5 seconds
after the backquote, a help window will pop up.
@item
@kindex '
Pressing the single-quote @kbd{'} followed by another character modifies
the symbol before point with an accent or a font. If you wait more than
-1.5 seconds after the backquote, a help window will pop up. Character
-modification will work only inside La@TeX{} fragments, outside the quote
+1.5 seconds after the single-quote, a help window will pop up. Character
+modification will work only inside @LaTeX{} fragments; outside the quote
is normal.
@end itemize
@@ -8776,13 +9191,14 @@ Org-mode documents can be exported into a variety of other formats. For
printing and sharing of notes, ASCII export produces a readable and simple
version of an Org file. HTML export allows you to publish a notes file on
the web, while the XOXO format provides a solid base for exchange with a
-broad range of other applications. La@TeX{} export lets you use Org mode and
-its structured editing functions to easily create La@TeX{} files. DocBook
+broad range of other applications. @LaTeX{} export lets you use Org-mode and
+its structured editing functions to easily create @LaTeX{} files. DocBook
export makes it possible to convert Org files to many other formats using
-DocBook tools. To incorporate entries with associated times like deadlines
-or appointments into a desktop calendar program like iCal, Org mode can also
-produce extracts in the iCalendar format. Currently Org mode only supports
-export, not import of these different formats.
+DocBook tools. For project management you can create gantt and resource
+charts by using TaskJuggler export. To incorporate entries with associated
+times like deadlines or appointments into a desktop calendar program like
+iCal, Org-mode can also produce extracts in the iCalendar format. Currently
+Org-mode only supports export, not import of these different formats.
Org supports export of selected regions when @code{transient-mark-mode} is
enabled (default in Emacs 23).
@@ -8791,10 +9207,11 @@ enabled (default in Emacs 23).
* Selective export:: Using tags to select and exclude trees
* Export options:: Per-file export settings
* The export dispatcher:: How to access exporter commands
-* ASCII export:: Exporting to plain ASCII
+* ASCII/Latin-1/UTF-8 export:: Exporting to flat files with encoding
* HTML export:: Exporting to HTML
-* LaTeX and PDF export:: Exporting to La@TeX{}, and processing to PDF
+* LaTeX and PDF export:: Exporting to @LaTeX{}, and processing to PDF
* DocBook export:: Exporting to DocBook
+* TaskJuggler export:: Exporting to TaskJuggler
* Freemind export:: Exporting to Freemind mind maps
* XOXO export:: Exporting to XOXO
* iCalendar export:: Exporting in iCalendar format
@@ -8839,8 +9256,7 @@ In particular, note that you can place commonly-used (export) options in
a separate file which can be included using @code{#+SETUPFILE}.
@table @kbd
-@kindex C-c C-e t
-@item C-c C-e t
+@orgcmd{C-c C-e t,org-insert-export-options-template}
Insert template with export options, see example below.
@end table
@@ -8858,6 +9274,7 @@ Insert template with export options, see example below.
@cindex #+LINK_HOME
@cindex #+EXPORT_SELECT_TAGS
@cindex #+EXPORT_EXCLUDE_TAGS
+@cindex #+XSLT
@cindex #+LATEX_HEADER
@vindex user-full-name
@vindex user-mail-address
@@ -8865,7 +9282,7 @@ Insert template with export options, see example below.
@example
#+TITLE: the title to be shown (default is the buffer name)
#+AUTHOR: the author (default taken from @code{user-full-name})
-#+DATE: a date, fixed, of a format string for @code{format-time-string}
+#+DATE: a date, fixed, or a format string for @code{format-time-string}
#+EMAIL: his/her email address (default from @code{user-mail-address})
#+DESCRIPTION: the page description, e.g. for the XHTML meta tag
#+KEYWORDS: the page keywords, e.g. for the XHTML meta tag
@@ -8880,12 +9297,13 @@ Insert template with export options, see example below.
#+LATEX_HEADER: extra line(s) for the LaTeX header, like \usepackage@{xyz@}
#+EXPORT_SELECT_TAGS: Tags that select a tree for export
#+EXPORT_EXCLUDE_TAGS: Tags that exclude a tree from export
+#+XSLT: the XSLT stylesheet used by DocBook exporter to generate FO file
@end example
@noindent
The OPTIONS line is a compact@footnote{If you want to configure many options
-this way, you can use several OPTIONS lines.} form to specify export settings. Here
-you can:
+this way, you can use several OPTIONS lines.} form to specify export
+settings. Here you can:
@cindex headline levels
@cindex section-numbers
@cindex table of contents
@@ -8898,14 +9316,14 @@ you can:
@cindex special strings
@cindex emphasized text
@cindex @TeX{} macros
-@cindex La@TeX{} fragments
+@cindex @LaTeX{} fragments
@cindex author info, in export
@cindex time info, in export
@example
H: @r{set the number of headline levels for export}
num: @r{turn on/off section-numbers}
toc: @r{turn on/off table of contents, or set level limit (integer)}
-\n: @r{turn on/off line-break-preservation}
+\n: @r{turn on/off line-break-preservation (DOES NOT WORK)}
@@: @r{turn on/off quoted HTML tags}
:: @r{turn on/off fixed-width sections}
|: @r{turn on/off tables}
@@ -8920,17 +9338,21 @@ tags: @r{turn on/off inclusion of tags, may also be @code{not-in-toc}}
<: @r{turn on/off inclusion of any time/date stamps like DEADLINES}
*: @r{turn on/off emphasized text (bold, italic, underlined)}
TeX: @r{turn on/off simple @TeX{} macros in plain text}
-LaTeX: @r{turn on/off La@TeX{} fragments}
+LaTeX: @r{configure export of @LaTeX{} fragments. Default @code{auto}}
skip: @r{turn on/off skipping the text before the first heading}
author: @r{turn on/off inclusion of author name/email into exported file}
+email: @r{turn on/off inclusion of author email into exported file}
creator: @r{turn on/off inclusion of creator info into exported file}
timestamp: @r{turn on/off inclusion creation time into exported file}
d: @r{turn on/off inclusion of drawers}
@end example
@noindent
-These options take effect in both the HTML and La@TeX{} export, except
-for @code{TeX} and @code{LaTeX}, which are respectively @code{t} and
-@code{nil} for the La@TeX{} export.
+These options take effect in both the HTML and @LaTeX{} export, except for
+@code{TeX} and @code{LaTeX}, which are respectively @code{t} and @code{nil}
+for the @LaTeX{} export. The default values for these and many other options
+are given by a set of variables. For a list of such variables, the
+corresponding OPTIONS keys and also the publishing keys (@pxref{Project
+alist}), see the constant @code{org-export-plist-vars}.
When exporting only a single subtree by selecting it with @kbd{C-c @@} before
calling an export command, the subtree can overrule some of the file's export
@@ -8938,7 +9360,7 @@ settings with properties @code{EXPORT_FILE_NAME}, @code{EXPORT_TITLE},
@code{EXPORT_TEXT}, @code{EXPORT_AUTHOR}, @code{EXPORT_DATE}, and
@code{EXPORT_OPTIONS}.
-@node The export dispatcher, ASCII export, Export options, Exporting
+@node The export dispatcher, ASCII/Latin-1/UTF-8 export, Export options, Exporting
@section The export dispatcher
@cindex dispatcher, for export commands
@@ -8949,8 +9371,7 @@ contains one outline tree, the first heading is used as document title and
the subtrees are exported.
@table @kbd
-@kindex C-c C-e
-@item C-c C-e
+@orgcmd{C-c C-e,org-export}
@vindex org-export-run-in-background
Dispatcher for export and publishing commands. Displays a help-window
listing the additional key(s) needed to launch an export or publishing
@@ -8958,31 +9379,31 @@ command. The prefix arg is passed through to the exporter. A double prefix
@kbd{C-u C-u} causes most commands to be executed in the background, in a
separate Emacs process@footnote{To make this behavior the default, customize
the variable @code{org-export-run-in-background}.}.
-@kindex C-c C-e v
-@item C-c C-e v
+@orgcmd{C-c C-e v,org-export-visible}
Like @kbd{C-c C-e}, but only export the text that is currently visible
(i.e. not hidden by outline visibility).
-@kindex C-u C-u C-c C-e
-@item C-u C-u C-c C-e
+@orgcmd{C-u C-u C-c C-e,org-export}
@vindex org-export-run-in-background
-Call an the exporter, but reverse the setting of
+Call the exporter, but reverse the setting of
@code{org-export-run-in-background}, i.e. request background processing if
not set, or force processing in the current Emacs process if set.
@end table
-@node ASCII export, HTML export, The export dispatcher, Exporting
-@section ASCII export
+@node ASCII/Latin-1/UTF-8 export, HTML export, The export dispatcher, Exporting
+@section ASCII/Latin-1/UTF-8 export
@cindex ASCII export
+@cindex Latin-1 export
+@cindex UTF-8 export
ASCII export produces a simple and very readable version of an Org-mode
-file.
+file, containing only plain ASCII. Latin-1 and UTF-8 export augment the file
+with special characters and symbols available in these encodings.
@cindex region, active
@cindex active region
@cindex transient-mark-mode
@table @kbd
-@kindex C-c C-e a
-@item C-c C-e a
+@orgcmd{C-c C-e a,org-export-as-ascii}
@cindex property, EXPORT_FILE_NAME
Export as ASCII file. For an Org file, @file{myfile.org}, the ASCII file
will be @file{myfile.txt}. The file will be overwritten without
@@ -8993,11 +9414,15 @@ current subtree, use @kbd{C-c @@}.}, the tree head will
become the document title. If the tree head entry has or inherits an
@code{EXPORT_FILE_NAME} property, that name will be used for the
export.
-@kindex C-c C-e A
-@item C-c C-e A
-Export to a temporary buffer, do not create a file.
-@kindex C-c C-e v a
-@item C-c C-e v a
+@orgcmd{C-c C-e A,org-export-as-ascii-to-buffer}
+Export to a temporary buffer. Do not create a file.
+@orgcmd{C-c C-e n,org-export-as-latin1}
+@xorgcmd{C-c C-e N,org-export-as-latin1-to-buffer}
+Like the above commands, but use Latin-1 encoding.
+@orgcmd{C-c C-e u,org-export-as-utf8}
+@xorgcmd{C-c C-e U,org-export-as-utf8-to-buffer}
+Like the above commands, but use UTF-8 encoding.
+@item C-c C-e v a/n/u
Export only the visible part of the document.
@end table
@@ -9025,23 +9450,24 @@ Links will be exported in a footnote-like style, with the descriptive part in
the text and the link in a note before the next heading. See the variable
@code{org-export-ascii-links-to-notes} for details and other options.
-@node HTML export, LaTeX and PDF export, ASCII export, Exporting
+@node HTML export, LaTeX and PDF export, ASCII/Latin-1/UTF-8 export, Exporting
@section HTML export
@cindex HTML export
-Org mode contains an HTML (XHTML 1.0 strict) exporter with extensive
+Org-mode contains an HTML (XHTML 1.0 strict) exporter with extensive
HTML formatting, in ways similar to John Gruber's @emph{markdown}
language, but with additional support for tables.
@menu
* HTML Export commands:: How to invoke HTML export
-* Quoting HTML tags:: Using direct HTML in Org mode
+* Quoting HTML tags:: Using direct HTML in Org-mode
* Links in HTML export:: How links will be interpreted and formatted
* Tables in HTML export:: How to modify the formatting of tables
* Images in HTML export:: How to insert figures into HTML output
+* Math formatting in HTML export:: Beautiful math also on the web
* Text areas in HTML export:: An alternative way to show an example
* CSS support:: Changing the appearance of the output
-* Javascript support:: Info and Folding in a web browser
+* JavaScript support:: Info and Folding in a web browser
@end menu
@node HTML Export commands, Quoting HTML tags, HTML export, HTML export
@@ -9051,8 +9477,7 @@ language, but with additional support for tables.
@cindex active region
@cindex transient-mark-mode
@table @kbd
-@kindex C-c C-e h
-@item C-c C-e h
+@orgcmd{C-c C-e h,org-export-as-html}
@cindex property, EXPORT_FILE_NAME
Export as HTML file @file{myfile.html}. For an Org file @file{myfile.org},
the ASCII file will be @file{myfile.html}. The file will be overwritten
@@ -9062,25 +9487,15 @@ exported. If the selected region is a single tree@footnote{To select the
current subtree, use @kbd{C-c @@}.}, the tree head will become the document
title. If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
property, that name will be used for the export.
-@kindex C-c C-e b
-@item C-c C-e b
+@orgcmd{C-c C-e b,org-export-as-html-and-open}
Export as HTML file and immediately open it with a browser.
-@kindex C-c C-e H
-@item C-c C-e H
-Export to a temporary buffer, do not create a file.
-@kindex C-c C-e R
-@item C-c C-e R
+@orgcmd{C-c C-e H,org-export-as-html-to-buffer}
+Export to a temporary buffer. Do not create a file.
+@orgcmd{C-c C-e R,org-export-region-as-html}
Export the active region to a temporary buffer. With a prefix argument, do
not produce the file header and footer, but just the plain HTML section for
the region. This is good for cut-and-paste operations.
-@kindex C-c C-e v h
-@kindex C-c C-e v b
-@kindex C-c C-e v H
-@kindex C-c C-e v R
-@item C-c C-e v h
-@item C-c C-e v b
-@item C-c C-e v H
-@item C-c C-e v R
+@item C-c C-e v h/b/H/R
Export only the visible part of the document.
@item M-x org-export-region-as-html
Convert the region to HTML under the assumption that it was Org-mode
@@ -9174,7 +9589,7 @@ tables, place something like the following before the table:
#+ATTR_HTML: border="2" rules="all" frame="all"
@end example
-@node Images in HTML export, Text areas in HTML export, Tables in HTML export, HTML export
+@node Images in HTML export, Math formatting in HTML export, Tables in HTML export, HTML export
@subsection Images in HTML export
@cindex images, inline in HTML
@@ -9196,7 +9611,7 @@ will link to a high resolution version of the image, you could use:
[[file:highres.jpg][file:thumb.jpg]]
@end example
-If you need to add attributes to an inlines image, use a @code{#+ATTR_HTML}.
+If you need to add attributes to an inlined image, use a @code{#+ATTR_HTML}.
In the example below we specify the @code{alt} and @code{title} attributes to
support text viewers and accessibility, and align it to the right.
@@ -9211,7 +9626,43 @@ support text viewers and accessibility, and align it to the right.
@noindent
and you could use @code{http} addresses just as well.
-@node Text areas in HTML export, CSS support, Images in HTML export, HTML export
+@node Math formatting in HTML export, Text areas in HTML export, Images in HTML export, HTML export
+@subsection Math formatting in HTML export
+@cindex MathJax
+@cindex dvipng
+
+@LaTeX{} math snippets (@pxref{LaTeX fragments}) can be displayed in two
+different ways on HTML pages. The default is to use the
+@uref{http://www.mathjax.org, MathJax system} which should work out of the
+box with Org mode installation because @code{http://orgmode.org} serves
+@file{MathJax} for Org-mode users for small applications and for testing
+purposes. @b{If you plan to use this regularly or on pages with significant
+page views, you should install@footnote{Installation instructions can be
+found on the MathJax website, see
+@uref{http://www.mathjax.org/resources/docs/?installation.html}.} MathJax on
+your own server in order to limit the load of our server.} To configure
+@file{MathJax}, use the variable @code{org-export-html-mathjax-options} or
+insert something like the following into the buffer:
+
+@example
+#+MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
+@end example
+
+@noindent See the docstring of the variable
+@code{org-export-html-mathjax-options} for the meaning of the parameters in
+this line.
+
+If you prefer, you can also request that @LaTeX{} fragments are processed
+into small images that will be inserted into the browser page. Before the
+availability of MathJax, this was the default method for Org files. This
+method requires that the @file{dvipng} program is available on your system.
+You can still get this processing with
+
+@example
+#+OPTIONS: LaTeX:dvipng
+@end example
+
+@node Text areas in HTML export, CSS support, Math formatting in HTML export, HTML export
@subsection Text areas in HTML export
@cindex text areas, in HTML
@@ -9226,14 +9677,14 @@ respectively. For example
@example
#+BEGIN_EXAMPLE -t -w 40
-(defun org-xor (a b)
- "Exclusive or."
- (if a (not b) b))
+ (defun org-xor (a b)
+ "Exclusive or."
+ (if a (not b) b))
#+END_EXAMPLE
@end example
-@node CSS support, Javascript support, Text areas in HTML export, HTML export
+@node CSS support, JavaScript support, Text areas in HTML export, HTML export
@subsection CSS support
@cindex CSS, for HTML export
@cindex HTML export, CSS
@@ -9288,7 +9739,7 @@ inclusion of these defaults off, customize
@code{org-export-html-style-include-default}}. You may overwrite these
settings, or add to them by using the variables @code{org-export-html-style}
(for Org-wide settings) and @code{org-export-html-style-extra} (for more
-granular settings, like file-local settings). To set the latter variable
+fine-grained settings, like file-local settings). To set the latter variable
individually for each file, you can use
@cindex #+STYLE
@@ -9301,11 +9752,16 @@ For longer style definitions, you can use several such lines. You could also
directly write a @code{<style>} @code{</style>} section in this way, without
referring to an external file.
+In order to add styles to a subtree, use the @code{:HTML_CONTAINER_CLASS:}
+property to assign a class to the tree. In order to specify CSS styles for a
+particular headline, you can use the id specified in a @code{:CUSTOM_ID:}
+property.
+
@c FIXME: More about header and footer styles
@c FIXME: Talk about links and targets.
-@node Javascript support, , CSS support, HTML export
-@subsection Javascript supported display of web pages
+@node JavaScript support, , CSS support, HTML export
+@subsection JavaScript supported display of web pages
@cindex Rose, Sebastian
Sebastian Rose has written a JavaScript program especially designed to
@@ -9351,11 +9807,11 @@ sdepth: @r{Maximum headline level that will still become an independent}
@r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
@r{If this is smaller than in @code{org-export-headline-levels}, each}
@r{info/folding section can still contain child headlines.}
-toc: @r{Should the table of content @emph{initially} be visible?}
+toc: @r{Should the table of contents @emph{initially} be visible?}
@r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
tdepth: @r{The depth of the table of contents. The defaults are taken from}
@r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
-ftoc: @r{Does the css of the page specify a fixed position for the "toc"?}
+ftoc: @r{Does the CSS of the page specify a fixed position for the "toc"?}
@r{If yes, the toc will never be displayed as a section.}
ltoc: @r{Should there be short contents (children) in each section?}
@r{Make this @code{above} if the section should be above initial text.}
@@ -9372,35 +9828,40 @@ You can choose default values for these options by customizing the variable
pages, configure the variable @code{org-export-html-use-infojs}.
@node LaTeX and PDF export, DocBook export, HTML export, Exporting
-@section La@TeX{} and PDF export
-@cindex La@TeX{} export
+@section @LaTeX{} and PDF export
+@cindex @LaTeX{} export
@cindex PDF export
@cindex Guerry, Bastien
-Org mode contains a La@TeX{} exporter written by Bastien Guerry. With
-further processing, this backend is also used to produce PDF output. Since
-the La@TeX{} output uses @file{hyperref} to implement links and cross
-references, the PDF output file will be fully linked.
+Org-mode contains a @LaTeX{} exporter written by Bastien Guerry. With
+further processing@footnote{The default LaTeX output is designed for
+processing with pdftex or latex. It includes packages that are not
+compatible with xetex and possibly luatex. See the variables
+@code{org-export-latex-default-packages-alist} and
+@code{org-export-latex-packages-alist}.}, this backend is also used to
+produce PDF output. Since the @LaTeX{} output uses @file{hyperref} to
+implement links and cross references, the PDF output file will be fully
+linked.
@menu
* LaTeX/PDF export commands:: Which key invokes which commands
-* Quoting LaTeX code:: Incorporating literal La@TeX{} code
-* Sectioning structure:: Changing sectioning in La@TeX{} output
-* Tables in LaTeX export:: Options for exporting tables to La@TeX{}
-* Images in LaTeX export:: How to insert figures into La@TeX{} output
+* Header and sectioning:: Setting up the export file structure
+* Quoting LaTeX code:: Incorporating literal @LaTeX{} code
+* Tables in LaTeX export:: Options for exporting tables to @LaTeX{}
+* Images in LaTeX export:: How to insert figures into @LaTeX{} output
+* Beamer class export:: Turning the file into a presentation
@end menu
-@node LaTeX/PDF export commands, Quoting LaTeX code, LaTeX and PDF export, LaTeX and PDF export
-@subsection La@TeX{} export commands
+@node LaTeX/PDF export commands, Header and sectioning, LaTeX and PDF export, LaTeX and PDF export
+@subsection @LaTeX{} export commands
@cindex region, active
@cindex active region
@cindex transient-mark-mode
@table @kbd
-@kindex C-c C-e l
-@item C-c C-e l
+@orgcmd{C-c C-e l,org-export-as-latex}
@cindex property EXPORT_FILE_NAME
-Export as La@TeX{} file @file{myfile.tex}. For an Org file
+Export as @LaTeX{} file @file{myfile.tex}. For an Org file
@file{myfile.org}, the ASCII file will be @file{myfile.tex}. The file will
be overwritten without warning. If there is an active region@footnote{This
requires @code{transient-mark-mode} be turned on.}, only the region will be
@@ -9408,27 +9869,21 @@ exported. If the selected region is a single tree@footnote{To select the
current subtree, use @kbd{C-c @@}.}, the tree head will become the document
title. If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
property, that name will be used for the export.
-@kindex C-c C-e L
-@item C-c C-e L
-Export to a temporary buffer, do not create a file.
-@kindex C-c C-e v l
-@kindex C-c C-e v L
-@item C-c C-e v l
-@item C-c C-e v L
+@orgcmd{C-c C-e L,org-export-as-latex-to-buffer}
+Export to a temporary buffer. Do not create a file.
+@item C-c C-e v l/L
Export only the visible part of the document.
@item M-x org-export-region-as-latex
-Convert the region to La@TeX{} under the assumption that it was Org mode
+Convert the region to @LaTeX{} under the assumption that it was Org-mode
syntax before. This is a global command that can be invoked in any
buffer.
@item M-x org-replace-region-by-latex
-Replace the active region (assumed to be in Org mode syntax) by La@TeX{}
+Replace the active region (assumed to be in Org-mode syntax) by @LaTeX{}
code.
-@kindex C-c C-e p
-@item C-c C-e p
-Export as La@TeX{} and then process to PDF.
-@kindex C-c C-e d
-@item C-c C-e d
-Export as La@TeX{} and then process to PDF, then open the resulting PDF file.
+@orgcmd{C-c C-e p,org-export-as-pdf}
+Export as @LaTeX{} and then process to PDF.
+@orgcmd{C-c C-e d,org-export-as-pdf-and-open}
+Export as @LaTeX{} and then process to PDF, then open the resulting PDF file.
@end table
@cindex headline levels, for exporting
@@ -9449,13 +9904,47 @@ with a numeric prefix argument. For example,
@noindent
creates two levels of headings and does the rest as items.
-@node Quoting LaTeX code, Sectioning structure, LaTeX/PDF export commands, LaTeX and PDF export
-@subsection Quoting La@TeX{} code
+@node Header and sectioning, Quoting LaTeX code, LaTeX/PDF export commands, LaTeX and PDF export
+@subsection Header and sectioning structure
+@cindex @LaTeX{} class
+@cindex @LaTeX{} sectioning structure
+@cindex @LaTeX{} header
+@cindex header, for LaTeX files
+@cindex sectioning structure, for LaTeX export
+
+By default, the @LaTeX{} output uses the class @code{article}.
+
+@vindex org-export-latex-default-class
+@vindex org-export-latex-classes
+@vindex org-export-latex-default-packages-alist
+@vindex org-export-latex-packages-alist
+@cindex #+LATEX_HEADER
+@cindex #+LATEX_CLASS
+@cindex #+LATEX_CLASS_OPTIONS
+@cindex property, LATEX_CLASS
+@cindex property, LATEX_CLASS_OPTIONS
+You can change this globally by setting a different value for
+@code{org-export-latex-default-class} or locally by adding an option like
+@code{#+LaTeX_CLASS: myclass} in your file, or with a @code{:LaTeX_CLASS:}
+property that applies when exporting a region containing only this (sub)tree.
+The class must be listed in @code{org-export-latex-classes}. This variable
+defines a header template for each class@footnote{Into which the values of
+@code{org-export-latex-default-packages-alist} and
+@code{org-export-latex-packages-alist} are spliced.}, and allows you to
+define the sectioning structure for each class. You can also define your own
+classes there. @code{#+LaTeX_CLASS_OPTIONS} or a @code{LaTeX_CLASS_OPTIONS}
+property can specify the options for the @code{\documentclass} macro. You
+can also use @code{#+LATEX_HEADER: \usepackage@{xyz@}} to add lines to the
+header. See the docstring of @code{org-export-latex-classes} for more
+information.
+
+@node Quoting LaTeX code, Tables in LaTeX export, Header and sectioning, LaTeX and PDF export
+@subsection Quoting @LaTeX{} code
-Embedded La@TeX{} as described in @ref{Embedded LaTeX}, will be correctly
-inserted into the La@TeX{} file. This includes simple macros like
+Embedded @LaTeX{} as described in @ref{Embedded LaTeX}, will be correctly
+inserted into the @LaTeX{} file. This includes simple macros like
@samp{\ref@{LABEL@}} to create a cross reference to a figure. Furthermore,
-you can add special code that should only be present in La@TeX{} export with
+you can add special code that should only be present in @LaTeX{} export with
the following constructs:
@cindex #+LaTeX
@@ -9473,35 +9962,17 @@ All lines between these markers are exported literally
#+END_LaTeX
@end example
-@node Sectioning structure, Tables in LaTeX export, Quoting LaTeX code, LaTeX and PDF export
-@subsection Sectioning structure
-@cindex La@TeX{} class
-@cindex La@TeX{} sectioning structure
-
-By default, the La@TeX{} output uses the class @code{article}.
-
-@vindex org-export-latex-default-class
-@vindex org-export-latex-classes
-@cindex #+LATEX_HEADER
-@cindex #+LATEX_CLASS
-@cindex property, LATEX_CLASS
-You can change this globally by setting a different value for
-@code{org-export-latex-default-class} or locally by adding an option like
-@code{#+LaTeX_CLASS: myclass} in your file, or with a @code{:LaTeX_CLASS:}
-property that applies when exporting a region containing only this (sub)tree.
-The class should be listed in @code{org-export-latex-classes}, where you can
-also define the sectioning structure for each class, as well as defining
-additional classes. You can also use @code{#+LATEX_HEADER:
-\usepackage@{xyz@}} to add lines to the header.
-@node Tables in LaTeX export, Images in LaTeX export, Sectioning structure, LaTeX and PDF export
-@subsection Tables in La@TeX{} export
-@cindex tables, in La@TeX{} export
+@node Tables in LaTeX export, Images in LaTeX export, Quoting LaTeX code, LaTeX and PDF export
+@subsection Tables in @LaTeX{} export
+@cindex tables, in @LaTeX{} export
-For La@TeX{} export of a table, you can specify a label and a caption
+For @LaTeX{} export of a table, you can specify a label and a caption
(@pxref{Images and tables}). You can also use the @code{ATTR_LaTeX} line to
-request a longtable environment for the table, so that it may span several
-pages. Finally, you can set the alignment string:
+request a @code{longtable} environment for the table, so that it may span
+several pages, or provide the @code{multicolumn} keyword that will make the
+table span the page in a multicolumn environment (@code{table*} environment).
+Finally, you can set the alignment string:
@cindex #+CAPTION
@cindex #+LABEL
@@ -9515,14 +9986,14 @@ pages. Finally, you can set the alignment string:
@end example
-@node Images in LaTeX export, , Tables in LaTeX export, LaTeX and PDF export
-@subsection Images in La@TeX{} export
-@cindex images, inline in La@TeX{}
-@cindex inlining images in La@TeX{}
+@node Images in LaTeX export, Beamer class export, Tables in LaTeX export, LaTeX and PDF export
+@subsection Images in @LaTeX{} export
+@cindex images, inline in @LaTeX{}
+@cindex inlining images in @LaTeX{}
Images that are linked to without a description part in the link, like
@samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]} will be inserted into the PDF
-output file resulting from La@TeX{} processing. Org will use an
+output file resulting from @LaTeX{} processing. Org will use an
@code{\includegraphics} macro to insert the image. If you have specified a
caption and/or a label as described in @ref{Images and tables}, the figure
will be wrapped into a @code{figure} environment and thus become a floating
@@ -9532,12 +10003,12 @@ options that can be used in the optional argument of the
@code{figure} environment, add something like @samp{placement=[h!]} to the
Attributes.
-If you'd like to let text flow around the image, add the word @samp{wrap} to
-the @code{#+ATTR_LaTeX:} line, which will make the figure occupy the left
-half of the page. To fine-tune, the @code{placement} field will be the
-set of additional arguments needed by the @code{wrapfigure} environment.
-Note that if you change the size of the image, you need to use compatible
-settings for @code{\includegraphics} and @code{wrapfigure}.
+If you would like to let text flow around the image, add the word @samp{wrap}
+to the @code{#+ATTR_LaTeX:} line, which will make the figure occupy the left
+half of the page. To fine-tune, the @code{placement} field will be the set
+of additional arguments needed by the @code{wrapfigure} environment. Note
+that if you change the size of the image, you need to use compatible settings
+for @code{\includegraphics} and @code{wrapfigure}.
@cindex #+CAPTION
@cindex #+LABEL
@@ -9553,13 +10024,140 @@ settings for @code{\includegraphics} and @code{wrapfigure}.
@end example
If you need references to a label created in this way, write
-@samp{\ref@{fig:SED-HR4049@}} just like in La@TeX{}.
+@samp{\ref@{fig:SED-HR4049@}} just like in @LaTeX{}.
+
+@node Beamer class export, , Images in LaTeX export, LaTeX and PDF export
+@subsection Beamer class export
+
+The LaTeX class @file{beamer} allows production of high quality presentations
+using LaTeX and pdf processing. Org-mode has special support for turning an
+Org-mode file or tree into a @file{beamer} presentation.
+
+When the LaTeX class for the current buffer (as set with @code{#+LaTeX_CLASS:
+beamer}) or subtree (set with a @code{LaTeX_CLASS} property) is
+@code{beamer}, a special export mode will turn the file or tree into a beamer
+presentation. Any tree with not-too-deep level nesting should in principle be
+exportable as a beamer presentation. By default, the top-level entries (or
+the first level below the selected subtree heading) will be turned into
+frames, and the outline structure below this level will become itemize lists.
+You can also configure the variable @code{org-beamer-frame-level} to a
+different level---then the hierarchy above frames will produce the sectioning
+structure of the presentation.
+
+A template for useful in-buffer settings or properties can be inserted into
+the buffer with @kbd{M-x org-insert-beamer-options-template}. Among other
+things, this will install a column view format which is very handy for
+editing special properties used by beamer.
+
+You can influence the structure of the presentation using the following
+properties:
+
+@table @code
+@item BEAMER_env
+The environment that should be used to format this entry. Valid environments
+are defined in the constant @code{org-beamer-environments-default}, and you
+can define more in @code{org-beamer-environments-extra}. If this property is
+set, the entry will also get a @code{:B_environment:} tag to make this
+visible. This tag has no semantic meaning, it is only a visual aid.
+@item BEAMER_envargs
+The beamer-special arguments that should be used for the environment, like
+@code{[t]} or @code{[<+->]} of @code{<2-3>}. If the @code{BEAMER_col}
+property is also set, something like @code{C[t]} can be added here as well to
+set an options argument for the implied @code{columns} environment.
+@code{c[t]} or @code{c<2->} will set an options for the implied @code{column}
+environment.
+@item BEAMER_col
+The width of a column that should start with this entry. If this property is
+set, the entry will also get a @code{:BMCOL:} property to make this visible.
+Also this tag is only a visual aid. When this is a plain number, it will be
+interpreted as a fraction of @code{\textwidth}. Otherwise it will be assumed
+that you have specified the units, like @samp{3cm}. The first such property
+in a frame will start a @code{columns} environment to surround the columns.
+This environment is closed when an entry has a @code{BEAMER_col} property
+with value 0 or 1, or automatically at the end of the frame.
+@item BEAMER_extra
+Additional commands that should be inserted after the environment has been
+opened. For example, when creating a frame, this can be used to specify
+transitions.
+@end table
+
+Frames will automatically receive a @code{fragile} option if they contain
+source code that uses the verbatim environment. Special @file{beamer}
+specific code can be inserted using @code{#+BEAMER:} and
+@code{#+BEGIN_beamer...#+end_beamer} constructs, similar to other export
+backends, but with the difference that @code{#+LaTeX:} stuff will be included
+in the presentation as well.
+
+Outline nodes with @code{BEAMER_env} property value @samp{note} or
+@samp{noteNH} will be formatted as beamer notes, i,e, they will be wrapped
+into @code{\note@{...@}}. The former will include the heading as part of the
+note text, the latter will ignore the heading of that node. To simplify note
+generation, it is actually enough to mark the note with a @emph{tag} (either
+@code{:B_note:} or @code{:B_noteNH:}) instead of creating the
+@code{BEAMER_env} property.
+
+You can turn on a special minor mode @code{org-beamer-mode} for editing
+support with
+
+@example
+#+STARTUP: beamer
+@end example
+
+@table @kbd
+@orgcmd{C-c C-b,org-beamer-select-environment}
+In @code{org-beamer-mode}, this key offers fast selection of a beamer
+environment or the @code{BEAMER_col} property.
+@end table
+
+Column view provides a great way to set the environment of a node and other
+important parameters. Make sure you are using a COLUMN format that is geared
+toward this special purpose. The command @kbd{M-x
+org-insert-beamer-options-template} defines such a format.
-@node DocBook export, Freemind export, LaTeX and PDF export, Exporting
+Here is a simple example Org document that is intended for beamer export.
+
+@smallexample
+#+LaTeX_CLASS: beamer
+#+TITLE: Example Presentation
+#+AUTHOR: Carsten Dominik
+#+LaTeX_CLASS_OPTIONS: [presentation]
+#+BEAMER_FRAME_LEVEL: 2
+#+BEAMER_HEADER_EXTRA: \usetheme@{Madrid@}\usecolortheme@{default@}
+#+COLUMNS: %35ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Args) %4BEAMER_col(Col) %8BEAMER_extra(Ex)
+
+* This is the first structural section
+
+** Frame 1 \\ with a subtitle
+*** Thanks to Eric Fraga :BMCOL:B_block:
+ :PROPERTIES:
+ :BEAMER_env: block
+ :BEAMER_envargs: C[t]
+ :BEAMER_col: 0.5
+ :END:
+ for the first viable beamer setup in Org
+*** Thanks to everyone else :BMCOL:B_block:
+ :PROPERTIES:
+ :BEAMER_col: 0.5
+ :BEAMER_env: block
+ :BEAMER_envargs: <2->
+ :END:
+ for contributing to the discussion
+**** This will be formatted as a beamer note :B_note:
+** Frame 2 \\ where we will not use columns
+*** Request :B_block:
+ Please test this stuff!
+ :PROPERTIES:
+ :BEAMER_env: block
+ :END:
+@end smallexample
+
+For more information, see the documentation on Worg.
+
+@node DocBook export, TaskJuggler export, LaTeX and PDF export, Exporting
@section DocBook export
@cindex DocBook export
@cindex PDF export
-@cindex Cui, Baoqui
+@cindex Cui, Baoqiu
Org contains a DocBook exporter written by Baoqiu Cui. Once an Org file is
exported to DocBook format, it can be further processed to produce other
@@ -9584,8 +10182,7 @@ Currently DocBook exporter only supports DocBook V5.0.
@cindex active region
@cindex transient-mark-mode
@table @kbd
-@kindex C-c C-e D
-@item C-c C-e D
+@orgcmd{C-c C-e D,org-export-as-docbook}
@cindex property EXPORT_FILE_NAME
Export as DocBook file. For an Org file, @file{myfile.org}, the DocBook XML
file will be @file{myfile.xml}. The file will be overwritten without
@@ -9595,8 +10192,7 @@ exported. If the selected region is a single tree@footnote{To select the
current subtree, use @kbd{C-c @@}.}, the tree head will become the document
title. If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
property, that name will be used for the export.
-@kindex C-c C-e V
-@item C-c C-e V
+@orgcmd{C-c C-e V,org-export-as-docbook-pdf-and-open}
Export as DocBook file, process to PDF, then open the resulting PDF file.
@vindex org-export-docbook-xslt-proc-command
@@ -9606,8 +10202,14 @@ need to have XSLT processor and XSL-FO processor software installed on your
system. Check variables @code{org-export-docbook-xslt-proc-command} and
@code{org-export-docbook-xsl-fo-proc-command}.
-@kindex C-c C-e v D
-@item C-c C-e v D
+@vindex org-export-docbook-xslt-stylesheet
+The stylesheet argument @code{%s} in variable
+@code{org-export-docbook-xslt-proc-command} is replaced by the value of
+variable @code{org-export-docbook-xslt-stylesheet}, which needs to be set by
+the user. You can also overrule this global setting on a per-file basis by
+adding an in-buffer setting @code{#+XSLT:} to the Org file.
+
+@orgkey{C-c C-e v D}
Export only the visible part of the document.
@end table
@@ -9642,7 +10244,7 @@ exported DocBook XML files invalid by not quoting DocBook code correctly.
#+BEGIN_DOCBOOK
<warning>
<para>You should know what you are doing when quoting DocBook XML code
- in your Org file. Invalid DocBook XML file may be generated by
+ in your Org file. Invalid DocBook XML may be generated by
DocBook exporter if you are not careful!</para>
</warning>
#+END_DOCBOOK
@@ -9693,21 +10295,21 @@ or @code{width}, can be specified in two ways: you can either customize
variable @code{org-export-docbook-default-image-attributes} or use the
@code{#+ATTR_DOCBOOK:} line. Attributes specified in variable
@code{org-export-docbook-default-image-attributes} are applied to all inline
-images in the Org file to be exported (unless they are overwritten by image
+images in the Org file to be exported (unless they are overridden by image
attributes specified in @code{#+ATTR_DOCBOOK:} lines).
The @code{#+ATTR_DOCBOOK:} line can be used to specify additional image
-attributes or overwrite default image attributes for individual images. If
+attributes or override default image attributes for individual images. If
the same attribute appears in both the @code{#+ATTR_DOCBOOK:} line and
variable @code{org-export-docbook-default-image-attributes}, the former
-overwrites the latter. Here is an example about how image attributes can be
+takes precedence. Here is an example about how image attributes can be
set:
@cindex #+CAPTION
@cindex #+LABEL
@cindex #+ATTR_DOCBOOK
@example
-#+CAPTION: The logo of Org mode
+#+CAPTION: The logo of Org-mode
#+LABEL: unicorn-svg
#+ATTR_DOCBOOK: scalefit="1" width="100%" depth="100%"
[[./img/org-mode-unicorn.svg]]
@@ -9724,12 +10326,12 @@ more types to this list as long as DocBook supports them.
@cindex Special characters in DocBook export
@vindex org-export-docbook-doctype
-@vindex org-html-entities
+@vindex org-entities
Special characters that are written in @TeX{}-like syntax, such as @code{\alpha},
@code{\Gamma}, and @code{\Zeta}, are supported by DocBook exporter. These
characters are rewritten to XML entities, like @code{&alpha;},
@code{&Gamma;}, and @code{&Zeta;}, based on the list saved in variable
-@code{org-html-entities}. As long as the generated DocBook file includes the
+@code{org-entities}. As long as the generated DocBook file includes the
corresponding entities, these special characters are recognized.
You can customize variable @code{org-export-docbook-doctype} to include the
@@ -9748,16 +10350,143 @@ special characters included in XHTML entities:
"
@end example
-@node Freemind export, XOXO export, DocBook export, Exporting
+@node TaskJuggler export, Freemind export, DocBook export, Exporting
+@section TaskJuggler export
+@cindex TaskJuggler export
+@cindex Project management
+
+@uref{http://www.taskjuggler.org/, TaskJuggler} is a project management tool.
+It provides an optimizing scheduler that computes your project time lines and
+resource assignments based on the project outline and the constraints that
+you have provided.
+
+The TaskJuggler exporter is a bit different from other exporters, such as the
+HTML and LaTeX exporters for example, in that it does not export all the
+nodes of a document or strictly follow the order of the nodes in the
+document.
+
+Instead the TaskJuggler exporter looks for a tree that defines the tasks and
+a optionally tree that defines the resources for this project. It then
+creates a TaskJuggler file based on these trees and the attributes defined in
+all the nodes.
+
+@subsection TaskJuggler export commands
+
+@table @kbd
+@orgcmd{C-c C-e j,org-export-as-taskjuggler}
+Export as TaskJuggler file.
+
+@orgcmd{C-c C-e J,org-export-as-taskjuggler-and-open}
+Export as TaskJuggler file and then open the file with TaskJugglerUI.
+@end table
+
+@subsection Tasks
+
+@vindex org-export-taskjuggler-project-tag
+Create your tasks as you usually do with Org-mode. Assign efforts to each
+task using properties (it's easiest to do this in the column view). You
+should end up with something similar to the example by Peter Jones in
+@url{http://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.org}.
+Now mark the top node of your tasks with a tag named
+@code{:taskjuggler_project:} (or whatever you customized
+@code{org-export-taskjuggler-project-tag} to). You are now ready to export
+the project plan with @kbd{C-c C-e J} which will export the project plan and
+open a gantt chart in TaskJugglerUI.
+
+@subsection Resources
+
+@vindex org-export-taskjuggler-resource-tag
+Next you can define resources and assign those to work on specific tasks. You
+can group your resources hierarchically. Tag the top node of the resources
+with @code{:taskjuggler_resource:} (or whatever you customized
+@code{org-export-taskjuggler-resource-tag} to). You can optionally assign an
+identifier (named @samp{resource_id}) to the resources (using the standard
+Org properties commands, @pxref{Property syntax}) or you can let the exporter
+generate identifiers automatically (the exporter picks the first word of the
+headline as the identifier as long as it is unique---see the documentation of
+@code{org-taskjuggler-get-unique-id}). Using that identifier you can then
+allocate resources to tasks. This is again done with the @samp{allocate}
+property on the tasks. Do this in column view or when on the task type
+@kbd{C-c C-x p allocate @key{RET} <resource_id> @key{RET}}.
+
+Once the allocations are done you can again export to TaskJuggler and check
+in the Resource Allocation Graph which person is working on what task at what
+time.
+
+@subsection Export of properties
+
+The exporter also takes TODO state information into consideration, i.e. if a
+task is marked as done it will have the corresponding attribute in
+TaskJuggler (@samp{complete 100}). Also it will export any property on a task
+resource or resource node which is known to TaskJuggler, such as
+@samp{limits}, @samp{vacation}, @samp{shift}, @samp{booking},
+@samp{efficiency}, @samp{journalentry}, @samp{rate} for resources or
+@samp{account}, @samp{start}, @samp{note}, @samp{duration}, @samp{end},
+@samp{journalentry}, @samp{milestone}, @samp{reference}, @samp{responsible},
+@samp{scheduling}, etc for tasks.
+
+@subsection Dependencies
+
+The exporter will handle dependencies that are defined in the tasks either
+with the @samp{ORDERED} attribute (@pxref{TODO dependencies}), with the
+@samp{BLOCKER} attribute (see @file{org-depend.el}) or alternatively with a
+@samp{depends} attribute. Both the @samp{BLOCKER} and the @samp{depends}
+attribute can be either @samp{previous-sibling} or a reference to an
+identifier (named @samp{task_id}) which is defined for another task in the
+project. @samp{BLOCKER} and the @samp{depends} attribute can define multiple
+dependencies separated by either space or comma. You can also specify
+optional attributes on the dependency by simply appending it. The following
+examples should illustrate this:
+
+@example
+* Preparation
+ :PROPERTIES:
+ :task_id: preparation
+ :ORDERED: t
+ :END:
+* Training material
+ :PROPERTIES:
+ :task_id: training_material
+ :ORDERED: t
+ :END:
+** Markup Guidelines
+ :PROPERTIES:
+ :Effort: 2.0
+ :END:
+** Workflow Guidelines
+ :PROPERTIES:
+ :Effort: 2.0
+ :END:
+* Presentation
+ :PROPERTIES:
+ :Effort: 2.0
+ :BLOCKER: training_material @{ gapduration 1d @} preparation
+ :END:
+@end example
+
+@subsection Reports
+
+@vindex org-export-taskjuggler-default-reports
+TaskJuggler can produce many kinds of reports (e.g. gantt chart, resource
+allocation, etc). The user defines what kind of reports should be generated
+for a project in the TaskJuggler file. The exporter will automatically insert
+some default reports in the file. These defaults are defined in
+@code{org-export-taskjuggler-default-reports}. They can be modified using
+customize along with a number of other options. For a more complete list, see
+@kbd{M-x customize-group @key{RET} org-export-taskjuggler @key{RET}}.
+
+For more information and examples see the Org-taskjuggler tutorial at
+@uref{http://orgmode.org/worg/org-tutorials/org-taskjuggler.php}.
+
+@node Freemind export, XOXO export, TaskJuggler export, Exporting
@section Freemind export
@cindex Freemind export
@cindex mind map
-The freemind exporter was written by Lennart Borgman.
+The Freemind exporter was written by Lennart Borgman.
@table @kbd
-@kindex C-c C-e m
-@item C-c C-e m
+@orgcmd{C-c C-e m,org-export-as-freemind}
Export as Freemind mind map @file{myfile.mm}.
@end table
@@ -9765,16 +10494,14 @@ Export as Freemind mind map @file{myfile.mm}.
@section XOXO export
@cindex XOXO export
-Org mode contains an exporter that produces XOXO-style output.
+Org-mode contains an exporter that produces XOXO-style output.
Currently, this exporter only handles the general outline structure and
does not interpret any additional Org-mode features.
@table @kbd
-@kindex C-c C-e x
-@item C-c C-e x
+@orgcmd{C-c C-e x,org-export-as-xoxo}
Export as XOXO file @file{myfile.html}.
-@kindex C-c C-e v
-@item C-c C-e v x
+@orgkey{C-c C-e v x}
Export only the visible part of the document.
@end table
@@ -9786,10 +10513,11 @@ Export only the visible part of the document.
@vindex org-icalendar-use-deadline
@vindex org-icalendar-use-scheduled
@vindex org-icalendar-categories
-Some people use Org mode for keeping track of projects, but still prefer a
+@vindex org-icalendar-alarm-time
+Some people use Org-mode for keeping track of projects, but still prefer a
standard calendar application for anniversaries and appointments. In this
case it can be useful to show deadlines and other time-stamped items in Org
-files in the calendar application. Org mode can export calendar information
+files in the calendar application. Org-mode can export calendar information
in the standard iCalendar format. If you also want to have TODO entries
included in the export, configure the variable
@code{org-icalendar-include-todo}. Plain timestamps are exported as VEVENT,
@@ -9799,7 +10527,9 @@ to set the start and due dates for the TODO entry@footnote{See the variables
@code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
As categories, it will use the tags locally defined in the heading, and the
file/tree category@footnote{To add inherited tags or the TODO state,
-configure the variable @code{org-icalendar-categories}.}.
+configure the variable @code{org-icalendar-categories}.}. See the variable
+@code{org-icalendar-alarm-time} for a way to assign alarms to entries with a
+time.
@vindex org-icalendar-store-UID
@cindex property, ID
@@ -9814,18 +10544,15 @@ In this way the UID remains unique, but a synchronization program can still
figure out from which entry all the different instances originate.
@table @kbd
-@kindex C-c C-e i
-@item C-c C-e i
+@orgcmd{C-c C-e i,org-export-icalendar-this-file}
Create iCalendar entries for the current file and store them in the same
directory, using a file extension @file{.ics}.
-@kindex C-c C-e I
-@item C-c C-e I
+@orgcmd{C-c C-e I, org-export-icalendar-all-agenda-files}
@vindex org-agenda-files
Like @kbd{C-c C-e i}, but do this for all files in
@code{org-agenda-files}. For each of these files, a separate iCalendar
file will be written.
-@kindex C-c C-e c
-@item C-c C-e c
+@orgcmd{C-c C-e c,org-export-icalendar-combine-agenda-files}
@vindex org-combined-agenda-icalendar-file
Create a single large iCalendar file from all files in
@code{org-agenda-files} and write it to the file given by
@@ -9847,10 +10574,9 @@ and the description from the body (limited to
How this calendar is best read and updated, depends on the application
you are using. The FAQ covers this issue.
-@node Publishing, Miscellaneous, Exporting, Top
+@node Publishing, Working With Source Code, Exporting, Top
@chapter Publishing
@cindex publishing
-@cindex O'Toole, David
Org includes a publishing management system that allows you to configure
automatic HTML conversion of @emph{projects} composed of interlinked org
@@ -9883,7 +10609,8 @@ and many other properties of a project.
* Publishing action:: Setting the function doing the publishing
* Publishing options:: Tweaking HTML export
* Publishing links:: Which links keep working after publishing?
-* Project page index:: Publishing a list of project files
+* Sitemap:: Generating a list of all pages
+* Generating an index:: An index that reaches across pages
@end menu
@node Project alist, Sources and destinations, Configuration, Configuration
@@ -9897,7 +10624,8 @@ variable, called @code{org-publish-project-alist}. Each element of the list
configures one project, and may be in one of the two following forms:
@lisp
- ("project-name" :property value :property value ...)
+ ("project-name" :property value :property value ...)
+ @r{i.e. a well-formed property list with alternating keys and values}
@r{or}
("project-name" :components ("project-name" "project-name" ...))
@@ -9929,11 +10657,15 @@ publish to a webserver using a file name syntax appropriate for
the Emacs @file{tramp} package. Or you can publish to a local directory and
use external tools to upload your website (@pxref{Uploading files}).
@item @code{:preparation-function}
-@tab Function called before starting the publishing process, for example, to
-run @code{make} for updating files to be published.
+@tab Function or list of functions to be called before starting the
+publishing process, for example, to run @code{make} for updating files to be
+published. The project property list is scoped into this call as the
+variable @code{project-plist}.
@item @code{:completion-function}
-@tab Function called after finishing the publishing process, for example, to
-change permissions of the resulting files.
+@tab Function or list of functions called after finishing the publishing
+process, for example, to change permissions of the resulting files. The
+project property list is scoped into this call as the variable
+@code{project-plist}.
@end multitable
@noindent
@@ -9958,6 +10690,9 @@ extension.
@item @code{:include}
@tab List of files to be included regardless of @code{:base-extension}
and @code{:exclude}.
+
+@item @code{:recursive}
+@tab Non-nil means, check base-directory recursively for files to publish.
@end multitable
@node Publishing action, Publishing options, Selecting files, Configuration
@@ -9969,20 +10704,20 @@ possibly transformed in the process. The default transformation is to export
Org files as HTML files, and this is done by the function
@code{org-publish-org-to-html} which calls the HTML exporter (@pxref{HTML
export}). But you also can publish your content as PDF files using
-@code{org-publish-org-to-pdf}. If you want to publish the Org file itself,
-but with @i{archived}, @i{commented}, and @i{tag-excluded} trees removed, use
-@code{org-publish-org-to-org} and set the parameters @code{:plain-source}
-and/or @code{:htmlized-source}. This will produce @file{file.org} and
-@file{file.org.html} in the publishing
+@code{org-publish-org-to-pdf}, or as @code{ascii}, @code{latin1} or
+@code{utf8} encoded files using the corresponding functions. If you want to
+publish the Org file itself, but with @i{archived}, @i{commented}, and
+@i{tag-excluded} trees removed, use @code{org-publish-org-to-org} and set the
+parameters @code{:plain-source} and/or @code{:htmlized-source}. This will
+produce @file{file.org} and @file{file.org.html} in the publishing
directory@footnote{@file{file-source.org} and @file{file-source.org.html} if
source and publishing directories are equal. Note that with this kind of
setup, you need to add @code{:exclude "-source\\.org"} to the project
-definition in @code{org-publish-project-alist} to avoid that the published
-source files will be considered as new org files the next time the project is
-published.}. Other files like images only
-need to be copied to the publishing destination, for this you may use
-@code{org-publish-attachment}. For non-Org files, you always need to
-specify the publishing function:
+definition in @code{org-publish-project-alist} to prevent the published
+source files from being considered as new org files the next time the project
+is published.}. Other files like images only need to be copied to the
+publishing destination; for this you may use @code{org-publish-attachment}.
+For non-Org files, you always need to specify the publishing function:
@multitable @columnfractions 0.3 0.7
@item @code{:publishing-function}
@@ -9994,17 +10729,18 @@ list of functions, which will all be called in turn.
@tab Non-nil means, publish htmlized source.
@end multitable
-The function must accept two arguments: a property list containing at least a
-@code{:publishing-directory} property, and the name of the file to be
-published. It should take the specified file, make the necessary
-transformation (if any) and place the result into the destination folder.
+The function must accept three arguments: a property list containing at least
+a @code{:publishing-directory} property, the name of the file to be
+published, and the path to the publishing directory of the output file. It
+should take the specified file, make the necessary transformation (if any)
+and place the result into the destination folder.
@node Publishing options, Publishing links, Publishing action, Configuration
-@subsection Options for the HTML/La@TeX{} exporters
+@subsection Options for the HTML/@LaTeX{} exporters
@cindex options, for publishing
The property list can be used to set many export options for the HTML
-and La@TeX{} exporters. In most cases, these properties correspond to user
+and @LaTeX{} exporters. In most cases, these properties correspond to user
variables in Org. The table below lists these properties along
with the variable they belong to. See the documentation string for the
respective variable for details.
@@ -10033,6 +10769,7 @@ respective variable for details.
@vindex org-export-with-fixed-width
@vindex org-export-with-timestamps
@vindex org-export-author-info
+@vindex org-export-email
@vindex org-export-creator-info
@vindex org-export-with-tables
@vindex org-export-highlight-first-table-line
@@ -10081,6 +10818,7 @@ respective variable for details.
@item @code{:fixed-width} @tab @code{org-export-with-fixed-width}
@item @code{:timestamps} @tab @code{org-export-with-timestamps}
@item @code{:author-info} @tab @code{org-export-author-info}
+@item @code{:email-info} @tab @code{org-export-email-info}
@item @code{:creator-info} @tab @code{org-export-creator-info}
@item @code{:tables} @tab @code{org-export-with-tables}
@item @code{:table-auto-headline} @tab @code{org-export-highlight-first-table-line}
@@ -10107,9 +10845,9 @@ respective variable for details.
@end multitable
Most of the @code{org-export-with-*} variables have the same effect in
-both HTML and La@TeX{} exporters, except for @code{:TeX-macros} and
+both HTML and @LaTeX{} exporters, except for @code{:TeX-macros} and
@code{:LaTeX-fragments}, respectively @code{nil} and @code{t} in the
-La@TeX{} export.
+@LaTeX{} export.
@vindex org-publish-project-alist
When a property is given a value in @code{org-publish-project-alist},
@@ -10117,7 +10855,7 @@ its setting overrides the value of the corresponding user variable (if
any) during publishing. Options set within a file (@pxref{Export
options}), however, override everything.
-@node Publishing links, Project page index, Publishing options, Configuration
+@node Publishing links, Sitemap, Publishing options, Configuration
@subsection Links between published files
@cindex links, publishing
@@ -10154,31 +10892,61 @@ description into the HTML file, but no link. One option for this
function is @code{org-publish-validate-link} which checks if the given
file is part of any project in @code{org-publish-project-alist}.
-@node Project page index, , Publishing links, Configuration
-@subsection Project page index
-@cindex index, of published pages
+@node Sitemap, Generating an index, Publishing links, Configuration
+@subsection Generating a sitemap
+@cindex sitemap, of published pages
-The following properties may be used to control publishing of an
-index of files or a summary page for a given project.
+The following properties may be used to control publishing of
+a map of files for a given project.
-@multitable @columnfractions 0.25 0.75
-@item @code{:auto-index}
-@tab When non-nil, publish an index during @code{org-publish-current-project}
+@multitable @columnfractions 0.35 0.65
+@item @code{:auto-sitemap}
+@tab When non-nil, publish a sitemap during @code{org-publish-current-project}
or @code{org-publish-all}.
-@item @code{:index-filename}
-@tab Filename for output of index. Defaults to @file{sitemap.org} (which
+@item @code{:sitemap-filename}
+@tab Filename for output of sitemap. Defaults to @file{sitemap.org} (which
becomes @file{sitemap.html}).
-@item @code{:index-title}
-@tab Title of index page. Defaults to name of file.
+@item @code{:sitemap-title}
+@tab Title of sitemap page. Defaults to name of file.
-@item @code{:index-function}
-@tab Plug-in function to use for generation of index.
-Defaults to @code{org-publish-org-index}, which generates a plain list
+@item @code{:sitemap-function}
+@tab Plug-in function to use for generation of the sitemap.
+Defaults to @code{org-publish-org-sitemap}, which generates a plain list
of links to all files in the project.
+
+@item @code{:sitemap-sort-folders}
+@tab Where folders should appear in the sitemap. Set this to @code{first}
+(default) or @code{last} to display folders first or last,
+respectively. Any other value will mix files and folders.
+
+@item @code{:sitemap-alphabetically}
+@tab The site map is normally sorted alphabetically. Set this explicitly to
+@code{nil} to turn off sorting.
+
+@item @code{:sitemap-ignore-case}
+@tab Should sorting be case-sensitive? Default @code{nil}.
+
@end multitable
+@node Generating an index, , Sitemap, Configuration
+@subsection Generating an index
+@cindex index, in a publishing project
+
+Org-mode can generate an index across the files of a publishing project.
+
+@multitable @columnfractions 0.25 0.75
+@item @code{:makeindex}
+@tab When non-nil, generate in index in the file @file{theindex.org} and
+publish it as @file{theindex.html}.
+@end multitable
+
+The file will be create when first publishing a project with the
+@code{:makeindex} set. The file only contains a statement @code{#+include:
+"theindex.inc"}. You can then built around this include statement by adding
+a title, style information etc.
+
@node Uploading files, Sample configuration, Configuration, Publishing
@section Uploading files
@cindex rsync
@@ -10186,7 +10954,7 @@ of links to all files in the project.
For those people already utilizing third party sync tools such as
@command{rsync} or @command{unison}, it might be preferable not to use the built in
-@i{remote} publishing facilities of Org mode which rely heavily on
+@i{remote} publishing facilities of Org-mode which rely heavily on
Tramp. Tramp, while very useful and powerful, tends not to be
so efficient for multiple file transfer and has been known to cause problems
under heavy usage.
@@ -10253,7 +11021,7 @@ excluded.
To ensure that links are preserved, care should be taken to replicate
your directory structure on the web server, and to use relative file
paths. For example, if your Org files are kept in @file{~/org} and your
-publishable images in @file{~/images}, you'd link to an image with
+publishable images in @file{~/images}, you would link to an image with
@c
@example
file:../images/myimage.png
@@ -10299,17 +11067,13 @@ right place on the web server, and publishing images to it.
Once properly configured, Org can publish with the following commands:
@table @kbd
-@kindex C-c C-e C
-@item C-c C-e C
+@orgcmd{C-c C-e X,org-publish}
Prompt for a specific project and publish all files that belong to it.
-@kindex C-c C-e P
-@item C-c C-e P
+@orgcmd{C-c C-e P,org-publish-current-project}
Publish the project containing the current file.
-@kindex C-c C-e F
-@item C-c C-e F
+@orgcmd{C-c C-e F,org-publish-current-file}
Publish only the current file.
-@kindex C-c C-e E
-@item C-c C-e E
+@orgcmd{C-c C-e E,org-publish-all}
Publish every project.
@end table
@@ -10321,12 +11085,1405 @@ above, or by customizing the variable @code{org-publish-use-timestamps-flag}.
This may be necessary in particular if files include other files via
@code{#+SETUPFILE:} or @code{#+INCLUDE:}.
-@node Miscellaneous, Hacking, Publishing, Top
+@comment node-name, next, previous, up
+@comment Working With Source Code, Miscellaneous, Publishing, Top
+
+@node Working With Source Code, Miscellaneous, Publishing, Top
+@chapter Working with source code
+@cindex Schulte, Eric
+@cindex Davison, Dan
+@cindex source code, working with
+
+Source code can be included in Org-mode documents using a @samp{src} block,
+e.g.
+
+@example
+#+BEGIN_SRC emacs-lisp
+ (defun org-xor (a b)
+ "Exclusive or."
+ (if a (not b) b))
+#+END_SRC
+@end example
+
+Org-mode provides a number of features for working with live source code,
+including editing of code blocks in their native major-mode, evaluation of
+code blocks, tangling of code blocks, and exporting code blocks and their
+results in several formats. This functionality was contributed by Eric
+Schulte and Dan Davison, and was originally named Org-babel.
+
+The following sections describe Org-mode's code block handling facilities.
+
+@menu
+* Structure of code blocks:: Code block syntax described
+* Editing source code:: Language major-mode editing
+* Exporting code blocks:: Export contents and/or results
+* Extracting source code:: Create pure source code files
+* Evaluating code blocks:: Place results of evaluation in the Org-mode buffer
+* Library of Babel:: Use and contribute to a library of useful code blocks
+* Languages:: List of supported code block languages
+* Header arguments:: Configure code block functionality
+* Results of evaluation:: How evaluation results are handled
+* Noweb reference syntax:: Literate programming in Org-mode
+* Key bindings and useful functions:: Work quickly with code blocks
+* Batch execution:: Call functions from the command line
+@end menu
+
+@comment node-name, next, previous, up
+@comment Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
+
+@node Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
+@section Structure of code blocks
+@cindex code block, structure
+@cindex source code, block structure
+
+The structure of code blocks is as follows:
+
+@example
+#+srcname: <name>
+#+begin_src <language> <switches> <header arguments>
+ <body>
+#+end_src
+@end example
+
+code blocks can also be embedded in text as so called inline code blocks as
+
+@example
+src_<language>@{<body>@}
+@end example
+
+or
+
+@example
+src_<language>[<header arguments>]@{<body>@}
+@end example
+
+@table @code
+@item <name>
+This name is associated with the code block. This is similar to the
+@samp{#+tblname} lines that can be used to name tables in Org-mode files.
+Referencing the name of a code block makes it possible to evaluate the
+block from other places in the file, other files, or from Org-mode table
+formulas (see @ref{The spreadsheet}).
+@item <language>
+The language of the code in the block.
+@item <switches>
+Switches controlling exportation of the code block (see switches discussion in
+@ref{Literal examples})
+@item <header arguments>
+Optional header arguments control many aspects of evaluation, export and
+tangling of code blocks. See the @ref{Header arguments}
+section. Header arguments can also be set on a per-buffer or per-subtree
+basis using properties.
+@item <body>
+The source code.
+@end table
+
+@comment node-name, next, previous, up
+@comment Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
+
+@node Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
+@section Editing source code
+@cindex code block, editing
+@cindex source code, editing
+
+@kindex C-c '
+Use @kbd{C-c '} to edit the current code block. This brings up
+a language major-mode edit buffer containing the body of the code
+block. Saving this buffer will write the new contents back to the Org
+buffer. Use @kbd{C-c '} again to exit.
+
+The @code{org-src-mode} minor mode will be active in the edit buffer. The
+following variables can be used to configure the behavior of the edit
+buffer. See also the customization group @code{org-edit-structure} for
+further configuration options.
+
+@table @code
+@item org-src-lang-modes
+If an Emacs major-mode named @code{<lang>-mode} exists, where
+@code{<lang>} is the language named in the header line of the code block,
+then the edit buffer will be placed in that major-mode. This variable
+can be used to map arbitrary language names to existing major modes.
+@item org-src-window-setup
+Controls the way Emacs windows are rearranged when the edit buffer is created.
+@item org-src-preserve-indentation
+This variable is especially useful for tangling languages such as
+Python, in which whitespace indentation in the output is critical.
+@item org-src-ask-before-returning-to-edit-buffer
+By default, Org will ask before returning to an open edit buffer. Set
+this variable to nil to switch without asking.
+@end table
+
+@comment node-name, next, previous, up
+@comment Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
+
+@node Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
+@section Exporting code blocks
+@cindex code block, exporting
+@cindex source code, exporting
+
+It is possible to export the @emph{contents} of code blocks, the
+@emph{results} of code block evaluation, @emph{neither}, or @emph{both}. For
+most languages, the default exports the contents of code blocks. However, for
+some languages (e.g. @code{ditaa}) the default exports the results of code
+block evaluation. For information on exporting code block bodies, see
+@ref{Literal examples}.
+
+The @code{:exports} header argument can be used to specify export
+behavior:
+
+@subsubheading Header arguments:
+@table @code
+@item :exports code
+The default in most languages. The body of the code block is exported, as
+described in @ref{Literal examples}.
+@item :exports results
+The code block will be evaluated and the results will be placed in the
+Org-mode buffer for export, either updating previous results of the code
+block located anywhere in the buffer or, if no previous results exist,
+placing the results immediately after the code block. The body of the code
+block will not be exported.
+@item :exports both
+Both the code block and its results will be exported.
+@item :exports none
+Neither the code block nor its results will be exported.
+@end table
+
+It is possible to inhibit the evaluation of code blocks during export.
+Setting the @code{org-export-babel-evaluate} variable to @code{nil} will
+ensure that no code blocks are evaluated as part of the export process. This
+can be useful in situations where potentially untrusted Org-mode files are
+exported in an automated fashion, for example when Org-mode is used as the
+markup language for a wiki.
+
+@comment node-name, next, previous, up
+@comment Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
+@node Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
+@section Extracting source code
+@cindex source code, extracting
+@cindex code block, extracting source code
+
+Creating pure source code files by extracting code from source blocks is
+referred to as ``tangling''---a term adopted from the literate programming
+community. During ``tangling'' of code blocks their bodies are expanded
+using @code{org-babel-expand-src-block} which can expand both variable and
+``noweb'' style references (see @ref{Noweb reference syntax}).
+
+@subsubheading Header arguments
+@table @code
+@item :tangle no
+The default. The code block is not included in the tangled output.
+@item :tangle yes
+Include the code block in the tangled output. The output file name is the
+name of the org file with the extension @samp{.org} replaced by the extension
+for the block language.
+@item :tangle filename
+Include the code block in the tangled output to file @samp{filename}.
+@end table
+
+@kindex C-c C-v t
+@subsubheading Functions
+@table @code
+@item org-babel-tangle
+Tangle the current file. Bound to @kbd{C-c C-v t}.
+@item org-babel-tangle-file
+Choose a file to tangle. Bound to @kbd{C-c C-v f}.
+@end table
+
+@subsubheading Hooks
+@table @code
+@item org-babel-post-tangle-hook
+This hook is run from within code files tangled by @code{org-babel-tangle}.
+Example applications could include post-processing, compilation or evaluation
+of tangled code files.
+@end table
+
+@node Evaluating code blocks, Library of Babel, Extracting source code, Working With Source Code
+@section Evaluating code blocks
+@cindex code block, evaluating
+@cindex source code, evaluating
+
+Code blocks can be evaluated@footnote{Whenever code is evaluated there is a
+potential for that code to do harm. Org-mode provides a number of safeguards
+to ensure that it only evaluates code with explicit confirmation from the
+user. For information on these safeguards (and on how to disable them) see
+@ref{Code evaluation security}.} and the results placed in the Org-mode
+buffer. By default, evaluation is only turned on for @code{emacs-lisp} code
+blocks, however support exists for evaluating blocks in many languages. See
+@ref{Languages} for a list of supported languages. See @ref{Structure of
+code blocks} for information on the syntax used to define a code block.
+
+@kindex C-c C-c
+There are a number of ways to evaluate code blocks. The simplest is to press
+@kbd{C-c C-c} or @kbd{C-c C-v e} with the point on a code block@footnote{The
+@code{org-babel-no-eval-on-ctrl-c-ctrl-c} variable can be used to remove code
+evaluation from the @kbd{C-c C-c} key binding.}. This will call the
+@code{org-babel-execute-src-block} function to evaluate the block and insert
+its results into the Org-mode buffer.
+
+It is also possible to evaluate named code blocks from anywhere in an
+Org-mode buffer or an Org-mode table. @code{#+call} (or synonymously
+@code{#+function} or @code{#+lob}) lines can be used to remotely execute code
+blocks located in the current Org-mode buffer or in the ``Library of Babel''
+(see @ref{Library of Babel}). These lines use the following syntax.
+
+@example
+#+call: <name>(<arguments>) <header arguments>
+#+function: <name>(<arguments>) <header arguments>
+#+lob: <name>(<arguments>) <header arguments>
+@end example
+
+@table @code
+@item <name>
+The name of the code block to be evaluated.
+@item <arguments>
+Arguments specified in this section will be passed to the code block.
+@item <header arguments>
+Header arguments can be placed after the function invocation. See
+@ref{Header arguments} for more information on header arguments.
+@end table
+
+
+@node Library of Babel, Languages, Evaluating code blocks, Working With Source Code
+@section Library of Babel
+@cindex babel, library of
+@cindex source code, library
+@cindex code block, library
+
+The ``Library of Babel'' is a library of code blocks
+that can be called from any Org-mode file. The library is housed in an
+Org-mode file located in the @samp{contrib} directory of Org-mode.
+Org-mode users can deposit functions they believe to be generally
+useful in the library.
+
+Code blocks defined in the ``Library of Babel'' can be called remotely as if
+they were in the current Org-mode buffer (see @ref{Evaluating code blocks}
+for information on the syntax of remote code block evaluation).
+
+@kindex C-c C-v i
+Code blocks located in any Org-mode file can be loaded into the ``Library of
+Babel'' with the @code{org-babel-lob-ingest} function, bound to @kbd{C-c C-v
+i}.
+
+@node Languages, Header arguments, Library of Babel, Working With Source Code
+@section Languages
+@cindex babel, languages
+@cindex source code, languages
+@cindex code block, languages
+
+Code blocks in the following languages are supported.
+
+@multitable @columnfractions 0.28 0.3 0.22 0.2
+@item @b{Language} @tab @b{Identifier} @tab @b{Language} @tab @b{Identifier}
+@item Asymptote @tab asymptote @tab C @tab C
+@item C++ @tab C++ @tab Clojure @tab clojure
+@item CSS @tab css @tab ditaa @tab ditaa
+@item Graphviz @tab dot @tab Emacs Lisp @tab emacs-lisp
+@item gnuplot @tab gnuplot @tab Haskell @tab haskell
+@item LaTeX @tab latex @tab MATLAB @tab matlab
+@item Mscgen @tab mscgen @tab Objective Caml @tab ocaml
+@item Octave @tab octave @tab Oz @tab oz
+@item Perl @tab perl @tab Python @tab python
+@item R @tab R @tab Ruby @tab ruby
+@item Sass @tab sass @tab GNU Screen @tab screen
+@item shell @tab sh @tab SQL @tab sql
+@item SQLite @tab sqlite
+@end multitable
+
+Language-specific documentation is available for some languages. If
+available, it can be found at
+@uref{http://orgmode.org/worg/org-contrib/babel/languages}.
+
+The @code{org-babel-load-languages} controls which languages are enabled for
+evaluation (by default only @code{emacs-lisp} is enabled). This variable can
+be set using the customization interface or by adding code like the following
+to your emacs configuration.
+
+@quotation
+The following disables @code{emacs-lisp} evaluation and enables evaluation of
+@code{R} code blocks.
+@end quotation
+
+@lisp
+(org-babel-do-load-languages
+ 'org-babel-load-languages
+ '((emacs-lisp . nil)
+ (R . t)))
+@end lisp
+
+It is also possible to enable support for a language by loading the related
+elisp file with @code{require}.
+
+@quotation
+The following adds support for evaluating @code{clojure} code blocks.
+@end quotation
+
+@lisp
+(require 'ob-clojure)
+@end lisp
+
+@node Header arguments, Results of evaluation, Languages, Working With Source Code
+@section Header arguments
+@cindex code block, header arguments
+@cindex source code, block header arguments
+
+Code block functionality can be configured with header arguments. This
+section provides an overview of the use of header arguments, and then
+describes each header argument in detail.
+
+@menu
+* Using header arguments:: Different ways to set header arguments
+* Specific header arguments:: List of header arguments
+@end menu
+
+@node Using header arguments, Specific header arguments, Header arguments, Header arguments
+@subsection Using header arguments
+
+The values of header arguments can be set in six different ways, each more
+specific (and having higher priority) than the last.
+@menu
+* System-wide header arguments:: Set global default values
+* Language-specific header arguments:: Set default values by language
+* Buffer-wide header arguments:: Set default values for a specific buffer
+* Header arguments in Org-mode properties:: Set default values for a buffer or heading
+* Code block specific header arguments:: The most common way to set values
+* Header arguments in function calls:: The most specific level
+@end menu
+
+
+@node System-wide header arguments, Language-specific header arguments, Using header arguments, Using header arguments
+@subsubheading System-wide header arguments
+@vindex org-babel-default-header-args
+System-wide values of header arguments can be specified by customizing the
+@code{org-babel-default-header-args} variable:
+
+@example
+:session => "none"
+:results => "replace"
+:exports => "code"
+:cache => "no"
+:noweb => "no"
+@end example
+
+@c @example
+@c org-babel-default-header-args is a variable defined in `org-babel.el'.
+@c Its value is
+@c ((:session . "none")
+@c (:results . "replace")
+@c (:exports . "code")
+@c (:cache . "no")
+@c (:noweb . "no"))
+
+
+@c Documentation:
+@c Default arguments to use when evaluating a code block.
+@c @end example
+
+For example, the following example could be used to set the default value of
+@code{:noweb} header arguments to @code{yes}. This would have the effect of
+expanding @code{:noweb} references by default when evaluating source code
+blocks.
+
+@lisp
+(setq org-babel-default-header-args
+(cons '(:noweb . "yes")
+(assq-delete-all :noweb org-babel-default-header-args)))
+@end lisp
+
+@node Language-specific header arguments, Buffer-wide header arguments, System-wide header arguments, Using header arguments
+@subsubheading Language-specific header arguments
+Each language can define its own set of default header arguments. See the
+language-specific documentation available online at
+@uref{http://orgmode.org/worg/org-contrib/babel}.
+
+@node Buffer-wide header arguments, Header arguments in Org-mode properties, Language-specific header arguments, Using header arguments
+@subsubheading Buffer-wide header arguments
+Buffer-wide header arguments may be specified through the use of a special
+line placed anywhere in an Org-mode file. The line consists of the
+@code{#+BABEL:} keyword followed by a series of header arguments which may be
+specified using the standard header argument syntax.
+
+For example the following would set @code{session} to @code{*R*}, and
+@code{results} to @code{silent} for every code block in the buffer, ensuring
+that all execution took place in the same session, and no results would be
+inserted into the buffer.
+
+@example
+#+BABEL: :session *R* :results silent
+@end example
+
+@node Header arguments in Org-mode properties, Code block specific header arguments, Buffer-wide header arguments, Using header arguments
+@subsubheading Header arguments in Org-mode properties
+
+Header arguments are also read from Org-mode properties (see @ref{Property
+syntax}), which can be set on a buffer-wide or per-heading basis. An example
+of setting a header argument for all code blocks in a buffer is
+
+@example
+#+property: tangle yes
+@end example
+
+When properties are used to set default header arguments, they are looked up
+with inheritance, so the value of the @code{:cache} header argument will default
+to @code{yes} in all code blocks in the subtree rooted at the following
+heading:
+
+@example
+* outline header
+:PROPERTIES:
+:cache: yes
+:END:
+@end example
+
+@kindex C-c C-x p
+@vindex org-babel-default-header-args
+Properties defined in this way override the properties set in
+@code{org-babel-default-header-args}. It is convenient to use the
+@code{org-set-property} function bound to @kbd{C-c C-x p} to set properties
+in Org-mode documents.
+
+@node Code block specific header arguments, Header arguments in function calls, Header arguments in Org-mode properties, Using header arguments
+@subsubheading Code block specific header arguments
+
+The most common way to assign values to header arguments is at the
+code block level. This can be done by listing a sequence of header
+arguments and their values as part of the @code{#+begin_src} line.
+Properties set in this way override both the values of
+@code{org-babel-default-header-args} and header arguments specified as
+properties. In the following example, the @code{:results} header argument
+is set to @code{silent}, meaning the results of execution will not be
+inserted in the buffer, and the @code{:exports} header argument is set to
+@code{code}, meaning only the body of the code block will be
+preserved on export to HTML or LaTeX.
+
+@example
+#+source: factorial
+#+begin_src haskell :results silent :exports code :var n=0
+fac 0 = 1
+fac n = n * fac (n-1)
+#+end_src
+@end example
+Similarly, it is possible to set header arguments for inline code blocks:
+
+@example
+src_haskell[:exports both]@{fac 5@}
+@end example
+
+@node Header arguments in function calls, , Code block specific header arguments, Using header arguments
+@comment node-name, next, previous, up
+@subsubheading Header arguments in function calls
+
+At the most specific level, header arguments for ``Library of Babel'' or
+function call lines can be set as shown below:
+
+@example
+#+call: factorial(n=5) :exports results
+@end example
+
+@node Specific header arguments, , Using header arguments, Header arguments
+@subsection Specific header arguments
+The following header arguments are defined:
+
+@menu
+* var:: Pass arguments to code blocks
+* results:: Specify the type of results and how they will
+ be collected and handled
+* file:: Specify a path for file output
+* dir:: Specify the default (possibly remote)
+ directory for code block execution
+* exports:: Export code and/or results
+* tangle:: Toggle tangling and specify file name
+* comments:: Toggle insertion of comments in tangled
+ code files
+* no-expand:: Turn off variable assignment and noweb
+ expansion during tangling
+* session:: Preserve the state of code evaluation
+* noweb:: Toggle expansion of noweb references
+* cache:: Avoid re-evaluating unchanged code blocks
+* hlines:: Handle horizontal lines in tables
+* colnames:: Handle column names in tables
+* rownames:: Handle row names in tables
+* shebang:: Make tangled files executable
+* eval:: Limit evaluation of specific code blocks
+@end menu
+
+@node var, results, Specific header arguments, Specific header arguments
+@subsubsection @code{:var}
+The @code{:var} header argument is used to pass arguments to code blocks.
+The specifics of how arguments are included in a code block vary by language;
+these are addressed in the language-specific documentation. However, the
+syntax used to specify arguments is the same across all languages. The
+values passed to arguments can be literal values, values from org-mode tables
+and literal example blocks, or the results of other code blocks.
+
+These values can be indexed in a manner similar to arrays---see the
+``indexable variable values'' heading below.
+
+The following syntax is used to pass arguments to code blocks using the
+@code{:var} header argument.
+
+@example
+:var name=assign
+@end example
+
+where @code{assign} can take one of the following forms
+
+@itemize @bullet
+@item literal value
+either a string @code{"string"} or a number @code{9}.
+@item reference
+a table name:
+
+@example
+#+tblname: example-table
+| 1 |
+| 2 |
+| 3 |
+| 4 |
+
+#+source: table-length
+#+begin_src emacs-lisp :var table=example-table
+(length table)
+#+end_src
+
+#+results: table-length
+: 4
+@end example
+
+a code block name, as assigned by @code{#+srcname:}, followed by
+parentheses:
+
+@example
+#+begin_src emacs-lisp :var length=table-length()
+(* 2 length)
+#+end_src
+
+#+results:
+: 8
+@end example
+
+In addition, an argument can be passed to the code block referenced
+by @code{:var}. The argument is passed within the parentheses following the
+code block name:
+
+@example
+#+source: double
+#+begin_src emacs-lisp :var input=8
+(* 2 input)
+#+end_src
+
+#+results: double
+: 16
+
+#+source: squared
+#+begin_src emacs-lisp :var input=double(input=1)
+(* input input)
+#+end_src
+
+#+results: squared
+: 4
+@end example
+@end itemize
+
+@subsubheading Alternate argument syntax
+It is also possible to specify arguments in a potentially more natural way
+using the @code{#+source:} line of a code block. As in the following
+example arguments can be packed inside of parenthesis, separated by commas,
+following the source name.
+
+@example
+#+source: double(input=0, x=2)
+#+begin_src emacs-lisp
+(* 2 (+ input x))
+#+end_src
+@end example
+
+@subsubheading Indexable variable values
+It is possible to reference portions of variable values by ``indexing'' into
+the variables. Indexes are 0 based with negative values counting back from
+the end. If an index is separated by @code{,}s then each subsequent section
+will index into the next deepest nesting or dimension of the value. The
+following example assigns the last cell of the first row the table
+@code{example-table} to the variable @code{data}:
+
+@example
+#+results: example-table
+| 1 | a |
+| 2 | b |
+| 3 | c |
+| 4 | d |
+
+#+begin_src emacs-lisp :var data=example-table[0,-1]
+ data
+#+end_src
+
+#+results:
+: a
+@end example
+
+Ranges of variable values can be referenced using two integers separated by a
+@code{:}, in which case the entire inclusive range is referenced. For
+example the following assigns the middle three rows of @code{example-table}
+to @code{data}.
+
+@example
+#+results: example-table
+| 1 | a |
+| 2 | b |
+| 3 | c |
+| 4 | d |
+| 5 | 3 |
+
+#+begin_src emacs-lisp :var data=example-table[1:3]
+ data
+#+end_src
+
+#+results:
+| 2 | b |
+| 3 | c |
+| 4 | d |
+@end example
+
+Additionally, an empty index, or the single character @code{*}, are both
+interpreted to mean the entire range and as such are equivalent to
+@code{0:-1}, as shown in the following example in which the entire first
+column is referenced.
+
+@example
+#+results: example-table
+| 1 | a |
+| 2 | b |
+| 3 | c |
+| 4 | d |
+
+#+begin_src emacs-lisp :var data=example-table[,0]
+ data
+#+end_src
+
+#+results:
+| 1 | 2 | 3 | 4 |
+@end example
+
+It is possible to index into the results of code blocks as well as tables.
+Any number of dimensions can be indexed. Dimensions are separated from one
+another by commas, as shown in the following example.
+
+@example
+#+source: 3D
+#+begin_src emacs-lisp
+ '(((1 2 3) (4 5 6) (7 8 9))
+ ((10 11 12) (13 14 15) (16 17 18))
+ ((19 20 21) (22 23 24) (25 26 27)))
+#+end_src
+
+#+begin_src emacs-lisp :var data=3D[1,,1]
+ data
+#+end_src
+
+#+results:
+| 11 | 14 | 17 |
+@end example
+
+@node results, file, var, Specific header arguments
+@subsubsection @code{:results}
+
+There are three classes of @code{:results} header argument. Only one option
+per class may be supplied per code block.
+
+@itemize @bullet
+@item
+@b{collection} header arguments specify how the results should be collected
+from the code block
+@item
+@b{type} header arguments specify what type of result the code block will
+return---which has implications for how they will be inserted into the
+Org-mode buffer
+@item
+@b{handling} header arguments specify how the results of evaluating the code
+block should be handled.
+@end itemize
+
+@subsubheading Collection
+The following options are mutually exclusive, and specify how the results
+should be collected from the code block.
+
+@itemize @bullet
+@item @code{value}
+This is the default. The result is the value of the last statement in the
+code block. This header argument places the evaluation in functional
+mode. Note that in some languages, e.g., Python, use of this result type
+requires that a @code{return} statement be included in the body of the source
+code block. E.g., @code{:results value}.
+@item @code{output}
+The result is the collection of everything printed to STDOUT during the
+execution of the code block. This header argument places the
+evaluation in scripting mode. E.g., @code{:results output}.
+@end itemize
+
+@subsubheading Type
+
+The following options are mutually exclusive and specify what type of results
+the code block will return. By default, results are inserted as either a
+table or scalar depending on their value.
+
+@itemize @bullet
+@item @code{table}, @code{vector}
+The results should be interpreted as an Org-mode table. If a single value is
+returned, it will be converted into a table with one row and one column.
+E.g., @code{:results value table}.
+@item @code{list}
+The results should be interpreted as an Org-mode list. If a single scalar
+value is returned it will be converted into a list with only one element.
+@item @code{scalar}, @code{verbatim}
+The results should be interpreted literally---they will not be
+converted into a table. The results will be inserted into the Org-mode
+buffer as quoted text. E.g., @code{:results value verbatim}.
+@item @code{file}
+The results will be interpreted as the path to a file, and will be inserted
+into the Org-mode buffer as a file link. E.g., @code{:results value file}.
+@item @code{raw}, @code{org}
+The results are interpreted as raw Org-mode code and are inserted directly
+into the buffer. If the results look like a table they will be aligned as
+such by Org-mode. E.g., @code{:results value raw}.
+@item @code{html}
+Results are assumed to be HTML and will be enclosed in a @code{begin_html}
+block. E.g., @code{:results value html}.
+@item @code{latex}
+Results assumed to be LaTeX and are enclosed in a @code{begin_latex} block.
+E.g., @code{:results value latex}.
+@item @code{code}
+Result are assumed to be parseable code and are enclosed in a code block.
+E.g., @code{:results value code}.
+@item @code{pp}
+The result is converted to pretty-printed code and is enclosed in a code
+block. This option currently supports Emacs Lisp, Python, and Ruby. E.g.,
+@code{:results value pp}.
+@end itemize
+
+@subsubheading Handling
+The following results options indicate what happens with the
+results once they are collected.
+
+@itemize @bullet
+@item @code{silent}
+The results will be echoed in the minibuffer but will not be inserted into
+the Org-mode buffer. E.g., @code{:results output silent}.
+@item @code{replace}
+The default value. Any existing results will be removed, and the new results
+will be inserted into the Org-mode buffer in their place. E.g.,
+@code{:results output replace}.
+@item @code{append}
+If there are pre-existing results of the code block then the new results will
+be appended to the existing results. Otherwise the new results will be
+inserted as with @code{replace}.
+@item @code{prepend}
+If there are pre-existing results of the code block then the new results will
+be prepended to the existing results. Otherwise the new results will be
+inserted as with @code{replace}.
+@end itemize
+
+@node file, dir, results, Specific header arguments
+@subsubsection @code{:file}
+
+The header argument @code{:file} is used to specify a path for file output.
+An Org-mode style @code{file:} link is inserted into the buffer as the result
+(see @ref{Link format}). Common examples are graphical output from R,
+gnuplot, ditaa and LaTeX code blocks.
+
+Note that for some languages, including R, gnuplot, LaTeX and ditaa,
+graphical output is sent to the specified file without the file being
+referenced explicitly in the code block. See the documentation for the
+individual languages for details. In contrast, general purpose languages such
+as Python and Ruby require that the code explicitly create output
+corresponding to the path indicated by @code{:file}.
+
+
+@node dir, exports, file, Specific header arguments
+@subsubsection @code{:dir} and remote execution
+
+While the @code{:file} header argument can be used to specify the path to the
+output file, @code{:dir} specifies the default directory during code block
+execution. If it is absent, then the directory associated with the current
+buffer is used. In other words, supplying @code{:dir path} temporarily has
+the same effect as changing the current directory with @kbd{M-x cd path}, and
+then not supplying @code{:dir}. Under the surface, @code{:dir} simply sets
+the value of the Emacs variable @code{default-directory}.
+
+When using @code{:dir}, you should supply a relative path for file output
+(e.g. @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
+case that path will be interpreted relative to the default directory.
+
+In other words, if you want your plot to go into a folder called @file{Work}
+in your home directory, you could use
+
+@example
+#+begin_src R :file myplot.png :dir ~/Work
+matplot(matrix(rnorm(100), 10), type="l")
+#+end_src
+@end example
+
+@subsubheading Remote execution
+A directory on a remote machine can be specified using tramp file syntax, in
+which case the code will be evaluated on the remote machine. An example is
+
+@example
+#+begin_src R :file plot.png :dir /dand@@yakuba.princeton.edu:
+plot(1:10, main=system("hostname", intern=TRUE))
+#+end_src
+@end example
+
+Text results will be returned to the local Org-mode buffer as usual, and file
+output will be created on the remote machine with relative paths interpreted
+relative to the remote directory. An Org-mode link to the remote file will be
+created.
+
+So, in the above example a plot will be created on the remote machine,
+and a link of the following form will be inserted in the org buffer:
+
+@example
+[[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
+@end example
+
+Most of this functionality follows immediately from the fact that @code{:dir}
+sets the value of the Emacs variable @code{default-directory}, thanks to
+tramp. Those using XEmacs, or GNU Emacs prior to version 23 may need to
+install tramp separately in order for these features to work correctly.
+
+@subsubheading Further points
+
+@itemize @bullet
+@item
+If @code{:dir} is used in conjunction with @code{:session}, although it will
+determine the starting directory for a new session as expected, no attempt is
+currently made to alter the directory associated with an existing session.
+@item
+@code{:dir} should typically not be used to create files during export with
+@code{:exports results} or @code{:exports both}. The reason is that, in order
+to retain portability of exported material between machines, during export
+links inserted into the buffer will *not* be expanded against @code{default
+directory}. Therefore, if @code{default-directory} is altered using
+@code{:dir}, it is probable that the file will be created in a location to
+which the link does not point.
+@end itemize
+
+@node exports, tangle, dir, Specific header arguments
+@subsubsection @code{:exports}
+
+The @code{:exports} header argument specifies what should be included in HTML
+or LaTeX exports of the Org-mode file.
+
+@itemize @bullet
+@item @code{code}
+The default. The body of code is included into the exported file. E.g.,
+@code{:exports code}.
+@item @code{results}
+The result of evaluating the code is included in the exported file. E.g.,
+@code{:exports results}.
+@item @code{both}
+Both the code and results are included in the exported file. E.g.,
+@code{:exports both}.
+@item @code{none}
+Nothing is included in the exported file. E.g., @code{:exports none}.
+@end itemize
+
+@node tangle, comments, exports, Specific header arguments
+@subsubsection @code{:tangle}
+
+The @code{:tangle} header argument specifies whether or not the code
+block should be included in tangled extraction of source code files.
+
+@itemize @bullet
+@item @code{tangle}
+The code block is exported to a source code file named after the
+basename (name w/o extension) of the Org-mode file. E.g., @code{:tangle
+yes}.
+@item @code{no}
+The default. The code block is not exported to a source code file.
+E.g., @code{:tangle no}.
+@item other
+Any other string passed to the @code{:tangle} header argument is interpreted
+as a file basename to which the block will be exported. E.g., @code{:tangle
+basename}.
+@end itemize
+
+@node comments, no-expand, tangle, Specific header arguments
+@subsubsection @code{:comments}
+By default code blocks are tangled to source-code files without any insertion
+of comments beyond those which may already exist in the body of the code
+block. The @code{:comments} header argument can be set as follows to control
+the insertion of extra comments into the tangled code file.
+
+@itemize @bullet
+@item @code{no}
+The default. No extra comments are inserted during tangling.
+@item @code{link}
+The code block is wrapped in comments which contain pointers back to the
+original Org file from which the code was tangled.
+@item @code{yes}
+A synonym for ``link'' to maintain backwards compatibility.
+@item @code{org}
+Include text from the org-mode file as a comment.
+
+The text is picked from the leading context of the tangled code and is
+limited by the nearest headline or source block as the case may be.
+@item @code{both}
+Turns on both the ``link'' and ``org'' comment options.
+@end itemize
+
+@node no-expand, session, comments, Specific header arguments
+@subsubsection @code{:no-expand}
+
+By default, code blocks are expanded with @code{org-babel-expand-src-block}
+during tangling. This has the effect of assigning values to variables
+specified with @code{:var} (see @ref{var}), and of replacing ``noweb''
+references (see @ref{Noweb reference syntax}) with their targets. The
+@code{:no-expand} header argument can be used to turn off this behavior.
+
+@node session, noweb, no-expand, Specific header arguments
+@subsubsection @code{:session}
+
+The @code{:session} header argument starts a session for an interpreted
+language where state is preserved.
+
+By default, a session is not started.
+
+A string passed to the @code{:session} header argument will give the session
+a name. This makes it possible to run concurrent sessions for each
+interpreted language.
+
+@node noweb, cache, session, Specific header arguments
+@subsubsection @code{:noweb}
+
+The @code{:noweb} header argument controls expansion of ``noweb'' style (see
+@ref{Noweb reference syntax}) references in a code block. This header
+argument can have one of three values: @code{yes} @code{no} or @code{tangle}.
+
+@itemize @bullet
+@item @code{yes}
+All ``noweb'' syntax references in the body of the code block will be
+expanded before the block is evaluated, tangled or exported.
+@item @code{no}
+The default. No ``noweb'' syntax specific action is taken on evaluating
+code blocks, However, noweb references will still be expanded during
+tangling.
+@item @code{tangle}
+All ``noweb'' syntax references in the body of the code block will be
+expanded before the block is tangled, however ``noweb'' references will not
+be expanded when the block is evaluated or exported.
+@end itemize
+
+@subsubheading Noweb prefix lines
+Noweb insertions are now placed behind the line prefix of the
+@code{<<reference>>}.
+This behavior is illustrated in the following example. Because the
+@code{<<example>>} noweb reference appears behind the SQL comment syntax,
+each line of the expanded noweb reference will be commented.
+
+This code block:
+
+@example
+-- <<example>>
+@end example
+
+
+expands to:
+
+@example
+-- this is the
+-- multi-line body of example
+@end example
+
+Note that noweb replacement text that does not contain any newlines will not
+be affected by this change, so it is still possible to use inline noweb
+references.
+
+@node cache, hlines, noweb, Specific header arguments
+@subsubsection @code{:cache}
+
+The @code{:cache} header argument controls the use of in-buffer caching of
+the results of evaluating code blocks. It can be used to avoid re-evaluating
+unchanged code blocks. This header argument can have one of two
+values: @code{yes} or @code{no}.
+
+@itemize @bullet
+@item @code{no}
+The default. No caching takes place, and the code block will be evaluated
+every time it is called.
+@item @code{yes}
+Every time the code block is run a SHA1 hash of the code and arguments
+passed to the block will be generated. This hash is packed into the
+@code{#+results:} line and will be checked on subsequent
+executions of the code block. If the code block has not
+changed since the last time it was evaluated, it will not be re-evaluated.
+@end itemize
+
+@node hlines, colnames, cache, Specific header arguments
+@subsubsection @code{:hlines}
+
+Tables are frequently represented with one or more horizontal lines, or
+hlines. The @code{:hlines} argument to a code block accepts the
+values @code{yes} or @code{no}, with a default value of @code{no}.
+
+@itemize @bullet
+@item @code{no}
+Strips horizontal lines from the input table. In most languages this is the
+desired effect because an @code{hline} symbol is interpreted as an unbound
+variable and raises an error. Setting @code{:hlines no} or relying on the
+default value yields the following results.
+
+@example
+#+tblname: many-cols
+| a | b | c |
+|---+---+---|
+| d | e | f |
+|---+---+---|
+| g | h | i |
+
+#+source: echo-table
+#+begin_src python :var tab=many-cols
+ return tab
+#+end_src
+
+#+results: echo-table
+| a | b | c |
+| d | e | f |
+| g | h | i |
+@end example
+
+@item @code{yes}
+Leaves hlines in the table. Setting @code{:hlines yes} has this effect.
+
+@example
+#+tblname: many-cols
+| a | b | c |
+|---+---+---|
+| d | e | f |
+|---+---+---|
+| g | h | i |
+
+#+source: echo-table
+#+begin_src python :var tab=many-cols :hlines yes
+ return tab
+#+end_src
+
+#+results: echo-table
+| a | b | c |
+|---+---+---|
+| d | e | f |
+|---+---+---|
+| g | h | i |
+@end example
+@end itemize
+
+@node colnames, rownames, hlines, Specific header arguments
+@subsubsection @code{:colnames}
+
+The @code{:colnames} header argument accepts the values @code{yes},
+@code{no}, or @code{nil} for unassigned. The default value is @code{nil}.
+
+@itemize @bullet
+@item @code{nil}
+If an input table looks like it has column names
+(because its second row is an hline), then the column
+names will be removed from the table before
+processing, then reapplied to the results.
+
+@example
+#+tblname: less-cols
+| a |
+|---|
+| b |
+| c |
+
+#+srcname: echo-table-again
+#+begin_src python :var tab=less-cols
+ return [[val + '*' for val in row] for row in tab]
+#+end_src
+
+#+results: echo-table-again
+| a |
+|----|
+| b* |
+| c* |
+@end example
+
+@item @code{no}
+No column name pre-processing takes place
+
+@item @code{yes}
+Column names are removed and reapplied as with @code{nil} even if the table
+does not ``look like'' it has column names (i.e. the second row is not an
+hline)
+@end itemize
+
+@node rownames, shebang, colnames, Specific header arguments
+@subsubsection @code{:rownames}
+
+The @code{:rownames} header argument can take on the values @code{yes}
+or @code{no}, with a default value of @code{no}.
+
+@itemize @bullet
+@item @code{no}
+No row name pre-processing will take place.
+
+@item @code{yes}
+The first column of the table is removed from the table before processing,
+and is then reapplied to the results.
+
+@example
+#+tblname: with-rownames
+| one | 1 | 2 | 3 | 4 | 5 |
+| two | 6 | 7 | 8 | 9 | 10 |
+
+#+srcname: echo-table-once-again
+#+begin_src python :var tab=with-rownames :rownames yes
+ return [[val + 10 for val in row] for row in tab]
+#+end_src
+
+#+results: echo-table-once-again
+| one | 11 | 12 | 13 | 14 | 15 |
+| two | 16 | 17 | 18 | 19 | 20 |
+@end example
+@end itemize
+
+@node shebang, eval, rownames, Specific header arguments
+@subsubsection @code{:shebang}
+
+Setting the @code{:shebang} header argument to a string value
+(e.g. @code{:shebang "#!/bin/bash"}) causes the string to be inserted as the
+first line of any tangled file holding the code block, and the file
+permissions of the tangled file are set to make it executable.
+
+@node eval, , shebang, Specific header arguments
+@subsubsection @code{:eval}
+The @code{:eval} header argument can be used to limit the evaluation of
+specific code blocks. @code{:eval} accepts two arguments ``never'' and
+``query''. @code{:eval never} will ensure that a code block is never
+evaluated, this can be useful for protecting against the evaluation of
+dangerous code blocks. @code{:eval query} will require a query for every
+execution of a code block regardless of the value of the
+@code{org-confirm-babel-evaluate} variable.
+
+@node Results of evaluation, Noweb reference syntax, Header arguments, Working With Source Code
+@section Results of evaluation
+@cindex code block, results of evaluation
+@cindex source code, results of evaluation
+
+The way in which results are handled depends on whether a session is invoked,
+as well as on whether @code{:results value} or @code{:results output} is
+used. The following table shows the possibilities:
+
+@multitable @columnfractions 0.26 0.33 0.41
+@item @tab @b{Non-session} @tab @b{Session}
+@item @code{:results value} @tab value of last expression @tab value of last expression
+@item @code{:results output} @tab contents of STDOUT @tab concatenation of interpreter output
+@end multitable
+
+Note: With @code{:results value}, the result in both @code{:session} and
+non-session is returned to Org-mode as a table (a one- or two-dimensional
+vector of strings or numbers) when appropriate.
+
+@subsection Non-session
+@subsubsection @code{:results value}
+This is the default. Internally, the value is obtained by wrapping the code
+in a function definition in the external language, and evaluating that
+function. Therefore, code should be written as if it were the body of such a
+function. In particular, note that Python does not automatically return a
+value from a function unless a @code{return} statement is present, and so a
+@samp{return} statement will usually be required in Python.
+
+This is the only one of the four evaluation contexts in which the code is
+automatically wrapped in a function definition.
+
+@subsubsection @code{:results output}
+The code is passed to the interpreter as an external process, and the
+contents of the standard output stream are returned as text. (In certain
+languages this also contains the error output stream; this is an area for
+future work.)
+
+@subsection Session
+@subsubsection @code{:results value}
+The code is passed to the interpreter running as an interactive Emacs
+inferior process. The result returned is the result of the last evaluation
+performed by the interpreter. (This is obtained in a language-specific
+manner: the value of the variable @code{_} in Python and Ruby, and the value
+of @code{.Last.value} in R).
+
+@subsubsection @code{:results output}
+The code is passed to the interpreter running as an interactive Emacs
+inferior process. The result returned is the concatenation of the sequence of
+(text) output from the interactive interpreter. Notice that this is not
+necessarily the same as what would be sent to @code{STDOUT} if the same code
+were passed to a non-interactive interpreter running as an external
+process. For example, compare the following two blocks:
+
+@example
+#+begin_src python :results output
+ print "hello"
+ 2
+ print "bye"
+#+end_src
+
+#+resname:
+: hello
+: bye
+@end example
+
+In non-session mode, the `2' is not printed and does not appear.
+@example
+#+begin_src python :results output :session
+ print "hello"
+ 2
+ print "bye"
+#+end_src
+
+#+resname:
+: hello
+: 2
+: bye
+@end example
+
+But in @code{:session} mode, the interactive interpreter receives input `2'
+and prints out its value, `2'. (Indeed, the other print statements are
+unnecessary here).
+
+@node Noweb reference syntax, Key bindings and useful functions, Results of evaluation, Working With Source Code
+@section Noweb reference syntax
+@cindex code block, noweb reference
+@cindex syntax, noweb
+@cindex source code, noweb reference
+
+The ``noweb'' (see @uref{http://www.cs.tufts.edu/~nr/noweb/}) Literate
+Programming system allows named blocks of code to be referenced by using the
+familiar Noweb syntax:
+
+@example
+<<code-block-name>>
+@end example
+
+When a code block is tangled or evaluated, whether or not ``noweb''
+references are expanded depends upon the value of the @code{:noweb} header
+argument. If @code{:noweb yes}, then a Noweb reference is expanded before
+evaluation. If @code{:noweb no}, the default, then the reference is not
+expanded before evaluation.
+
+Note: the default value, @code{:noweb no}, was chosen to ensure that
+correct code is not broken in a language, such as Ruby, where
+@code{<<arg>>} is a syntactically valid construct. If @code{<<arg>>} is not
+syntactically valid in languages that you use, then please consider setting
+the default value.
+
+@node Key bindings and useful functions, Batch execution, Noweb reference syntax, Working With Source Code
+@section Key bindings and useful functions
+@cindex code block, key bindings
+
+Many common Org-mode key sequences are re-bound depending on
+the context.
+
+Within a code block, the following key bindings
+are active:
+
+@multitable @columnfractions 0.25 0.75
+@kindex C-c C-c
+@item @kbd{C-c C-c} @tab org-babel-execute-src-block
+@kindex C-c C-o
+@item @kbd{C-c C-o} @tab org-babel-open-src-block-result
+@kindex C-up
+@item @kbd{C-@key{up}} @tab org-babel-load-in-session
+@kindex M-down
+@item @kbd{M-@key{down}} @tab org-babel-pop-to-session
+@end multitable
+
+In an Org-mode buffer, the following key bindings are active:
+
+@multitable @columnfractions 0.45 0.55
+@kindex C-c C-v a
+@kindex C-c C-v C-a
+@item @kbd{C-c C-v a} @ @ @r{or} @ @ @kbd{C-c C-v C-a} @tab org-babel-sha1-hash
+@kindex C-c C-v b
+@kindex C-c C-v C-b
+@item @kbd{C-c C-v b} @ @ @r{or} @ @ @kbd{C-c C-v C-b} @tab org-babel-execute-buffer
+@kindex C-c C-v f
+@kindex C-c C-v C-f
+@item @kbd{C-c C-v f} @ @ @r{or} @ @ @kbd{C-c C-v C-f} @tab org-babel-tangle-file
+@kindex C-c C-v g
+@item @kbd{C-c C-v g} @tab org-babel-goto-named-source-block
+@kindex C-c C-v h
+@item @kbd{C-c C-v h} @tab org-babel-describe-bindings
+@kindex C-c C-v l
+@kindex C-c C-v C-l
+@item @kbd{C-c C-v l} @ @ @r{or} @ @ @kbd{C-c C-v C-l} @tab org-babel-lob-ingest
+@kindex C-c C-v p
+@kindex C-c C-v C-p
+@item @kbd{C-c C-v p} @ @ @r{or} @ @ @kbd{C-c C-v C-p} @tab org-babel-expand-src-block
+@kindex C-c C-v s
+@kindex C-c C-v C-s
+@item @kbd{C-c C-v s} @ @ @r{or} @ @ @kbd{C-c C-v C-s} @tab org-babel-execute-subtree
+@kindex C-c C-v t
+@kindex C-c C-v C-t
+@item @kbd{C-c C-v t} @ @ @r{or} @ @ @kbd{C-c C-v C-t} @tab org-babel-tangle
+@kindex C-c C-v z
+@kindex C-c C-v C-z
+@item @kbd{C-c C-v z} @ @ @r{or} @ @ @kbd{C-c C-v C-z} @tab org-babel-switch-to-session
+@end multitable
+
+@c When possible these keybindings were extended to work when the control key is
+@c kept pressed, resulting in the following additional keybindings.
+
+@c @multitable @columnfractions 0.25 0.75
+@c @item @kbd{C-c C-v C-a} @tab org-babel-sha1-hash
+@c @item @kbd{C-c C-v C-b} @tab org-babel-execute-buffer
+@c @item @kbd{C-c C-v C-f} @tab org-babel-tangle-file
+@c @item @kbd{C-c C-v C-l} @tab org-babel-lob-ingest
+@c @item @kbd{C-c C-v C-p} @tab org-babel-expand-src-block
+@c @item @kbd{C-c C-v C-s} @tab org-babel-execute-subtree
+@c @item @kbd{C-c C-v C-t} @tab org-babel-tangle
+@c @item @kbd{C-c C-v C-z} @tab org-babel-switch-to-session
+@c @end multitable
+
+@node Batch execution, , Key bindings and useful functions, Working With Source Code
+@section Batch execution
+@cindex code block, batch execution
+@cindex source code, batch execution
+
+It is possible to call functions from the command line. This shell
+script calls @code{org-babel-tangle} on every one of its arguments.
+
+Be sure to adjust the paths to fit your system.
+
+@example
+#!/bin/sh
+# -*- mode: shell-script -*-
+#
+# tangle files with org-mode
+#
+DIR=`pwd`
+FILES=""
+ORGINSTALL="~/src/org/lisp/org-install.el"
+
+# wrap each argument in the code required to call tangle on it
+for i in $@@; do
+ FILES="$FILES \"$i\""
+done
+
+emacs -Q --batch -l $ORGINSTALL \
+--eval "(progn
+(add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
+(add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\"))
+(require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
+(mapc (lambda (file)
+ (find-file (expand-file-name file \"$DIR\"))
+ (org-babel-tangle)
+ (kill-buffer)) '($FILES)))" 2>&1 |grep tangled
+@end example
+
+@node Miscellaneous, Hacking, Working With Source Code, Top
@chapter Miscellaneous
@menu
* Completion:: M-TAB knows what you need
-* Speed keys:: Electic commands at the beginning of a headline
+* Easy Templates:: Quick insertion of structural elements
+* Speed keys:: Electric commands at the beginning of a headline
+* Code evaluation security:: Org mode files evaluate inline code
* Customization:: Adapting Org to your taste
* In-buffer settings:: Overview of the #+KEYWORDS
* The very busy C-c C-c key:: When in doubt, press C-c C-c
@@ -10336,7 +12493,7 @@ This may be necessary in particular if files include other files via
@end menu
-@node Completion, Speed keys, Miscellaneous, Miscellaneous
+@node Completion, Easy Templates, Miscellaneous, Miscellaneous
@section Completion
@cindex completion, of @TeX{} symbols
@cindex completion, of TODO keywords
@@ -10387,7 +12544,7 @@ buffer.
After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
@item
After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
-@samp{OPTIONS} which set file-specific options for Org mode. When the
+@samp{OPTIONS} which set file-specific options for Org-mode. When the
option keyword is already complete, pressing @kbd{M-@key{TAB}} again
will insert example settings for this keyword.
@item
@@ -10398,7 +12555,46 @@ Elsewhere, complete dictionary words using Ispell.
@end itemize
@end table
-@node Speed keys, Customization, Completion, Miscellaneous
+@node Easy Templates, Speed keys, Completion, Miscellaneous
+@section Easy Templates
+@cindex template insertion
+@cindex insertion, of templates
+
+Org-mode supports insertion of empty structural elements (like
+@code{#+BEGIN_SRC} and @code{#+END_SRC} pairs) with just a few key
+strokes. This is achieved through a native template expansion mechanism.
+Note that Emacs has several other template mechanisms which could be used in
+a similar way, for example @file{yasnippet}.
+
+To insert a structural element, type a @samp{<}, followed by a template
+selector and @kbd{@key{TAB}}. Completion takes effect only when the above
+keystrokes are typed on a line by itself.
+
+The following template selectors are currently supported.
+
+@multitable @columnfractions 0.1 0.9
+@item @kbd{s} @tab @code{#+begin_src ... #+end_src}
+@item @kbd{e} @tab @code{#+begin_example ... #+end_example}
+@item @kbd{q} @tab @code{#+begin_quote ... #+end_quote}
+@item @kbd{v} @tab @code{#+begin_verse ... #+end_verse}
+@item @kbd{c} @tab @code{#+begin_center ... #+end_center}
+@item @kbd{l} @tab @code{#+begin_latex ... #+end_latex}
+@item @kbd{L} @tab @code{#+latex:}
+@item @kbd{h} @tab @code{#+begin_html ... #+end_html}
+@item @kbd{H} @tab @code{#+html:}
+@item @kbd{a} @tab @code{#+begin_ascii ... #+end_ascii}
+@item @kbd{A} @tab @code{#+ascii:}
+@item @kbd{i} @tab @code{#+include:} line
+@end multitable
+
+For example, on an empty line, typing "<e" and then pressing TAB, will expand
+into a complete EXAMPLE template.
+
+You can install additional templates by customizing the variable
+@code{org-structure-template-alist}. See the docstring of the variable for
+additional details.
+
+@node Speed keys, Code evaluation security, Easy Templates, Miscellaneous
@section Speed keys
@cindex speed keys
@vindex org-use-speed-commands
@@ -10410,13 +12606,62 @@ beginning of a headline, i.e. before the first star. Configure the variable
pre-defined list of commands, and you can add more such commands using the
variable @code{org-speed-commands-user}. Speed keys do not only speed up
navigation and other commands, but they also provide an alternative way to
-execute commands bound to keys that are not or not easily available on a tty,
+execute commands bound to keys that are not or not easily available on a TTY,
or on a small mobile device with a limited keyboard.
To see which commands are available, activate the feature and press @kbd{?}
with the cursor at the beginning of a headline.
-@node Customization, In-buffer settings, Speed keys, Miscellaneous
+@node Code evaluation security, Customization, Speed keys, Miscellaneous
+@section Code evaluation and security issues
+
+Org provides tools to work with the code snippets, including evaluating them.
+
+Running code on your machine always comes with a security risk. Badly
+written or malicious code can be executed on purpose or by accident. Org has
+default settings which will only evaluate such code if you give explicit
+permission to do so, and as a casual user of these features you should leave
+these precautions intact.
+
+For people who regularly work with such code, the confirmation prompts can
+become annoying, and you might want to turn them off. This can be done, but
+you must be aware of the risks that are involved.
+
+Code evaluation can happen under the following circumstances:
+
+@table @i
+@item Source code blocks
+Source code blocks can be evaluated during export, or when pressing @kbd{C-c
+C-c} in the block. The most important thing to realize here is that Org mode
+files which contain code snippets are, in a certain sense, like executable
+files. So you should accept them and load them into Emacs only from trusted
+sources---just like you would do with a program you install on your computer.
+
+Make sure you know what you are doing before customizing the variables
+which take off the default security brakes.
+
+@defopt org-confirm-babel-evaluate
+When set to t user is queried before code block evaluation
+@end defopt
+
+@item Following @code{shell} and @code{elisp} links
+Org has two link types that can directly evaluate code (@pxref{External
+links}). These links can be problematic because the code to be evaluated is
+not visible.
+
+@defopt org-confirm-shell-link-function
+Function to queries user about shell link execution.
+@end defopt
+@defopt org-confirm-elisp-link-function
+Functions to query user for Emacs Lisp link execution.
+@end defopt
+
+@item Formulas in tables
+Formulas in tables (@pxref{The spreadsheet}) are code that is evaluated
+either by the @i{calc} interpreter, or by the @i{Emacs Lisp} interpreter.
+@end table
+
+@node Customization, In-buffer settings, Code evaluation security, Miscellaneous
@section Customization
@cindex customization
@cindex options, for customization
@@ -10435,7 +12680,7 @@ lines into the buffer (@pxref{In-buffer settings}).
@cindex in-buffer settings
@cindex special keywords
-Org mode uses special lines in the buffer to define settings on a
+Org-mode uses special lines in the buffer to define settings on a
per-file basis. These lines start with a @samp{#+} followed by a
keyword, a colon, and then individual words defining a setting. Several
setting words can be in the same line, but you can also have multiple
@@ -10465,7 +12710,7 @@ applies.
@vindex org-table-formula-constants
@vindex org-table-formula
Set file-local values for constants to be used in table formulas. This
-line set the local variable @code{org-table-formula-constants-local}.
+line sets the local variable @code{org-table-formula-constants-local}.
The global version of this variable is
@code{org-table-formula-constants}.
@item #+FILETAGS: :tag1:tag2:tag3:
@@ -10486,7 +12731,7 @@ These lines (several are allowed) specify link abbreviations.
@vindex org-default-priority
This line sets the limits and the default for the priorities. All three
must be either letters A-Z or numbers 0-9. The highest priority must
-have a lower ASCII number that the lowest priority.
+have a lower ASCII number than the lowest priority.
@item #+PROPERTY: Property_Name Value
This line sets a default inheritance value for entries in the current
buffer, most useful for specifying the allowed values of a property.
@@ -10494,14 +12739,14 @@ buffer, most useful for specifying the allowed values of a property.
@item #+SETUPFILE: file
This line defines a file that holds more in-buffer setup. Normally this is
entirely ignored. Only when the buffer is parsed for option-setting lines
-(i.e. when starting Org mode for a file, when pressing @kbd{C-c C-c} in a
+(i.e. when starting Org-mode for a file, when pressing @kbd{C-c C-c} in a
settings line, or when exporting), then the contents of this file are parsed
as if they had been included in the buffer. In particular, the file can be
-any other Org mode file with internal setup. You can visit the file the
+any other Org-mode file with internal setup. You can visit the file the
cursor is in the line with @kbd{C-c '}.
@item #+STARTUP:
@cindex #+STARTUP:
-This line sets options to be used at startup of Org mode, when an
+This line sets options to be used at startup of Org-mode, when an
Org file is being visited.
The first set of options deals with the initial visibility of the outline
@@ -10541,6 +12786,18 @@ variable is @code{org-startup-align-all-tables}, with a default value
align @r{align all tables}
noalign @r{don't align tables on startup}
@end example
+
+@vindex org-startup-with-inline-images
+When visiting a file, inline images can be automatically displayed. The
+corresponding variable is @code{org-startup-with-inline-images}, with a
+default value @code{nil} to avoid delays when visiting a file.
+@cindex @code{inlineimages}, STARTUP keyword
+@cindex @code{noinlineimages}, STARTUP keyword
+@example
+inlineimages @r{show inline images}
+noinlineimages @r{don't show inline images on startup}
+@end example
+
@vindex org-log-done
@vindex org-log-note-clock-out
@vindex org-log-repeat
@@ -10561,6 +12818,9 @@ configured using these options (see variables @code{org-log-done},
@cindex @code{logredeadline}, STARTUP keyword
@cindex @code{lognoteredeadline}, STARTUP keyword
@cindex @code{nologredeadline}, STARTUP keyword
+@cindex @code{logrefile}, STARTUP keyword
+@cindex @code{lognoterefile}, STARTUP keyword
+@cindex @code{nologrefile}, STARTUP keyword
@example
logdone @r{record a timestamp when an item is marked DONE}
lognotedone @r{record timestamp and a note when DONE}
@@ -10576,6 +12836,9 @@ nologreschedule @r{do not record when a scheduling date changes}
logredeadline @r{record a timestamp when deadline changes}
lognoteredeadline @r{record a note when deadline changes}
nologredeadline @r{do not record when a deadline date changes}
+logrefile @r{record a timestamp when refiling}
+lognoterefile @r{record a note when refiling}
+nologrefile @r{do not record when refiling}
@end example
@vindex org-hide-leading-stars
@vindex org-odd-levels-only
@@ -10648,6 +12911,15 @@ To hide blocks on startup, use these keywords. The corresponding variable is
hideblocks @r{Hide all begin/end blocks on startup}
nohideblocks @r{Do not hide blocks on startup}
@end example
+@cindex org-pretty-entities
+The display of entities as UTF-8 characters is governed by the variable
+@code{org-pretty-entities} and the keywords
+@cindex @code{entitiespretty}, STARTUP keyword
+@cindex @code{entitiesplain}, STARTUP keyword
+@example
+entitiespretty @r{Show entities as UTF-8 characters where possible}
+entitiesplain @r{Leave entities plain}
+@end example
@item #+TAGS: TAG1(c1) TAG2(c2)
@vindex org-tag-alist
These lines (several such lines are allowed) specify the valid tags in
@@ -10656,8 +12928,8 @@ keys. The corresponding variable is @code{org-tag-alist}.
@item #+TBLFM:
This line contains the formulas for the table directly above the line.
@item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+DATE:,
-@itemx #+OPTIONS:, #+BIND:
-@itemx #+DESCRIPTION:, #+KEYWORDS:
+@itemx #+OPTIONS:, #+BIND:, #+XSLT:,
+@itemx #+DESCRIPTION:, #+KEYWORDS:,
@itemx #+LATEX_HEADER:, #+STYLE:, #+LINK_UP:, #+LINK_HOME:,
@itemx #+EXPORT_SELECT_TAGS:, #+EXPORT_EXCLUDE_TAGS:
These lines provide settings for exporting files. For more details see
@@ -10695,10 +12967,7 @@ works even if the automatic table editor has been turned off.
If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
the entire table.
@item
-If the cursor is inside a table created by the @file{table.el} package,
-activate that table.
-@item
-If the current buffer is a Remember buffer, close the note and file it.
+If the current buffer is a capture buffer, close the note and file it.
With a prefix argument, file it, without further interaction, to the
default location.
@item
@@ -10749,25 +13018,30 @@ more text | more text
@end example
@noindent
-If you are using at least Emacs 23.1.50.3 and version 6.29 of Org, this kind
-of view can be achieved dynamically at display time using
-@code{org-indent-mode}. In this minor mode, all lines are prefixed for
-display with the necessary amount of space. Also headlines are prefixed with
-additional stars, so that the amount of indentation shifts by
-two@footnote{See the variable @code{org-indent-indentation-per-level}.}
-spaces per level. All headline stars but the last one are made invisible
-using the @code{org-hide} face@footnote{Turning on @code{org-indent-mode}
-sets @code{org-hide-leading-stars} to @code{t} and
-@code{org-adapt-indentation} to @code{nil}.} - see below under @samp{2.} for
-more information on how this works. You can turn on @code{org-indent-mode}
-for all files by customizing the variable @code{org-startup-indented}, or you
-can turn it on for individual files using
+
+If you are using at least Emacs 23.2@footnote{Emacs 23.1 can actually crash
+with @code{org-indent-mode}} and version 6.29 of Org, this kind of view can
+be achieved dynamically at display time using @code{org-indent-mode}. In
+this minor mode, all lines are prefixed for display with the necessary amount
+of space@footnote{@code{org-indent-mode} also sets the @code{wrap-prefix}
+property, such that @code{visual-line-mode} (or purely setting
+@code{word-wrap}) wraps long lines (including headlines) correctly indented.
+}. Also headlines are prefixed with additional stars, so that the amount of
+indentation shifts by two@footnote{See the variable
+@code{org-indent-indentation-per-level}.} spaces per level. All headline
+stars but the last one are made invisible using the @code{org-hide}
+face@footnote{Turning on @code{org-indent-mode} sets
+@code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
+@code{nil}.} - see below under @samp{2.} for more information on how this
+works. You can turn on @code{org-indent-mode} for all files by customizing
+the variable @code{org-startup-indented}, or you can turn it on for
+individual files using
@example
#+STARTUP: indent
@end example
-If you want a similar effect in earlier version of Emacs and/or Org, or if
+If you want a similar effect in an earlier version of Emacs and/or Org, or if
you want the indentation to be hard space characters so that the plain text
file looks as similar as possible to the Emacs display, Org supports you in
the following way:
@@ -10859,16 +13133,16 @@ is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
tty you would rather use @kbd{C-c .} to re-insert the timestamp.
@multitable @columnfractions 0.15 0.2 0.1 0.2
-@item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2}
-@item @kbd{S-@key{TAB}} @tab @kbd{C-u @key{TAB}} @tab @kbd{C} @tab
-@item @kbd{M-@key{left}} @tab @kbd{C-c C-x l} @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}}
-@item @kbd{M-S-@key{left}} @tab @kbd{C-c C-x L} @tab @kbd{L} @tab
+@item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2}
+@item @kbd{S-@key{TAB}} @tab @kbd{C-u @key{TAB}} @tab @kbd{C} @tab
+@item @kbd{M-@key{left}} @tab @kbd{C-c C-x l} @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}}
+@item @kbd{M-S-@key{left}} @tab @kbd{C-c C-x L} @tab @kbd{L} @tab
@item @kbd{M-@key{right}} @tab @kbd{C-c C-x r} @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
-@item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R} @tab @kbd{R} @tab
-@item @kbd{M-@key{up}} @tab @kbd{C-c C-x u} @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}
-@item @kbd{M-S-@key{up}} @tab @kbd{C-c C-x U} @tab @kbd{U} @tab
+@item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R} @tab @kbd{R} @tab
+@item @kbd{M-@key{up}} @tab @kbd{C-c C-x u} @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}
+@item @kbd{M-S-@key{up}} @tab @kbd{C-c C-x U} @tab @kbd{U} @tab
@item @kbd{M-@key{down}} @tab @kbd{C-c C-x d} @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
-@item @kbd{M-S-@key{down}} @tab @kbd{C-c C-x D} @tab @kbd{D} @tab
+@item @kbd{M-S-@key{down}} @tab @kbd{C-c C-x D} @tab @kbd{D} @tab
@item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab @kbd{ } @tab
@item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
@item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab @kbd{ } @tab
@@ -10924,11 +13198,11 @@ setup. See the installation instructions in the file
@item @file{cdlatex.el} by Carsten Dominik
@cindex @file{cdlatex.el}
@cindex Dominik, Carsten
-Org mode can make use of the CDLa@TeX{} package to efficiently enter
-La@TeX{} fragments into Org files. See @ref{CDLaTeX mode}.
+Org-mode can make use of the CDLa@TeX{} package to efficiently enter
+@LaTeX{} fragments into Org files. See @ref{CDLaTeX mode}.
@item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
@cindex @file{imenu.el}
-Imenu allows menu access to an index of items in a file. Org mode
+Imenu allows menu access to an index of items in a file. Org-mode
supports Imenu---all you need to do to get the index is the following:
@lisp
(add-hook 'org-mode-hook
@@ -10940,13 +13214,12 @@ the option @code{org-imenu-depth}.
@item @file{remember.el} by John Wiegley
@cindex @file{remember.el}
@cindex Wiegley, John
-Org cooperates with remember, see @ref{Remember}.
-@file{Remember.el} is not part of Emacs, find it on the web.
+Org used to use this package for capture, but no longer does.
@item @file{speedbar.el} by Eric M. Ludlam
@cindex @file{speedbar.el}
@cindex Ludlam, Eric M.
Speedbar is a package that creates a special frame displaying files and
-index items in files. Org mode supports Speedbar and allows you to
+index items in files. Org-mode supports Speedbar and allows you to
drill into Org files directly from the Speedbar. It also allows you to
restrict the scope of agenda commands to a file or a subtree by using
the command @kbd{<} in the Speedbar frame.
@@ -10957,40 +13230,36 @@ the command @kbd{<} in the Speedbar frame.
@cindex @file{table.el}
@cindex Ota, Takaaki
-Complex ASCII tables with automatic line wrapping, column- and
-row-spanning, and alignment can be created using the Emacs table
-package by Takaaki Ota (@uref{http://sourceforge.net/projects/table},
-and also part of Emacs 22).
-When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org mode
-will call @command{table-recognize-table} and move the cursor into the
-table. Inside a table, the keymap of Org mode is inactive. In order
-to execute Org mode-related commands, leave the table.
+Complex ASCII tables with automatic line wrapping, column- and row-spanning,
+and alignment can be created using the Emacs table package by Takaaki Ota
+(@uref{http://sourceforge.net/projects/table}, and also part of Emacs 22).
+Org-mode will recognize these tables and export them properly. Because of
+interference with other Org-mode functionality, you unfortunately cannot edit
+these tables directly in the buffer. Instead, you need to use the command
+@kbd{C-c '} to edit them, similar to source code snippets.
@table @kbd
-@kindex C-c C-c
-@item C-c C-c
-Recognize @file{table.el} table. Works when the cursor is in a
-table.el table.
+@orgcmd{C-c ',org-edit-special}
+Edit a @file{table.el} table. Works when the cursor is in a table.el table.
@c
-@kindex C-c ~
-@item C-c ~
+@orgcmd{C-c ~,org-table-create-with-table.el}
Insert a @file{table.el} table. If there is already a table at point, this
command converts it between the @file{table.el} format and the Org-mode
format. See the documentation string of the command
@code{org-convert-table} for the restrictions under which this is
possible.
@end table
-@file{table.el} is part of Emacs 22.
+@file{table.el} is part of Emacs since Emacs 22.
@item @file{footnote.el} by Steven L. Baur
@cindex @file{footnote.el}
@cindex Baur, Steven L.
-Org mode recognizes numerical footnotes as provided by this package.
-However, Org mode also has its own footnote support (@pxref{Footnotes}),
+Org-mode recognizes numerical footnotes as provided by this package.
+However, Org-mode also has its own footnote support (@pxref{Footnotes}),
which makes using @file{footnote.el} unnecessary.
@end table
@node Conflicts, , Cooperation, Interaction
-@subsection Packages that lead to conflicts with Org mode
+@subsection Packages that lead to conflicts with Org-mode
@table @asis
@@ -11002,7 +13271,7 @@ This conflicts with the use of @kbd{S-@key{cursor}} commands in Org to change
timestamps, TODO keywords, priorities, and item bullet types if the cursor is
at such a location. By default, @kbd{S-@key{cursor}} commands outside
special contexts don't do anything, but you can customize the variable
-@code{org-support-shift-select}. Org mode then tries to accommodate shift
+@code{org-support-shift-select}. Org-mode then tries to accommodate shift
selection by (i) using it outside of the special contexts where special
commands apply, and by (ii) extending an existing active region even if the
cursor moves across a special context.
@@ -11017,7 +13286,7 @@ region. In fact, Emacs 23 has this built-in in the form of
@code{shift-selection-mode}, see previous paragraph. If you are using Emacs
23, you probably don't want to use another package for this purpose. However,
if you prefer to leave these keys to a different package while working in
-Org mode, configure the variable @code{org-replace-disputed-keys}. When set,
+Org-mode, configure the variable @code{org-replace-disputed-keys}. When set,
Org will move the following key bindings in Org files, and in the agenda
buffer (but not during date selection).
@@ -11035,7 +13304,7 @@ to have other replacement keys, look at the variable
@item @file{yasnippet.el}
@cindex @file{yasnippet.el}
The way Org-mode binds the TAB key (binding to @code{[tab]} instead of
-@code{"\t"}) overrules yasnippets' access to this key. The following code
+@code{"\t"}) overrules YASnippet's access to this key. The following code
fixed this problem:
@lisp
@@ -11048,7 +13317,18 @@ fixed this problem:
@item @file{windmove.el} by Hovav Shacham
@cindex @file{windmove.el}
This package also uses the @kbd{S-<cursor>} keys, so everything written
-in the paragraph above about CUA mode also applies here.
+in the paragraph above about CUA mode also applies here. If you want make
+the windmove function active in locations where Org-mode does not have
+special functionality on @kbd{S-@key{cursor}}, add this to your
+configuration:
+
+@lisp
+;; Make windmove work in org-mode:
+(add-hook 'org-shiftup-final-hook 'windmove-up)
+(add-hook 'org-shiftleft-final-hook 'windmove-left)
+(add-hook 'org-shiftdown-final-hook 'windmove-down)
+(add-hook 'org-shiftright-final-hook 'windmove-right)
+@end lisp
@item @file{viper.el} by Michael Kifer
@cindex @file{viper.el}
@@ -11077,7 +13357,7 @@ Org.
* Add-on packages:: Available extensions
* Adding hyperlink types:: New custom link types
* Context-sensitive commands:: How to add functionality to such commands
-* Tables in arbitrary syntax:: Orgtbl for La@TeX{} and other programs
+* Tables in arbitrary syntax:: Orgtbl for @LaTeX{} and other programs
* Dynamic blocks:: Automatically filled blocks
* Special agenda views:: Customized views
* Extracting agenda information:: Postprocessing of agenda information
@@ -11101,7 +13381,7 @@ maintained by the Worg project and can be found at
A large number of add-on packages have been written by various authors.
These packages are not part of Emacs, but they are distributed as contributed
-packages with the separate release available at the Org mode home page at
+packages with the separate release available at the Org-mode home page at
@uref{http://orgmode.org}. The list of contributed packages, along with
documentation about each package, is maintained by the Worg project at
@uref{http://orgmode.org/worg/org-contrib/}.
@@ -11206,7 +13486,7 @@ can also set the @code{:description} property to provide a default for
the link description when the link is later inserted into an Org
buffer with @kbd{C-c C-l}.
-When is makes sense for your new link type, you may also define a function
+When it makes sense for your new link type, you may also define a function
@code{org-PREFIX-complete-link} that implements special (e.g. completion)
support for inserting such a link with @kbd{C-c C-l}. Such a function should
not accept any arguments, and return the full link with prefix.
@@ -11224,8 +13504,10 @@ Also the @kbd{M-cursor} and @kbd{M-S-cursor} keys have this property.
Add-ons can tap into this functionality by providing a function that detects
special context for that add-on and executes functionality appropriate for
the context. Here is an example from Dan Davison's @file{org-R.el} which
-allows you to evaluate commands based on the @file{R} programming language. For
-this package, special contexts are lines that start with @code{#+R:} or
+allows you to evaluate commands based on the @file{R} programming language
+@footnote{@file{org-R.el} has been replaced by the org-mode functionality
+described in @ref{Working With Source Code} and is now obsolete.}. For this
+package, special contexts are lines that start with @code{#+R:} or
@code{#+RR:}.
@lisp
@@ -11255,12 +13537,11 @@ contexts. If the function finds it should do nothing locally, it returns @code{
Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
frequent feature request has been to make it work with native tables in
-specific languages, for example La@TeX{}. However, this is extremely
+specific languages, for example @LaTeX{}. However, this is extremely
hard to do in a general way, would lead to a customization nightmare,
and would take away much of the simplicity of the Orgtbl-mode table
editor.
-
This appendix describes a different approach. We keep the Orgtbl mode
table in its native format (the @i{source table}), and use a custom
function to @i{translate} the table to the correct syntax, and to
@@ -11268,10 +13549,10 @@ function to @i{translate} the table to the correct syntax, and to
the burden of writing conversion functions on the user, but it allows
for a very flexible system.
-Bastien added the ability to do the same with lists. You can use Org's
-facilities to edit and structure lists by turning @code{orgstruct-mode}
-on, then locally exporting such lists in another format (HTML, La@TeX{}
-or Texinfo.)
+Bastien added the ability to do the same with lists, in Orgstruct mode. You
+can use Org's facilities to edit and structure lists by turning
+@code{orgstruct-mode} on, then locally exporting such lists in another format
+(HTML, @LaTeX{} or Texinfo.)
@menu
@@ -11329,7 +13610,7 @@ additional columns.
@noindent
The one problem remaining is how to keep the source table in the buffer
without disturbing the normal workings of the file, for example during
-compilation of a C file or processing of a La@TeX{} file. There are a
+compilation of a C file or processing of a @LaTeX{} file. There are a
number of different solutions:
@itemize @bullet
@@ -11340,7 +13621,7 @@ language. For example, in C mode you could wrap the table between
@item
Sometimes it is possible to put the table after some kind of @i{END}
statement, for example @samp{\bye} in @TeX{} and @samp{\end@{document@}}
-in La@TeX{}.
+in @LaTeX{}.
@item
You can just comment the table line-by-line whenever you want to process
the file, and uncomment it whenever you need to edit the table. This
@@ -11350,14 +13631,14 @@ key.
@end itemize
@node A LaTeX example, Translator functions, Radio tables, Tables in arbitrary syntax
-@subsection A La@TeX{} example of radio tables
-@cindex La@TeX{}, and Orgtbl mode
+@subsection A @LaTeX{} example of radio tables
+@cindex @LaTeX{}, and Orgtbl mode
-The best way to wrap the source table in La@TeX{} is to use the
+The best way to wrap the source table in @LaTeX{} is to use the
@code{comment} environment provided by @file{comment.sty}. It has to be
activated by placing @code{\usepackage@{comment@}} into the document
header. Orgtbl mode can insert a radio table skeleton@footnote{By
-default this works only for La@TeX{}, HTML, and Texinfo. Configure the
+default this works only for @LaTeX{}, HTML, and Texinfo. Configure the
variable @code{orgtbl-radio-tables} to install templates for other
modes.} with the command @kbd{M-x orgtbl-insert-radio-table}. You will
be prompted for a table name, let's say we use @samp{salesfigures}. You
@@ -11374,13 +13655,13 @@ will then get the following template:
@end example
@noindent
-@vindex La@TeX{}-verbatim-environments
+@vindex @LaTeX{}-verbatim-environments
The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
-@code{orgtbl-to-latex} to convert the table into La@TeX{} and to put it
+@code{orgtbl-to-latex} to convert the table into @LaTeX{} and to put it
into the receiver location with name @code{salesfigures}. You may now
-fill in the table, feel free to use the spreadsheet features@footnote{If
+fill in the table---feel free to use the spreadsheet features@footnote{If
the @samp{#+TBLFM} line contains an odd number of dollar characters,
-this may cause problems with font-lock in La@TeX{} mode. As shown in the
+this may cause problems with font-lock in @LaTeX{} mode. As shown in the
example you can fix this by adding an extra line inside the
@code{comment} environment that is used to balance the dollar
expressions. If you are using AUC@TeX{} with the font-latex library, a
@@ -11430,7 +13711,7 @@ Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
\end@{comment@}
@end example
-The La@TeX{} translator function @code{orgtbl-to-latex} is already part of
+The @LaTeX{} translator function @code{orgtbl-to-latex} is already part of
Orgtbl mode. It uses a @code{tabular} environment to typeset the table
and marks horizontal lines with @code{\hline}. Furthermore, it
interprets the following parameters (see also @pxref{Translator functions}):
@@ -11494,7 +13775,7 @@ As you can see, the properties passed into the function (variable
@var{PARAMS}) are combined with the ones newly defined in the function
(variable @var{PARAMS2}). The ones passed into the function (i.e. the
ones set by the @samp{ORGTBL SEND} line) take precedence. So if you
-would like to use the La@TeX{} translator, but wanted the line endings to
+would like to use the @LaTeX{} translator, but wanted the line endings to
be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
overrule the default with
@@ -11503,7 +13784,7 @@ overrule the default with
@end example
For a new language, you can either write your own converter function in
-analogy with the La@TeX{} translator, or you can use the generic function
+analogy with the @LaTeX{} translator, or you can use the generic function
directly. For example, if you have a language where a table is started
with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
started with @samp{!BL!}, ended with @samp{!EL!}, and where the field
@@ -11532,21 +13813,23 @@ containing the formatted table. If you write a generally useful
translator, please post it on @email{emacs-orgmode@@gnu.org} so that
others can benefit from your work.
-@node Radio lists, , Translator functions, Tables in arbitrary syntax
+@node Radio lists, , Translator functions, Tables in arbitrary syntax
@subsection Radio lists
@cindex radio lists
@cindex org-list-insert-radio-list
-Sending and receiving radio lists works exactly the same way than sending and
+Sending and receiving radio lists works exactly the same way as sending and
receiving radio tables (@pxref{Radio tables}). As for radio tables, you can
-insert radio lists templates in HTML, La@TeX{} and Texinfo modes by calling
+insert radio list templates in HTML, @LaTeX{} and Texinfo modes by calling
@code{org-list-insert-radio-list}.
Here are the differences with radio tables:
@itemize @minus
@item
-Use @code{ORGLST} instead of @code{ORGTBL}.
+Orgstruct mode must be active.
+@item
+Use the @code{ORGLST} keyword instead of @code{ORGTBL}.
@item
The available translation functions for radio lists don't take
parameters.
@@ -11554,15 +13837,15 @@ parameters.
@kbd{C-c C-c} will work when pressed on the first item of the list.
@end itemize
-Here is a La@TeX{} example. Let's say that you have this in your
-La@TeX{} file:
+Here is a @LaTeX{} example. Let's say that you have this in your
+@LaTeX{} file:
-@cindex #+ORGLIST
+@cindex #+ORGLST
@example
% BEGIN RECEIVE ORGLST to-buy
% END RECEIVE ORGLST to-buy
\begin@{comment@}
-#+ORGLIST: SEND to-buy orgtbl-to-latex
+#+ORGLST: SEND to-buy org-list-to-latex
- a new house
- a new computer
+ a new keyboard
@@ -11572,7 +13855,7 @@ La@TeX{} file:
@end example
Pressing `C-c C-c' on @code{a new house} and will insert the converted
-La@TeX{} list between the two marker lines.
+@LaTeX{} list between the two marker lines.
@node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
@section Dynamic blocks
@@ -11583,11 +13866,11 @@ specially marked regions that are updated by some user-written function.
A good example for such a block is the clock table inserted by the
command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
-Dynamic block are enclosed by a BEGIN-END structure that assigns a name
+Dynamic blocks are enclosed by a BEGIN-END structure that assigns a name
to the block and can also specify parameters for the function producing
the content of the block.
-#+BEGIN:dynamic block
+@cindex #+BEGIN:dynamic block
@example
#+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
@@ -11597,11 +13880,9 @@ the content of the block.
Dynamic blocks are updated with the following commands
@table @kbd
-@kindex C-c C-x C-u
-@item C-c C-x C-u
+@orgcmd{C-c C-x C-u,org-dblock-update}
Update dynamic block at point.
-@kindex C-u C-c C-x C-u
-@item C-u C-c C-x C-u
+@orgkey{C-u C-c C-x C-u}
Update all dynamic blocks in the current file.
@end table
@@ -11643,10 +13924,11 @@ written in a way such that it does nothing in buffers that are not in
@section Special agenda views
@cindex agenda views, user-defined
-Org provides a special hook that can be used to narrow down the
-selection made by any of the agenda views. You may specify a function
-that is used at each match to verify if the match should indeed be part
-of the agenda view, and if not, how much should be skipped.
+Org provides a special hook that can be used to narrow down the selection
+made by these agenda views: @code{todo}, @code{alltodo}, @code{tags}, @code{tags-todo},
+@code{tags-tree}. You may specify a function that is used at each match to verify
+if the match should indeed be part of the agenda view, and if not, how
+much should be skipped.
Let's say you want to produce a list of projects that contain a WAITING
tag anywhere in the project tree. Let's further assume that you have
@@ -11707,6 +13989,10 @@ Skip current entry if it has not been scheduled.
Skip current entry if it has a deadline.
@item '(org-agenda-skip-entry-if 'scheduled 'deadline)
Skip current entry if it has a deadline, or if it is scheduled.
+@item '(org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
+Skip current entry if the TODO keyword is TODO or WAITING.
+@item '(org-agenda-skip-entry-if 'todo 'done)
+Skip current entry if the TODO keyword marks a DONE state.
@item '(org-agenda-skip-entry-if 'timestamp)
Skip current entry if it has any timestamp, may also be deadline or scheduled.
@item '(org-agenda-skip-entry 'regexp "regular expression")
@@ -11765,7 +14051,7 @@ You may also modify parameters on the fly like this:
@example
emacs -batch -l ~/.emacs \
-eval '(org-batch-agenda "a" \
- org-agenda-ndays 30 \
+ org-agenda-span month \
org-agenda-include-diary nil \
org-agenda-files (quote ("~/org/project.org")))' \
| lpr
@@ -11843,7 +14129,7 @@ properties.
Get all properties of the entry at point-or-marker POM.@*
This includes the TODO keyword, the tags, time strings for deadline,
scheduled, and clocking, and any additional properties defined in the
-entry. The return value is an alist, keys may occur multiple times
+entry. The return value is an alist. Keys may occur multiple times
if the property key was used several times.@*
POM may also be nil, in which case the current entry is used.
If WHICH is nil or `all', get all properties. If WHICH is
@@ -11900,6 +14186,15 @@ Treat the value of the property PROPERTY as a whitespace-separated list of
values and check if VALUE is in this list.
@end defun
+@defopt org-property-allowed-value-functions
+Hook for functions supplying allowed values for a specific property.
+The functions must take a single argument, the name of the property, and
+return a flat list of allowed values. If @samp{:ETC} is one of
+the values, use the values as completion help, but allow also other values
+to be entered. The functions must return @code{nil} if they are not
+responsible for this property.
+@end defopt
+
@node Using the mapping API, , Using the property API, Hacking
@section Using the mapping API
@cindex API, for mapping
@@ -11971,12 +14266,12 @@ information about the entry, or in order to change metadata in the entry.
Here are a couple of functions that might be handy:
@defun org-todo &optional arg
-Change the TODO state of the entry, see the docstring of the functions for
+Change the TODO state of the entry. See the docstring of the functions for
the many possible values for the argument ARG.
@end defun
@defun org-priority &optional action
-Change the priority of the entry, see the docstring of this function for the
+Change the priority of the entry. See the docstring of this function for the
possible values for ACTION.
@end defun
@@ -12015,11 +14310,13 @@ The following example counts the number of entries with TODO keyword
@cindex iPhone
@cindex MobileOrg
-@i{MobileOrg} is an application for the @i{iPhone/iPod Touch} series of
-devices, developed by Richard Moreland. @i{MobileOrg} offers offline viewing
-and capture support for an Org-mode system rooted on a ``real'' computer. It
-does also allow you to record changes to existing entries. For information
-about @i{MobileOrg}, see @uref{http://mobileorg.ncogni.to/}).
+@uref{http://mobileorg.ncogni.to/, MobileOrg} is an application for the
+@i{iPhone/iPod Touch} series of devices, developed by Richard Moreland.
+@i{MobileOrg} offers offline viewing and capture support for an Org-mode
+system rooted on a ``real'' computer. It does also allow you to record
+changes to existing entries. Android users should check out
+@uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg Android}
+by Matt Jones.
This appendix describes the support Org has for creating agenda views in a
format that can be displayed by @i{MobileOrg}, and for integrating notes
@@ -12027,9 +14324,9 @@ captured and changes made by @i{MobileOrg} into the main system.
For changing tags and TODO states in MobileOrg, you should have set up the
customization variables @code{org-todo-keywords} and @code{org-tags-alist} to
-cover all important tags and todo keywords, even if individual files use only
+cover all important tags and TODO keywords, even if individual files use only
part of these. MobileOrg will also offer you states and tags set up with
-in-buffer settings, but it will understand the logistics of todo state
+in-buffer settings, but it will understand the logistics of TODO state
@i{sets} (@pxref{Per-file keywords}) and @i{mutually exclusive} tags
(@pxref{Setting tags}) only for those set in these variables.
@@ -12042,34 +14339,33 @@ in-buffer settings, but it will understand the logistics of todo state
@node Setting up the staging area, Pushing to MobileOrg, MobileOrg, MobileOrg
@section Setting up the staging area
-Org-mode has commands to prepare a directory with files for @i{MobileOrg},
-and to read captured notes from there. If Emacs can directly write to the
-WebDAV directory accessed by @i{MobileOrg}, just point to this directory
-using the variable @code{org-mobile-directory}. Using the @file{tramp}
-method, @code{org-mobile-directory} may point to a remote directory
-accessible through, for example,
-@file{ssh/scp}:
+MobileOrg needs to interact with Emacs through a directory on a server. If you
+are using a public server, you should consider to encrypt the files that are
+uploaded to the server. This can be done with Org-mode 7.02 and with
+@i{MobileOrg 1.5} (iPhone version), and you need an @file{openssl}
+installation on your system. To turn on encryption, set a password in
+@i{MobileOrg} and, on the Emacs side, configure the variable
+@code{org-mobile-use-encryption}@footnote{If you can safely store the
+password in your Emacs setup, you might also want to configure
+@code{org-mobile-encryption-password}. Please read the docstring of that
+variable. Note that encryption will apply only to the contents of the
+@file{.org} files. The file names themselves will remain visible.}.
+
+The easiest way to create that directory is to use a free
+@uref{http://dropbox.com,Dropbox.com} account@footnote{If you cannot use
+Dropbox, or if your version of MobileOrg does not support it, you can use a
+webdav server. For more information, check out the documentation of MobileOrg and also this
+@uref{http://orgmode.org/worg/org-faq.php#mobileorg_webdav, FAQ entry}.}.
+When MobileOrg first connects to your Dropbox, it will create a directory
+@i{MobileOrg} inside the Dropbox. After the directory has been created, tell
+Emacs about it:
-@smallexample
-(setq org-mobile-directory "/scpc:user@@remote.host:org/webdav/")
-@end smallexample
+@lisp
+(setq org-mobile-directory "~/Dropbox/MobileOrg")
+@end lisp
-If Emacs cannot access the WebDAV directory directly using a @file{tramp}
-method, or you prefer to maintain a local copy, you can use a local directory
-for staging. Other means must then be used to keep this directory in sync
-with the WebDAV directory. In the following example, files are staged in
-@file{~/stage}, and Org-mode hooks take care of moving files to and from the
-WebDAV directory using @file{scp}.
-
-@smallexample
-(setq org-mobile-directory "~/stage/")
-(add-hook 'org-mobile-post-push-hook
- (lambda () (shell-command "scp -r ~/stage/* user@@wdhost:mobile/")))
-(add-hook 'org-mobile-pre-pull-hook
- (lambda () (shell-command "scp user@@wdhost:mobile/mobileorg.org ~/stage/ ")))
-(add-hook 'org-mobile-post-pull-hook
- (lambda () (shell-command "scp ~/stage/mobileorg.org user@@wdhost:mobile/")))
-@end smallexample
+Org-mode has commands to put files for @i{MobileOrg} into that directory,
+and to read captured notes from there.
@node Pushing to MobileOrg, Pulling from MobileOrg, Setting up the staging area, MobileOrg
@section Pushing to MobileOrg
@@ -12078,29 +14374,29 @@ This operation copies all files currently listed in @code{org-mobile-files}
to the directory @code{org-mobile-directory}. By default this list contains
all agenda files (as listed in @code{org-agenda-files}), but additional files
can be included by customizing @code{org-mobiles-files}. File names will be
-staged with path relative to @code{org-directory}, so all files should be
-inside this directory. The push operation also creates (in the same
-directory) a special Org file @file{agendas.org}. This file is an Org-mode
-style outline, containing every custom agenda view defined by the user.
-While creating the agendas, Org-mode will force@footnote{See the variable
-@code{org-mobile-force-id-on-agenda-items}.} an ID property on all entries
-referenced by the agendas, so that these entries can be uniquely identified
-if @i{MobileOrg} flags them for further action. Finally, Org writes the file
-@file{index.org}, containing links to all other files. If @i{MobileOrg} is
-configured to request this file from the WebDAV server, all agendas and Org
-files will be downloaded to the device. To speed up the download, MobileOrg
-will only read files whose checksums@footnote{stored automatically in the
-file @file{checksums.dat}} have changed.
+staged with paths relative to @code{org-directory}, so all files should be
+inside this directory. The push operation also creates a special Org file
+@file{agendas.org} with all custom agenda view defined by the
+user@footnote{While creating the agendas, Org-mode will force ID properties
+on all referenced entries, so that these entries can be uniquely identified
+if @i{MobileOrg} flags them for further action. If you do not want to get
+these properties in so many entries, you can set the variable
+@code{org-mobile-force-id-on-agenda-items} to @code{nil}. Org mode will then
+rely on outline paths, in the hope that these will be unique enough.}.
+Finally, Org writes the file @file{index.org}, containing links to all other
+files. @i{MobileOrg} first reads this file from the server, and then
+downloads all agendas and Org files listed in it. To speed up the download,
+MobileOrg will only read files whose checksums@footnote{stored automatically
+in the file @file{checksums.dat}} have changed.
@node Pulling from MobileOrg, , Pushing to MobileOrg, MobileOrg
@section Pulling from MobileOrg
-When @i{MobileOrg} synchronizes with the WebDAV server, it not only pulls the
-Org files for viewing. It also appends captured entries and pointers to
-flagged and changed entries to the file @file{mobileorg.org} on the server.
-Org has a @emph{pull} operation that integrates this information into an
-inbox file and operates on the pointers to flagged entries. Here is how it
-works:
+When @i{MobileOrg} synchronizes with the server, it not only pulls the Org
+files for viewing. It also appends captured entries and pointers to flagged
+and changed entries to the file @file{mobileorg.org} on the server. Org has
+a @emph{pull} operation that integrates this information into an inbox file
+and operates on the pointers to flagged entries. Here is how it works:
@enumerate
@item
@@ -12132,47 +14428,41 @@ another window and also push it onto the kill ring. So you could use @kbd{?
z C-y C-c C-c} to store that flagging note as a normal note in the entry.
Pressing @kbd{?} twice in succession will offer to remove the
@code{:FLAGGED:} tag along with the recorded flagging note (which is stored
-in a property). In this way you indicate, that the intended processing for
+in a property). In this way you indicate that the intended processing for
this flagged entry is finished.
@end table
@end enumerate
@kindex C-c a ?
If you are not able to process all flagged entries directly, you can always
-return to this agenda view using @kbd{C-c a ?}. Note, however, that there is
-a subtle difference. The view created automatically by @kbd{M-x
-org-mobile-pull RET} is guaranteed to search all files that have been
-addressed by the last pull. This might include a file that is not currently
-in your list of agenda files. If you later use @kbd{C-c a ?} to regenerate
-the view, only the current agenda files will be searched.
+return to this agenda view@footnote{Note, however, that there is a subtle
+difference. The view created automatically by @kbd{M-x org-mobile-pull
+@key{RET}} is guaranteed to search all files that have been addressed by the
+last pull. This might include a file that is not currently in your list of
+agenda files. If you later use @kbd{C-c a ?} to regenerate the view, only
+the current agenda files will be searched.} using @kbd{C-c a ?}.
@node History and Acknowledgments, Main Index, MobileOrg, Top
-@appendix History and Acknowledgments
-@cindex acknowledgements
+@appendix History and acknowledgments
+@cindex acknowledgments
@cindex history
@cindex thanks
-Org was born in 2003, out of frustration over the user interface
-of the Emacs Outline mode. I was trying to organize my notes and
-projects, and using Emacs seemed to be the natural way to go. However,
-having to remember eleven different commands with two or three keys per
-command, only to hide and show parts of the outline tree, that seemed
-entirely unacceptable to me. Also, when using outlines to take notes, I
-constantly wanted to restructure the tree, organizing it parallel to my
-thoughts and plans. @emph{Visibility cycling} and @emph{structure
-editing} were originally implemented in the package
-@file{outline-magic.el}, but quickly moved to the more general
-@file{org.el}. As this environment became comfortable for project
-planning, the next step was adding @emph{TODO entries}, basic
-@emph{timestamps}, and @emph{table support}. These areas highlighted the two main
-goals that Org still has today: to be a new, outline-based,
-plain text mode with innovative and intuitive editing features, and to
-incorporate project planning functionality directly into a notes file.
-
-A special thanks goes to @i{Bastien Guerry} who has not only written a large
-number of extensions to Org (most of them integrated into the core by now),
-but who has also helped in the development and maintenance of Org so much that he
-should be considered the main co-contributor to this package.
+Org was born in 2003, out of frustration over the user interface of the Emacs
+Outline mode. I was trying to organize my notes and projects, and using
+Emacs seemed to be the natural way to go. However, having to remember eleven
+different commands with two or three keys per command, only to hide and show
+parts of the outline tree, that seemed entirely unacceptable to me. Also,
+when using outlines to take notes, I constantly wanted to restructure the
+tree, organizing it parallel to my thoughts and plans. @emph{Visibility
+cycling} and @emph{structure editing} were originally implemented in the
+package @file{outline-magic.el}, but quickly moved to the more general
+@file{org.el}. As this environment became comfortable for project planning,
+the next step was adding @emph{TODO entries}, basic @emph{timestamps}, and
+@emph{table support}. These areas highlighted the two main goals that Org
+still has today: to be a new, outline-based, plain text mode with innovative
+and intuitive editing features, and to incorporate project planning
+functionality directly into a notes file.
Since the first release, literally thousands of emails to me or to
@email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
@@ -12183,6 +14473,38 @@ in shaping one or more aspects of Org. The list may not be
complete, if I have forgotten someone, please accept my apologies and
let me know.
+Before I get to this list, a few special mentions are in order:
+
+@table @i
+@item Bastien Guerry
+Bastien has written a large number of extensions to Org (most of them
+integrated into the core by now), including the LaTeX exporter and the plain
+list parser. His support during the early days, when he basically acted as
+co-maintainer, was central to the success of this project. Bastien also
+invented Worg, helped establishing the Web presence of Org, and sponsors
+hosting costs for the orgmode.org website.
+@item Eric Schulte and Dan Davison
+Eric and Dan are jointly responsible for the Org-babel system, which turns
+Org into a multi-language environment for evaluating code and doing literate
+programming and reproducible research.
+@item John Wiegley
+John has contributed a number of great ideas and patches directly to Org,
+including the attachment system (@file{org-attach.el}), integration with
+Apple Mail (@file{org-mac-message.el}), hierarchical dependencies of TODO
+items, habit tracking (@file{org-habits.el}), and encryption
+(@file{org-crypt.el}). Also, the capture system is really an extended copy
+of his great @file{remember.el}.
+@item Sebastian Rose
+Without Sebastian, the HTML/XHTML publishing of Org would be the pitiful work
+of an ignorant amateur. Sebastian has pushed this part of Org onto a much
+higher level. He also wrote @file{org-info.js}, a Java script for displaying
+webpages derived from Org using an Info-like or a folding interface with
+single-key navigation.
+@end table
+
+@noindent OK, now to the full list of contributions! Again, please let me
+know what I am missing here!
+
@itemize @bullet
@item
@@ -12195,12 +14517,14 @@ Org-mode website.
@item
@i{Alex Bochannek} provided a patch for rounding timestamps.
@item
+@i{Jan Böcker} wrote @file{org-docview.el}.
+@item
@i{Brad Bozarth} showed how to pull RSS feed data into Org-mode files.
@item
@i{Tom Breton} wrote @file{org-choose.el}.
@item
@i{Charles Cave}'s suggestion sparked the implementation of templates
-for Remember.
+for Remember, which are now templates for capture.
@item
@i{Pavel Chalmoviansky} influenced the agenda treatment of items with
specified time.
@@ -12213,8 +14537,6 @@ calculations and improved XEmacs compatibility, in particular by porting
@item
@i{Baoqiu Cui} contributed the DocBook exporter.
@item
-@i{Dan Davison} wrote (together with @i{Eric Schulte}) Org Babel.
-@item
@i{Eddward DeVilla} proposed and tested checkbox statistics. He also
came up with the idea of properties, and that there should be an API for
them.
@@ -12225,8 +14547,12 @@ them.
inspired some of the early development, including HTML export. He also
asked for a way to narrow wide table columns.
@item
-@i{Christian Egli} converted the documentation into Texinfo format,
-patched CSS formatting into the HTML exporter, and inspired the agenda.
+@i{Thomas S. Dye} contributed documentation on Worg and helped integrating
+the Org-Babel documentation into the manual.
+@item
+@i{Christian Egli} converted the documentation into Texinfo format, inspired
+the agenda, patched CSS formatting into the HTML exporter, and wrote
+@file{org-taskjuggler.el}.
@item
@i{David Emery} provided a patch for custom CSS support in exported
HTML agendas.
@@ -12244,13 +14570,21 @@ around a match in a hidden outline tree.
@item
@i{Austin Frank} works as a mailing list moderator.
@item
+@i{Eric Fraga} drove the development of BEAMER export with ideas and
+testing.
+@item
+@i{Barry Gidden} did proofreading the manual in preparation for the book
+publication through Network Theory Ltd.
+@item
@i{Niels Giesen} had the idea to automatically archive DONE trees.
@item
-@i{Bastien Guerry} wrote the La@TeX{} exporter and @file{org-bibtex.el}, and
-has been prolific with patches, ideas, and bug reports.
+@i{Nicolas Goaziou} rewrote much of the plain list code.
@item
@i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
@item
+@i{Brian Gough} of Network Theory Ltd publishes the Org mode manual as a
+book.
+@item
@i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
task state change logging, and the clocktable. His clear explanations have
been critical when we started to adopt the Git version control system.
@@ -12263,14 +14597,20 @@ patches.
@i{Scott Jaderholm} proposed footnotes, control over whitespace between
folded entries, and column view for properties.
@item
+@i{Matt Jones} wrote @i{MobileOrg Android}.
+@item
@i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
@item
-@i{Shidai Liu} ("Leo") asked for embedded La@TeX{} and tested it. He also
+@i{Shidai Liu} ("Leo") asked for embedded @LaTeX{} and tested it. He also
provided frequent feedback and some patches.
@item
@i{Matt Lundin} has proposed last-row references for table formulas and named
invisible anchors. He has also worked a lot on the FAQ.
@item
+@i{David Maus} wrote @file{org-atom.el}, maintains the issues file for Org,
+and is a prolific contributor on the mailing list with competent replies,
+small fixes and patches.
+@item
@i{Jason F. McBrayer} suggested agenda export to CSV format.
@item
@i{Max Mikhanosha} came up with the idea of refiling.
@@ -12293,6 +14633,9 @@ and being able to quickly restrict the agenda to a subtree.
@i{Tim O'Callaghan} suggested in-file links, search options for general
file links, and TAGS.
@item
+@i{Osamu Okano} wrote @file{orgcard2ref.pl}, a Perl program to create a text
+version of the reference card.
+@item
@i{Takeshi Okano} translated the manual and David O'Toole's tutorial
into Japanese.
@item
@@ -12317,10 +14660,6 @@ also acted as mailing list moderator for some time.
@item
@i{Kevin Rogers} contributed code to access VM files on remote hosts.
@item
-@i{Sebastian Rose} wrote @file{org-info.js}, a Java script for displaying
-webpages derived from Org using an Info-like or a folding interface with
-single-key navigation.
-@item
@i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
conflict with @file{allout.el}.
@item
@@ -12333,8 +14672,7 @@ of feedback, developed and applied standards to the Org documentation.
@i{Christian Schlauer} proposed angular brackets around links, among
other things.
@item
-@i{Eric Schulte} wrote @file{org-plot.el} and (together with @i{Dan Davison})
-Org Babel, and contributed various patches, small features and modules.
+@i{Paul Sexton} wrote @file{org-ctags.el}.
@item
Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
@file{organizer-mode.el}.
@@ -12356,31 +14694,33 @@ tweaks and features.
@i{Adam Spiers} asked for global linking commands, inspired the link
extension system, added support for mairix, and proposed the mapping API.
@item
+@i{Ulf Stegemann} created the table to translate special symbols to HTML,
+LaTeX, UTF-8, Latin-1 and ASCII.
+@item
@i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
with links transformation to Org syntax.
@item
@i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
chapter about publishing.
@item
+@i{Sebastien Vauban} reported many issues with LaTeX and BEAMER export and
+enabled source code highlighling in Gnus.
+@item
+@i{Stefan Vollmar} organized a video-recorded talk at the
+Max-Planck-Institute for Neurology. He also inspired the creation of a
+concept index for HTML export.
+@item
@i{J@"urgen Vollmer} contributed code generating the table of contents
in HTML output.
@item
+@i{Samuel Wales} has provided important feedback and bug reports.
+@item
@i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
keyword.
@item
@i{David Wainberg} suggested archiving, and improvements to the linking
system.
@item
-@i{John Wiegley} wrote @file{emacs-wiki.el}, @file{planner.el}, and
-@file{muse.el}, which have some overlap with Org. Initially the development
-of Org was fully independent because I was not aware of the existence of
-these packages. But with time I have occasionally looked at John's code and
-learned a lot from it. John has also contributed a number of great ideas and
-patches directly to Org, including the attachment system
-(@file{org-attach.el}), integration with Apple Mail
-(@file{org-mac-message.el}), hierarchical dependencies of TODO items, habit
-tracking (@file{org-habits.el}) and support for pcomplete.
-@item
@i{Carsten Wimmer} suggested some changes and helped fix a bug in
linking to Gnus.
@item
@@ -12393,17 +14733,22 @@ and contributed various ideas and code snippets.
@node Main Index, Key Index, History and Acknowledgments, Top
-@unnumbered Concept Index
+@unnumbered Concept index
@printindex cp
-@node Key Index, Variable Index, Main Index, Top
-@unnumbered Key Index
+@node Key Index, Command and Function Index, Main Index, Top
+@unnumbered Key index
@printindex ky
-@node Variable Index, , Key Index, Top
-@unnumbered Variable Index
+@node Command and Function Index, Variable Index, Key Index, Top
+@unnumbered Command and function index
+
+@printindex fn
+
+@node Variable Index, , Command and Function Index, Top
+@unnumbered Variable index
This is not a complete index of variables and faces, only the ones that are
mentioned in the manual. For a more complete list, use @kbd{M-x
@@ -12413,14 +14758,11 @@ org-customize @key{RET}} and then click yourself through the tree.
@bye
-@ignore
- arch-tag: 7893d1Fe-cc57-4d13-b5e5-f494a1CBC7ac
-@end ignore
-
@c Local variables:
-@c ispell-local-dictionary: "en_US-w_accents"
-@c ispell-local-pdict: "./.aspell.org.pws"
@c fill-column: 77
+@c indent-tabs-mode: nil
+@c paragraph-start: "\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|\f\\|[ ]*$"
+@c paragraph-separate: "\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|[ \f]*$"
@c End:
diff --git a/doc/misc/pcl-cvs.texi b/doc/misc/pcl-cvs.texi
index e466a3bec8..f12942da2d 100644
--- a/doc/misc/pcl-cvs.texi
+++ b/doc/misc/pcl-cvs.texi
@@ -6,8 +6,7 @@
@c %**end of header
@copying
-Copyright @copyright{} 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+Copyright @copyright{} 1991-2011
Free Software Foundation, Inc.
@quotation
@@ -1432,7 +1431,3 @@ this manual.
@printindex ky
@bye
-
-@ignore
- arch-tag: 5c7178ce-56fa-40b0-abd7-f4a09758b235
-@end ignore
diff --git a/doc/misc/pgg.texi b/doc/misc/pgg.texi
index daef19a01b..9cb7a637a0 100644
--- a/doc/misc/pgg.texi
+++ b/doc/misc/pgg.texi
@@ -1,4 +1,7 @@
\input texinfo @c -*-texinfo-*-
+
+@include gnus-overrides.texi
+
@setfilename ../../info/pgg
@settitle PGG @value{VERSION}
@@ -8,8 +11,7 @@
This file describes PGG @value{VERSION}, an Emacs interface to various
PGP implementations.
-Copyright @copyright{} 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 2001, 2003-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -31,7 +33,12 @@ developing GNU and promoting software freedom.''
@end direntry
@titlepage
+@ifset WEBHACKDEVEL
+@title PGG (DEVELOPMENT VERSION)
+@end ifset
+@ifclear WEBHACKDEVEL
@title PGG
+@end ifclear
@author by Daiki Ueno
@page
@@ -497,7 +504,3 @@ If non-@code{nil}, don't check the checksum of the packets.
@bye
@c End:
-
-@ignore
- arch-tag: 0c205838-34b9-41a5-b9d7-49ae57ccac85
-@end ignore
diff --git a/doc/misc/rcirc.texi b/doc/misc/rcirc.texi
index c8c341534f..c2b6867c41 100644
--- a/doc/misc/rcirc.texi
+++ b/doc/misc/rcirc.texi
@@ -5,7 +5,7 @@
@c %**end of header
@copying
-Copyright @copyright{} 2006, 2007, 2008, 2009, 2010, 2011
+Copyright @copyright{} 2006-2011
Free Software Foundation, Inc.
@quotation
@@ -948,7 +948,3 @@ The real answer, therefore, is a @code{/reconnect} command:
@printindex cp
@bye
-
-@ignore
- arch-tag: 2589e562-3843-4ffc-8c2f-477cbad57c01
-@end ignore
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi
index c5cb511c06..3944b71233 100644
--- a/doc/misc/reftex.texi
+++ b/doc/misc/reftex.texi
@@ -27,8 +27,7 @@ citations and indices for LaTeX documents with Emacs.
This is edition @value{EDITION} of the @b{Ref@TeX{}} User Manual for
@b{Ref@TeX{}} @value{VERSION}
-Copyright @copyright{} 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1997-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -80,6 +79,7 @@ developing GNU and promoting software freedom.''
@ifnottex
@node Top,,,(dir)
+@top RefTeX
@b{Ref@TeX{}} is a package for managing Labels, References,
Citations and index entries with GNU Emacs.
@@ -5890,7 +5890,3 @@ released on 7 Jan 1997.
@printindex cp
@bye
-
-@ignore
- arch-tag: 1e055774-0576-4b1b-b47f-550d0961fd43
-@end ignore
diff --git a/doc/misc/remember.texi b/doc/misc/remember.texi
index bdaf4750d9..e67d6155bb 100644
--- a/doc/misc/remember.texi
+++ b/doc/misc/remember.texi
@@ -8,7 +8,7 @@
@copying
This manual is for Remember Mode, version 1.9
-Copyright @copyright{} 2001, 2004, 2005, 2007, 2008, 2009, 2010, 2011
+Copyright @copyright{} 2001, 2004-2005, 2007-2011
Free Software Foundation, Inc.
@quotation
@@ -403,7 +403,3 @@ consult @ref{Remember, , , org}.
@printindex cp
@bye
-
-@ignore
- arch-tag: 5b980db0-20cc-4167-b845-52dc11d53b9f
-@end ignore
diff --git a/doc/misc/sasl.texi b/doc/misc/sasl.texi
index a75f2d80f6..a75b237519 100644
--- a/doc/misc/sasl.texi
+++ b/doc/misc/sasl.texi
@@ -1,4 +1,7 @@
\input texinfo @c -*-texinfo-*-
+
+@include gnus-overrides.texi
+
@setfilename ../../info/sasl
@set VERSION 0.2
@@ -7,7 +10,7 @@
@copying
This file describes the Emacs SASL library, version @value{VERSION}.
-Copyright @copyright{} 2000, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+Copyright @copyright{} 2000, 2004-2011
Free Software Foundation, Inc.
@quotation
@@ -37,7 +40,12 @@ license to the document, as described in section 6 of the license.
@titlepage
+@ifset WEBHACKDEVEL
+@title Emacs SASL Library @value{VERSION} (DEVELOPMENT VERSION)
+@end ifset
+@ifclear WEBHACKDEVEL
@title Emacs SASL Library @value{VERSION}
+@end ifclear
@author by Daiki Ueno
@page
@@ -267,7 +275,3 @@ At the first time @var{step} should be set to @code{nil}.
@bye
@c End:
-
-@ignore
- arch-tag: dc9650be-a953-40bf-bc55-24fe5f19d875
-@end ignore
diff --git a/doc/misc/sc.texi b/doc/misc/sc.texi
index d4f45fb6b9..8853192af0 100644
--- a/doc/misc/sc.texi
+++ b/doc/misc/sc.texi
@@ -14,8 +14,7 @@
This document describes Supercite, an Emacs package for citing and
attributing replies to mail and news messages.
-Copyright @copyright{} 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1993, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -54,6 +53,7 @@ developing GNU and promoting software freedom.''
@ifnottex
@node Top, Introduction, (dir), (dir)
+@top Supercite
@comment node-name, next, previous, up
@insertcopying
@@ -1939,7 +1939,3 @@ its @var{variable} name.
@end iftex
@printindex vr
@bye
-
-@ignore
- arch-tag: 0521847a-4680-44b6-ae6e-13ce20e18436
-@end ignore
diff --git a/doc/misc/sem-user.texi b/doc/misc/sem-user.texi
index f986c0fd45..b17f1ab7e9 100644
--- a/doc/misc/sem-user.texi
+++ b/doc/misc/sem-user.texi
@@ -1,7 +1,6 @@
@c This file is included by semantic.texi
-@c Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009,
-@c 2010, 2011 Free Software Foundation, Inc.
+@c Copyright (C) 1999-2005, 2007, 2009-2011 Free Software Foundation, Inc.
@c Permission is granted to copy, distribute and/or modify this
@c document under the terms of the GNU Free Documentation License,
@@ -1330,7 +1329,3 @@ To add other kind of decorations on a tag, @code{NAME-highlight} must use
@dfn{semantic-decorate-tag}, and other functions of the semantic
decoration @var{api} found in this library.
@end defun
-
-@ignore
- arch-tag: 760dca58-7119-484e-8237-866cbaf36f79
-@end ignore
diff --git a/doc/misc/semantic.texi b/doc/misc/semantic.texi
index 97f9bc21e8..f3f11d29f1 100644
--- a/doc/misc/semantic.texi
+++ b/doc/misc/semantic.texi
@@ -24,8 +24,7 @@
@copying
This manual documents the Semantic library and utilities.
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
-2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1999-2005, 2007, 2009-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -622,7 +621,3 @@ Emacs Lisp. It is an LALR parser suitable for complex languages.
@c LocalWords: subsubsection sw sym texi texinfo titlefont titlepage
@c LocalWords: tok TOKEN's toplevel typemodifiers uml unset untar
@c LocalWords: uref usedb var vskip xref yak
-
-@ignore
- arch-tag: cbc6e78c-4ff1-410e-9fc7-936487e39bbf
-@end ignore
diff --git a/doc/misc/ses.texi b/doc/misc/ses.texi
index 6a1cbe6203..d9739b9392 100644
--- a/doc/misc/ses.texi
+++ b/doc/misc/ses.texi
@@ -11,8 +11,7 @@
@copying
This file documents SES: the Simple Emacs Spreadsheet.
-Copyright @copyright{} 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 2002-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -982,7 +981,3 @@ Jean-Philippe Theberge @email{jphil@@acs.pagesjaunes.fr}
@include doclicense.texi
@bye
-
-@ignore
- arch-tag: 10a4ee1c-7ef4-4c06-8b7a-f975e39f0dec
-@end ignore
diff --git a/doc/misc/sieve.texi b/doc/misc/sieve.texi
index 139d0fa77d..64fd92f40c 100644
--- a/doc/misc/sieve.texi
+++ b/doc/misc/sieve.texi
@@ -1,4 +1,7 @@
\input texinfo @c -*-texinfo-*-
+
+@include gnus-overrides.texi
+
@setfilename ../../info/sieve
@settitle Emacs Sieve Manual
@synindex fn cp
@@ -8,8 +11,7 @@
@copying
This file documents the Emacs Sieve package, for server-side mail filtering.
-Copyright @copyright{} 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -35,7 +37,12 @@ developing GNU and promoting software freedom.''
@setchapternewpage odd
@titlepage
+@ifset WEBHACKDEVEL
+@title Emacs Sieve Manual (DEVELOPMENT VERSION)
+@end ifset
+@ifclear WEBHACKDEVEL
@title Emacs Sieve Manual
+@end ifclear
@author by Simon Josefsson
@page
@@ -264,10 +271,6 @@ in the @code{sieve} group (@kbd{M-x customize-group RET sieve RET}):
@table @code
-@item sieve-manage-default-user
-@vindex sieve-manage-default-user
-Sets the default username.
-
@item sieve-manage-default-port
@vindex sieve-manage-default-port
Sets the default port to use, the suggested port number is @code{2000}.
@@ -356,7 +359,3 @@ A Protocol for Remotely Managing Sieve Scripts
@bye
@c End:
-
-@ignore
- arch-tag: 6e3ad0af-2eaf-4f35-a081-d40f4a683ec3
-@end ignore
diff --git a/doc/misc/smtpmail.texi b/doc/misc/smtpmail.texi
index 40dcf6bc92..1d4bbbff4a 100644
--- a/doc/misc/smtpmail.texi
+++ b/doc/misc/smtpmail.texi
@@ -3,7 +3,7 @@
@settitle Emacs SMTP Library
@syncodeindex vr fn
@copying
-Copyright @copyright{} 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+Copyright @copyright{} 2003-2011
Free Software Foundation, Inc.
@quotation
@@ -415,7 +415,3 @@ cannot accept mail.
@printindex fn
@bye
-
-@ignore
- arch-tag: 6316abdf-b366-4562-87a2-f37e8f894b6f
-@end ignore
diff --git a/doc/misc/speedbar.texi b/doc/misc/speedbar.texi
index 3e0373d044..9dc47e4574 100644
--- a/doc/misc/speedbar.texi
+++ b/doc/misc/speedbar.texi
@@ -4,8 +4,7 @@
@syncodeindex fn cp
@copying
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -41,6 +40,7 @@ developing GNU and promoting software freedom.''
@node Top, , , (dir)Top
@comment node-name, next, previous, up
+@top Speedbar
Speedbar is a program for Emacs which can be used to summarize
information related to the current buffer. Its original inspiration
@@ -1253,7 +1253,3 @@ Two good values are @code{nil} and @code{statictag}.
@bye
@c LocalWords: speedbar's xref slowbar kbd subsubsection
@c LocalWords: keybindings
-
-@ignore
- arch-tag: e1fc85f0-1eeb-489f-a8d4-a2bfe711fa02
-@end ignore
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 91408263bc..fd22fd6856 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,11 +3,11 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2009-08-14.15}
+\def\texinfoversion{2011-05-23.16}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007, 2008, 2009 Free Software Foundation, Inc.
+% 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
%
% This texinfo.tex file is free software: you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
@@ -65,7 +65,6 @@
\everyjob{\message{[Texinfo version \texinfoversion]}%
\catcode`+=\active \catcode`\_=\active}
-
\chardef\other=12
% We never want plain's \outer definition of \+ in Texinfo.
@@ -93,14 +92,13 @@
\let\ptexnewwrite\newwrite
\let\ptexnoindent=\noindent
\let\ptexplus=+
+\let\ptexraggedright=\raggedright
\let\ptexrbrace=\}
\let\ptexslash=\/
\let\ptexstar=\*
\let\ptext=\t
\let\ptextop=\top
-{\catcode`\'=\active
-\global\let\ptexquoteright'}% Math-mode def from plain.tex.
-\let\ptexraggedright=\raggedright
+{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
% If this character appears in an error message or help string, it
% starts a new line in the output.
@@ -120,8 +118,8 @@
\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
\ifx\putwordin\undefined \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
@@ -160,15 +158,18 @@
\def\spaceisspace{\catcode`\ =\spacecat}
% sometimes characters are active, so we need control sequences.
+\chardef\ampChar = `\&
\chardef\colonChar = `\:
\chardef\commaChar = `\,
\chardef\dashChar = `\-
\chardef\dotChar = `\.
\chardef\exclamChar= `\!
+\chardef\hashChar = `\#
\chardef\lquoteChar= `\`
\chardef\questChar = `\?
\chardef\rquoteChar= `\'
\chardef\semiChar = `\;
+\chardef\slashChar = `\/
\chardef\underChar = `\_
% Ignore a token.
@@ -199,36 +200,7 @@
% that mark overfull boxes (in case you have decided
% that the text looks ok even though it passes the margin).
%
-\def\finalout{\overfullrule=0pt}
-
-% @| inserts a changebar to the left of the current line. It should
-% surround any changed text. This approach does *not* work if the
-% change spans more than two lines of output. To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
-%
-\def\|{%
- % \vadjust can only be used in horizontal mode.
- \leavevmode
- %
- % Append this vertical mode material after the current line in the output.
- \vadjust{%
- % We want to insert a rule with the height and depth of the current
- % leading; that is exactly what \strutbox is supposed to record.
- \vskip-\baselineskip
- %
- % \vadjust-items are inserted at the left edge of the type. So
- % the \llap here moves out into the left-hand margin.
- \llap{%
- %
- % For a thicker or thinner bar, change the `1pt'.
- \vrule height\baselineskip width1pt
- %
- % This is the space between the bar and the text.
- \hskip 12pt
- }%
- }%
-}
+\def\finalout{\overfullrule=0pt }
% Sometimes it is convenient to have everything in the transcript file
% and nothing on the terminal. We don't just call \tracingall here,
@@ -246,7 +218,7 @@
\tracingmacros2
\tracingrestores1
\showboxbreadth\maxdimen \showboxdepth\maxdimen
- \ifx\eTeXversion\undefined\else % etex gives us more logging
+ \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
\tracingscantokens1
\tracingifs1
\tracinggroups1
@@ -267,7 +239,6 @@
\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
\removelastskip\penalty-200\bigskip\fi\fi}
-% For @cropmarks command.
% Do @cropmarks to get crop marks.
%
\newif\ifcropmarks
@@ -577,7 +548,7 @@
}
\def\inenvironment#1{%
\ifx#1\empty
- out of any environment%
+ outside of any environment%
\else
in environment \expandafter\string#1%
\fi
@@ -589,7 +560,7 @@
\parseargdef\end{%
\if 1\csname iscond.#1\endcsname
\else
- % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+ % The general wording of \badenverr may not be ideal.
\expandafter\checkenv\csname#1\endcsname
\csname E#1\endcsname
\endgroup
@@ -599,85 +570,6 @@
\newhelp\EMsimple{Press RETURN to continue.}
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt\char64}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-\def\mylbrace {{\tt\char123}}
-\def\myrbrace {{\tt\char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-\begingroup
- % Definitions to produce \{ and \} commands for indices,
- % and @{ and @} for the aux/toc files.
- \catcode`\{ = \other \catcode`\} = \other
- \catcode`\[ = 1 \catcode`\] = 2
- \catcode`\! = 0 \catcode`\\ = \other
- !gdef!lbracecmd[\{]%
- !gdef!rbracecmd[\}]%
- !gdef!lbraceatcmd[@{]%
- !gdef!rbraceatcmd[@}]%
-!endgroup
-
-% @comma{} to avoid , parsing problems.
-\let\comma = ,
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
-\let\, = \c
-\let\dotaccent = \.
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \t
-\let\ubaraccent = \b
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown @ordf @ordm
-% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
-\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
- \def\temp{#1}%
- \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
- \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
- \else \errmessage{@dotless can be used only with i or j}%
- \fi\fi
-}
-
-% The \TeX{} logo, as in plain, but resetting the spacing so that a
-% period following counts as ending a sentence. (Idea found in latex.)
-%
-\edef\TeX{\TeX \spacefactor=1000 }
-
-% @LaTeX{} logo. Not quite the same results as the definition in
-% latex.ltx, since we use a different font for the raised A; it's most
-% convenient for us to use an explicitly smaller font, rather than using
-% the \scriptstyle font (since we don't reset \scriptstyle and
-% \scriptscriptstyle).
-%
-\def\LaTeX{%
- L\kern-.36em
- {\setbox0=\hbox{T}%
- \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
- \kern-.15em
- \TeX
-}
-
% Be sure we're in horizontal mode when doing a tie, since we make space
% equivalent to this in @example-like environments. Otherwise, a space
% at the beginning of a line will start with \penalty -- and
@@ -719,7 +611,7 @@
\else\ifx\temp\offword \plainnonfrenchspacing
\else
\errhelp = \EMsimple
- \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+ \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
\fi\fi
}
@@ -801,15 +693,6 @@ where each line of input produces a line of output.}
\newdimen\mil \mil=0.001in
-% Old definition--didn't work.
-%\parseargdef\need{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
-%\prevdepth=-1000pt
-%}}
-
\parseargdef\need{%
% Ensure vertical mode, so we don't make a big box in the middle of a
% paragraph.
@@ -873,7 +756,7 @@ where each line of input produces a line of output.}
% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
% paragraph. For more general purposes, use the \margin insertion
-% class. WHICH is `l' or `r'.
+% class. WHICH is `l' or `r'. Not documented, written for gawk manual.
%
\newskip\inmarginspacing \inmarginspacing=1cm
\def\strutdepth{\dp\strutbox}
@@ -920,6 +803,36 @@ where each line of input produces a line of output.}
\temp
}
+% @| inserts a changebar to the left of the current line. It should
+% surround any changed text. This approach does *not* work if the
+% change spans more than two lines of output. To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change). This command
+% is not documented, not supported, and doesn't work.
+%
+\def\|{%
+ % \vadjust can only be used in horizontal mode.
+ \leavevmode
+ %
+ % Append this vertical mode material after the current line in the output.
+ \vadjust{%
+ % We want to insert a rule with the height and depth of the current
+ % leading; that is exactly what \strutbox is supposed to record.
+ \vskip-\baselineskip
+ %
+ % \vadjust-items are inserted at the left edge of the type. So
+ % the \llap here moves out into the left-hand margin.
+ \llap{%
+ %
+ % For a thicker or thinner bar, change the `1pt'.
+ \vrule height\baselineskip width1pt
+ %
+ % This is the space between the bar and the text.
+ \hskip 12pt
+ }%
+ }%
+}
+
% @include FILE -- \input text of FILE.
%
\def\include{\parseargusing\filenamecatcodes\includezzz}
@@ -930,6 +843,7 @@ where each line of input produces a line of output.}
\makevalueexpandable % we want to expand any @value in FILE.
\turnoffactive % and allow special characters in the expansion
\indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @include of #1^^J}%
\edef\temp{\noexpand\input #1 }%
%
% This trickery is to read FILE outside of a group, in case it makes
@@ -1095,109 +1009,6 @@ where each line of input produces a line of output.}
}
-% @asis just yields its argument. Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math outputs its argument in math mode.
-%
-% One complication: _ usually means subscripts, but it could also mean
-% an actual _ character, as in @math{@var{some_variable} + 1}. So make
-% _ active, and distinguish by seeing if the current family is \slfam,
-% which is what @var uses.
-{
- \catcode`\_ = \active
- \gdef\mathunderscore{%
- \catcode`\_=\active
- \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
- }
-}
-% Another complication: we want \\ (and @\) to output a \ character.
-% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
-% this is not advertised and we don't care. Texinfo does not
-% otherwise define @\.
-%
-% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
-%
-\def\math{%
- \tex
- \mathunderscore
- \let\\ = \mathbackslash
- \mathactive
- % make the texinfo accent commands work in math mode
- \let\"=\ddot
- \let\'=\acute
- \let\==\bar
- \let\^=\hat
- \let\`=\grave
- \let\u=\breve
- \let\v=\check
- \let\~=\tilde
- \let\dotaccent=\dot
- $\finishmath
-}
-\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
-
-% Some active characters (such as <) are spaced differently in math.
-% We have to reset their definitions in case the @math was an argument
-% to a command which sets the catcodes (such as @item or @section).
-%
-{
- \catcode`^ = \active
- \catcode`< = \active
- \catcode`> = \active
- \catcode`+ = \active
- \catcode`' = \active
- \gdef\mathactive{%
- \let^ = \ptexhat
- \let< = \ptexless
- \let> = \ptexgtr
- \let+ = \ptexplus
- \let' = \ptexquoteright
- }
-}
-
-% Some math mode symbols.
-\def\bullet{$\ptexbullet$}
-\def\geq{\ifmmode \ge\else $\ge$\fi}
-\def\leq{\ifmmode \le\else $\le$\fi}
-\def\minus{\ifmmode -\else $-$\fi}
-
-% @dots{} outputs an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in the cm
-% typewriter fonts as three actual period characters; on the other hand,
-% in other typewriter fonts three periods are wider than 1.5em. So do
-% whichever is larger.
-%
-\def\dots{%
- \leavevmode
- \setbox0=\hbox{...}% get width of three periods
- \ifdim\wd0 > 1.5em
- \dimen0 = \wd0
- \else
- \dimen0 = 1.5em
- \fi
- \hbox to \dimen0{%
- \hskip 0pt plus.25fil
- .\hskip 0pt plus1fil
- .\hskip 0pt plus1fil
- .\hskip 0pt plus.5fil
- }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
- \dots
- \spacefactor=\endofsentencespacefactor
-}
-
-% @comma{} is so commas can be inserted into text without messing up
-% Texinfo's parsing.
-%
-\let\comma = ,
-
% @refill is a no-op.
\let\refill=\relax
@@ -1262,9 +1073,8 @@ where each line of input produces a line of output.}
\newif\ifpdfmakepagedest
% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
-% can be set). So we test for \relax and 0 as well as \undefined,
-% borrowed from ifpdf.sty.
-\ifx\pdfoutput\undefined
+% can be set). So we test for \relax and 0 as well as being undefined.
+\ifx\pdfoutput\thisisundefined
\else
\ifx\pdfoutput\relax
\else
@@ -1492,6 +1302,7 @@ output) for that.)}
\edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
%
% Read toc silently, to get counts of subentries for \pdfoutline.
+ \def\partentry##1##2##3##4{}% ignore parts in the outlines
\def\numchapentry##1##2##3##4{%
\def\thischapnum{##2}%
\def\thissecnum{0}%
@@ -1695,7 +1506,7 @@ output) for that.)}
% if we are producing pdf, and we have \pdffontattr, then define cmaps.
% (\pdffontattr was introduced many years ago, but people still run
% older pdftex's; it's easy to conditionalize, so we do.)
-\ifpdf \ifx\pdffontattr\undefined \else
+\ifpdf \ifx\pdffontattr\thisisundefined \else
\begingroup
\catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
\catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
@@ -1962,7 +1773,7 @@ end
% Use cm as the default font prefix.
% To specify the font prefix, you must define \fontprefix
% before you read in texinfo.tex.
-\ifx\fontprefix\undefined
+\ifx\fontprefix\thisisundefined
\def\fontprefix{cm}
\fi
% Support font families that don't use the same naming scheme as CM.
@@ -2105,8 +1916,8 @@ end
\font\reducedsy=cmsy10
\def\reducedecsize{1000}
-% reset the current fonts
-\textfonts
+\textleading = 13.2pt % line spacing for 11pt CM
+\textfonts % reset the current fonts
\rm
} % end of 11pt text font size definitions
@@ -2236,11 +2047,9 @@ end
\font\reducedsy=cmsy9
\def\reducedecsize{0900}
-% reduce space between paragraphs
-\divide\parskip by 2
-
-% reset the current fonts
-\textfonts
+\divide\parskip by 2 % reduce space between paragraphs
+\textleading = 12pt % line spacing for 10pt CM
+\textfonts % reset the current fonts
\rm
} % end of 10pt text font size definitions
@@ -2249,12 +2058,13 @@ end
% @fonttextsize 10
% (or 11) to redefine the text font size. pt is assumed.
%
-\def\xword{10}
\def\xiword{11}
+\def\xword{10}
+\def\xwordpt{10pt}
%
\parseargdef\fonttextsize{%
\def\textsizearg{#1}%
- \wlog{doing @fonttextsize \textsizearg}%
+ %\wlog{doing @fonttextsize \textsizearg}%
%
% Set \globaldefs so that documents can use this inside @tex, since
% makeinfo 4.8 does not support it, but we need it nonetheless.
@@ -2308,7 +2118,7 @@ end
\let\tenttsl=\titlettsl
\def\curfontsize{title}%
\def\lsize{chap}\def\lllsize{subsec}%
- \resetmathfonts \setleading{25pt}}
+ \resetmathfonts \setleading{27pt}}
\def\titlefont#1{{\titlefonts\rmisbold #1}}
\def\chapfonts{%
\let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
@@ -2436,12 +2246,14 @@ end
% Markup style setup for left and right quotes.
\defmarkupstylesetup\markupsetuplq{%
- \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname
+ \expandafter\let\expandafter \temp
+ \csname markupsetuplq\currentmarkupstyle\endcsname
\ifx\temp\relax \markupsetuplqdefault \else \temp \fi
}
\defmarkupstylesetup\markupsetuprq{%
- \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname
+ \expandafter\let\expandafter \temp
+ \csname markupsetuprq\currentmarkupstyle\endcsname
\ifx\temp\relax \markupsetuprqdefault \else \temp \fi
}
@@ -2460,22 +2272,26 @@ end
\let\markupsetuplqcode \markupsetcodequoteleft
\let\markupsetuprqcode \markupsetcodequoteright
+%
\let\markupsetuplqexample \markupsetcodequoteleft
\let\markupsetuprqexample \markupsetcodequoteright
+%
+\let\markupsetuplqsamp \markupsetcodequoteleft
+\let\markupsetuprqsamp \markupsetcodequoteright
+%
\let\markupsetuplqverb \markupsetcodequoteleft
\let\markupsetuprqverb \markupsetcodequoteright
+%
\let\markupsetuplqverbatim \markupsetcodequoteleft
\let\markupsetuprqverbatim \markupsetcodequoteright
-\let\markupsetuplqsamp \markupsetnoligaturesquoteleft
\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
-% Allow an option to not replace quotes with a regular directed right
-% quote/apostrophe (char 0x27), but instead use the undirected quote
-% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it
-% the default, but it works for pasting with more pdf viewers (at least
-% evince), the lilypond developers report. xpdf does work with the
-% regular 0x27.
+% Allow an option to not use regular directed right quote/apostrophe
+% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
+% The undirected quote is ugly, so don't make it the default, but it
+% works for pasting with more pdf viewers (at least evince), the
+% lilypond developers report. xpdf does work with the regular 0x27.
%
\def\codequoteright{%
\expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
@@ -2499,33 +2315,76 @@ end
\else \char'22 \fi
}
+% Commands to set the quote options.
+%
+\parseargdef\codequoteundirected{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxicodequoteundirected\endcsname
+ = t%
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxicodequoteundirected\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
+ \fi\fi
+}
+%
+\parseargdef\codequotebacktick{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxicodequotebacktick\endcsname
+ = t%
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxicodequotebacktick\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
+ \fi\fi
+}
+
% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
\def\noligaturesquoteleft{\relax\lq}
% Count depth in font-changes, for error checks
\newcount\fontdepth \fontdepth=0
-%% Add scribe-like font environments, plus @l for inline lisp (usually sans
-%% serif) and @ii for TeX italic
+% Font commands.
-% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
-% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
- \ptexslash\fi\fi\fi}
-\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
-\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
+% #1 is the font command (\sl or \it), #2 is the text to slant.
+% If we are in a monospaced environment, however, 1) always use \ttsl,
+% and 2) do not add an italic correction.
+\def\dosmartslant#1#2{%
+ \ifusingtt
+ {{\ttsl #2}\let\next=\relax}%
+ {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
+ \next
+}
+\def\smartslanted{\dosmartslant\sl}
+\def\smartitalic{\dosmartslant\it}
-% like \smartslanted except unconditionally uses \ttsl.
+% Output an italic correction unless \next (presumed to be the following
+% character) is such as not to need one.
+\def\smartitaliccorrection{%
+ \ifx\next,%
+ \else\ifx\next-%
+ \else\ifx\next.%
+ \else\ptexslash
+ \fi\fi\fi}
+
+% like \smartslanted except unconditionally uses \ttsl, and no ic.
% @var is set to this for defun arguments.
-\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+\def\ttslanted#1{{\ttsl #1}}
% @cite is like \smartslanted except unconditionally use \sl. We never want
% ttsl for book titles, do we?
-\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
\let\i=\smartitalic
\let\slanted=\smartslanted
-\def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}}
+\def\var#1{\smartslanted{#1}}
\let\dfn=\smartslanted
\let\emph=\smartitalic
@@ -2653,6 +2512,8 @@ end
}
}
+\def\codex #1{\tclose{#1}\endgroup}
+
\def\realdash{-}
\def\codedash{-\discretionary{}{}{}}
\def\codeunder{%
@@ -2666,7 +2527,6 @@ end
\discretionary{}{}{}}%
{\_}%
}
-\def\codex #1{\tclose{#1}\endgroup}
% An additional complication: the above will allow breaks after, e.g.,
% each of the four underscores in __typeof__. This is undesirable in
@@ -2686,63 +2546,18 @@ end
\allowcodebreaksfalse
\else
\errhelp = \EMsimple
- \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+ \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
\fi\fi
}
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
-
-% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
-% `example' (@kbd uses ttsl only inside of @example and friends),
-% or `code' (@kbd uses normal tty font always).
-\parseargdef\kbdinputstyle{%
- \def\txiarg{#1}%
- \ifx\txiarg\worddistinct
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
- \else\ifx\txiarg\wordexample
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
- \else\ifx\txiarg\wordcode
- \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
- \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is `distinct'.
-\kbdinputstyle distinct
-
-\def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
-\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
-
-% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
-\let\indicateurl=\code
-\let\env=\code
-\let\command=\code
-
-% @clicksequence{File @click{} Open ...}
-\def\clicksequence#1{\begingroup #1\endgroup}
-
-% @clickstyle @arrow (by default)
-\parseargdef\clickstyle{\def\click{#1}}
-\def\click{\arrow}
-
% @uref (abbreviation for `urlref') takes an optional (comma-separated)
% second argument specifying the text to display and an optional third
% arg as text to display instead of (rather than in addition to) the url
-% itself. First (mandatory) arg is the url. Perhaps eventually put in
-% a hypertex \special here.
-%
-\def\uref#1{\douref #1,,,\finish}
-\def\douref#1,#2,#3,#4\finish{\begingroup
+% itself. First (mandatory) arg is the url.
+% (This \urefnobreak definition isn't used now, leaving it for a while
+% for comparison.)
+\def\urefnobreak#1{\dourefnobreak #1,,,\finish}
+\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup
\unsepspaces
\pdfurl{#1}%
\setbox0 = \hbox{\ignorespaces #3}%
@@ -2763,6 +2578,103 @@ end
\endlink
\endgroup}
+% This \urefbreak definition is the active one.
+\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
+\let\uref=\urefbreak
+\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
+\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
+ \unsepspaces
+ \pdfurl{#1}%
+ \setbox0 = \hbox{\ignorespaces #3}%
+ \ifdim\wd0 > 0pt
+ \unhbox0 % third arg given, show only that
+ \else
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0 > 0pt
+ \ifpdf
+ \unhbox0 % PDF: 2nd arg given, show only it
+ \else
+ \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
+ \fi
+ \else
+ \urefcode{#1}% only url given, so show it
+ \fi
+ \fi
+ \endlink
+\endgroup}
+
+% Allow line breaks around only a few characters (only).
+\def\urefcatcodes{%
+ \catcode\ampChar=\active \catcode\dotChar=\active
+ \catcode\hashChar=\active \catcode\questChar=\active
+ \catcode\slashChar=\active
+}
+{
+ \urefcatcodes
+ %
+ \global\def\urefcode{\begingroup
+ \setupmarkupstyle{code}%
+ \urefcatcodes
+ \let&\urefcodeamp
+ \let.\urefcodedot
+ \let#\urefcodehash
+ \let?\urefcodequest
+ \let/\urefcodeslash
+ \codex
+ }
+ %
+ % By default, they are just regular characters.
+ \global\def&{\normalamp}
+ \global\def.{\normaldot}
+ \global\def#{\normalhash}
+ \global\def?{\normalquest}
+ \global\def/{\normalslash}
+}
+
+% we put a little stretch before and after the breakable chars, to help
+% line breaking of long url's. The unequal skips make look better in
+% cmtt at least, especially for dots.
+\def\urefprestretch{\urefprebreak \hskip0pt plus.13em }
+\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em }
+%
+\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
+\def\urefcodedot{\urefprestretch .\urefpoststretch}
+\def\urefcodehash{\urefprestretch \#\urefpoststretch}
+\def\urefcodequest{\urefprestretch ?\urefpoststretch}
+\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
+{
+ \catcode`\/=\active
+ \global\def\urefcodeslashfinish{%
+ \urefprestretch \slashChar
+ % Allow line break only after the final / in a sequence of
+ % slashes, to avoid line break between the slashes in http://.
+ \ifx\next/\else \urefpoststretch \fi
+ }
+}
+
+% One more complication: by default we'll break after the special
+% characters, but some people like to break before the special chars, so
+% allow that. Also allow no breaking at all, for manual control.
+%
+\parseargdef\urefbreakstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\wordnone
+ \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
+ \else\ifx\txiarg\wordbefore
+ \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
+ \else\ifx\txiarg\wordafter
+ \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
+ \fi\fi\fi
+}
+\def\wordafter{after}
+\def\wordbefore{before}
+\def\wordnone{none}
+
+\urefbreakstyle after
+
% @url synonym for @uref, since that's how everyone uses it.
%
\let\url=\uref
@@ -2784,6 +2696,51 @@ end
\let\email=\uref
\fi
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
+
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+% `example' (@kbd uses ttsl only inside of @example and friends),
+% or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\worddistinct
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+ \else\ifx\txiarg\wordexample
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+ \else\ifx\txiarg\wordcode
+ \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
+ \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct'.
+\kbdinputstyle distinct
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
+
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
+\let\env=\code
+\let\command=\code
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
%
@@ -2819,8 +2776,188 @@ end
\fi
}
+% @asis just yields its argument. Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}. So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+ \catcode`\_ = \active
+ \gdef\mathunderscore{%
+ \catcode`\_=\active
+ \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+ }
+}
+% Another complication: we want \\ (and @\) to output a math (or tt) \.
+% FYI, plain.tex uses \\ as a temporary control sequence (for no
+% particular reason), but this is not advertised and we don't care.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+ \tex
+ \mathunderscore
+ \let\\ = \mathbackslash
+ \mathactive
+ % make the texinfo accent commands work in math mode
+ \let\"=\ddot
+ \let\'=\acute
+ \let\==\bar
+ \let\^=\hat
+ \let\`=\grave
+ \let\u=\breve
+ \let\v=\check
+ \let\~=\tilde
+ \let\dotaccent=\dot
+ $\finishmath
+}
+\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+ \catcode`^ = \active
+ \catcode`< = \active
+ \catcode`> = \active
+ \catcode`+ = \active
+ \catcode`' = \active
+ \gdef\mathactive{%
+ \let^ = \ptexhat
+ \let< = \ptexless
+ \let> = \ptexgtr
+ \let+ = \ptexplus
+ \let' = \ptexquoteright
+ }
+}
+
\message{glyphs,}
+% and logos.
+
+% @@ prints an @.
+\def\@{\char64 }
+
+% Used to generate quoted braces. Unless we're in typewriter, use
+% \ecfont because the CM text fonts do not have braces, and we don't
+% want to switch into math.
+\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
+\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+\begingroup
+ % Definitions to produce \{ and \} commands for indices,
+ % and @{ and @} for the aux/toc files.
+ \catcode`\{ = \other \catcode`\} = \other
+ \catcode`\[ = 1 \catcode`\] = 2
+ \catcode`\! = 0 \catcode`\\ = \other
+ !gdef!lbracecmd[\{]%
+ !gdef!rbracecmd[\}]%
+ !gdef!lbraceatcmd[@{]%
+ !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \ptexc
+\let\dotaccent = \ptexdot
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \ptext
+\let\ubaraccent = \ptexb
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+ \def\temp{#1}%
+ \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+ \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+ \else \errmessage{@dotless can be used only with i or j}%
+ \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence. (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo. Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+ L\kern-.36em
+ {\setbox0=\hbox{T}%
+ \vbox to \ht0{\hbox{%
+ \ifx\textnominalsize\xwordpt
+ % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
+ % Revert to plain's \scriptsize, which is 7pt.
+ \count255=\the\fam $\fam\count255 \scriptstyle A$%
+ \else
+ % For 11pt, we can use our lllsize.
+ \selectfonts\lllsize A%
+ \fi
+ }%
+ \vss
+ }}%
+ \kern-.15em
+ \TeX
+}
+
+% Some math mode symbols.
+\def\bullet{$\ptexbullet$}
+\def\geq{\ifmmode \ge\else $\ge$\fi}
+\def\leq{\ifmmode \le\else $\le$\fi}
+\def\minus{\ifmmode -\else $-$\fi}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em. So do
+% whichever is larger.
+%
+\def\dots{%
+ \leavevmode
+ \setbox0=\hbox{...}% get width of three periods
+ \ifdim\wd0 > 1.5em
+ \dimen0 = \wd0
+ \else
+ \dimen0 = 1.5em
+ \fi
+ \hbox to \dimen0{%
+ \hskip 0pt plus.25fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus.5fil
+ }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+ \dots
+ \spacefactor=\endofsentencespacefactor
+}
% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
%
@@ -2991,7 +3128,7 @@ end
% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38
% so we'll define it if necessary.
%
-\ifx\Orb\undefined
+\ifx\Orb\thisisundefined
\def\Orb{\mathhexbox20D}
\fi
@@ -3019,8 +3156,9 @@ end
\newif\ifsetshortcontentsaftertitlepage
\let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
-\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
- \endgroup\page\hbox{}\page}
+\parseargdef\shorttitlepage{%
+ \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+ \endgroup\page\hbox{}\page}
\envdef\titlepage{%
% Open one extra group, as we want to close it in the middle of \Etitlepage.
@@ -3080,7 +3218,7 @@ end
\finishedtitlepagetrue
}
-%%% Macros to be used within @titlepage:
+% Macros to be used within @titlepage:
\let\subtitlerm=\tenrm
\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
@@ -3113,7 +3251,7 @@ end
}
-%%% Set up page headings and footings.
+% Set up page headings and footings.
\let\thispage=\folio
@@ -3207,10 +3345,14 @@ end
\def\headings #1 {\csname HEADINGS#1\endcsname}
-\def\HEADINGSoff{%
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
+\def\headingsoff{% non-global headings elimination
+ \evenheadline={\hfil}\evenfootline={\hfil}%
+ \oddheadline={\hfil}\oddfootline={\hfil}%
+}
+
+\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
+\HEADINGSoff % it's the default
+
% When we turn headings on, set the page number to 1.
% For double-sided printing, put current file name in lower left corner,
% chapter name on inside top of right hand pages, document
@@ -3261,7 +3403,7 @@ end
% This produces Day Month Year style of output.
% Only define if not already defined, in case a txi-??.tex file has set
% up a different format (e.g., txi-cs.tex does this).
-\ifx\today\undefined
+\ifx\today\thisisundefined
\def\today{%
\number\day\space
\ifcase\month
@@ -3322,7 +3464,7 @@ end
\begingroup
\advance\leftskip by-\tableindent
\advance\hsize by\tableindent
- \advance\rightskip by0pt plus1fil
+ \advance\rightskip by0pt plus1fil\relax
\leavevmode\unhbox0\par
\endgroup
%
@@ -3808,9 +3950,9 @@ end
\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
\global\advance\multitablelinespace by-\ht0
\fi
-%% Test to see if parskip is larger than space between lines of
-%% table. If not, do nothing.
-%% If so, set to same dimension as multitablelinespace.
+% Test to see if parskip is larger than space between lines of
+% table. If not, do nothing.
+% If so, set to same dimension as multitablelinespace.
\ifdim\multitableparskip>\multitablelinespace
\global\multitableparskip=\multitablelinespace
\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
@@ -4134,11 +4276,14 @@ end
\def\@{@}% change to @@ when we switch to @ as escape char in index files.
\def\ {\realbackslash\space }%
%
- % Need these in case \tex is in effect and \{ is a \delimiter again.
- % But can't use \lbracecmd and \rbracecmd because texindex assumes
- % braces and backslashes are used only as delimiters.
- \let\{ = \mylbrace
- \let\} = \myrbrace
+ % Need these unexpandable (because we define \tt as a dummy)
+ % definitions when @{ or @} appear in index entry text. Also, more
+ % complicated, when \tex is in effect and \{ is a \delimiter again.
+ % We can't use \lbracecmd and \rbracecmd because texindex assumes
+ % braces and backslashes are used only as delimiters. Perhaps we
+ % should define @lbrace and @rbrace commands a la @comma.
+ \def\{{{\tt\char123}}%
+ \def\}{{\tt\char125}}%
%
% I don't entirely understand this, but when an index entry is
% generated from a macro call, the \endinput which \scanmacro inserts
@@ -4191,7 +4336,7 @@ end
\def\commondummies{%
%
% \definedummyword defines \#1 as \string\#1\space, thus effectively
- % preventing its expansion. This is used only for control% words,
+ % preventing its expansion. This is used only for control words,
% not control letters, because the \space would be incorrect for
% control characters, but is needed to separate the control word
% from whatever follows.
@@ -4210,6 +4355,7 @@ end
\commondummiesnofonts
%
\definedummyletter\_%
+ \definedummyletter\-%
%
% Non-English letters.
\definedummyword\AA
@@ -4246,20 +4392,24 @@ end
\definedummyword\TeX
%
% Assorted special characters.
+ \definedummyword\arrow
\definedummyword\bullet
\definedummyword\comma
\definedummyword\copyright
\definedummyword\registeredsymbol
\definedummyword\dots
\definedummyword\enddots
+ \definedummyword\entrybreak
\definedummyword\equiv
\definedummyword\error
\definedummyword\euro
+ \definedummyword\expansion
+ \definedummyword\geq
\definedummyword\guillemetleft
\definedummyword\guillemetright
\definedummyword\guilsinglleft
\definedummyword\guilsinglright
- \definedummyword\expansion
+ \definedummyword\leq
\definedummyword\minus
\definedummyword\ogonek
\definedummyword\pounds
@@ -4316,7 +4466,9 @@ end
\definedummyword\b
\definedummyword\i
\definedummyword\r
+ \definedummyword\sansserif
\definedummyword\sc
+ \definedummyword\slanted
\definedummyword\t
%
% Commands that take arguments.
@@ -4325,10 +4477,12 @@ end
\definedummyword\code
\definedummyword\command
\definedummyword\dfn
+ \definedummyword\dmn
\definedummyword\email
\definedummyword\emph
\definedummyword\env
\definedummyword\file
+ \definedummyword\indicateurl
\definedummyword\kbd
\definedummyword\key
\definedummyword\math
@@ -4356,7 +4510,7 @@ end
\def\definedummyaccent##1{\let##1\asis}%
% We can just ignore other control letters.
\def\definedummyletter##1{\let##1\empty}%
- % Hopefully, all control words can become @asis.
+ % All control words become @asis by default; overrides below.
\let\definedummyword\definedummyaccent
%
\commondummiesnofonts
@@ -4368,8 +4522,14 @@ end
%
\def\ { }%
\def\@{@}%
- % how to handle braces?
\def\_{\normalunderscore}%
+ \def\-{}% @- shouldn't affect sorting
+ %
+ % Unfortunately, texindex is not prepared to handle braces in the
+ % content at all. So for index sorting, we map @{ and @} to strings
+ % starting with |, since that ASCII character is between ASCII { and }.
+ \def\{{|a}%
+ \def\}{|b}%
%
% Non-English letters.
\def\AA{AA}%
@@ -4397,6 +4557,7 @@ end
%
% Assorted special characters.
% (The following {} will end up in the sort string, but that's ok.)
+ \def\arrow{->}%
\def\bullet{bullet}%
\def\comma{,}%
\def\copyright{copyright}%
@@ -4406,10 +4567,12 @@ end
\def\error{error}%
\def\euro{euro}%
\def\expansion{==>}%
+ \def\geq{>=}%
\def\guillemetleft{<<}%
\def\guillemetright{>>}%
\def\guilsinglleft{<}%
\def\guilsinglright{>}%
+ \def\leq{<=}%
\def\minus{-}%
\def\point{.}%
\def\pounds{pounds}%
@@ -4424,6 +4587,9 @@ end
\def\result{=>}%
\def\textdegree{o}%
%
+ \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
+ \else \indexlquoteignore \fi
+ %
% We need to get rid of all macros, leaving only the arguments (if present).
% Of course this is not nearly correct, but it is the best we can do for now.
% makeinfo does not expand macros in the argument to @deffn, which ends up
@@ -4437,6 +4603,11 @@ end
\macrolist
}
+% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
+% ignore left quotes in the sort term.
+{\catcode`\`=\active
+ \gdef\indexlquoteignore{\let`=\empty}}
+
\let\indexbackslash=0 %overridden during \printindex.
\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
@@ -4694,7 +4865,6 @@ end
% But this freezes the catcodes in the argument, and can cause problems to
% @code, which sets - active. This problem was fixed by a kludge---
% ``-'' was active throughout whole index, but this isn't really right.
-%
% The right solution is to prevent \entry from swallowing the whole text.
% --kasal, 21nov03
\def\entry{%
@@ -4731,10 +4901,17 @@ end
% columns.
\vskip 0pt plus1pt
%
+ % When reading the text of entry, convert explicit line breaks
+ % from @* into spaces. The user might give these in long section
+ % titles, for instance.
+ \def\*{\unskip\space\ignorespaces}%
+ \def\entrybreak{\hfil\break}%
+ %
% Swallow the left brace of the text (first parameter):
\afterassignment\doentry
\let\temp =
}
+\def\entrybreak{\unskip\space\ignorespaces}%
\def\doentry{%
\bgroup % Instead of the swallowed brace.
\noindent
@@ -4967,7 +5144,22 @@ end
\message{sectioning,}
% Chapters, sections, etc.
-% \unnumberedno is an oxymoron, of course. But we count the unnumbered
+% Let's start with @part.
+\outer\parseargdef\part{\partzzz{#1}}
+\def\partzzz#1{%
+ \chapoddpage
+ \null
+ \vskip.3\vsize % move it down on the page a bit
+ \begingroup
+ \noindent \titlefonts\rmisbold #1\par % the text
+ \let\lastnode=\empty % no node to associate with
+ \writetocentry{part}{#1}{}% but put it in the toc
+ \headingsoff % no headline or footline on the part page
+ \chapoddpage
+ \endgroup
+}
+
+% \unnumberedno is an oxymoron. But we count the unnumbered
% sections so that we can refer to them unambiguously in the pdf
% outlines by their "section number". We avoid collisions with chapter
% numbers by starting them at 10000. (If a document ever has 10000
@@ -5046,8 +5238,8 @@ end
\chardef\maxseclevel = 3
%
% A numbered section within an unnumbered changes to unnumbered too.
-% To achive this, remember the "biggest" unnum. sec. we are currently in:
-\chardef\unmlevel = \maxseclevel
+% To achieve this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unnlevel = \maxseclevel
%
% Trace whether the current chapter is an appendix or not:
% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
@@ -5072,8 +5264,8 @@ end
% The heading type:
\def\headtype{#1}%
\if \headtype U%
- \ifnum \absseclevel < \unmlevel
- \chardef\unmlevel = \absseclevel
+ \ifnum \absseclevel < \unnlevel
+ \chardef\unnlevel = \absseclevel
\fi
\else
% Check for appendix sections:
@@ -5085,10 +5277,10 @@ end
\fi\fi
\fi
% Check for numbered within unnumbered:
- \ifnum \absseclevel > \unmlevel
+ \ifnum \absseclevel > \unnlevel
\def\headtype{U}%
\else
- \chardef\unmlevel = 3
+ \chardef\unnlevel = 3
\fi
\fi
% Now print the heading:
@@ -5174,7 +5366,8 @@ end
\global\let\subsubsection = \appendixsubsubsec
}
-\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+% normally unnmhead0 calls unnumberedzzz:
+\outer\parseargdef\unnumbered{\unnmhead0{#1}}
\def\unnumberedzzz#1{%
\global\secno=0 \global\subsecno=0 \global\subsubsecno=0
\global\advance\unnumberedno by 1
@@ -5218,40 +5411,47 @@ end
\let\top\unnumbered
% Sections.
+%
\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
\def\seczzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
}
-\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+% normally calls appendixsectionzzz:
+\outer\parseargdef\appendixsection{\apphead1{#1}}
\def\appendixsectionzzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
}
\let\appendixsec\appendixsection
-\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+% normally calls unnumberedseczzz:
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
\def\unnumberedseczzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
}
% Subsections.
-\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+%
+% normally calls numberedsubseczzz:
+\outer\parseargdef\numberedsubsec{\numhead2{#1}}
\def\numberedsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
}
-\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+% normally calls appendixsubseczzz:
+\outer\parseargdef\appendixsubsec{\apphead2{#1}}
\def\appendixsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Yappendix}%
{\appendixletter.\the\secno.\the\subsecno}%
}
-\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+% normally calls unnumberedsubseczzz:
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
\def\unnumberedsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Ynothing}%
@@ -5259,21 +5459,25 @@ end
}
% Subsubsections.
-\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+%
+% normally numberedsubsubseczzz:
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
\def\numberedsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Ynumbered}%
{\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
}
-\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+% normally appendixsubsubseczzz:
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
\def\appendixsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Yappendix}%
{\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
}
-\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+% normally unnumberedsubsubseczzz:
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
\def\unnumberedsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Ynothing}%
@@ -5323,14 +5527,13 @@ end
% (including whitespace, linebreaking, etc. around it),
% given all the information in convenient, parsed form.
-%%% Args are the skip and penalty (usually negative)
+% Args are the skip and penalty (usually negative)
\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-%%% Define plain chapter starts, and page on/off switching for it
% Parameter controlling skip before chapter headings (if needed)
-
\newskip\chapheadingskip
+% Define plain chapter starts, and page on/off switching for it.
\def\chapbreak{\dobreak \chapheadingskip {-4000}}
\def\chappager{\par\vfill\supereject}
% Because \domark is called before \chapoddpage, the filler page will
@@ -5340,9 +5543,8 @@ end
\chappager
\ifodd\pageno \else
\begingroup
- \evenheadline={\hfil}\evenfootline={\hfil}%
- \oddheadline={\hfil}\oddfootline={\hfil}%
- \hbox to 0pt{}%
+ \headingsoff
+ \null
\chappager
\endgroup
\fi
@@ -5534,6 +5736,8 @@ end
%
\def\sectionheading#1#2#3#4{%
{%
+ \checkenv{}% should not be in an environment.
+ %
% Switch to the right set of fonts.
\csname #2fonts\endcsname \rmisbold
%
@@ -5785,6 +5989,7 @@ end
\def\summarycontents{%
\startcontents{\putwordShortTOC}%
%
+ \let\partentry = \shortpartentry
\let\numchapentry = \shortchapentry
\let\appentry = \shortchapentry
\let\unnchapentry = \shortunnchapentry
@@ -5840,6 +6045,19 @@ end
% The last argument is the page number.
% The arguments in between are the chapter number, section number, ...
+% Parts, in the main contents. Replace the part number, which doesn't
+% exist, with an empty box. Let's hope all the numbers have the same width.
+% Also ignore the page number, which is conventionally not printed.
+\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
+\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
+%
+% Parts, in the short toc.
+\def\shortpartentry#1#2#3#4{%
+ \penalty-300
+ \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
+ \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
+}
+
% Chapters, in the main contents.
\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
%
@@ -5929,9 +6147,9 @@ end
\message{environments,}
% @foo ... @end foo.
-% @tex ... @end tex escapes into raw Tex temporarily.
+% @tex ... @end tex escapes into raw TeX temporarily.
% One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain tex @ character.
+% But \@ or @@ will get a plain @ character.
\envdef\tex{%
\setupmarkupstyle{tex}%
@@ -5948,6 +6166,10 @@ end
\catcode`\'=\other
\escapechar=`\\
%
+ % ' is active in math mode (mathcode"8000). So reset it, and all our
+ % other math active characters (just in case), to plain's definitions.
+ \mathactive
+ %
\let\b=\ptexb
\let\bullet=\ptexbullet
\let\c=\ptexc
@@ -6150,41 +6372,42 @@ end
}
% We often define two environments, @foo and @smallfoo.
-% Let's do it by one command:
-\def\makedispenv #1#2{
- \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
- \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+% Let's do it in one command. #1 is the env name, #2 the definition.
+\def\makedispenvdef#1#2{%
+ \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
+ \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
\expandafter\let\csname E#1\endcsname \afterenvbreak
\expandafter\let\csname Esmall#1\endcsname \afterenvbreak
}
-% Define two synonyms:
-\def\maketwodispenvs #1#2#3{
- \makedispenv{#1}{#3}
- \makedispenv{#2}{#3}
+% Define two environment synonyms (#1 and #2) for an environment.
+\def\maketwodispenvdef#1#2#3{%
+ \makedispenvdef{#1}{#3}%
+ \makedispenvdef{#2}{#3}%
}
-
-% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @lisp: indented, narrowed, typewriter font;
+% @example: same as @lisp.
%
% @smallexample and @smalllisp: use smaller fonts.
% Originally contributed by Pavel@xerox.
%
-\maketwodispenvs {lisp}{example}{%
+\maketwodispenvdef{lisp}{example}{%
\nonfillstart
\tt\setupmarkupstyle{example}%
\let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
- \gobble % eat return
+ \gobble % eat return
}
% @display/@smalldisplay: same as @lisp except keep current font.
%
-\makedispenv {display}{%
+\makedispenvdef{display}{%
\nonfillstart
\gobble
}
% @format/@smallformat: same as @display except don't narrow margins.
%
-\makedispenv{format}{%
+\makedispenvdef{format}{%
\let\nonarrowing = t%
\nonfillstart
\gobble
@@ -6203,7 +6426,7 @@ end
\envdef\flushright{%
\let\nonarrowing = t%
\nonfillstart
- \advance\leftskip by 0pt plus 1fill
+ \advance\leftskip by 0pt plus 1fill\relax
\gobble
}
\let\Eflushright = \afterenvbreak
@@ -6238,6 +6461,8 @@ end
% we're doing normal filling. So, when using \aboveenvbreak and
% \afterenvbreak, temporarily make \parskip 0.
%
+\makedispenvdef{quotation}{\quotationstart}
+%
\def\quotationstart{%
{\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
\parindent=0pt
@@ -6253,28 +6478,18 @@ end
\parsearg\quotationlabel
}
-\envdef\quotation{%
- \setnormaldispenv
- \quotationstart
-}
-
-\envdef\smallquotation{%
- \setsmalldispenv
- \quotationstart
-}
-\let\Esmallquotation = \Equotation
-
% We have retained a nonzero parskip for the environment, since we're
% doing normal filling.
%
\def\Equotation{%
\par
- \ifx\quotationauthor\undefined\else
+ \ifx\quotationauthor\thisisundefined\else
% indent a bit.
\leftline{\kern 2\leftskip \sl ---\quotationauthor}%
\fi
{\parskip=0pt \afterenvbreak}%
}
+\def\Esmallquotation{\Equotation}
% If we're given an argument, typeset it in bold with a colon after.
\def\quotationlabel#1{%
@@ -6331,21 +6546,28 @@ end
% Setup for the @verbatim environment
%
-% Real tab expansion
+% Real tab expansion.
\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
%
-\def\starttabbox{\setbox0=\hbox\bgroup}
+% We typeset each line of the verbatim in an \hbox, so we can handle
+% tabs. The \global is in case the verbatim line starts with an accent,
+% or some other command that starts with a begin-group. Otherwise, the
+% entire \verbbox would disappear at the corresponding end-group, before
+% it is typeset. Meanwhile, we can't have nested verbatim commands
+% (can we?), so the \global won't be overwriting itself.
+\newbox\verbbox
+\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
%
\begingroup
\catcode`\^^I=\active
\gdef\tabexpand{%
\catcode`\^^I=\active
\def^^I{\leavevmode\egroup
- \dimen0=\wd0 % the width so far, or since the previous tab
- \divide\dimen0 by\tabw
- \multiply\dimen0 by\tabw % compute previous multiple of \tabw
- \advance\dimen0 by\tabw % advance to next multiple of \tabw
- \wd0=\dimen0 \box0 \starttabbox
+ \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
+ \divide\dimen\verbbox by\tabw
+ \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
+ \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw
+ \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
}%
}
\endgroup
@@ -6354,15 +6576,16 @@ end
\def\setupverbatim{%
\let\nonarrowing = t%
\nonfillstart
- % Easiest (and conventionally used) font for verbatim
- \tt
- \def\par{\leavevmode\egroup\box0\endgraf}%
+ \tt % easiest (and conventionally used) font for verbatim
+ % The \leavevmode here is for blank lines. Otherwise, we would
+ % never \starttabox and the \egroup would end verbatim mode.
+ \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
\tabexpand
\setupmarkupstyle{verbatim}%
% Respect line breaks,
% print special symbols as themselves, and
- % make each space count
- % must do in this order:
+ % make each space count.
+ % Must do in this order:
\obeylines \uncatcodespecials \sepspaces
\everypar{\starttabbox}%
}
@@ -6419,6 +6642,7 @@ end
\makevalueexpandable
\setupverbatim
\indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
\input #1
\afterenvbreak
}%
@@ -6468,7 +6692,7 @@ end
% commands also insert a nobreak penalty, and we don't want to allow
% a break between a section heading and a defun.
%
- % As a minor refinement, we avoid "club" headers by signalling
+ % As a further refinement, we avoid "club" headers by signalling
% with penalty of 10003 after the very first @deffn in the
% sequence (see above), and penalty of 10002 after any following
% @def command.
@@ -6505,7 +6729,7 @@ end
#1#2 \endheader
% common ending:
\interlinepenalty = 10000
- \advance\rightskip by 0pt plus 1fil
+ \advance\rightskip by 0pt plus 1fil\relax
\endgraf
\nobreak\vskip -\parskip
\penalty\defunpenalty % signal to \startdefun and \dodefunx
@@ -6535,13 +6759,36 @@ end
\def\domakedefun#1#2#3{%
\envdef#1{%
\startdefun
+ \doingtypefnfalse % distinguish typed functions from all else
\parseargusing\activeparens{\printdefunline#3}%
}%
\def#2{\dodefunx#1}%
\def#3%
}
-%%% Untyped functions:
+\newif\ifdoingtypefn % doing typed function?
+\newif\ifrettypeownline % typeset return type on its own line?
+
+% @deftypefnnewline on|off says whether the return type of typed functions
+% are printed on their own line. This affects @deftypefn, @deftypefun,
+% @deftypeop, and @deftypemethod.
+%
+\parseargdef\deftypefnnewline{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxideftypefnnl\endcsname
+ = \empty
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxideftypefnnl\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @txideftypefnnl value `\temp',
+ must be on|off}%
+ \fi\fi
+}
+
+% Untyped functions:
% @deffn category name args
\makedefun{deffn}{\deffngeneral{}}
@@ -6560,7 +6807,7 @@ end
\defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
}
-%%% Typed functions:
+% Typed functions:
% @deftypefn category type name args
\makedefun{deftypefn}{\deftypefngeneral{}}
@@ -6575,10 +6822,11 @@ end
%
\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
\dosubind{fn}{\code{#4}}{#1}%
+ \doingtypefntrue
\defname{#2}{#3}{#4}\defunargs{#5\unskip}%
}
-%%% Typed variables:
+% Typed variables:
% @deftypevr category type var args
\makedefun{deftypevr}{\deftypecvgeneral{}}
@@ -6596,7 +6844,7 @@ end
\defname{#2}{#3}{#4}\defunargs{#5\unskip}%
}
-%%% Untyped variables:
+% Untyped variables:
% @defvr category var args
\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
@@ -6607,7 +6855,8 @@ end
% \defcvof {category of}class var args
\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
-%%% Type:
+% Types:
+
% @deftp category name args
\makedefun{deftp}#1 #2 #3\endheader{%
\doind{tp}{\code{#2}}%
@@ -6635,25 +6884,49 @@ end
% We are followed by (but not passed) the arguments, if any.
%
\def\defname#1#2#3{%
+ \par
% Get the values of \leftskip and \rightskip as they were outside the @def...
\advance\leftskip by -\defbodyindent
%
- % How we'll format the type name. Putting it in brackets helps
+ % Determine if we are typesetting the return type of a typed function
+ % on a line by itself.
+ \rettypeownlinefalse
+ \ifdoingtypefn % doing a typed function specifically?
+ % then check user option for putting return type on its own line:
+ \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
+ \rettypeownlinetrue
+ \fi
+ \fi
+ %
+ % How we'll format the category name. Putting it in brackets helps
% distinguish it from the body text that may end up on the next line
% just below it.
\def\temp{#1}%
\setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
%
- % Figure out line sizes for the paragraph shape.
+ % Figure out line sizes for the paragraph shape. We'll always have at
+ % least two.
+ \tempnum = 2
+ %
% The first line needs space for \box0; but if \rightskip is nonzero,
% we need only space for the part of \box0 which exceeds it:
\dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip
+ %
+ % If doing a return type on its own line, we'll have another line.
+ \ifrettypeownline
+ \advance\tempnum by 1
+ \def\maybeshapeline{0in \hsize}%
+ \else
+ \def\maybeshapeline{}%
+ \fi
+ %
% The continuations:
\dimen2=\hsize \advance\dimen2 by -\defargsindent
- % (plain.tex says that \dimen1 should be used only as global.)
- \parshape 2 0in \dimen0 \defargsindent \dimen2
%
- % Put the type name to the right margin.
+ % The final paragraph shape:
+ \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2
+ %
+ % Put the category name at the right margin.
\noindent
\hbox to 0pt{%
\hfil\box0 \kern-\hsize
@@ -6675,8 +6948,16 @@ end
% . this still does not fix the ?` and !` ligatures, but so far no
% one has made identifiers using them :).
\df \tt
- \def\temp{#2}% return value type
- \ifx\temp\empty\else \tclose{\temp} \fi
+ \def\temp{#2}% text of the return type
+ \ifx\temp\empty\else
+ \tclose{\temp}% typeset the return type
+ \ifrettypeownline
+ % put return type on its own line; prohibit line break following:
+ \hfil\vadjust{\nobreak}\break
+ \else
+ \space % type on same line, so just followed by a space
+ \fi
+ \fi % no return type
#3% output function name
}%
{\rm\enskip}% hskip 0.5 em of \tenrm
@@ -6794,7 +7075,7 @@ end
% To do this right we need a feature of e-TeX, \scantokens,
% which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\undefined
+\ifx\eTeXversion\thisisundefined
\newwrite\macscribble
\def\scantokens#1{%
\toks0={#1}%
@@ -6805,25 +7086,30 @@ end
}
\fi
-\def\scanmacro#1{%
- \begingroup
- \newlinechar`\^^M
- \let\xeatspaces\eatspaces
- % Undo catcode changes of \startcontents and \doprintindex
- % When called from @insertcopying or (short)caption, we need active
- % backslash to get it printed correctly. Previously, we had
- % \catcode`\\=\other instead. We'll see whether a problem appears
- % with macro expansion. --kasal, 19aug04
- \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
- % ... and \example
- \spaceisspace
- %
- % Append \endinput to make sure that TeX does not see the ending newline.
- % I've verified that it is necessary both for e-TeX and for ordinary TeX
- % --kasal, 29nov03
- \scantokens{#1\endinput}%
- \endgroup
-}
+\def\scanmacro#1{\begingroup
+ \newlinechar`\^^M
+ \let\xeatspaces\eatspaces
+ %
+ % Undo catcode changes of \startcontents and \doprintindex
+ % When called from @insertcopying or (short)caption, we need active
+ % backslash to get it printed correctly. Previously, we had
+ % \catcode`\\=\other instead. We'll see whether a problem appears
+ % with macro expansion. --kasal, 19aug04
+ \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+ %
+ % ... and for \example:
+ \spaceisspace
+ %
+ % The \empty here causes a following catcode 5 newline to be eaten as
+ % part of reading whitespace after a control sequence. It does not
+ % eat a catcode 13 newline. There's no good way to handle the two
+ % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
+ % would then have different behavior). See the Macro Details node in
+ % the manual for the workaround we recommend for macros and
+ % line-oriented commands.
+ %
+ \scantokens{#1\empty}%
+\endgroup}
\def\scanexp#1{%
\edef\temp{\noexpand\scanmacro{#1}}%
@@ -6877,17 +7163,18 @@ end
% Macro bodies are absorbed as an argument in a context where
% all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \.
-
+% (as in normal texinfo). It is necessary to change the definition of \
+% to recognize macro arguments; this is the job of \mbodybackslash.
+%
% Non-ASCII encodings make 8-bit characters active, so un-activate
% them to avoid their expansion. Must do this non-globally, to
% confine the change to the current group.
-
+%
% It's necessary to have hard CRs when the macro is executed. This is
-% done by making ^^M (\endlinechar) catcode 12 when reading the macro
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
% body, and then making it the \newlinechar in \scanmacro.
-
-\def\scanctxt{%
+%
+\def\scanctxt{% used as subroutine
\catcode`\"=\other
\catcode`\+=\other
\catcode`\<=\other
@@ -6900,13 +7187,13 @@ end
\ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
}
-\def\scanargctxt{%
+\def\scanargctxt{% used for copying and captions, not macros.
\scanctxt
\catcode`\\=\other
\catcode`\^^M=\other
}
-\def\macrobodyctxt{%
+\def\macrobodyctxt{% used for @macro definitions
\scanctxt
\catcode`\{=\other
\catcode`\}=\other
@@ -6914,30 +7201,48 @@ end
\usembodybackslash
}
-\def\macroargctxt{%
+\def\macroargctxt{% used when scanning invocations
\scanctxt
- \catcode`\\=\other
+ \catcode`\\=0
}
+% why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes"
+% for the single characters \ { }. Thus, we end up with the "commands"
+% that would be written @\ @{ @} in a Texinfo document.
+%
+% We already have @{ and @}. For @\, we define it here, and only for
+% this purpose, to produce a typewriter backslash (so, the @\ that we
+% define for @math can't be used with @macro calls):
+%
+\def\\{\normalbackslash}%
+%
+% We would like to do this for \, too, since that is what makeinfo does.
+% But it is not possible, because Texinfo already has a command @, for a
+% cedilla accent. Documents must use @comma{} instead.
+%
+% \anythingelse will almost certainly be an error of some kind.
+
% \mbodybackslash is the definition of \ in @macro bodies.
% It maps \foo\ => \csname macarg.foo\endcsname => #N
% where N is the macro parameter number.
% We define \csname macarg.\endcsname to be \realbackslash, so
% \\ in macro replacement text gets you a backslash.
-
+%
{\catcode`@=0 @catcode`@\=@active
@gdef@usembodybackslash{@let\=@mbodybackslash}
@gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
}
\expandafter\def\csname macarg.\endcsname{\realbackslash}
+\def\margbackslash#1{\char`\#1 }
+
\def\macro{\recursivefalse\parsearg\macroxxx}
\def\rmacro{\recursivetrue\parsearg\macroxxx}
\def\macroxxx#1{%
- \getargs{#1}% now \macname is the macname and \argl the arglist
+ \getargs{#1}% now \macname is the macname and \argl the arglist
\ifx\argl\empty % no arguments
- \paramno=0%
+ \paramno=0
\else
\expandafter\parsemargdef \argl;%
\fi
@@ -6986,28 +7291,32 @@ end
% an opening brace, and that opening brace is not consumed.
\def\getargs#1{\getargsxxx#1{}}
\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacname#1 #2\relax{\macname={#1}}
\def\getmacargs#1{\def\argl{#1}}
% Parse the optional {params} list. Set up \paramno and \paramlist
% so \defmacro knows what to do. Define \macarg.blah for each blah
-% in the params list, to be ##N where N is the position in that list.
+% in the params list to be ##N where N is the position in that list.
% That gets used by \mbodybackslash (above).
-
+%
% We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX: let \hash be something
+% The technique used is stolen from LaTeX: let \hash be something
% unexpandable, insert that wherever you need a #, and then redefine
% it to # just before using the token list produced.
%
% The same technique is used to protect \eatspaces till just before
% the macro is used.
-\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
- \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+\def\parsemargdef#1;{%
+ \paramno=0\def\paramlist{}%
+ \let\hash\relax
+ \let\xeatspaces\relax
+ \parsemargdefxxx#1,;,%
+}
\def\parsemargdefxxx#1,{%
\if#1;\let\next=\relax
\else \let\next=\parsemargdefxxx
- \advance\paramno by 1%
+ \advance\paramno by 1
\expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
{\xeatspaces{\hash\the\paramno}}%
\edef\paramlist{\paramlist\hash\the\paramno,}%
@@ -7015,7 +7324,7 @@ end
% These two commands read recursive and nonrecursive macro bodies.
% (They're different since rec and nonrec macros end differently.)
-
+%
\long\def\parsemacbody#1@end macro%
{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
\long\def\parsermacbody#1@end rmacro%
@@ -7026,6 +7335,7 @@ end
% Much magic with \expandafter here.
% \xdef is used so that macro definitions will survive the file
% they're defined in; @include reads the file inside a group.
+%
\def\defmacro{%
\let\hash=##% convert placeholders to macro parameter chars
\ifrecursive
@@ -7089,7 +7399,8 @@ end
% \braceorline decides whether the next nonwhitespace character is a
% {. If so it reads up to the closing }, if not, it reads the whole
% line. Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg)
+% as an argument (by \parsebrace or \parsearg).
+%
\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
\def\braceorlinexxx{%
\ifx\nchar\bgroup\else
@@ -7099,7 +7410,8 @@ end
% @alias.
% We need some trickery to remove the optional spaces around the equal
-% sign. Just make them active and then expand them all to nothing.
+% sign. Make them active and then expand them all to nothing.
+%
\def\alias{\parseargusing\obeyspaces\aliasxxx}
\def\aliasxxx #1{\aliasyyy#1\relax}
\def\aliasyyy #1=#2\relax{%
@@ -7120,7 +7432,8 @@ end
% @inforef is relatively simple.
\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+\def\inforefzzz #1,#2,#3,#4**{%
+ \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
node \samp{\ignorespaces#1{}}}
% @node's only job in TeX is to define \lastnode, which is used in
@@ -7181,11 +7494,32 @@ end
\toks0 = \expandafter{\lastsection}%
\immediate \writexrdef{title}{\the\toks0 }%
\immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
- \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
+ \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
}%
\fi
}
+% @xrefautosectiontitle on|off says whether @section(ing) names are used
+% automatically in xrefs, if the third arg is not explicitly specified.
+% This was provided as a "secret" @set xref-automatic-section-title
+% variable, now it's official.
+%
+\parseargdef\xrefautomaticsectiontitle{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETxref-automatic-section-title\endcsname
+ = \empty
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETxref-automatic-section-title\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
+ must be on|off}%
+ \fi\fi
+}
+
+
% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
% the node name, #2 the name of the Info cross-reference, #3 the printed
% node name, #4 the name of the Info file, #5 the name of the printed
@@ -7202,7 +7536,7 @@ end
\setbox0=\hbox{\printedrefname\unskip}%
\ifdim \wd0 = 0pt
% No printed node name was explicitly given.
- \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
+ \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
% Use the node name inside the square brackets.
\def\printedrefname{\ignorespaces #1}%
\else
@@ -7357,7 +7691,8 @@ end
\angleleft un\-de\-fined\angleright
\iflinks
\ifhavexrefs
- \message{\linenumber Undefined cross reference `#1'.}%
+ {\toks0 = {#1}% avoid expansion of possibly-complex value
+ \message{\linenumber Undefined cross reference `\the\toks0'.}}%
\else
\ifwarnedxrefs\else
\global\warnedxrefstrue
@@ -7671,7 +8006,7 @@ end
it from ftp://tug.org/tex/epsf.tex.}
%
\def\image#1{%
- \ifx\epsfbox\undefined
+ \ifx\epsfbox\thisiundefined
\ifwarnednoepsf \else
\errhelp = \noepsfhelp
\errmessage{epsf.tex not found, images will be ignored}%
@@ -7687,7 +8022,7 @@ end
% #2 is (optional) width, #3 is (optional) height.
% #4 is (ignored optional) html alt text.
% #5 is (ignored optional) extension.
-% #6 is just the usual extra ignored arg for parsing this stuff.
+% #6 is just the usual extra ignored arg for parsing stuff.
\newif\ifimagevmode
\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
\catcode`\^^M = 5 % in case we're inside an example
@@ -8136,7 +8471,7 @@ directory should work if nowhere else does.}
%
% Latin1 (ISO-8859-1) character definitions.
\def\latonechardefs{%
- \gdef^^a0{~}
+ \gdef^^a0{\tie}
\gdef^^a1{\exclamdown}
\gdef^^a2{\missingcharmsg{CENT SIGN}}
\gdef^^a3{{\pounds}}
@@ -8166,7 +8501,7 @@ directory should work if nowhere else does.}
\gdef^^b9{$^1$}
\gdef^^ba{\ordm}
%
- \gdef^^bb{\guilletright}
+ \gdef^^bb{\guillemetright}
\gdef^^bc{$1\over4$}
\gdef^^bd{$1\over2$}
\gdef^^be{$3\over4$}
@@ -8258,7 +8593,7 @@ directory should work if nowhere else does.}
% Latin2 (ISO-8859-2) character definitions.
\def\lattwochardefs{%
- \gdef^^a0{~}
+ \gdef^^a0{\tie}
\gdef^^a1{\ogonek{A}}
\gdef^^a2{\u{}}
\gdef^^a3{\L}
@@ -8339,8 +8674,8 @@ directory should work if nowhere else does.}
\gdef^^ea{\ogonek{e}}
\gdef^^eb{\"e}
\gdef^^ec{\v e}
- \gdef^^ed{\'\i}
- \gdef^^ee{\^\i}
+ \gdef^^ed{\'{\dotless{i}}}
+ \gdef^^ee{\^{\dotless{i}}}
\gdef^^ef{\v d}
%
\gdef^^f0{\dh}
@@ -8431,7 +8766,7 @@ directory should work if nowhere else does.}
\gdef\DeclareUnicodeCharacter#1#2{%
\countUTFz = "#1\relax
- \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+ %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
\begingroup
\parseXMLCharref
\def\UTFviiiTwoOctets##1##2{%
@@ -8899,8 +9234,8 @@ directory should work if nowhere else does.}
% Prevent underfull vbox error messages.
\vbadness = 10000
-% Don't be so finicky about underfull hboxes, either.
-\hbadness = 2000
+% Don't be very finicky about underfull hboxes, either.
+\hbadness = 6666
% Following George Bush, get rid of widows and orphans.
\widowpenalty=10000
@@ -9107,28 +9442,21 @@ directory should work if nowhere else does.}
\message{and turning on texinfo input format.}
+\def^^L{\par} % remove \outer, so ^L can appear in an @comment
+
% DEL is a comment character, in case @c does not suffice.
\catcode`\^^? = 14
% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other
-\catcode`\~=\other
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\catcode`\$=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-\def\normaldollar{$}%$ font-lock fix
+\catcode`\"=\other \def\normaldoublequote{"}
+\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
+\catcode`\+=\other \def\normalplus{+}
+\catcode`\<=\other \def\normalless{<}
+\catcode`\>=\other \def\normalgreater{>}
+\catcode`\^=\other \def\normalcaret{^}
+\catcode`\_=\other \def\normalunderscore{_}
+\catcode`\|=\other \def\normalverticalbar{|}
+\catcode`\~=\other \def\normaltilde{~}
% This macro is used to make a character print one way in \tt
% (where it can probably be output as-is), and another way in other fonts,
@@ -9221,16 +9549,16 @@ directory should work if nowhere else does.}
% the literal character `\'.
%
@def@normalturnoffactive{%
- @let\=@normalbackslash
@let"=@normaldoublequote
- @let~=@normaltilde
+ @let$=@normaldollar %$ font-lock fix
+ @let+=@normalplus
+ @let<=@normalless
+ @let>=@normalgreater
+ @let\=@normalbackslash
@let^=@normalcaret
@let_=@normalunderscore
@let|=@normalverticalbar
- @let<=@normalless
- @let>=@normalgreater
- @let+=@normalplus
- @let$=@normaldollar %$ font-lock fix
+ @let~=@normaltilde
@markupsetuplqdefault
@markupsetuprqdefault
@unsepspaces
@@ -9262,10 +9590,16 @@ directory should work if nowhere else does.}
% Say @foo, not \foo, in error messages.
@escapechar = `@@
+% These (along with & and #) are made active for url-breaking, so need
+% active definitions as the normal characters.
+@def@normaldot{.}
+@def@normalquest{?}
+@def@normalslash{/}
+
% These look ok in all fonts, so just make them not special.
-@catcode`@& = @other
-@catcode`@# = @other
-@catcode`@% = @other
+@catcode`@& = @other @def@normalamp{&}
+@catcode`@# = @other @def@normalhash{#}
+@catcode`@% = @other @def@normalpercent{%}
@c Finally, make ` and ' active, so that txicodequoteundirected and
@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 542e649aea..2663d2df0f 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -37,8 +37,7 @@
@end macro
@copying
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1999-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -105,11 +104,6 @@ If you're using the other Emacs flavor, you should read the
@end ifset
@ifhtml
-@ifset jamanual
-This manual is also available as a @uref{@value{japanesemanual},
-Japanese translation}.
-@end ifset
-
The latest release of @value{tramp} is available for
@uref{ftp://ftp.gnu.org/gnu/tramp/, download}, or you may see
@ref{Obtaining Tramp} for more details, including the CVS server
@@ -171,7 +165,6 @@ Installing @value{tramp} with your @value{emacsname}
* Installation parameters:: Parameters in order to control installation.
* Load paths:: How to plug-in @value{tramp} into your environment.
-* Japanese manual:: Japanese manual.
@end ifset
@@ -449,9 +442,6 @@ Support of gateways exists since April 2007.
@ifset emacsgvfs
GVFS integration started in February 2009.
@end ifset
-@ifset emacsimap
-Storing files into IMAP mailboxes has been added in September 2009.
-@end ifset
In December 2001, @value{tramp} has been added to the XEmacs package
repository. Being part of the Emacs repository happened in June 2002,
@@ -624,10 +614,6 @@ or 2 to connect to the remote host. (You can also specify in
@file{~/.ssh/config}, the SSH configuration file, which protocol
should be used, and use the regular @option{ssh} method.)
-Two other variants, @option{ssh1_old} and @option{ssh2_old}, use the
-@command{ssh1} and @command{ssh2} commands explicitly. If you don't
-know what these are, you do not need these options.
-
All the methods based on @command{ssh} have an additional feature: you
can specify a host name which looks like @file{host#42} (the real host
name, then a hash sign, then a port number). This means to connect to
@@ -705,6 +691,14 @@ This method is also similar to @option{ssh}. It only uses the
@command{krlogin -x} command to log in to the remote host.
+@item @option{ksu}
+@cindex method ksu
+@cindex ksu method
+@cindex Kerberos (with ksu method)
+
+This is another method from the Kerberos suite. It behaves like @option{su}.
+
+
@item @option{plink}
@cindex method plink
@cindex plink method
@@ -736,19 +730,6 @@ expects PuTTY session names, calling @samp{plink -load @var{session}
hasn't defined a user name. Different port numbers must be defined in
the session.
-
-@item @option{fish}
-@cindex method fish
-@cindex fish method
-
-This is an experimental implementation of the fish protocol, known from
-the GNU Midnight Commander or the KDE Konqueror. @value{tramp} expects
-the fish server implementation from the KDE kioslave. That means, the
-file @file{~/.fishsrv.pl} is expected to reside on the remote host.
-
-The implementation lacks good performance. The code is offered anyway,
-maybe somebody can improve the performance.
-
@end table
@@ -808,10 +789,6 @@ or 2 to connect to the remote host. (You can also specify in
@file{~/.ssh/config}, the SSH configuration file, which protocol
should be used, and use the regular @option{scp} method.)
-Two other variants, @option{scp1_old} and @option{scp2_old}, use the
-@command{ssh1} and @command{ssh2} commands explicitly. If you don't
-know what these are, you do not need these options.
-
All the @command{ssh} based methods support the @samp{-p} feature
where you can specify a port number to connect to in the host name.
For example, the host name @file{host#42} tells @value{tramp} to
@@ -975,7 +952,7 @@ anyway.
@cindex method ftp
@cindex ftp method
-This is not a native @value{tramp} method. Instead of, it forwards all
+This is not a native @value{tramp} method. Instead, it forwards all
requests to @value{ftppackagename}.
@ifset xemacs
This works only for unified filenames, see @ref{Issues}.
@@ -990,20 +967,20 @@ This is another not natural @value{tramp} method. It uses the
@command{smbclient} command on different Unices in order to connect to
an SMB server. An SMB server might be a Samba (or CIFS) server on
another UNIX host or, more interesting, a host running MS Windows. So
-far, it is tested towards MS Windows NT, MS Windows 2000, and MS
+far, it is tested against MS Windows NT, MS Windows 2000, and MS
Windows XP.
The first directory in the localname must be a share name on the remote
-host. Remember, that the @code{$} character in which default shares
+host. Remember that the @code{$} character, in which default shares
usually end, must be written @code{$$} due to environment variable
substitution in file names. If no share name is given (i.e. remote
directory @code{/}), all available shares are listed.
-Since authorization is done on share level, you will be prompted
-always for a password if you access another share on the same host.
+Since authorization is done on share level, you will always be
+prompted for a password if you access another share on the same host.
This can be suppressed by @ref{Password handling}.
-MS Windows uses for authorization both a user name and a domain name.
+For authorization, MS Windows uses both a user name and a domain name.
Because of this, the @value{tramp} syntax has been extended: you can
specify a user name which looks like @code{user%domain} (the real user
name, then a percent sign, then the domain name). So, to connect to
@@ -1027,33 +1004,10 @@ methods, where in such a case the local user name is taken.
The @option{smb} method supports the @samp{-p} argument.
@strong{Please note:} If @value{emacsname} runs locally under MS
-Windows, this method isn't available. Instead of, you can use UNC
+Windows, this method isn't available. Instead, you can use UNC
file names like @file{//melancholia/daniel$$/.emacs}. The only
disadvantage is that there's no possibility to specify another user
name.
-
-
-@ifset emacsimap
-@item @option{imap}
-@cindex method imap
-@cindex method imaps
-@cindex imap method
-@cindex imaps method
-
-Accessing an IMAP mailbox is intended to save files there as encrypted
-message. It could be used in case there are no other remote file
-storages available.
-
-@value{tramp} supports both @option{imap} and @option{imaps} methods.
-The latter one accesses the IMAP server over ssl.
-
-Both methods support the port number specification.
-
-Note, that special handling is needed for declaring a passphrase for
-encryption / decryption of the messages (@pxref{Using an
-authentication file}).
-
-@end ifset
@end table
@@ -1067,7 +1021,7 @@ authentication file}).
The connection methods described in this section are based on GVFS
@uref{http://en.wikipedia.org/wiki/GVFS}. Via GVFS, the remote
filesystem is mounted locally through FUSE. @value{tramp} uses
-internally this local mounted directory.
+this local mounted directory internally.
The communication with GVFS is implemented via D-Bus messages.
Therefore, your @value{emacsname} must have D-Bus integration,
@@ -1092,7 +1046,7 @@ Both methods support the port number specification as discussed above.
@cindex obex method
OBEX is an FTP-like access protocol for simple devices, like cell
-phones. Until now @value{tramp} supports only OBEX over Bluetooth.
+phones. For the time being, @value{tramp} only supports OBEX over Bluetooth.
@item @option{synce}
@@ -1101,11 +1055,11 @@ phones. Until now @value{tramp} supports only OBEX over Bluetooth.
The @option{synce} method allows communication with Windows Mobile
devices. Beside GVFS for mounting remote files and directories via
-FUSE, it needs also the SYNCE-GVFS plugin.
+FUSE, it also needs the SYNCE-GVFS plugin.
@end table
@defopt tramp-gvfs-methods
-This customer option, a list, defines the external methods, which
+This customer option, a list, defines the external methods which
shall be used with GVFS. Per default, these are @option{dav},
@option{davs}, @option{obex} and @option{synce}. Other possible
values are @option{ftp}, @option{sftp} and @option{smb}.
@@ -1124,10 +1078,10 @@ These methods are intended to pass firewalls or proxy servers.
Therefore, they can be used for proxy host declarations
(@pxref{Multi-hops}) only.
-A gateway method must come always along with a method who supports
+A gateway method must always come along with a method which supports
port setting. This is because @value{tramp} targets the accompanied
method to @file{localhost#random_port}, from where the firewall or
-proxy server is accessed to.
+proxy server is accessed.
Gateway methods support user name and password declarations. These
are used to authenticate towards the corresponding firewall or proxy
@@ -1644,18 +1598,6 @@ The port can be any @value{tramp} method (@pxref{Inline methods},
@pxref{External methods}), to match only this method. When you omit
the port, you match all @value{tramp} methods.
-@ifset emacsimap
-A special case are @option{imap}-like methods. Authentication with
-the IMAP server is performed via @file{imap.el}, there is no special
-need from @value{tramp} point of view. An additional passphrase, used
-for symmetric encryption and decryption of the stored messages, should
-be given with the special port indication @option{tramp-imap}:
-
-@example
-machine melancholia port tramp-imap login daniel password ultrageheim
-@end example
-@end ifset
-
@anchor{Caching passwords}
@subsection Caching passwords
@@ -1730,7 +1672,7 @@ multiple hops (@pxref{Multi-hops}).
When @value{tramp} detects a changed operating system version on a
remote host (via the command @command{uname -sr}), it flushes all
connection related information for this host, and opens the
-connection, again.
+connection again.
@node Remote Programs
@@ -1786,7 +1728,7 @@ as:
@end lisp
Another possibility is to reuse the path settings of your remote
-account, when you log in. Usually, these settings are overwritten,
+account when you log in. Usually, these settings are overwritten,
because they might not be useful for @value{tramp}. The place holder
@code{tramp-own-remote-path} preserves these settings. You can
activate it via
@@ -1969,7 +1911,7 @@ understand this syntax and will emit a syntax error when it reaches
this line.
Another example is the tilde (@code{~}) character, say when adding
-@file{~/bin} to @code{$PATH}. Many Bourne shells will not expand this
+@file{~/bin} to @code{PATH}. Many Bourne shells will not expand this
character, and since there is usually no directory whose name consists
of the single character tilde, strange things will happen.
@@ -1996,6 +1938,38 @@ shell is Bourne-ish already, then it might be prudent to omit the
@command{exec /bin/sh} step. But how to find out if the shell is
Bourne-ish?
+
+@item Interactive shell prompt
+
+@value{tramp} redefines the shell prompt in order to parse the shell's
+output robustly. When calling an interactive shell by @kbd{M-x
+shell}, this doesn't look nice.
+
+You can redefine the shell prompt by checking the environment variable
+@code{INSIDE_EMACS}, which is set by @value{tramp}, in your startup
+script @file{~/.emacs_SHELLNAME}. @code{SHELLNAME} might be the string
+@code{bash} or similar, in case of doubt you could set it the
+environment variable @code{ESHELL} in your @file{.emacs}:
+
+@lisp
+(setenv "ESHELL" "bash")
+@end lisp
+
+Your file @file{~/.emacs_SHELLNAME} could contain code like
+
+@example
+# Reset the prompt for remote Tramp shells.
+if [ "$@{INSIDE_EMACS/*tramp*/tramp@}" == "tramp" ] ; then
+ PS1="[\u@@\h \w]$ "
+fi
+@end example
+
+@ifinfo
+@ifset emacs
+@xref{Interactive Shell, , , @value{emacsdir}}.
+@end ifset
+@end ifinfo
+
@end table
@@ -2414,8 +2388,8 @@ If the configuration files (@pxref{Customizing Completion}), which
@value{tramp} uses for analysis of completion, offer user names, those user
names will be taken into account as well.
-Remote machines, which have been visited in the past and kept
-persistently (@pxref{Connection caching}), will be offered too.
+Remote machines which have been visited in the past and kept
+persistently (@pxref{Connection caching}) will be offered too.
Once the remote machine identification is completed, it comes to
filename completion on the remote host. This works pretty much like
@@ -2455,8 +2429,8 @@ Example:
A remote directory might have changed its contents out of
@value{emacsname} control, for example by creation or deletion of
-files by other processes. Therefore, during filename completion the
-remote directory contents is reread regularly in order to detect such
+files by other processes. Therefore, during filename completion, the
+remote directory contents are reread regularly in order to detect such
changes, which would be invisible otherwise (@pxref{Connection caching}).
@defopt tramp-completion-reread-directory-timeout
@@ -2478,6 +2452,15 @@ remote file names. It does not work for the @option{ftp} and
@option{smb} methods. Association of a pty, as specified in
@code{start-file-process}, is not supported.
+@code{process-file} and @code{start-file-process} work on the remote
+host when the variable @code{default-directory} is remote:
+
+@lisp
+(let ((default-directory "/ssh:remote.host:"))
+ (start-file-process "grep" (get-buffer-create "*grep*")
+ "/bin/sh" "-c" "grep -e tramp *"))
+@end lisp
+
@ifset emacsgvfs
If the remote host is mounted via GVFS (see @ref{GVFS based methods}),
the remote filesystem is mounted locally. Therefore, there are no
@@ -2520,7 +2503,7 @@ Adding an entry can be performed via @code{add-to-list}:
Changing or removing an existing entry is not encouraged. The default
values are chosen for proper @value{tramp} work. Nevertheless, if for
example a paranoid system administrator disallows changing the
-@var{$HISTORY} environment variable, you can customize
+@code{HISTORY} environment variable, you can customize
@code{tramp-remote-process-environment}, or you can apply the
following code in your @file{.emacs}:
@@ -2539,7 +2522,7 @@ integrate them as well. @xref{Bug Reports}.
If you want to run a remote program, which shall connect the X11
server you are using with your local host, you can set the
-@var{$DISPLAY} environment variable on the remote host:
+@code{DISPLAY} environment variable on the remote host:
@lisp
(add-to-list 'tramp-remote-process-environment
@@ -2557,7 +2540,28 @@ Another trick might be that you put @code{ForwardX11 yes} or
that host.
-@subsection Running shell-command on a remote host
+@subsection Running @code{shell} on a remote host
+@cindex shell
+
+Calling @code{M-x shell} in a buffer related to a remote host runs the
+local shell as defined in @option{shell-file-name}. This might be
+also a valid path name for a shell to be applied on the remote host,
+but it will fail at least when your local and remote hosts belong to
+different system types, like @samp{windows-nt} and @samp{gnu/linux}.
+
+You must set the variable @option{explicit-shell-file-name} to the
+shell path name on the remote host, in order to start that shell on
+the remote host.
+
+@ifset emacs
+Starting with Emacs 24 this won't be necessary, if you call
+@code{shell} interactively. You will be asked for the remote shell
+path, if you are on a remote buffer, and if
+@option{explicit-shell-file-name} is equal to @code{nil}.
+@end ifset
+
+
+@subsection Running @code{shell-command} on a remote host
@cindex shell-command
@code{shell-command} allows to execute commands in a shell, either
@@ -2573,13 +2577,13 @@ You will see the buffer @file{*Async Shell Command*}, containing the
continuous output of the @command{tail} command.
-@subsection Running eshell on a remote host
+@subsection Running @code{eshell} on a remote host
@cindex eshell
@value{tramp} is integrated into @file{eshell.el}. That is, you can
open an interactive shell on your remote host, and run commands there.
-After you have started @code{eshell}, you could perform commands like
-this:
+After you have started @code{M-x eshell}, you could perform commands
+like this:
@example
@b{~ $} cd @trampfn{sudo, , , /etc} @key{RET}
@@ -2757,13 +2761,13 @@ There is also a Savannah project page.
@item
Which systems does it work on?
-The package has been used successfully on Emacs 22, Emacs 23, XEmacs
-21 (starting with 21.4), and SXEmacs 22.
+The package has been used successfully on Emacs 22, Emacs 23, Emacs
+24, XEmacs 21 (starting with 21.4), and SXEmacs 22.
The package was intended to work on Unix, and it really expects a
-Unix-like system on the remote end (except the @option{smb} and
-@option{imap} methods), but some people seemed to have some success
-getting it to work on MS Windows XP/Vista/7 @value{emacsname}.
+Unix-like system on the remote end (except the @option{smb} method),
+but some people seemed to have some success getting it to work on MS
+Windows XP/Vista/7 @value{emacsname}.
@item
@@ -2780,7 +2784,10 @@ Use an external method, like @option{scpc}.
Use caching. This is already enabled by default. Information about
the remote host as well as the remote files are cached for reuse. The
information about remote hosts is kept in the file specified in
-@code{tramp-persistency-file-name}. Keep this file.
+@code{tramp-persistency-file-name}. Keep this file. If you are
+confident that files on remote hosts are not changed out of
+@value{emacsname}' control, set @code{remote-file-name-inhibit-cache}
+to @code{nil}.
Disable version control. If you access remote files which are not
under version control, a lot of check operations can be avoided by
@@ -2805,12 +2812,11 @@ When @value{tramp} does not connect to the remote host, there are three
reasons heading the bug mailing list:
@itemize @minus
-
@item
Unknown characters in the prompt
@value{tramp} needs to recognize the prompt on the remote machine
-after execution any command. This is not possible, when the prompt
+after execution any command. This is not possible when the prompt
contains unknown characters like escape sequences for coloring. This
should be avoided on the remote side. @xref{Remote shell setup}. for
setting the regular expression detecting the prompt.
@@ -2875,7 +2881,6 @@ checksum.
(when (file-remote-p default-directory)
(set (make-local-variable 'file-precious-flag) t))))
@end lisp
-
@end itemize
@@ -2885,7 +2890,7 @@ checksum.
When your network connection is down, @command{ssh} sessions might
hang. @value{tramp} cannot detect it safely, because it still sees a
running @command{ssh} process. Timeouts cannot be used as well,
-because it cannot be predicted, how long a remote command will last,
+because it cannot be predicted how long a remote command will last,
for example when copying very large files.
Therefore, you must configure the @command{ssh} process to die
@@ -3095,7 +3100,7 @@ You can define default methods and user names for hosts,
The file name left to type would be
@kbd{C-x C-f @trampfn{, , news.my.domain, /opt/news/etc}}.
-Note, that there are some useful settings already. Accessing your
+Note that there are some useful settings already. Accessing your
local host as @samp{root} user, is possible just by @kbd{C-x C-f
@trampfn{su, , ,}}.
@@ -3127,7 +3132,7 @@ Lisp:
@end lisp
Then you need simply to type @kbd{C-x C-f $xy @key{RET}}, and here you
-are. The disadvantage is, that you cannot edit the file name, because
+are. The disadvantage is that you cannot edit the file name, because
environment variables are not expanded during editing in the
minibuffer.
@@ -3299,7 +3304,7 @@ You need to load @file{bbdb}:
Then you can create a BBDB entry via @kbd{M-x bbdb-create-ftp-site}.
Because BBDB is not prepared for @value{tramp} syntax, you must
-specify a method together with the user name, when needed. Example:
+specify a method together with the user name when needed. Example:
@example
@kbd{M-x bbdb-create-ftp-site @key{RET}}
@@ -3316,7 +3321,7 @@ pressing the key @key{F}.
@end enumerate
-I would like to thank all @value{tramp} users, who have contributed to
+I would like to thank all @value{tramp} users who have contributed to
the different recipes!
@@ -3339,7 +3344,7 @@ On the remote host, you start the Emacs Server:
(server-start)
@end lisp
-Make sure, that the result of @code{(system-name)} can be resolved on
+Make sure that the result of @code{(system-name)} can be resolved on
your local host; otherwise you might use a hard coded IP address.
The resulting file @file{~/.emacs.d/server/server} must be copied to
@@ -3370,14 +3375,43 @@ export EDITOR=/path/to/emacsclient.sh
@item
-How can I disable @value{tramp}?
+There are packages which call @value{tramp} although I haven't entered
+a remote file name ever. I dislike it, how could I disable it?
-Shame on you, why did you read until now?
+In general, @value{tramp} functions are used only when
+you apply remote file name syntax. However, some packages enable
+@value{tramp} on their own.
@itemize @minus
+@item
+@file{ido.el}
+
+You could disable @value{tramp} file name completion:
+
+@lisp
+(custom-set-variables
+ '(ido-enable-tramp-completion nil))
+@end lisp
+
+@item
+@file{rlogin.el}
+
+You could disable remote directory tracking mode:
+
+@lisp
+(rlogin-directory-tracking-mode -1)
+@end lisp
+@end itemize
+
@item
+How can I disable @value{tramp} at all?
+
+Shame on you, why did you read until now?
+
+@itemize @minus
@ifset emacs
+@item
If you just want to have @value{ftppackagename} as default remote
files access package, you should apply the following code:
@@ -3473,7 +3507,7 @@ its complete cache keeping attributes for all files of the remote host
it has seen so far.
This is a performance degradation, because the lost file attributes
-must be recomputed, when needed again. In cases the caller of
+must be recomputed when needed again. In cases the caller of
@code{process-file} knows that there are no file attribute changes, it
shall let-bind the variable @code{process-file-side-effects} to
@code{nil}. @value{tramp} wouldn't flush the file attributes cache then.
diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi
index 6e0674c4cb..6a245f9c28 100644
--- a/doc/misc/trampver.texi
+++ b/doc/misc/trampver.texi
@@ -2,14 +2,13 @@
@c texi/trampver.texi. Generated from trampver.texi.in by configure.
@c This is part of the Emacs manual.
-@c Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-@c 2011 Free Software Foundation, Inc.
+@c Copyright (C) 2003-2011 Free Software Foundation, Inc.
@c See file doclicense.texi for copying conditions.
@c In the Tramp CVS, the version number is auto-frobbed from
@c configure.ac, so you should edit that file and run
@c "autoconf && ./configure" to change the version number.
-@set trampver 2.1.21-pre
+@set trampver 2.2.2-pre
@c Other flags from configuration
@set instprefix /usr/local
@@ -29,11 +28,6 @@
@set emacsgw
@end ifclear
-@c Whether or not describe IMAP support.
-@ifclear noemacsimap
-@set emacsimap
-@end ifclear
-
@c Some flags which make the text independent on the (X)Emacs flavor.
@c "emacs" resp "xemacs" are set in the Makefile. Default is "emacs".
@ifclear emacs
@@ -56,7 +50,6 @@
@set emacsothername XEmacs
@set emacsotherdir xemacs
@set emacsotherfilename tramp-xemacs.html
-@set japanesemanual tramp_ja-emacs.html
@end ifset
@c XEmacs counterparts.
@@ -73,5 +66,4 @@
@set emacsothername Emacs
@set emacsotherdir emacs
@set emacsotherfilename tramp-emacs.html
-@set japanesemanual tramp_ja-xemacs.html
@end ifset
diff --git a/doc/misc/url.texi b/doc/misc/url.texi
index 7e65e5c867..42594457ab 100644
--- a/doc/misc/url.texi
+++ b/doc/misc/url.texi
@@ -20,8 +20,7 @@
@copying
This file documents the Emacs Lisp URL loading package.
-Copyright @copyright{} 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2002,
-2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1993-1999, 2002, 2004-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -117,7 +116,10 @@ The meaning of the @var{path} component depends on the service.
@cindex @file{~/.url}
@cindex configuration files
The directory in which URL configuration files, the cache etc.,
-reside. Default @file{~/.url}.
+reside. The old default was @file{~/.url}, and this directory
+is still used if it exists. The new default is a @file{url/}
+directory in @code{user-emacs-directory}, which is normally
+@file{~/.emacs.d}.
@end defvar
@node Parsed URLs
@@ -384,20 +386,7 @@ Currently this is just the raw header contents.
HTTP URLs are retrieved into a buffer containing the HTTP headers
followed by the body. Since the headers are quasi-MIME, they may be
processed using the MIME library. @xref{Top,, Emacs MIME,
-emacs-mime, The Emacs MIME Manual}. The URL package provides a
-function to do this in general:
-
-@defun url-decode-text-part handle &optional coding
-This function decodes charset-encoded text in the current buffer. In
-Emacs, the buffer is expected to be unibyte initially and is set to
-multibyte after decoding.
-HANDLE is the MIME handle of the original part. CODING is an explicit
-coding to use, overriding what the MIME headers specify.
-The coding system used for the decoding is returned.
-
-Note that this function doesn't deal with @samp{http-equiv} charset
-specifications in HTML @samp{<meta>} elements.
-@end defun
+emacs-mime, The Emacs MIME Manual}.
@node file/ftp
@section file and ftp
@@ -730,14 +719,6 @@ directory to store the cache files. It defaults to sub-directory
@file{cache} of @code{url-configuration-directory}.
@end defopt
-@c Fixme: function v. option, but neither used.
-@c @findex url-cache-expired
-@c @defopt url-cache-expired
-@c This is a function to decide whether or not a cache entry has expired.
-@c It takes two times as it parameters and returns non-@code{nil} if the
-@c second time is ``too old'' when compared with the first time.
-@c @end defopt
-
@defopt url-cache-creation-function
The cache relies on a scheme for mapping URLs to files in the cache.
This variable names a function which sets the type of cache to use.
@@ -767,6 +748,22 @@ more likely to conflict with other files.
@end smallexample
@end defun
+@defun url-cache-expired
+This function returns non-nil if a cache entry has expired (or is absent).
+The arguments are a URL and optional expiration delay in seconds
+(default @var{url-cache-expire-time}).
+@end defun
+
+@defopt url-cache-expire-time
+This variable is the default number of seconds to use for the
+expire-time argument of the function @code{url-cache-expired}.
+@end defopt
+
+@defun url-fetch-from-cache
+This function takes a URL as its argument and returns a buffer
+containing the data cached for that URL.
+@end defun
+
@c Fixme: never actually used currently?
@c @defopt url-standalone-mode
@c @cindex Relying on cache
@@ -1185,7 +1182,3 @@ Connect directly.
@printindex cp
@bye
-
-@ignore
- arch-tag: c96be356-7e2d-4196-bcda-b13246c5c3f0
-@end ignore
diff --git a/doc/misc/vip.texi b/doc/misc/vip.texi
index 539f6fe2c3..03ca65882e 100644
--- a/doc/misc/vip.texi
+++ b/doc/misc/vip.texi
@@ -3,8 +3,7 @@
@settitle VIP
@copying
-Copyright @copyright{} 1987, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1987, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1946,7 +1945,3 @@ file.
@printindex cp
@bye
-
-@ignore
- arch-tag: 7c5d17b9-1d21-4261-a88a-b9fdbbf1020b
-@end ignore
diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi
index 0482f78ba1..1f0dffee5b 100644
--- a/doc/misc/viper.texi
+++ b/doc/misc/viper.texi
@@ -7,8 +7,7 @@
@setfilename ../../info/viper
@copying
-Copyright @copyright{} 1995, 1996, 1997, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 1995-1997, 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -4558,7 +4557,3 @@ zapman@@cc.gatech.edu (Jason Zapman II),
@printindex cp
@bye
-
-@ignore
- arch-tag: f53e866a-15cf-4b1e-aead-77da9da1e864
-@end ignore
diff --git a/doc/misc/widget.texi b/doc/misc/widget.texi
index ac111870f3..c4f5317e5a 100644
--- a/doc/misc/widget.texi
+++ b/doc/misc/widget.texi
@@ -8,8 +8,7 @@
@c %**end of header
@copying
-Copyright @copyright{} 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 2000-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1829,7 +1828,3 @@ variables, and widgets described in this manual.
@printindex cp
@bye
-
-@ignore
- arch-tag: 2b427731-4c61-4e72-85de-5ccec9c623f0
-@end ignore
diff --git a/doc/misc/woman.texi b/doc/misc/woman.texi
index 975a9c408f..c869d1a46c 100644
--- a/doc/misc/woman.texi
+++ b/doc/misc/woman.texi
@@ -18,8 +18,7 @@
This file documents WoMan: A program to browse Unix manual pages `W.O.
(without) man'.
-Copyright @copyright{} 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-2009, 2010, 2011 Free Software Foundation, Inc.
+Copyright @copyright{} 2001-2011 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -1121,8 +1120,8 @@ A regular match expression used to match compressed man file extensions
for which decompressors are available and handled by auto-compression
mode. It should begin with @code{\\.} and end with @code{\\'} and
@emph{must not} be optional. The default value is
-@code{"\\.\\(g?z\\|bz2\\)\\'"}, which matches the @code{gzip} and
-@code{bzip2} compression extensions.
+@code{"\\.\\(g?z\\|bz2\\|xz\\)\\'"}, which matches the @code{gzip},
+@code{bzip2}, and @code{xz} compression extensions.
@emph{Do not change this unless you are sure you know what you are doing!}
@@ -1430,7 +1429,3 @@ Eli Zaretskii, @email{eliz@@is.elta.co.il}
@printindex cp
@bye
-
-@ignore
- arch-tag: a1a6b715-396f-4378-9b94-0b2ca0aa5028
-@end ignore