aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorTom Tromey2013-06-03 12:25:05 -0600
committerTom Tromey2013-06-03 12:25:05 -0600
commit68359abba96d7ec4db8aab3d3dd9cf1105c3bab5 (patch)
tree862703e7e1a1888170136a8296a5750d6b2ae2eb /doc
parentcbcba8ce7f980b01c18c0fd561ef6687b1361507 (diff)
parente2d8a6f0a229b4ebe26484b892ec4f14888f58b6 (diff)
downloademacs-68359abba96d7ec4db8aab3d3dd9cf1105c3bab5.tar.gz
emacs-68359abba96d7ec4db8aab3d3dd9cf1105c3bab5.zip
merge from trunk; clean up some issues
Diffstat (limited to 'doc')
-rw-r--r--doc/emacs/ChangeLog63
-rw-r--r--doc/emacs/ack.texi13
-rw-r--r--doc/emacs/calendar.texi3
-rw-r--r--doc/emacs/cmdargs.texi7
-rw-r--r--doc/emacs/custom.texi2
-rw-r--r--doc/emacs/display.texi48
-rw-r--r--doc/emacs/emacs.texi12
-rw-r--r--doc/emacs/files.texi28
-rw-r--r--doc/emacs/maintaining.texi4
-rw-r--r--doc/emacs/programs.texi2
-rw-r--r--doc/emacs/search.texi2
-rw-r--r--doc/emacs/sending.texi2
-rw-r--r--doc/emacs/trouble.texi9
-rw-r--r--doc/emacs/windows.texi2
-rw-r--r--doc/lispintro/ChangeLog34
-rw-r--r--doc/lispintro/Makefile.in12
-rw-r--r--doc/lispintro/emacs-lisp-intro.texi218
-rw-r--r--doc/lispintro/makefile.w32-in12
-rw-r--r--doc/lispref/ChangeLog68
-rw-r--r--doc/lispref/compile.texi6
-rw-r--r--doc/lispref/display.texi297
-rw-r--r--doc/lispref/frames.texi5
-rw-r--r--doc/lispref/functions.texi5
-rw-r--r--doc/lispref/help.texi11
-rw-r--r--doc/lispref/internals.texi26
-rw-r--r--doc/lispref/loading.texi2
-rw-r--r--doc/lispref/searching.texi6
-rw-r--r--doc/lispref/symbols.texi5
-rw-r--r--doc/lispref/text.texi28
-rw-r--r--doc/lispref/tips.texi16
-rw-r--r--doc/lispref/windows.texi4
-rw-r--r--doc/man/ChangeLog4
-rw-r--r--doc/man/emacs.113
-rw-r--r--doc/misc/ChangeLog51
-rw-r--r--doc/misc/calc.texi20
-rw-r--r--doc/misc/cl.texi23
-rw-r--r--doc/misc/emacs-mime.texi6
-rw-r--r--doc/misc/erc.texi6
-rw-r--r--doc/misc/eshell.texi5
-rw-r--r--doc/misc/flymake.texi163
-rw-r--r--doc/misc/gnus.texi2
-rw-r--r--doc/misc/tramp.texi48
-rw-r--r--doc/misc/trampver.texi2
43 files changed, 778 insertions, 517 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index d2554349d01..be906fd96fb 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,10 +1,67 @@
12013-03-16 Glenn Morris <rgm@gnu.org> 12013-06-02 Michael Albinus <michael.albinus@gmx.de>
2 2
3 * emacs.texi (Top): Add some stuff specific to www.gnu.org. 3 * cmdargs.texi (General Variables): Use "unix:path=/dev/null" as
4 dummy value for $DBUS_SESSION_BUS_ADDRESS. It also suppresses
5 autolaunching of the D-Bus session bus.
6
72013-06-03 Juri Linkov <juri@jurta.org>
8
9 * display.texi (Highlight Interactively): Add global keybindings
10 with the key prefix `M-s h'. Document old command `highlight-phrase'.
11 Document new command `highlight-symbol-at-point'.
12
132013-06-01 Glenn Morris <rgm@gnu.org>
14
15 * programs.texi (Semantic): Fix typo.
16
172013-05-30 Xue Fuqiao <xfq.free@gmail.com>
18
19 * maintaining.texi (Types of Log File): Supplement some
20 information of change log files.
21
222013-05-15 Juri Linkov <juri@jurta.org>
23
24 * search.texi (Repeat Isearch): Mention key `RET' to finish
25 editing the string. (Bug#13348)
26
272013-05-14 Glenn Morris <rgm@gnu.org>
28
29 * ack.texi (Acknowledgments): Don't mention obsolete sup-mouse.el.
30
312013-05-09 Glenn Morris <rgm@gnu.org>
32
33 * sending.texi (Mail Sending): Fix typo.
34
35 * windows.texi (Change Window): Fix typo.
36
37 * custom.texi (Changing a Variable): Fix typo.
38
39 * trouble.texi (Contributing): Remove obsolete info re pretesters.
40
412013-05-05 Paul Eggert <eggert@cs.ucla.edu>
42
43 `write-region-inhibit-fsync' defaults to noninteractive (Bug#14273).
44 * cmdargs.texi (Initial Options):
45 * files.texi (Customize Save): Document this.
46
472013-05-04 Glenn Morris <rgm@gnu.org>
48
49 * calendar.texi (Importing Diary): Mention diary-from-outlook-function.
50
512013-03-17 Paul Eggert <eggert@cs.ucla.edu>
52
53 doc: convert some TeX accents to UTF-8
54 * ack.texi (Acknowledgments):
55 * emacs.texi (Acknowledgments):
56 Convert some TeX accents (e.g., '@l{}') to UTF-8 (e.g., 'ł').
57 Apparently the TeX accents cause problems when generating gnu.org
58 web pages, e.g., @l{} is rendered as '/l' on
59 <http://www.gnu.org/software/emacs/manual/html_node/
60 emacs/Acknowledgments.html>.
4 61
52013-03-16 Glenn Morris <rgm@gnu.org> 622013-03-16 Glenn Morris <rgm@gnu.org>
6 63
7 * Version 24.3 released. 64 * emacs.texi (Top): Add some stuff specific to www.gnu.org.
8 65
92013-03-04 Paul Eggert <eggert@cs.ucla.edu> 662013-03-04 Paul Eggert <eggert@cs.ucla.edu>
10 67
diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi
index 439e2a09cae..92874ad6276 100644
--- a/doc/emacs/ack.texi
+++ b/doc/emacs/ack.texi
@@ -166,7 +166,7 @@ David M. Brown wrote @file{array.el}, for editing arrays and other
166tabular data. 166tabular data.
167 167
168@item 168@item
169W@l{}odek Bzyl and Ryszard Kubiak wrote @file{ogonek.el}, a package for 169Włodek Bzyl and Ryszard Kubiak wrote @file{ogonek.el}, a package for
170changing the encoding of Polish characters. 170changing the encoding of Polish characters.
171 171
172@item 172@item
@@ -605,7 +605,7 @@ files and running a PostScript interpreter interactively from within
605Emacs. 605Emacs.
606 606
607@item 607@item
608Karel Klí@v{c} contributed SELinux support, for preserving the 608Karel Klíč contributed SELinux support, for preserving the
609Security-Enhanced Linux context of files on backup and copy. 609Security-Enhanced Linux context of files on backup and copy.
610 610
611@item 611@item
@@ -635,7 +635,7 @@ R. Dodd. He also wrote @file{ls-lisp.el}, a Lisp emulation of the
635program. 635program.
636 636
637@item 637@item
638David K@ringaccent{a}gedal wrote @file{tempo.el}, providing support for 638David Kågedal wrote @file{tempo.el}, providing support for
639easy insertion of boilerplate text and other common constructions. 639easy insertion of boilerplate text and other common constructions.
640 640
641@item 641@item
@@ -694,7 +694,7 @@ directory-local variables; and the @code{info-finder} feature that
694creates a virtual Info manual of package keywords. 694creates a virtual Info manual of package keywords.
695 695
696@item 696@item
697Károly L@H{o}rentey wrote the ``multi-terminal'' code, which allows 697Károly Lőrentey wrote the ``multi-terminal'' code, which allows
698Emacs to run on graphical and text terminals simultaneously. 698Emacs to run on graphical and text terminals simultaneously.
699 699
700@item 700@item
@@ -1058,8 +1058,7 @@ contributed extensively to the MS-Windows port of Emacs.
1058 1058
1059@item 1059@item
1060Wolfgang Rupprecht wrote Emacs 19's floating-point support (including 1060Wolfgang Rupprecht wrote Emacs 19's floating-point support (including
1061@file{float-sup.el} and @file{floatfns.c}), and @file{sup-mouse.el}, 1061@file{float-sup.el} and @file{floatfns.c}).
1062support for the Supdup mouse on lisp machines.
1063 1062
1064@item 1063@item
1065Kevin Ryde wrote @file{info-xref.el}, a library for checking 1064Kevin Ryde wrote @file{info-xref.el}, a library for checking
@@ -1224,7 +1223,7 @@ Olaf Sylvester wrote @file{bs.el}, a package for manipulating Emacs
1224buffers. 1223buffers.
1225 1224
1226@item 1225@item
1227Tibor @v{S}imko and Milan Zamazal wrote @file{slovak.el}, support for 1226Tibor Šimko and Milan Zamazal wrote @file{slovak.el}, support for
1228editing text in Slovak language. 1227editing text in Slovak language.
1229 1228
1230@item 1229@item
diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi
index 52b966b76e1..075d753ae7a 100644
--- a/doc/emacs/calendar.texi
+++ b/doc/emacs/calendar.texi
@@ -1542,7 +1542,8 @@ variety of other formats.
1542messages. While viewing such a message in Rmail or Gnus, do @kbd{M-x 1542messages. While viewing such a message in Rmail or Gnus, do @kbd{M-x
1543diary-from-outlook} to import the entry. You can make this command 1543diary-from-outlook} to import the entry. You can make this command
1544recognize additional appointment message formats by customizing the 1544recognize additional appointment message formats by customizing the
1545variable @code{diary-outlook-formats}. 1545variable @code{diary-outlook-formats}. Other mail clients can set
1546@code{diary-from-outlook-function} to an appropriate value.
1546 1547
1547@c FIXME the name of the RFC is hardly very relevant. 1548@c FIXME the name of the RFC is hardly very relevant.
1548@cindex iCalendar support 1549@cindex iCalendar support
diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi
index 19b439afc7f..3dc64fdd127 100644
--- a/doc/emacs/cmdargs.texi
+++ b/doc/emacs/cmdargs.texi
@@ -251,7 +251,8 @@ terminal's standard input stream (@code{stdin}) instead.
251but @file{site-start.el} is loaded nonetheless. It also causes Emacs 251but @file{site-start.el} is loaded nonetheless. It also causes Emacs
252to exit after processing all the command options. In addition, it 252to exit after processing all the command options. In addition, it
253disables auto-saving except in buffers for which auto-saving is 253disables auto-saving except in buffers for which auto-saving is
254explicitly requested. 254explicitly requested, and when saving files it omits the @code{fsync}
255system call unless otherwise requested.
255 256
256@item --script @var{file} 257@item --script @var{file}
257@opindex --script 258@opindex --script
@@ -437,8 +438,8 @@ when you specify a relative directory name.
437@item DBUS_SESSION_BUS_ADDRESS 438@item DBUS_SESSION_BUS_ADDRESS
438Used by D-Bus when Emacs is compiled with it. Usually, there is no 439Used by D-Bus when Emacs is compiled with it. Usually, there is no
439need to change it. Setting it to a dummy address, like 440need to change it. Setting it to a dummy address, like
440@samp{unix:path=/tmp/foo}, suppresses connections to the D-Bus session 441@samp{unix:path=/dev/null}, suppresses connections to the D-Bus session
441bus. 442bus as well as autolaunching the D-Bus session bus if not running yet.
442@item EMACSDATA 443@item EMACSDATA
443Directory for the architecture-independent files that come with Emacs. 444Directory for the architecture-independent files that come with Emacs.
444This is used to initialize the variable @code{data-directory}. 445This is used to initialize the variable @code{data-directory}.
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index fae61252724..45fa45191f3 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -345,7 +345,7 @@ hidden, nor on subgroups that are hidden or not visible in the buffer.
345@kindex C-x C-c @r{(customization buffer)} 345@kindex C-x C-c @r{(customization buffer)}
346@findex Custom-set 346@findex Custom-set
347@findex Custom-save 347@findex Custom-save
348 The command @kbd{C-c C-c} (@code{Custom-set}) is equivalent using to 348 The command @kbd{C-c C-c} (@code{Custom-set}) is equivalent to using
349the @samp{[Set for Current Session]} button. The command @kbd{C-x 349the @samp{[Set for Current Session]} button. The command @kbd{C-x
350C-s} (@code{Custom-save}) is like using the @samp{[Save for Future 350C-s} (@code{Custom-save}) is like using the @samp{[Save for Future
351Sessions]} button. 351Sessions]} button.
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index f5ec8946e1b..482d7e7741a 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -903,14 +903,16 @@ that you specify explicitly the regular expressions to highlight. You
903control them with these commands: 903control them with these commands:
904 904
905@table @kbd 905@table @kbd
906@item C-x w h @var{regexp} @key{RET} @var{face} @key{RET} 906@item M-s h r @var{regexp} @key{RET} @var{face} @key{RET}
907@itemx C-x w h @var{regexp} @key{RET} @var{face} @key{RET}
908@kindex M-s h r
907@kindex C-x w h 909@kindex C-x w h
908@findex highlight-regexp 910@findex highlight-regexp
909Highlight text that matches @var{regexp} using face @var{face} 911Highlight text that matches @var{regexp} using face @var{face}
910(@code{highlight-regexp}). The highlighting will remain as long as 912(@code{highlight-regexp}). The highlighting will remain as long as
911the buffer is loaded. For example, to highlight all occurrences of 913the buffer is loaded. For example, to highlight all occurrences of
912the word ``whim'' using the default face (a yellow background) 914the word ``whim'' using the default face (a yellow background)
913@kbd{C-x w h whim @key{RET} @key{RET}}. Any face can be used for 915@kbd{M-s h r whim @key{RET} @key{RET}}. Any face can be used for
914highlighting, Hi Lock provides several of its own and these are 916highlighting, Hi Lock provides several of its own and these are
915pre-loaded into a list of default values. While being prompted 917pre-loaded into a list of default values. While being prompted
916for a face use @kbd{M-n} and @kbd{M-p} to cycle through them. 918for a face use @kbd{M-n} and @kbd{M-p} to cycle through them.
@@ -918,7 +920,9 @@ for a face use @kbd{M-n} and @kbd{M-p} to cycle through them.
918You can use this command multiple times, specifying various regular 920You can use this command multiple times, specifying various regular
919expressions to highlight in different ways. 921expressions to highlight in different ways.
920 922
921@item C-x w r @var{regexp} @key{RET} 923@item M-s h u @var{regexp} @key{RET}
924@itemx C-x w r @var{regexp} @key{RET}
925@kindex M-s h u
922@kindex C-x w r 926@kindex C-x w r
923@findex unhighlight-regexp 927@findex unhighlight-regexp
924Unhighlight @var{regexp} (@code{unhighlight-regexp}). 928Unhighlight @var{regexp} (@code{unhighlight-regexp}).
@@ -926,13 +930,15 @@ Unhighlight @var{regexp} (@code{unhighlight-regexp}).
926If you invoke this from the menu, you select the expression to 930If you invoke this from the menu, you select the expression to
927unhighlight from a list. If you invoke this from the keyboard, you 931unhighlight from a list. If you invoke this from the keyboard, you
928use the minibuffer. It will show the most recently added regular 932use the minibuffer. It will show the most recently added regular
929expression; use @kbd{M-p} to show the next older expression and 933expression; use @kbd{M-n} to show the next older expression and
930@kbd{M-n} to select the next newer expression. (You can also type the 934@kbd{M-p} to select the next newer expression. (You can also type the
931expression by hand, with completion.) When the expression you want to 935expression by hand, with completion.) When the expression you want to
932unhighlight appears in the minibuffer, press @kbd{@key{RET}} to exit 936unhighlight appears in the minibuffer, press @kbd{@key{RET}} to exit
933the minibuffer and unhighlight it. 937the minibuffer and unhighlight it.
934 938
935@item C-x w l @var{regexp} @key{RET} @var{face} @key{RET} 939@item M-s h l @var{regexp} @key{RET} @var{face} @key{RET}
940@itemx C-x w l @var{regexp} @key{RET} @var{face} @key{RET}
941@kindex M-s h l
936@kindex C-x w l 942@kindex C-x w l
937@findex highlight-lines-matching-regexp 943@findex highlight-lines-matching-regexp
938@cindex lines, highlighting 944@cindex lines, highlighting
@@ -940,7 +946,31 @@ the minibuffer and unhighlight it.
940Highlight entire lines containing a match for @var{regexp}, using face 946Highlight entire lines containing a match for @var{regexp}, using face
941@var{face} (@code{highlight-lines-matching-regexp}). 947@var{face} (@code{highlight-lines-matching-regexp}).
942 948
943@item C-x w b 949@item M-s h p @var{phrase} @key{RET} @var{face} @key{RET}
950@itemx C-x w p @var{phrase} @key{RET} @var{face} @key{RET}
951@kindex M-s h p
952@kindex C-x w p
953@findex highlight-phrase
954@cindex phrase, highlighting
955@cindex highlighting phrase
956Highlight matches of @var{phrase}, using face @var{face}
957(@code{highlight-phrase}). @var{phrase} can be any regexp,
958but spaces will be replaced by matches to whitespace and
959initial lower-case letters will become case insensitive.
960
961@item M-s h .
962@itemx C-x w .
963@kindex M-s h .
964@kindex C-x w .
965@findex highlight-symbol-at-point
966@cindex symbol, highlighting
967@cindex highlighting symbol at point
968Highlight the symbol found near point without prompting, using the next
969available face automatically (@code{highlight-symbol-at-point}).
970
971@item M-s h w
972@itemx C-x w b
973@kindex M-s h w
944@kindex C-x w b 974@kindex C-x w b
945@findex hi-lock-write-interactive-patterns 975@findex hi-lock-write-interactive-patterns
946Insert all the current highlighting regexp/face pairs into the buffer 976Insert all the current highlighting regexp/face pairs into the buffer
@@ -952,7 +982,9 @@ These patterns are extracted from the comments, if appropriate, if you
952invoke @kbd{M-x hi-lock-find-patterns}, or if you visit the file while 982invoke @kbd{M-x hi-lock-find-patterns}, or if you visit the file while
953Hi Lock mode is enabled (since that runs @code{hi-lock-find-patterns}). 983Hi Lock mode is enabled (since that runs @code{hi-lock-find-patterns}).
954 984
955@item C-x w i 985@item M-s h f
986@itemx C-x w i
987@kindex M-s h f
956@kindex C-x w i 988@kindex C-x w i
957@findex hi-lock-find-patterns 989@findex hi-lock-find-patterns
958Extract regexp/face pairs from comments in the current buffer 990Extract regexp/face pairs from comments in the current buffer
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index e78eb7845f3..d2ec2154024 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -1370,11 +1370,11 @@ Berry, Anna M. Bigatti, Ray Blaak, Martin Blais, Jim Blandy, Johan
1370Bockgård, Jan Böcker, Joel Boehland, Lennart Borgman, Per Bothner, 1370Bockgård, Jan Böcker, Joel Boehland, Lennart Borgman, Per Bothner,
1371Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel Briot, Kevin 1371Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel Briot, Kevin
1372Broadey, Vincent Broman, Michael Brouwer, David M. Brown, Stefan Bruda, 1372Broadey, Vincent Broman, Michael Brouwer, David M. Brown, Stefan Bruda,
1373Georges Brun-Cottan, Joe Buehler, Scott Byer, W@l{}odek Bzyl, 1373Georges Brun-Cottan, Joe Buehler, Scott Byer, Włodek Bzyl,
1374Bill Carpenter, Per Cederqvist, Hans Chalupsky, Chris Chase, Bob 1374Bill Carpenter, Per Cederqvist, Hans Chalupsky, Chris Chase, Bob
1375Chassell, Andrew Choi, Chong Yidong, Sacha Chua, Stewart Clamen, James 1375Chassell, Andrew Choi, Chong Yidong, Sacha Chua, Stewart Clamen, James
1376Clark, Mike Clarkson, Glynn Clements, Andrew Cohen, Daniel Colascione, 1376Clark, Mike Clarkson, Glynn Clements, Andrew Cohen, Daniel Colascione,
1377Edward O'Connor, Christoph Conrad, Ludovic Courtès, Andrew Csillag, 1377Christoph Conrad, Ludovic Courtès, Andrew Csillag,
1378Toby Cubitt, Baoqiu Cui, Doug Cutting, Mathias Dahl, Julien Danjou, Satyaki 1378Toby Cubitt, Baoqiu Cui, Doug Cutting, Mathias Dahl, Julien Danjou, Satyaki
1379Das, Vivek Dasmohapatra, Dan Davison, Michael DeCorte, Gary Delp, Nachum 1379Das, Vivek Dasmohapatra, Dan Davison, Michael DeCorte, Gary Delp, Nachum
1380Dershowitz, Dave Detlefs, Matthieu Devin, Christophe de Dinechin, Eri 1380Dershowitz, Dave Detlefs, Matthieu Devin, Christophe de Dinechin, Eri
@@ -1403,14 +1403,14 @@ Josefsson, Alexandre Julliard, Arne Jørgensen, Tomoji Kagatani,
1403Brewster Kahle, Tokuya Kameshima, Lute Kamstra, Ivan Kanis, David 1403Brewster Kahle, Tokuya Kameshima, Lute Kamstra, Ivan Kanis, David
1404Kastrup, David Kaufman, Henry Kautz, Taichi Kawabata, Taro Kawagishi, 1404Kastrup, David Kaufman, Henry Kautz, Taichi Kawabata, Taro Kawagishi,
1405Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg, Karel 1405Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg, Karel
1406Klí@v{c}, Shuhei Kobayashi, Pavel Kobyakov, Larry K. Kolodney, David 1406Klíč, Shuhei Kobayashi, Pavel Kobyakov, Larry K. Kolodney, David
1407M. Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian Kremer, 1407M. Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian Kremer,
1408Ryszard Kubiak, Igor Kuzmin, David Kågedal, Daniel LaLiberte, Karl 1408Ryszard Kubiak, Igor Kuzmin, David Kågedal, Daniel LaLiberte, Karl
1409Landstrom, Mario Lang, Aaron Larson, James R. Larus, Vinicius Jose 1409Landstrom, Mario Lang, Aaron Larson, James R. Larus, Vinicius Jose
1410Latorre, Werner Lemberg, Frederic Lepied, Peter Liljenberg, Christian 1410Latorre, Werner Lemberg, Frederic Lepied, Peter Liljenberg, Christian
1411Limpach, Lars Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link, 1411Limpach, Lars Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link,
1412Juri Linkov, Francis Litterio, Sergey Litvinov, Emilio C. Lopes, 1412Juri Linkov, Francis Litterio, Sergey Litvinov, Emilio C. Lopes,
1413Martin Lorentzon, Dave Love, Eric Ludlam, Károly L@H{o}rentey, Sascha 1413Martin Lorentzon, Dave Love, Eric Ludlam, Károly Lőrentey, Sascha
1414Lüdecke, Greg McGary, Roland McGrath, Michael McNamara, Alan Mackenzie, 1414Lüdecke, Greg McGary, Roland McGrath, Michael McNamara, Alan Mackenzie,
1415Christopher J. Madsen, Neil M. Mager, Ken Manheimer, Bill Mann, 1415Christopher J. Madsen, Neil M. Mager, Ken Manheimer, Bill Mann,
1416Brian Marick, Simon Marshall, Bengt Martensson, Charlie Martin, 1416Brian Marick, Simon Marshall, Bengt Martensson, Charlie Martin,
@@ -1421,7 +1421,7 @@ Monnier, Keith Moore, Jan Moringen, Morioka Tomohiko, Glenn Morris,
1421Don Morrison, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum, 1421Don Morrison, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum,
1422Gergely Nagy, Nobuyoshi Nakada, Thomas Neumann, Mike Newton, Thien-Thi Nguyen, 1422Gergely Nagy, Nobuyoshi Nakada, Thomas Neumann, Mike Newton, Thien-Thi Nguyen,
1423Jurgen Nickelsen, Dan Nicolaescu, Hrvoje Niksic, Jeff Norden, 1423Jurgen Nickelsen, Dan Nicolaescu, Hrvoje Niksic, Jeff Norden,
1424Andrew Norman, Kentaro Ohkouchi, Christian Ohler, 1424Andrew Norman, Edward O'Connor, Kentaro Ohkouchi, Christian Ohler,
1425Kenichi Okada, Alexandre Oliva, Bob Olson, Michael Olson, Takaaki Ota, 1425Kenichi Okada, Alexandre Oliva, Bob Olson, Michael Olson, Takaaki Ota,
1426Pieter E. J. Pareit, Ross Patterson, David Pearson, Juan Pechiar, 1426Pieter E. J. Pareit, Ross Patterson, David Pearson, Juan Pechiar,
1427Jeff Peck, Damon Anton Permezel, Tom Perrine, William M. Perry, Per 1427Jeff Peck, Damon Anton Permezel, Tom Perrine, William M. Perry, Per
@@ -1441,7 +1441,7 @@ Philippe Schnoebelen, Jan Schormann, Alex Schroeder, Stefan Schoef,
1441Rainer Schoepf, Raymond Scholz, Eric Schulte, Andreas Schwab, Randal 1441Rainer Schoepf, Raymond Scholz, Eric Schulte, Andreas Schwab, Randal
1442Schwartz, Oliver Seidel, Manuel Serrano, Paul Sexton, Hovav Shacham, 1442Schwartz, Oliver Seidel, Manuel Serrano, Paul Sexton, Hovav Shacham,
1443Stanislav Shalunov, Marc Shapiro, Richard Sharman, Olin Shivers, Tibor 1443Stanislav Shalunov, Marc Shapiro, Richard Sharman, Olin Shivers, Tibor
1444@v{S}imko, Espen Skoglund, Rick Sladkey, Lynn Slater, Chris Smith, 1444Šimko, Espen Skoglund, Rick Sladkey, Lynn Slater, Chris Smith,
1445David Smith, Paul D. Smith, Wilson Snyder, William Sommerfeld, Simon 1445David Smith, Paul D. Smith, Wilson Snyder, William Sommerfeld, Simon
1446South, Andre Spiegel, Michael Staats, Thomas Steffen, Ulf Stegemann, 1446South, Andre Spiegel, Michael Staats, Thomas Steffen, Ulf Stegemann,
1447Reiner Steib, Sam Steingold, Ake Stenhoff, Peter Stephenson, Ken 1447Reiner Steib, Sam Steingold, Ake Stenhoff, Peter Stephenson, Ken
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index 1f78747eaa6..13fa516af66 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -705,13 +705,27 @@ setting the latter variable, you can control how these modes handle
705final newlines. 705final newlines.
706 706
707@vindex write-region-inhibit-fsync 707@vindex write-region-inhibit-fsync
708 When Emacs saves a file, it invokes the @code{fsync} system call to 708 Normally, when a program writes a file, the operating system briefly
709force the data immediately out to disk. This is important for safety 709caches the file's data in main memory before committing the data to
710if the system crashes or in case of power outage. However, it can be 710disk. This can greatly improve performance; for example, when running
711disruptive on laptops using power saving, as it may force a disk 711on laptops, it can avoid a disk spin-up each time a file is written.
712spin-up each time you save a file. If you accept an increased risk of 712However, it risks data loss if the operating system crashes before
713data loss, you can set @code{write-region-inhibit-fsync} to a 713committing the cache to disk.
714non-@code{nil} value to disable the synchronization. 714
715 To lessen this risk, Emacs can invoke the @code{fsync} system call
716after saving a file. Using @code{fsync} does not eliminate the risk
717of data loss, partly because many systems do not implement
718@code{fsync} properly, and partly because Emacs's file-saving
719procedure typically relies also on directory updates that might not
720survive a crash even if @code{fsync} works properly.
721
722 The @code{write-region-inhibit-fsync} variable controls whether
723Emacs invokes @code{fsync} after saving a file. The variable's
724default value is @code{nil} when Emacs is interactive, and @code{t}
725when Emacs runs in batch mode.
726
727 Emacs never uses @code{fsync} when writing auto-save files, as these
728files might lose data anyway.
715 729
716@node Interlocking 730@node Interlocking
717@subsection Protection against Simultaneous Editing 731@subsection Protection against Simultaneous Editing
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index c8d9e9f2087..33e398ebf75 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -342,7 +342,9 @@ before version control systems.
342modification log for the entire system, which makes change log files 342modification log for the entire system, which makes change log files
343somewhat redundant. One advantage that they retain is that it is 343somewhat redundant. One advantage that they retain is that it is
344sometimes useful to be able to view the transaction history of a 344sometimes useful to be able to view the transaction history of a
345single directory separately from those of other directories. 345single directory separately from those of other directories. Another
346advantage is that commit logs can't be fixed in many version control
347systems.
346 348
347 A project maintained with version control can use just the version 349 A project maintained with version control can use just the version
348control log, or it can use both kinds of logs. It can handle some 350control log, or it can use both kinds of logs. It can handle some
diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi
index 459221a9088..70eecf1c97b 100644
--- a/doc/emacs/programs.texi
+++ b/doc/emacs/programs.texi
@@ -1356,7 +1356,7 @@ the menu item named @samp{Source Code Parsers (Semantic)} in the
1356@samp{Tools} menu. This enables Semantic mode, a global minor mode. 1356@samp{Tools} menu. This enables Semantic mode, a global minor mode.
1357 1357
1358 When Semantic mode is enabled, Emacs automatically attempts to 1358 When Semantic mode is enabled, Emacs automatically attempts to
1359parses each file you visit. Currently, Semantic understands C, C++, 1359parse each file you visit. Currently, Semantic understands C, C++,
1360Scheme, Javascript, Java, HTML, and Make. Within each parsed buffer, 1360Scheme, Javascript, Java, HTML, and Make. Within each parsed buffer,
1361the following commands are available: 1361the following commands are available:
1362 1362
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index 377264223a5..e146177255e 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -175,7 +175,7 @@ element in the minibuffer, where you can edit it.
175 175
176@kindex M-e @r{(Incremental search)} 176@kindex M-e @r{(Incremental search)}
177 To edit the current search string in the minibuffer without 177 To edit the current search string in the minibuffer without
178replacing it with items from the search ring, type @kbd{M-e}. Type 178replacing it with items from the search ring, type @kbd{M-e}. Type @key{RET},
179@kbd{C-s} or @kbd{C-r} to finish editing the string and search for it. 179@kbd{C-s} or @kbd{C-r} to finish editing the string and search for it.
180 180
181@node Error in Isearch 181@node Error in Isearch
diff --git a/doc/emacs/sending.texi b/doc/emacs/sending.texi
index 4c8af7e650e..1402d8a85be 100644
--- a/doc/emacs/sending.texi
+++ b/doc/emacs/sending.texi
@@ -374,7 +374,7 @@ This is the default, unless you have already set the variables for
374sending mail via @code{smtpmail-send-it} (see below). 374sending mail via @code{smtpmail-send-it} (see below).
375 375
376@item smtpmail-send-it 376@item smtpmail-send-it
377Send mail using the through an external mail host, such as your 377Send mail through an external mail host, such as your
378Internet service provider's outgoing SMTP mail server. If you have 378Internet service provider's outgoing SMTP mail server. If you have
379not told Emacs how to contact the SMTP server, it prompts for this 379not told Emacs how to contact the SMTP server, it prompts for this
380information, which is saved in the @code{smtpmail-smtp-server} variable 380information, which is saved in the @code{smtpmail-smtp-server} variable
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 1c667bc56cb..d0b6b5191c1 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -1138,12 +1138,9 @@ form that is clearly safe to install.
1138@section Contributing to Emacs Development 1138@section Contributing to Emacs Development
1139@cindex contributing to Emacs 1139@cindex contributing to Emacs
1140 1140
1141If you would like to help pretest Emacs releases to assure they work 1141If you would like to work on improving Emacs, please contact
1142well, or if you would like to work on improving Emacs, please contact 1142the maintainers at @email{emacs-devel@@gnu.org}. You can ask for
1143the maintainers at @email{emacs-devel@@gnu.org}. A pretester 1143suggested projects or suggest your own ideas.
1144should be prepared to investigate bugs as well as report them. If you'd
1145like to work on improving Emacs, please ask for suggested projects or
1146suggest your own ideas.
1147 1144
1148If you have already written an improvement, please tell us about it. If 1145If you have already written an improvement, please tell us about it. If
1149you have not yet started work, it is useful to contact 1146you have not yet started work, it is useful to contact
diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi
index 7ed0c682296..7c80cefcc7e 100644
--- a/doc/emacs/windows.texi
+++ b/doc/emacs/windows.texi
@@ -258,7 +258,7 @@ Make all windows the same height (@code{balance-windows}).
258the space that it occupied is given to an adjacent window (but not the 258the space that it occupied is given to an adjacent window (but not the
259minibuffer window, even if that is active at the time). Deleting the 259minibuffer window, even if that is active at the time). Deleting the
260window has no effect on the buffer it used to display; the buffer 260window has no effect on the buffer it used to display; the buffer
261continues to exist, and you can still switch to with @kbd{C-x b}. 261continues to exist, and you can still switch to it with @kbd{C-x b}.
262 262
263@findex kill-buffer-and-window 263@findex kill-buffer-and-window
264@kindex C-x 4 0 264@kindex C-x 4 0
diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog
index e12c57d4b76..5e4655506f6 100644
--- a/doc/lispintro/ChangeLog
+++ b/doc/lispintro/ChangeLog
@@ -1,10 +1,38 @@
12013-03-16 Glenn Morris <rgm@gnu.org> 12013-04-24 Eli Zaretskii <eliz@gnu.org>
2 2
3 * emacs-lisp-intro.texi: Add some stuff specific to www.gnu.org. 3 * makefile.w32-in (INFO_OPTS): Add "-I$(emacsdir)" to fix last
4 commit.
5
62013-04-24 Glenn Morris <rgm@gnu.org>
7
8 * emacs-lisp-intro.texi (emacsver.texi): Include it.
9 (copying): For non-printed versions, uses Emacs version rather
10 than that of the printed book.
11 (Complications, Lisp macro, defvar and asterisk, defcustom): Copyedits.
12 * Makefile.in (emacsdir): New variable..
13 (MAKEINFO_OPTS, ENVADD): Add $emacsdir.
14 (srcs): Add emacsver.texi.
15 (dist): Include emacsver.texi. Edit emacsdir.
16 * makefile.w32-in (emacsdir): New variable.
17 (INFO_SOURCES): Add emacsver.texi.
18 (ENVADD): Add $emacsdir (and $texinfodir).
19
202013-04-23 Xue Fuqiao <xfq.free@gmail.com>
21
22 * emacs-lisp-intro.texi (Complications, defvar, Writing Defuns)
23 (Prevent confusion, Determining the Element, lambda): Refine the
24 doc about Lisp macros, reported by Glenn Morris.
25
262013-04-21 Xue Fuqiao <xfq.free@gmail.com>
27
28 * emacs-lisp-intro.texi (defcustom, defun)
29 (simplified-beginning-of-buffer, defvar, Building Robots, Review)
30 (save-excursion): `defun' and `defcustom' are now macros rather
31 than special forms. (Bug#13853)
4 32
52013-03-16 Glenn Morris <rgm@gnu.org> 332013-03-16 Glenn Morris <rgm@gnu.org>
6 34
7 * Version 24.3 released. 35 * emacs-lisp-intro.texi: Add some stuff specific to www.gnu.org.
8 36
92013-03-03 Glenn Morris <rgm@gnu.org> 372013-03-03 Glenn Morris <rgm@gnu.org>
10 38
diff --git a/doc/lispintro/Makefile.in b/doc/lispintro/Makefile.in
index a6b50b88ad9..338b4ad86c4 100644
--- a/doc/lispintro/Makefile.in
+++ b/doc/lispintro/Makefile.in
@@ -25,6 +25,8 @@ version=@version@
25buildinfodir = $(srcdir)/../../info 25buildinfodir = $(srcdir)/../../info
26# Directory with the (customized) texinfo.tex file. 26# Directory with the (customized) texinfo.tex file.
27texinfodir = $(srcdir)/../misc 27texinfodir = $(srcdir)/../misc
28# Directory with emacsver.texi.
29emacsdir = $(srcdir)/../emacs
28 30
29MKDIR_P = @MKDIR_P@ 31MKDIR_P = @MKDIR_P@
30 32
@@ -33,17 +35,18 @@ INFO_EXT=@INFO_EXT@
33INFO_OPTS=@INFO_OPTS@ 35INFO_OPTS=@INFO_OPTS@
34 36
35MAKEINFO = @MAKEINFO@ 37MAKEINFO = @MAKEINFO@
36MAKEINFO_OPTS = --force -I $(srcdir) 38MAKEINFO_OPTS = --force -I $(emacsdir) -I $(srcdir)
37TEXI2DVI = texi2dvi 39TEXI2DVI = texi2dvi
38TEXI2PDF = texi2pdf 40TEXI2PDF = texi2pdf
39DVIPS = dvips 41DVIPS = dvips
40 42
41ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(TEXINPUTS)" \ 43ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(emacsdir):$(TEXINPUTS)" \
42 MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)" 44 MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)"
43 45
44mkinfodir = @${MKDIR_P} ${buildinfodir} 46mkinfodir = @${MKDIR_P} ${buildinfodir}
45 47
46srcs = ${srcdir}/emacs-lisp-intro.texi ${srcdir}/doclicense.texi 48srcs = ${srcdir}/emacs-lisp-intro.texi ${srcdir}/doclicense.texi \
49 ${emacsdir}/emacsver.texi
47 50
48.PHONY: info dvi html pdf ps 51.PHONY: info dvi html pdf ps
49 52
@@ -97,9 +100,10 @@ dist:
97 rm -rf emacs-lispintro-${version} 100 rm -rf emacs-lispintro-${version}
98 mkdir emacs-lispintro-${version} 101 mkdir emacs-lispintro-${version}
99 cp ${srcdir}/*.texi ${srcdir}/*.eps ${srcdir}/*.pdf \ 102 cp ${srcdir}/*.texi ${srcdir}/*.eps ${srcdir}/*.pdf \
100 ${texinfodir}/texinfo.tex \ 103 ${texinfodir}/texinfo.tex ${emacsdir}/emacsver.texi \
101 ${srcdir}/ChangeLog* ${srcdir}/README emacs-lispintro-${version}/ 104 ${srcdir}/ChangeLog* ${srcdir}/README emacs-lispintro-${version}/
102 sed -e 's/@sr[c]dir@/./' -e 's/^\(texinfodir *=\).*/\1 ./' \ 105 sed -e 's/@sr[c]dir@/./' -e 's/^\(texinfodir *=\).*/\1 ./' \
106 -e 's/^\(emacsdir *=\).*/\1 ./' \
103 -e 's/^\(buildinfodir *=\).*/\1 ./' \ 107 -e 's/^\(buildinfodir *=\).*/\1 ./' \
104 -e 's/^\(clean:.*\)/\1 infoclean/' \ 108 -e 's/^\(clean:.*\)/\1 infoclean/' \
105 -e "s/@ver[s]ion@/${version}/" \ 109 -e "s/@ver[s]ion@/${version}/" \
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi
index c42ed210cbc..ce4da17658e 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -8,6 +8,8 @@
8@syncodeindex fn cp 8@syncodeindex fn cp
9@finalout 9@finalout
10 10
11@include emacsver.texi
12
11@c --------- 13@c ---------
12@c <<<< For hard copy printing, this file is now 14@c <<<< For hard copy printing, this file is now
13@c set for smallbook, which works for all sizes 15@c set for smallbook, which works for all sizes
@@ -35,79 +37,10 @@
35\global\hbadness=6666 % don't worry about not-too-underfull boxes 37\global\hbadness=6666 % don't worry about not-too-underfull boxes
36@end tex 38@end tex
37 39
40@c These refer to the printed book sold by the FSF.
38@set edition-number 3.10 41@set edition-number 3.10
39@set update-date 28 October 2009 42@set update-date 28 October 2009
40 43
41@ignore
42 ## Summary of shell commands to create various output formats:
43
44 pushd /usr/local/src/emacs/lispintro/
45 ## pushd /u/intro/
46
47 ## Info output
48 makeinfo --paragraph-indent=0 --verbose emacs-lisp-intro.texi
49
50 ## ;; (progn (when (bufferp (get-buffer "*info*")) (kill-buffer "*info*")) (info "/usr/local/src/emacs/info/eintr"))
51
52 ## DVI output
53 texi2dvi emacs-lisp-intro.texi
54
55 ## xdvi -margins 24pt -topmargin 4pt -offsets 24pt -geometry 760x1140 -s 5 -useTeXpages -mousemode 1 emacs-lisp-intro.dvi &
56
57 ## HTML output
58 makeinfo --html --no-split --verbose emacs-lisp-intro.texi
59
60 ## galeon emacs-lisp-intro.html
61
62 ## Plain text output
63 makeinfo --fill-column=70 --no-split --paragraph-indent=0 \
64 --verbose --no-headers --output=emacs-lisp-intro.txt emacs-lisp-intro.texi
65
66 popd
67
68# as user `root'
69# insert thumbdrive
70 mtusb # mount -v -t ext3 /dev/sda /mnt
71 cp -v /u/intro/emacs-lisp-intro.texi /mnt/backup/intro/emacs-lisp-intro.texi
72 umtusb # umount -v /mnt
73# remove thumbdrive
74
75 ## Other shell commands
76
77 pushd /usr/local/src/emacs/lispintro/
78 ## pushd /u/intro/
79
80 ## PDF
81 texi2dvi --pdf emacs-lisp-intro.texi
82 # xpdf emacs-lisp-intro.pdf &
83
84 ## DocBook -- note file extension
85 makeinfo --docbook --no-split --paragraph-indent=0 \
86 --verbose --output=emacs-lisp-intro.docbook emacs-lisp-intro.texi
87
88 ## XML with a Texinfo DTD -- note file extension
89 makeinfo --xml --no-split --paragraph-indent=0 \
90 --verbose --output=emacs-lisp-intro.texinfoxml emacs-lisp-intro.texi
91
92 ## PostScript (needs DVI)
93 # gv emacs-lisp-intro.ps &
94 # Create DVI if we lack it
95 # texi2dvi emacs-lisp-intro.texi
96 dvips emacs-lisp-intro.dvi -o emacs-lisp-intro.ps
97
98 ## RTF (needs HTML)
99 # Use OpenOffice to view RTF
100 # Create HTML if we lack it
101 # makeinfo --no-split --html emacs-lisp-intro.texi
102 /usr/local/src/html2rtf.pl emacs-lisp-intro.html
103
104 ## LaTeX (needs RTF)
105 /usr/bin/rtf2latex emacs-lisp-intro.rtf
106
107 popd
108
109@end ignore
110
111@c ================ Included Figures ================ 44@c ================ Included Figures ================
112 45
113@c Set print-postscript-figures if you print PostScript figures. 46@c Set print-postscript-figures if you print PostScript figures.
@@ -116,25 +49,6 @@
116@c Your site may require editing changes to print PostScript; in this 49@c Your site may require editing changes to print PostScript; in this
117@c case, search for `print-postscript-figures' and make appropriate changes. 50@c case, search for `print-postscript-figures' and make appropriate changes.
118 51
119@c ================ How to Create an Info file ================
120
121@c If you have `makeinfo' installed, run the following command
122
123@c makeinfo emacs-lisp-intro.texi
124
125@c or, if you want a single, large Info file, and no paragraph indents:
126@c makeinfo --no-split --paragraph-indent=0 --verbose emacs-lisp-intro.texi
127
128@c After creating the Info file, edit your Info `dir' file, if the
129@c `dircategory' section below does not enable your system to
130@c install the manual automatically.
131@c (The `dir' file is often in the `/usr/local/share/info/' directory.)
132
133@c ================ How to Create an HTML file ================
134
135@c To convert to HTML format
136@c makeinfo --html --no-split --verbose emacs-lisp-intro.texi
137
138@c ================ How to Print a Book in Various Sizes ================ 52@c ================ How to Print a Book in Various Sizes ================
139 53
140@c This book can be printed in any of three different sizes. 54@c This book can be printed in any of three different sizes.
@@ -153,34 +67,6 @@
153@c @afourpaper 67@c @afourpaper
154@c @set largebook 68@c @set largebook
155 69
156@c ================ How to Typeset and Print ================
157
158@c If you do not include PostScript figures, run either of the
159@c following command sequences, or similar commands suited to your
160@c system:
161
162@c texi2dvi emacs-lisp-intro.texi
163@c lpr -d emacs-lisp-intro.dvi
164
165@c or else:
166
167@c tex emacs-lisp-intro.texi
168@c texindex emacs-lisp-intro.??
169@c tex emacs-lisp-intro.texi
170@c lpr -d emacs-lisp-intro.dvi
171
172@c If you include the PostScript figures, and you have old software,
173@c you may need to convert the .dvi file to a .ps file before
174@c printing. Run either of the following command sequences, or one
175@c similar:
176@c
177@c dvips -f < emacs-lisp-intro.dvi > emacs-lisp-intro.ps
178@c
179@c or else:
180@c
181@c postscript -p < emacs-lisp-intro.dvi > emacs-lisp-intro.ps
182@c
183
184@c (Note: if you edit the book so as to change the length of the 70@c (Note: if you edit the book so as to change the length of the
185@c table of contents, you may have to change the value of `pageno' below.) 71@c table of contents, you may have to change the value of `pageno' below.)
186 72
@@ -226,7 +112,12 @@
226This is an @cite{Introduction to Programming in Emacs Lisp}, for 112This is an @cite{Introduction to Programming in Emacs Lisp}, for
227people who are not programmers. 113people who are not programmers.
228@sp 1 114@sp 1
115@iftex
229Edition @value{edition-number}, @value{update-date} 116Edition @value{edition-number}, @value{update-date}
117@end iftex
118@ifnottex
119Distributed with Emacs version @value{EMACSVER}.
120@end ifnottex
230@ifset WWW_GNU_ORG 121@ifset WWW_GNU_ORG
231@html 122@html
232<p>The homepage for GNU Emacs is at 123<p>The homepage for GNU Emacs is at
@@ -243,7 +134,7 @@ Foundation, Inc.
243@iftex 134@iftex
244Published by the:@* 135Published by the:@*
245 136
246GNU Press, @hfill @uref{http://www.fsf.org/campaigns/gnu-press/}@* 137GNU Press, @hfill @uref{http://www.fsf.org/licensing/gnu-press/}@*
247a division of the @hfill email: @email{sales@@fsf.org}@* 138a division of the @hfill email: @email{sales@@fsf.org}@*
248Free Software Foundation, Inc. @hfill Tel: +1 (617) 542-5942@* 139Free Software Foundation, Inc. @hfill Tel: +1 (617) 542-5942@*
24951 Franklin Street, Fifth Floor @hfill Fax: +1 (617) 542-2652@* 14051 Franklin Street, Fifth Floor @hfill Fax: +1 (617) 542-2652@*
@@ -251,10 +142,10 @@ Boston, MA 02110-1301 USA
251@end iftex 142@end iftex
252 143
253@ifnottex 144@ifnottex
254Published by the: 145Printed copies available from @uref{http://shop.fsf.org/}. Published by:
255 146
256@example 147@example
257GNU Press, http://www.fsf.org/campaigns/gnu-press/ 148GNU Press, http://www.fsf.org/licensing/gnu-press/
258a division of the email: sales@@fsf.org 149a division of the email: sales@@fsf.org
259Free Software Foundation, Inc. Tel: +1 (617) 542-5942 150Free Software Foundation, Inc. Tel: +1 (617) 542-5942
26051 Franklin Street, Fifth Floor Fax: +1 (617) 542-2652 15151 Franklin Street, Fifth Floor Fax: +1 (617) 542-2652
@@ -263,7 +154,6 @@ Boston, MA 02110-1301 USA
263@end ifnottex 154@end ifnottex
264 155
265@sp 1 156@sp 1
266@c Printed copies are available from @uref{http://shop.fsf.org/} for $35 each.@*
267ISBN 1-882114-43-4 157ISBN 1-882114-43-4
268 158
269Permission is granted to copy, distribute and/or modify this document 159Permission is granted to copy, distribute and/or modify this document
@@ -456,7 +346,7 @@ Practicing Evaluation
456How To Write Function Definitions 346How To Write Function Definitions
457 347
458* Primitive Functions:: 348* Primitive Functions::
459* defun:: The @code{defun} special form. 349* defun:: The @code{defun} macro.
460* Install:: Install a function definition. 350* Install:: Install a function definition.
461* Interactive:: Making a function interactive. 351* Interactive:: Making a function interactive.
462* Interactive Options:: Different options for @code{interactive}. 352* Interactive Options:: Different options for @code{interactive}.
@@ -1617,13 +1507,25 @@ the symbol's value as a @dfn{variable}. This situation is described
1617in the section on variables. (@xref{Variables}.) 1507in the section on variables. (@xref{Variables}.)
1618 1508
1619@cindex Special form 1509@cindex Special form
1620The second complication occurs because some functions are unusual and do 1510The second complication occurs because some functions are unusual and
1621not work in the usual manner. Those that don't are called @dfn{special 1511do not work in the usual manner. Those that don't are called
1622forms}. They are used for special jobs, like defining a function, and 1512@dfn{special forms}. They are used for special jobs, like defining a
1623there are not many of them. In the next few chapters, you will be 1513function, and there are not many of them. In the next few chapters,
1624introduced to several of the more important special forms. 1514you will be introduced to several of the more important special forms.
1625 1515
1626The third and final complication is this: if the function that the 1516As well as special forms, there are also @dfn{macros}. A macro
1517is a construct defined in Lisp, which differs from a function in that it
1518translates a Lisp expression into another expression that is to be
1519evaluated in place of the original expression. (@xref{Lisp macro}.)
1520
1521For the purposes of this introduction, you do not need to worry too much
1522about whether something is a special form, macro, or ordinary function.
1523For example, @code{if} is a special form (@pxref{if}), but @code{when}
1524is a macro (@pxref{Lisp macro}). In earlier versions of Emacs,
1525@code{defun} was a special form, but now it is a macro (@pxref{defun}).
1526It still behaves in the same way.
1527
1528The final complication is this: if the function that the
1627Lisp interpreter is looking at is not a special form, and if it is part 1529Lisp interpreter is looking at is not a special form, and if it is part
1628of a list, the Lisp interpreter looks to see whether the list has a list 1530of a list, the Lisp interpreter looks to see whether the list has a list
1629inside of it. If there is an inner list, the Lisp interpreter first 1531inside of it. If there is an inner list, the Lisp interpreter first
@@ -3053,7 +2955,7 @@ symbol refers to it.)
3053 2955
3054@menu 2956@menu
3055* Primitive Functions:: 2957* Primitive Functions::
3056* defun:: The @code{defun} special form. 2958* defun:: The @code{defun} macro.
3057* Install:: Install a function definition. 2959* Install:: Install a function definition.
3058* Interactive:: Making a function interactive. 2960* Interactive:: Making a function interactive.
3059* Interactive Options:: Different options for @code{interactive}. 2961* Interactive Options:: Different options for @code{interactive}.
@@ -3094,18 +2996,15 @@ unless you investigate, you won't know whether an already-written
3094function is written in Emacs Lisp or C. 2996function is written in Emacs Lisp or C.
3095 2997
3096@node defun 2998@node defun
3097@section The @code{defun} Special Form 2999@section The @code{defun} Macro
3098@findex defun 3000@findex defun
3099@cindex Special form of @code{defun}
3100 3001
3101@cindex @samp{function definition} defined 3002@cindex @samp{function definition} defined
3102In Lisp, a symbol such as @code{mark-whole-buffer} has code attached to 3003In Lisp, a symbol such as @code{mark-whole-buffer} has code attached to
3103it that tells the computer what to do when the function is called. 3004it that tells the computer what to do when the function is called.
3104This code is called the @dfn{function definition} and is created by 3005This code is called the @dfn{function definition} and is created by
3105evaluating a Lisp expression that starts with the symbol @code{defun} 3006evaluating a Lisp expression that starts with the symbol @code{defun}
3106(which is an abbreviation for @emph{define function}). Because 3007(which is an abbreviation for @emph{define function}).
3107@code{defun} does not evaluate its arguments in the usual way, it is
3108called a @dfn{special form}.
3109 3008
3110In subsequent sections, we will look at function definitions from the 3009In subsequent sections, we will look at function definitions from the
3111Emacs source code, such as @code{mark-whole-buffer}. In this section, 3010Emacs source code, such as @code{mark-whole-buffer}. In this section,
@@ -3697,7 +3596,7 @@ name for a @dfn{local variable} that overshadows any use of the same
3697name outside the @code{let} expression. This is like understanding 3596name outside the @code{let} expression. This is like understanding
3698that whenever your host refers to `the house', he means his house, not 3597that whenever your host refers to `the house', he means his house, not
3699yours. (Symbols used in argument lists work the same way. 3598yours. (Symbols used in argument lists work the same way.
3700@xref{defun, , The @code{defun} Special Form}.) 3599@xref{defun, , The @code{defun} Macro}.)
3701 3600
3702Local variables created by a @code{let} expression retain their value 3601Local variables created by a @code{let} expression retain their value
3703@emph{only} within the @code{let} expression itself (and within 3602@emph{only} within the @code{let} expression itself (and within
@@ -4254,7 +4153,7 @@ On the other hand, this function returns @code{nil} if the test is false.
4254@findex point 4153@findex point
4255@findex mark 4154@findex mark
4256 4155
4257The @code{save-excursion} function is the fourth and final special form 4156The @code{save-excursion} function is the third and final special form
4258that we will discuss in this chapter. 4157that we will discuss in this chapter.
4259 4158
4260In Emacs Lisp programs used for editing, the @code{save-excursion} 4159In Emacs Lisp programs used for editing, the @code{save-excursion}
@@ -4381,9 +4280,9 @@ within the body of a @code{let} expression. It looks like this:
4381@node Review 4280@node Review
4382@section Review 4281@section Review
4383 4282
4384In the last few chapters we have introduced a fair number of functions 4283In the last few chapters we have introduced a macro and a fair number
4385and special forms. Here they are described in brief, along with a few 4284of functions and special forms. Here they are described in brief,
4386similar functions that have not been mentioned yet. 4285along with a few similar functions that have not been mentioned yet.
4387 4286
4388@table @code 4287@table @code
4389@item eval-last-sexp 4288@item eval-last-sexp
@@ -4393,10 +4292,10 @@ invoked with an argument; in that case, the output is printed in the
4393current buffer. This command is normally bound to @kbd{C-x C-e}. 4292current buffer. This command is normally bound to @kbd{C-x C-e}.
4394 4293
4395@item defun 4294@item defun
4396Define function. This special form has up to five parts: the name, 4295Define function. This macro has up to five parts: the name, a
4397a template for the arguments that will be passed to the function, 4296template for the arguments that will be passed to the function,
4398documentation, an optional interactive declaration, and the body of the 4297documentation, an optional interactive declaration, and the body of
4399definition. 4298the definition.
4400 4299
4401@need 1250 4300@need 1250
4402For example, in an early version of Emacs, the function definition was 4301For example, in an early version of Emacs, the function definition was
@@ -4803,7 +4702,7 @@ leave mark at previous position."
4803@end smallexample 4702@end smallexample
4804 4703
4805Like all function definitions, this definition has five parts following 4704Like all function definitions, this definition has five parts following
4806the special form @code{defun}: 4705the macro @code{defun}:
4807 4706
4808@enumerate 4707@enumerate
4809@item 4708@item
@@ -8310,7 +8209,7 @@ an @code{if} without the possibility of an else clause. In your mind,
8310you can replace @code{when} with @code{if} and understand what goes 8209you can replace @code{when} with @code{if} and understand what goes
8311on. That is what the Lisp interpreter does. 8210on. That is what the Lisp interpreter does.
8312 8211
8313Technically speaking, @code{when} is a Lisp macro. A Lisp @dfn{macro} 8212Technically speaking, @code{when} is a Lisp macro. A Lisp macro
8314enables you to define new control constructs and other language 8213enables you to define new control constructs and other language
8315features. It tells the interpreter how to compute another Lisp 8214features. It tells the interpreter how to compute another Lisp
8316expression which will in turn compute the value. In this case, the 8215expression which will in turn compute the value. In this case, the
@@ -9293,7 +9192,7 @@ have a value. If the variable already has a value, @code{defvar} does
9293not override the existing value. Second, @code{defvar} has a 9192not override the existing value. Second, @code{defvar} has a
9294documentation string. 9193documentation string.
9295 9194
9296(Another special form, @code{defcustom}, is designed for variables 9195(There is a related macro, @code{defcustom}, designed for variables
9297that people customize. It has more features than @code{defvar}. 9196that people customize. It has more features than @code{defvar}.
9298(@xref{defcustom, , Setting Variables with @code{defcustom}}.) 9197(@xref{defcustom, , Setting Variables with @code{defcustom}}.)
9299 9198
@@ -9363,7 +9262,7 @@ In the past, Emacs used the @code{defvar} special form both for
9363internal variables that you would not expect a user to change and for 9262internal variables that you would not expect a user to change and for
9364variables that you do expect a user to change. Although you can still 9263variables that you do expect a user to change. Although you can still
9365use @code{defvar} for user customizable variables, please use 9264use @code{defvar} for user customizable variables, please use
9366@code{defcustom} instead, since that special form provides a path into 9265@code{defcustom} instead, since it provides a path into
9367the Customization commands. (@xref{defcustom, , Specifying Variables 9266the Customization commands. (@xref{defcustom, , Specifying Variables
9368using @code{defcustom}}.) 9267using @code{defcustom}}.)
9369 9268
@@ -11300,11 +11199,11 @@ Let's expand on the metaphor in which a computer program is a robot.
11300 11199
11301A function definition provides the blueprints for a robot. When you 11200A function definition provides the blueprints for a robot. When you
11302install a function definition, that is, when you evaluate a 11201install a function definition, that is, when you evaluate a
11303@code{defun} special form, you install the necessary equipment to 11202@code{defun} macro, you install the necessary equipment to build
11304build robots. It is as if you were in a factory, setting up an 11203robots. It is as if you were in a factory, setting up an assembly
11305assembly line. Robots with the same name are built according to the 11204line. Robots with the same name are built according to the same
11306same blueprints. So they have, as it were, the same `model number', 11205blueprints. So they have, as it were, the same `model number', but a
11307but a different `serial number'. 11206different `serial number'.
11308 11207
11309We often say that a recursive function `calls itself'. What we mean 11208We often say that a recursive function `calls itself'. What we mean
11310is that the instructions in a recursive function cause the Lisp 11209is that the instructions in a recursive function cause the Lisp
@@ -16971,10 +16870,9 @@ definitions; but you can write @code{defuns} in your @file{.emacs}
16971file. Indeed, you can write any Lisp expression in your @file{.emacs} 16870file. Indeed, you can write any Lisp expression in your @file{.emacs}
16972file.) 16871file.)
16973 16872
16974The @code{customize} feature depends on the @code{defcustom} special 16873The @code{customize} feature depends on the @code{defcustom} macro.
16975form. Although you can use @code{defvar} or @code{setq} for variables 16874Although you can use @code{defvar} or @code{setq} for variables that
16976that users set, the @code{defcustom} special form is designed for the 16875users set, the @code{defcustom} macro is designed for the job.
16977job.
16978 16876
16979You can use your knowledge of @code{defvar} for writing the 16877You can use your knowledge of @code{defvar} for writing the
16980first three arguments for @code{defcustom}. The first argument to 16878first three arguments for @code{defcustom}. The first argument to
@@ -17023,7 +16921,7 @@ Finally, the @code{:group} keyword tells the Emacs Customization
17023command in which group the variable is located. This tells where to 16921command in which group the variable is located. This tells where to
17024find it. 16922find it.
17025 16923
17026The @code{defcustom} function recognizes more than a dozen keywords. 16924The @code{defcustom} macro recognizes more than a dozen keywords.
17027For more information, see @ref{Customization, , Writing Customization 16925For more information, see @ref{Customization, , Writing Customization
17028Definitions, elisp, The GNU Emacs Lisp Reference Manual}. 16926Definitions, elisp, The GNU Emacs Lisp Reference Manual}.
17029 16927
@@ -19454,7 +19352,7 @@ them in an argument list (and within expressions called by them).
19454@ignore 19352@ignore
19455@c texi2dvi fails when the name of the section is within ifnottex ... 19353@c texi2dvi fails when the name of the section is within ifnottex ...
19456(@xref{Prevent confusion, , @code{let} Prevents Confusion}, and 19354(@xref{Prevent confusion, , @code{let} Prevents Confusion}, and
19457@ref{defun, , The @code{defun} Special Form}.) 19355@ref{defun, , The @code{defun} Macro}.)
19458@end ignore 19356@end ignore
19459 19357
19460@node yank 19358@node yank
@@ -20974,7 +20872,7 @@ equivalent of @code{multiply-by-seven} is:
20974@end smallexample 20872@end smallexample
20975 20873
20976@noindent 20874@noindent
20977(@xref{defun, , The @code{defun} Special Form}.) 20875(@xref{defun, , The @code{defun} Macro}.)
20978 20876
20979@need 1250 20877@need 1250
20980@noindent 20878@noindent
diff --git a/doc/lispintro/makefile.w32-in b/doc/lispintro/makefile.w32-in
index 377112a80d2..39760ba5612 100644
--- a/doc/lispintro/makefile.w32-in
+++ b/doc/lispintro/makefile.w32-in
@@ -23,10 +23,13 @@ srcdir = .
23infodir = $(srcdir)/../../info 23infodir = $(srcdir)/../../info
24# Directory with the (customized) texinfo.tex file. 24# Directory with the (customized) texinfo.tex file.
25texinfodir = $(srcdir)/../misc 25texinfodir = $(srcdir)/../misc
26# Directory with emacsver.texi.
27emacsdir = $(srcdir)/../emacs
26 28
27INFO_EXT=.info 29INFO_EXT=.info
28INFO_OPTS=--no-split 30INFO_OPTS=--no-split -I$(emacsdir)
29INFO_SOURCES = $(srcdir)/emacs-lisp-intro.texi $(srcdir)/doclicense.texi 31INFO_SOURCES = $(srcdir)/emacs-lisp-intro.texi $(emacsdir)/emacsver.texi \
32 $(srcdir)/doclicense.texi
30# The file name eintr must fit within 5 characters, to allow for 33# The file name eintr must fit within 5 characters, to allow for
31# -NN extensions to fit into DOS 8+3 limits without clashing 34# -NN extensions to fit into DOS 8+3 limits without clashing
32INFO_TARGETS = $(infodir)/eintr$(INFO_EXT) 35INFO_TARGETS = $(infodir)/eintr$(INFO_EXT)
@@ -37,8 +40,9 @@ INSTALL_INFO = install-info
37TEXI2DVI = texi2dvi 40TEXI2DVI = texi2dvi
38TEXI2PDF = texi2pdf 41TEXI2PDF = texi2pdf
39DVIPS = dvips 42DVIPS = dvips
40ENVADD = $(srcdir)\..\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" \ 43ENVADD = $(srcdir)\..\..\nt\envadd.bat \
41 "MAKEINFO=$(MAKEINFO) -I$(srcdir) -I$(texinfodir)" /C 44 "TEXINPUTS=$(srcdir);$(texinfodir);$(emacsdir);$(TEXINPUTS)" \
45 "MAKEINFO=$(MAKEINFO) -I$(srcdir) -I$(emacsdir) -I$(texinfodir)" /C
42 46
43.SUFFIXES: .dvi .ps .texi 47.SUFFIXES: .dvi .ps .texi
44 48
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 7455881518a..8f675bfcda6 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,10 +1,66 @@
12013-03-16 Glenn Morris <rgm@gnu.org> 12013-05-29 Stefan Monnier <monnier@iro.umontreal.ca>
2 2
3 * elisp.texi: Add some stuff specific to www.gnu.org. 3 * functions.texi (Lambda Expressions): Lambda expressions don't
4 evaluate to themselves in general (bug#11782).
5
62013-05-15 Stefan Monnier <monnier@iro.umontreal.ca>
7
8 * loading.texi (Autoload):
9 * help.texi (Documentation Basics, Accessing Documentation)
10 (Accessing Documentation, Accessing Documentation): DOC-* is now DOC.
11
122013-04-23 Glenn Morris <rgm@gnu.org>
13
14 * internals.texi (Writing Emacs Primitives): Remove obvious example.
15 Tweak other to avoid overly long line.
16
172013-04-21 Xue Fuqiao <xfq.free@gmail.com>
18
19 * internals.texi (Writing Emacs Primitives): Remove unnecessary
20 references to the sources. (Bug#13800)
21
22 * searching.texi (Regexp Backslash): Doc fix for backslash
23 constructs in regular expressions.
24
252013-04-15 Christopher Schmidt <christopher@ch.ristopher.com>
26
27 * tips.texi (Coding Conventions): Mention separation of package
28 descriptor and name of internal symbols by two hyphens.
29
302013-04-13 Stephen Berman <stephen.berman@gmx.net>
31
32 * windows.texi (Splitting Windows): Change category of
33 split-window from a command to a function.
34
352013-04-06 Chong Yidong <cyd@gnu.org>
36
37 * display.texi (Faces): Minor clarifications.
38 (Defining Faces): Clarify default vs custom face specs.
39 Document face-spec-set.
40
41 * display.texi (Overlay Properties):
42 * text.texi (Special Properties): Use the "anonymous face"
43 terminology. Describe foreground-color and background-color forms
44 as compatibility-only.
45
462013-03-24 Eli Zaretskii <eliz@gnu.org>
47
48 * compile.texi (Byte-Code Objects): Add index entry.
49 (Disassembly): Add cross-references.
50
512013-03-23 Eli Zaretskii <eliz@gnu.org>
52
53 * frames.texi (Size Parameters): More accurate description of the
54 difference between 'fullboth' and 'maximized'. (Bug#13935)
55
562013-03-17 Christopher Schmidt <christopher@ch.ristopher.com>
57
58 * symbols.texi (Standard Properties): Document pure. (Bug#13823)
4 59
52013-03-16 Glenn Morris <rgm@gnu.org> 602013-03-16 Glenn Morris <rgm@gnu.org>
6 61
7 * Version 24.3 released. 62 * elisp.texi: Add some stuff specific to www.gnu.org.
63
82013-03-11 Teodor Zlatanov <tzz@lifelogs.com> 642013-03-11 Teodor Zlatanov <tzz@lifelogs.com>
9 65
10 * control.texi (Pattern matching case statement): Fix typo. 66 * control.texi (Pattern matching case statement): Fix typo.
@@ -2005,8 +2061,8 @@
2005 2061
20062012-02-04 Chong Yidong <cyd@gnu.org> 20622012-02-04 Chong Yidong <cyd@gnu.org>
2007 2063
2008 * functions.texi (What Is a Function): Add closures. Mention 2064 * functions.texi (What Is a Function): Add closures.
2009 "return value" terminology. Add xref for command-execute. 2065 Mention "return value" terminology. Add xref for command-execute.
2010 Remove unused "keystroke command" terminology. 2066 Remove unused "keystroke command" terminology.
2011 (Lambda Expressions): Give a different example than in the 2067 (Lambda Expressions): Give a different example than in the
2012 following subsection. Add xref to Anonymous Functions. 2068 following subsection. Add xref to Anonymous Functions.
@@ -11553,7 +11609,7 @@
11553 11609
115542002-05-13 Kim F. Storm <storm@cua.dk> 116102002-05-13 Kim F. Storm <storm@cua.dk>
11555 11611
11556 * variables.texi (Intro to Buffer-Local): Updated warning and 11612 * variables.texi (Intro to Buffer-Local): Update warning and
11557 example relating to changing buffer inside let. 11613 example relating to changing buffer inside let.
11558 11614
115592002-03-10 Jan Djärv <jan.h.d@swipnet.se> 116152002-03-10 Jan Djärv <jan.h.d@swipnet.se>
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index d60ffebae70..522a88da61e 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -514,6 +514,7 @@ one you intend to suppress.
514@section Byte-Code Function Objects 514@section Byte-Code Function Objects
515@cindex compiled function 515@cindex compiled function
516@cindex byte-code function 516@cindex byte-code function
517@cindex byte-code object
517 518
518 Byte-compiled functions have a special data type: they are 519 Byte-compiled functions have a special data type: they are
519@dfn{byte-code function objects}. Whenever such an object appears as 520@dfn{byte-code function objects}. Whenever such an object appears as
@@ -606,8 +607,9 @@ name of an existing buffer. Then the output goes there, at point, and
606point is left before the output. 607point is left before the output.
607 608
608The argument @var{object} can be a function name, a lambda expression 609The argument @var{object} can be a function name, a lambda expression
609or a byte-code object. If it is a lambda expression, @code{disassemble} 610(@pxref{Lambda Expressions}), or a byte-code object (@pxref{Byte-Code
610compiles it and disassembles the resulting compiled code. 611Objects}). If it is a lambda expression, @code{disassemble} compiles
612it and disassembles the resulting compiled code.
611@end deffn 613@end deffn
612 614
613 Here are two examples of using the @code{disassemble} function. We 615 Here are two examples of using the @code{disassemble} function. We
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index eae6af9969d..4adcfdf8f4f 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -1510,31 +1510,31 @@ of the symbol serve as defaults for the properties of the overlay.
1510 1510
1511@item face 1511@item face
1512@kindex face @r{(overlay property)} 1512@kindex face @r{(overlay property)}
1513This property controls the way text is displayed---for example, which 1513This property controls the appearance of the text (@pxref{Faces}).
1514font and which colors. @xref{Faces}, for more information. 1514The value of the property can be the following:
1515
1516In the simplest case, the value is a face name. It can also be a list;
1517then each element can be any of these possibilities:
1518 1515
1519@itemize @bullet 1516@itemize @bullet
1520@item 1517@item
1521A face name (a symbol or string). 1518A face name (a symbol or string).
1522 1519
1523@item 1520@item
1524A property list of face attributes. This has the form (@var{keyword} 1521An anonymous face: a property list of the form @code{(@var{keyword}
1525@var{value} @dots{}), where each @var{keyword} is a face attribute 1522@var{value} @dots{})}, where each @var{keyword} is a face attribute
1526name and @var{value} is a meaningful value for that attribute. With 1523name and @var{value} is a value for that attribute.
1527this feature, you do not need to create a face each time you want to
1528specify a particular attribute for certain text. @xref{Face
1529Attributes}.
1530 1524
1531@item 1525@item
1532A cons cell, of the form @code{(foreground-color . @var{color-name})} 1526A list of faces. Each list element should be either a face name or an
1533or @code{(background-color . @var{color-name})}. These elements 1527anonymous face. This specifies a face which is an aggregate of the
1534specify just the foreground color or just the background color. 1528attributes of each of the listed faces. Faces occurring earlier in
1529the list have higher priority.
1535 1530
1536@code{(foreground-color . @var{color-name})} has the same effect as 1531@item
1537@code{(:foreground @var{color-name})}; likewise for the background. 1532A cons cell of the form @code{(foreground-color . @var{color-name})}
1533or @code{(background-color . @var{color-name})}. This specifies the
1534foreground or background color, similar to @code{(:foreground
1535@var{color-name})} or @code{(:background @var{color-name})}. This
1536form is supported for backward compatibility only, and should be
1537avoided.
1538@end itemize 1538@end itemize
1539 1539
1540@item mouse-face 1540@item mouse-face
@@ -1901,44 +1901,39 @@ height.
1901@section Faces 1901@section Faces
1902@cindex faces 1902@cindex faces
1903 1903
1904 A @dfn{face} is a collection of graphical @dfn{attributes} for 1904 A @dfn{face} is a collection of graphical attributes for displaying
1905displaying text: font, foreground color, background color, optional 1905text: font, foreground color, background color, optional underlining,
1906underlining, etc. Faces control how Emacs displays text in buffers, 1906etc. Faces control how Emacs displays text in buffers, as well as
1907as well as other parts of the frame such as the mode line. 1907other parts of the frame such as the mode line.
1908 1908
1909@cindex anonymous face 1909@cindex anonymous face
1910 One way to represent a face is as a property list of attributes, 1910 One way to represent a face is as a property list of attributes,
1911like @code{(:foreground "red" :weight bold)}. For example, you can 1911like @code{(:foreground "red" :weight bold)}. Such a list is called
1912assign such an @dfn{anonymous face} as the value of the @code{face} 1912an @dfn{anonymous face}. For example, you can assign an anonymous
1913text property; this causes Emacs to display the underlying text with 1913face as the value of the @code{face} text property, and Emacs will
1914the specified attributes. @xref{Special Properties}. 1914display the underlying text with the specified attributes.
1915@xref{Special Properties}.
1915 1916
1916@cindex face name 1917@cindex face name
1917 More commonly, a face is referred to via a @dfn{face name}: a Lisp 1918 More commonly, a face is referred to via a @dfn{face name}: a Lisp
1918symbol which is associated with a set of face attributes. Named faces 1919symbol associated with a set of face attributes@footnote{For backward
1919are defined using the @code{defface} macro (@pxref{Defining Faces}). 1920compatibility, you can also use a string to specify a face name; that
1920Emacs defines several standard named faces; @xref{Standard Faces,,, 1921is equivalent to a Lisp symbol with the same name.}. Named faces are
1921emacs, The GNU Emacs Manual}. 1922defined using the @code{defface} macro (@pxref{Defining Faces}).
1922 1923Emacs comes with several standard named faces (@pxref{Basic Faces}).
1923 Many parts of Emacs require named faces, and do not accept anonymous 1924
1924faces. These include the functions documented in @ref{Attribute 1925 Many parts of Emacs required named faces, and do not accept
1925Functions}, and the variable @code{font-lock-keywords} 1926anonymous faces. These include the functions documented in
1927@ref{Attribute Functions}, and the variable @code{font-lock-keywords}
1926(@pxref{Search-based Fontification}). Unless otherwise stated, we 1928(@pxref{Search-based Fontification}). Unless otherwise stated, we
1927will use the term @dfn{face} to refer only to named faces. 1929will use the term @dfn{face} to refer only to named faces.
1928 1930
1929 For backward compatibility, you can also use a string to specify a
1930face name; that is equivalent to a Lisp symbol with the same name.
1931
1932@defun facep object 1931@defun facep object
1933This function returns a non-@code{nil} value if @var{object} is a 1932This function returns a non-@code{nil} value if @var{object} is a
1934named face: a Lisp symbol or string which serves as a face name. 1933named face: a Lisp symbol or string which serves as a face name.
1935Otherwise, it returns @code{nil}. 1934Otherwise, it returns @code{nil}.
1936@end defun 1935@end defun
1937 1936
1938 By default, each face name corresponds to the same set of attributes
1939in all frames. But you can also assign a face name a special set of
1940attributes in one frame (@pxref{Attribute Functions}).
1941
1942@menu 1937@menu
1943* Face Attributes:: What is in a face? 1938* Face Attributes:: What is in a face?
1944* Defining Faces:: How to define a face. 1939* Defining Faces:: How to define a face.
@@ -2178,32 +2173,47 @@ suitable for use with @code{:stipple} (see above). It returns
2178@node Defining Faces 2173@node Defining Faces
2179@subsection Defining Faces 2174@subsection Defining Faces
2180 2175
2176@cindex face spec
2181 The usual way to define a face is through the @code{defface} macro. 2177 The usual way to define a face is through the @code{defface} macro.
2182This macro defines a face name, and associates that name with a set of 2178This macro associates a face name (a symbol) with a default @dfn{face
2183face attributes. It also sets up the face so that the user can 2179spec}. A face spec is a construct which specifies what attributes a
2184customize it via the Customize interface (@pxref{Customization}). 2180face should have on any given terminal; for example, a face spec might
2181specify one foreground color on high-color terminals, and a different
2182foreground color on low-color terminals.
2183
2184 People are sometimes tempted to create a variable whose value is a
2185face name. In the vast majority of cases, this is not necessary; the
2186usual procedure is to define a face with @code{defface}, and then use
2187its name directly.
2185 2188
2186@defmac defface face spec doc [keyword value]@dots{} 2189@defmac defface face spec doc [keyword value]@dots{}
2187This macro declares @var{face} as a customizable face whose default 2190This macro declares @var{face} as a named face whose default face spec
2188attributes are given by @var{spec}. You should not quote the symbol 2191is given by @var{spec}. You should not quote the symbol @var{face},
2189@var{face}, and it should not end in @samp{-face} (that would be 2192and it should not end in @samp{-face} (that would be redundant). The
2190redundant). The argument @var{doc} is a documentation string for the 2193argument @var{doc} is a documentation string for the face. The
2191face. The additional @var{keyword} arguments have the same meanings 2194additional @var{keyword} arguments have the same meanings as in
2192as in @code{defgroup} and @code{defcustom} (@pxref{Common Keywords}). 2195@code{defgroup} and @code{defcustom} (@pxref{Common Keywords}).
2193 2196
2194When @code{defface} executes, it defines the face according to 2197If @var{face} already has a default face spec, this macro does
2195@var{spec}, then uses any customizations that were read from the 2198nothing.
2196init file (@pxref{Init File}) to override that specification. 2199
2197 2200The default face spec determines @var{face}'s appearance when no
2198When you evaluate a @code{defface} form with @kbd{C-M-x} in Emacs 2201customizations are in effect (@pxref{Customization}). If @var{face}
2199Lisp mode (@code{eval-defun}), a special feature of @code{eval-defun} 2202has already been customized (via Custom themes or via customizations
2200overrides any customizations of the face. This way, the face reflects 2203read from the init file), its appearance is determined by the custom
2201exactly what the @code{defface} says. 2204face spec(s), which override the default face spec @var{spec}.
2202 2205However, if the customizations are subsequently removed, the
2203@cindex face specification 2206appearance of @var{face} will again be determined by its default face
2204The @var{spec} argument is a @dfn{face specification}, which states 2207spec.
2205how the face should appear on different kinds of terminals. It should 2208
2206be an alist whose elements each have the form 2209As an exception, if you evaluate a @code{defface} form with
2210@kbd{C-M-x} in Emacs Lisp mode (@code{eval-defun}), a special feature
2211of @code{eval-defun} overrides any custom face specs on the face,
2212causing the face to reflect exactly what the @code{defface} says.
2213
2214The @var{spec} argument is a @dfn{face spec}, which states how the
2215face should appear on different kinds of terminals. It should be an
2216alist whose elements each have the form
2207 2217
2208@example 2218@example
2209(@var{display} . @var{plist}) 2219(@var{display} . @var{plist})
@@ -2275,7 +2285,8 @@ terminal must match one of the @var{value}s specified for it in
2275@end table 2285@end table
2276@end defmac 2286@end defmac
2277 2287
2278 Here's how the standard face @code{highlight} is defined: 2288 For example, here's the definition of the standard face
2289@code{highlight}:
2279 2290
2280@example 2291@example
2281(defface highlight 2292(defface highlight
@@ -2294,65 +2305,56 @@ terminal must match one of the @var{value}s specified for it in
2294 :group 'basic-faces) 2305 :group 'basic-faces)
2295@end example 2306@end example
2296 2307
2297 Internally, Emacs stores the face's default specification in its 2308 Internally, Emacs stores each face's default spec in its
2298@code{face-defface-spec} symbol property (@pxref{Symbol Properties}). 2309@code{face-defface-spec} symbol property (@pxref{Symbol Properties}).
2299The @code{saved-face} property stores the face specification saved by 2310The @code{saved-face} property stores any face spec saved by the user
2300the user, using the customization buffer; the @code{customized-face} 2311using the customization buffer; the @code{customized-face} property
2301property stores the face specification customized for the current 2312stores the face spec customized for the current session, but not
2302session, but not saved; and the @code{theme-face} property stores an 2313saved; and the @code{theme-face} property stores an alist associating
2303alist associating the active customization settings and Custom themes 2314the active customization settings and Custom themes with the face
2304with their specifications for that face. The face's documentation 2315specs for that face. The face's documentation string is stored in the
2305string is stored in the @code{face-documentation} property. But 2316@code{face-documentation} property.
2306normally you should not try to set any of these properties directly. 2317
2307@xref{Applying Customizations}, for the @code{custom-set-faces} 2318 Normally, a face is declared just once, using @code{defface}, and
2308function, which is used to apply customized face settings. 2319any further changes to its appearance are applied using the Customize
2309 2320framework (e.g., via the Customize user interface or via the
2310 People are sometimes tempted to create variables whose values 2321@code{custom-set-faces} function; @pxref{Applying Customizations}), or
2311specify a face to use. In the vast majority of cases, this is not 2322by face remapping (@pxref{Face Remapping}). In the rare event that
2312necessary; it is preferable to simply use faces directly. 2323you need to change a face spec directly from Lisp, you can use the
2324@code{face-spec-set} function.
2325
2326@defun face-spec-set face spec &optional spec-type
2327This function applies @var{spec} as a face spec for @code{face}.
2328@var{spec} should be a face spec, as described in the above
2329documentation for @code{defface}.
2330
2331@cindex override spec @r{(for a face)}
2332The argument @var{spec-type} determines which spec to set. If it is
2333@code{nil} or @code{face-override-spec}, this function sets the
2334@dfn{override spec}, which overrides over all other face specs on
2335@var{face}. If it is @code{face-defface-spec}, this function sets the
2336default face spec (the same one set by @code{defface}). If it is
2337@code{reset}, this function clears out all customization specs and
2338override specs from @var{face} (in this case, the value of @var{spec}
2339is ignored). Any other value of @var{spec-type} is reserved for
2340internal use.
2341@end defun
2313 2342
2314@node Attribute Functions 2343@node Attribute Functions
2315@subsection Face Attribute Functions 2344@subsection Face Attribute Functions
2316 2345
2317 This section describes the functions for accessing and modifying the 2346 This section describes functions for directly accessing and
2318attributes of an existing named face. 2347modifying the attributes of a named face.
2319
2320@defun set-face-attribute face frame &rest arguments
2321This function sets one or more attributes of @var{face} for
2322@var{frame}. The attributes you specify this way override whatever
2323the @code{defface} says.
2324
2325The extra arguments @var{arguments} specify the attributes to set, and
2326the values for them. They should consist of alternating attribute
2327names (such as @code{:family} or @code{:underline}) and values. Thus,
2328
2329@example
2330(set-face-attribute 'foo nil
2331 :width 'extended
2332 :weight 'bold)
2333@end example
2334
2335@noindent
2336sets the attribute @code{:width} to @code{extended} and the attribute
2337@code{:weight} to @code{bold}.
2338
2339If @var{frame} is @code{t}, this function sets the default attributes
2340for new frames. Default attribute values specified this way override
2341the @code{defface} for newly created frames.
2342
2343If @var{frame} is @code{nil}, this function sets the attributes for
2344all existing frames, and the default for new frames.
2345@end defun
2346 2348
2347@defun face-attribute face attribute &optional frame inherit 2349@defun face-attribute face attribute &optional frame inherit
2348This returns the value of the @var{attribute} attribute of @var{face} 2350This function returns the value of the @var{attribute} attribute for
2349on @var{frame}. If @var{frame} is @code{nil}, that means the selected 2351@var{face} on @var{frame}.
2350frame (@pxref{Input Focus}).
2351 2352
2352If @var{frame} is @code{t}, this returns whatever new-frames default 2353If @var{frame} is @code{nil}, that means the selected frame
2353value you previously specified with @code{set-face-attribute} for the 2354(@pxref{Input Focus}). If @var{frame} is @code{t}, this function
2354@var{attribute} attribute of @var{face}. If you have not specified 2355returns the value of the specified attribute for newly-created frames
2355one, it returns @code{nil}. 2356(this is normally @code{unspecified}, unless you have specified some
2357value using @code{set-face-attribute}; see below).
2356 2358
2357If @var{inherit} is @code{nil}, only attributes directly defined by 2359If @var{inherit} is @code{nil}, only attributes directly defined by
2358@var{face} are considered, so the return value may be 2360@var{face} are considered, so the return value may be
@@ -2411,6 +2413,36 @@ If @var{value1} is a relative value for the face attribute
2411face attribute @var{attribute}, returns @var{value1} unchanged. 2413face attribute @var{attribute}, returns @var{value1} unchanged.
2412@end defun 2414@end defun
2413 2415
2416 Normally, Emacs uses the face specs of each face to automatically
2417calculate its attributes on each frame (@pxref{Defining Faces}). The
2418function @code{set-face-attribute} can override this calculation by
2419directly assigning attributes to a face, either on a specific frame or
2420for all frames. This function is mostly intended for internal usage.
2421
2422@defun set-face-attribute face frame &rest arguments
2423This function sets one or more attributes of @var{face} for
2424@var{frame}. The attributes specifies in this way override the face
2425spec(s) belonging to @var{face}.
2426
2427The extra arguments @var{arguments} specify the attributes to set, and
2428the values for them. They should consist of alternating attribute
2429names (such as @code{:family} or @code{:underline}) and values. Thus,
2430
2431@example
2432(set-face-attribute 'foo nil :weight 'bold :slant 'italic)
2433@end example
2434
2435@noindent
2436sets the attribute @code{:weight} to @code{bold} and the attribute
2437@code{:slant} to @code{italic}.
2438
2439
2440If @var{frame} is @code{t}, this function sets the default attributes
2441for newly created frames. If @var{frame} is @code{nil}, this function
2442sets the attributes for all existing frames, as well as for newly
2443created frames.
2444@end defun
2445
2414 The following commands and functions mostly provide compatibility 2446 The following commands and functions mostly provide compatibility
2415with old versions of Emacs. They work by calling 2447with old versions of Emacs. They work by calling
2416@code{set-face-attribute}. Values of @code{t} and @code{nil} for 2448@code{set-face-attribute}. Values of @code{t} and @code{nil} for
@@ -2457,16 +2489,17 @@ This sets the @code{:inverse-video} attribute of @var{face} to
2457This swaps the foreground and background colors of face @var{face}. 2489This swaps the foreground and background colors of face @var{face}.
2458@end deffn 2490@end deffn
2459 2491
2460 The following functions examine the attributes of a face. If you 2492 The following functions examine the attributes of a face. They
2461don't specify @var{frame}, they refer to the selected frame; @code{t} 2493mostly provide compatibility with old versions of Emacs. If you don't
2462refers to the default data for new frames. They return the symbol 2494specify @var{frame}, they refer to the selected frame; @code{t} refers
2463@code{unspecified} if the face doesn't define any value for that 2495to the default data for new frames. They return @code{unspecified} if
2464attribute. If @var{inherit} is @code{nil}, only an attribute directly 2496the face doesn't define any value for that attribute. If
2465defined by the face is returned. If @var{inherit} is non-@code{nil}, 2497@var{inherit} is @code{nil}, only an attribute directly defined by the
2466any faces specified by its @code{:inherit} attribute are considered as 2498face is returned. If @var{inherit} is non-@code{nil}, any faces
2467well, and if @var{inherit} is a face or a list of faces, then they are 2499specified by its @code{:inherit} attribute are considered as well, and
2468also considered, until a specified attribute is found. To ensure that 2500if @var{inherit} is a face or a list of faces, then they are also
2469the return value is always specified, use a value of @code{default} for 2501considered, until a specified attribute is found. To ensure that the
2502return value is always specified, use a value of @code{default} for
2470@var{inherit}. 2503@var{inherit}.
2471 2504
2472@defun face-font face &optional frame 2505@defun face-font face &optional frame
@@ -2576,13 +2609,13 @@ The value of this variable is an alist whose elements have the form
2576any text having the face @var{face} with @var{remapping}, rather than 2609any text having the face @var{face} with @var{remapping}, rather than
2577the ordinary definition of @var{face}. 2610the ordinary definition of @var{face}.
2578 2611
2579@var{remapping} may be any face specification suitable for a 2612@var{remapping} may be any face spec suitable for a @code{face} text
2580@code{face} text property: either a face (i.e., a face name or a 2613property: either a face (i.e., a face name or a property list of
2581property list of attribute/value pairs), or a list of faces. For 2614attribute/value pairs), or a list of faces. For details, see the
2582details, see the description of the @code{face} text property in 2615description of the @code{face} text property in @ref{Special
2583@ref{Special Properties}. @var{remapping} serves as the complete 2616Properties}. @var{remapping} serves as the complete specification for
2584specification for the remapped face---it replaces the normal 2617the remapped face---it replaces the normal definition of @var{face},
2585definition of @var{face}, instead of modifying it. 2618instead of modifying it.
2586 2619
2587If @code{face-remapping-alist} is buffer-local, its local value takes 2620If @code{face-remapping-alist} is buffer-local, its local value takes
2588effect only within that buffer. 2621effect only within that buffer.
@@ -2629,7 +2662,7 @@ and @code{face-remap-reset-base} functions; it is intended for major
2629modes to remap faces in the buffers they control. 2662modes to remap faces in the buffers they control.
2630 2663
2631@defun face-remap-add-relative face &rest specs 2664@defun face-remap-add-relative face &rest specs
2632This functions adds the face specifications in @var{specs} as relative 2665This functions adds the face spec in @var{specs} as relative
2633remappings for face @var{face} in the current buffer. The remaining 2666remappings for face @var{face} in the current buffer. The remaining
2634arguments, @var{specs}, should form either a list of face names, or a 2667arguments, @var{specs}, should form either a list of face names, or a
2635property list of attribute/value pairs. 2668property list of attribute/value pairs.
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index 7d56d38ffad..01d2d1d6c45 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -632,8 +632,9 @@ possible. The value @code{fullboth} specifies that both the width and
632the height shall be set to the size of the screen. The value 632the height shall be set to the size of the screen. The value
633@code{maximized} specifies that the frame shall be maximized. The 633@code{maximized} specifies that the frame shall be maximized. The
634difference between @code{maximized} and @code{fullboth} is that the 634difference between @code{maximized} and @code{fullboth} is that the
635former still has window manager decorations while the latter really 635former can still be resized by dragging window manager decorations
636covers the whole screen. 636with the mouse, while the latter really covers the whole screen and
637does not allow resizing by mouse dragging.
637@end table 638@end table
638 639
639@node Layout Parameters 640@node Layout Parameters
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 999923f5b84..7768c147827 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -196,9 +196,8 @@ an example:
196@end example 196@end example
197 197
198@noindent 198@noindent
199In Emacs Lisp, such a list is valid as an expression---it evaluates to 199In Emacs Lisp, such a list is a valid expression which evaluates to
200itself. But its main use is not to be evaluated as an expression, but 200a function object.
201to be called as a function.
202 201
203 A lambda expression, by itself, has no name; it is an @dfn{anonymous 202 A lambda expression, by itself, has no name; it is an @dfn{anonymous
204function}. Although lambda expressions can be used this way 203function}. Although lambda expressions can be used this way
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index 9fe069b84d0..aa77ba1f36d 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -93,13 +93,12 @@ When you define a variable with a @code{defvar} or related form
93(@pxref{Defining Variables}), the documentation is stored in the 93(@pxref{Defining Variables}), the documentation is stored in the
94variable's @code{variable-documentation} property. 94variable's @code{variable-documentation} property.
95 95
96@cindex @file{DOC-@var{version}} (documentation) file 96@cindex @file{DOC} (documentation) file
97@item 97@item
98To save memory, the documentation for preloaded functions and 98To save memory, the documentation for preloaded functions and
99variables (including primitive functions and autoloaded functions) is 99variables (including primitive functions and autoloaded functions) is
100not kept in memory, but in the file 100not kept in memory, but in the file
101@file{emacs/etc/DOC-@var{version}}, where @var{version} is the Emacs 101@file{emacs/etc/DOC}).
102version number (@pxref{Version Info}).
103 102
104@item 103@item
105When a function or variable is loaded from a byte-compiled file during 104When a function or variable is loaded from a byte-compiled file during
@@ -126,7 +125,7 @@ customization groups (but for function documentation, use the
126@code{documentation} command, below). 125@code{documentation} command, below).
127 126
128If the value recorded in the property list refers to a documentation 127If the value recorded in the property list refers to a documentation
129string stored in a @file{DOC-@var{version}} file or a byte-compiled 128string stored in a @file{DOC} file or a byte-compiled
130file, it looks up that string and returns it. If the property value 129file, it looks up that string and returns it. If the property value
131isn't @code{nil}, isn't a string, and doesn't refer to text in a file, 130isn't @code{nil}, isn't a string, and doesn't refer to text in a file,
132then it is evaluated as a Lisp expression to obtain a string. 131then it is evaluated as a Lisp expression to obtain a string.
@@ -296,12 +295,12 @@ memory in the function definitions and variable property lists.
296Emacs reads the file @var{filename} from the @file{emacs/etc} directory. 295Emacs reads the file @var{filename} from the @file{emacs/etc} directory.
297When the dumped Emacs is later executed, the same file will be looked 296When the dumped Emacs is later executed, the same file will be looked
298for in the directory @code{doc-directory}. Usually @var{filename} is 297for in the directory @code{doc-directory}. Usually @var{filename} is
299@code{"DOC-@var{version}"}. 298@code{"DOC"}.
300@end defun 299@end defun
301 300
302@defvar doc-directory 301@defvar doc-directory
303This variable holds the name of the directory which should contain the 302This variable holds the name of the directory which should contain the
304file @code{"DOC-@var{version}"} that contains documentation strings for 303file @code{"DOC"} that contains documentation strings for
305built-in and preloaded functions and variables. 304built-in and preloaded functions and variables.
306 305
307In most cases, this is the same as @code{data-directory}. They may be 306In most cases, this is the same as @code{data-directory}. They may be
diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi
index 3269776b626..06375c1e18e 100644
--- a/doc/lispref/internals.texi
+++ b/doc/lispref/internals.texi
@@ -661,15 +661,25 @@ equivalent of @code{&rest}). Both @code{UNEVALLED} and @code{MANY} are
661macros. If @var{max} is a number, it must be more than @var{min} but 661macros. If @var{max} is a number, it must be more than @var{min} but
662less than 8. 662less than 8.
663 663
664@cindex interactive specification in primitives
664@item interactive 665@item interactive
665This is an interactive specification, a string such as might be used as 666This is an interactive specification, a string such as might be used
666the argument of @code{interactive} in a Lisp function. In the case of 667as the argument of @code{interactive} in a Lisp function. In the case
667@code{or}, it is 0 (a null pointer), indicating that @code{or} cannot be 668of @code{or}, it is 0 (a null pointer), indicating that @code{or}
668called interactively. A value of @code{""} indicates a function that 669cannot be called interactively. A value of @code{""} indicates a
669should receive no arguments when called interactively. If the value 670function that should receive no arguments when called interactively.
670begins with a @samp{(}, the string is evaluated as a Lisp form. 671If the value begins with a @samp{"(}, the string is evaluated as a
671For examples of the last two forms, see @code{widen} and 672Lisp form. For example:
672@code{narrow-to-region} in @file{editfns.c}. 673
674@example
675@group
676DEFUN ("foo", Ffoo, Sfoo, 0, UNEVALLED,
677 "(list (read-char-by-name \"Insert character: \")\
678 (prefix-numeric-value current-prefix-arg)\
679 t))",
680 doc: /* @dots{} /*)
681@end group
682@end example
673 683
674@item doc 684@item doc
675This is the documentation string. It uses C comment syntax rather 685This is the documentation string. It uses C comment syntax rather
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index 51a060bc6c6..5c92307f7d5 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -483,7 +483,7 @@ For example,
483@noindent 483@noindent
484In this case, @code{"prolog"} is the name of the file to load, 169681 484In this case, @code{"prolog"} is the name of the file to load, 169681
485refers to the documentation string in the 485refers to the documentation string in the
486@file{emacs/etc/DOC-@var{version}} file (@pxref{Documentation Basics}), 486@file{emacs/etc/DOC} file (@pxref{Documentation Basics}),
487@code{t} means the function is interactive, and @code{nil} that it is 487@code{t} means the function is interactive, and @code{nil} that it is
488not a macro or a keymap. 488not a macro or a keymap.
489@end defun 489@end defun
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index 87d4051d6f0..386d5bdde4c 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -589,10 +589,8 @@ through @samp{f} and @samp{A} through @samp{F}.
589 589
590 For the most part, @samp{\} followed by any character matches only 590 For the most part, @samp{\} followed by any character matches only
591that character. However, there are several exceptions: certain 591that character. However, there are several exceptions: certain
592two-character sequences starting with @samp{\} that have special 592sequences starting with @samp{\} that have special meanings. Here is
593meanings. (The character after the @samp{\} in such a sequence is 593a table of the special @samp{\} constructs.
594always ordinary when used on its own.) Here is a table of the special
595@samp{\} constructs.
596 594
597@table @samp 595@table @samp
598@item \| 596@item \|
diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi
index 9f916549902..82dfa0f4917 100644
--- a/doc/lispref/symbols.texi
+++ b/doc/lispref/symbols.texi
@@ -539,8 +539,9 @@ deleted from the local value of a hook variable when changing major
539modes. @xref{Setting Hooks}. 539modes. @xref{Setting Hooks}.
540 540
541@item pure 541@item pure
542This property is used internally to mark certain named functions for 542If the value is non-@code{nil}, the named function is considered to be
543byte compiler optimization. Do not set it. 543side-effect free. Calls with constant arguments can be evaluated at
544compile time. This may shift run time errors to compile time.
544 545
545@item risky-local-variable 546@item risky-local-variable
546If the value is non-@code{nil}, the named variable is considered risky 547If the value is non-@code{nil}, the named variable is considered risky
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index c6cbfa5b3f8..6d5a39d887a 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -3008,27 +3008,31 @@ character.
3008@item face 3008@item face
3009@cindex face codes of text 3009@cindex face codes of text
3010@kindex face @r{(text property)} 3010@kindex face @r{(text property)}
3011The @code{face} property controls the appearance of the character, 3011The @code{face} property controls the appearance of the character
3012such as its font and color. @xref{Faces}. The value of the property 3012(@pxref{Faces}). The value of the property can be the following:
3013can be the following:
3014 3013
3015@itemize @bullet 3014@itemize @bullet
3016@item 3015@item
3017A face name (a symbol or string). 3016A face name (a symbol or string).
3018 3017
3019@item 3018@item
3020A property list of face attributes. This has the form (@var{keyword} 3019An anonymous face: a property list of the form @code{(@var{keyword}
3021@var{value} @dots{}), where each @var{keyword} is a face attribute 3020@var{value} @dots{})}, where each @var{keyword} is a face attribute
3022name and @var{value} is a meaningful value for that attribute. With 3021name and @var{value} is a value for that attribute.
3023this feature, you do not need to create a face each time you want to
3024specify a particular attribute for certain text.
3025 3022
3026@item 3023@item
3027A list of faces. This specifies a face which is an aggregate of the 3024A list of faces. Each list element should be either a face name or an
3025anonymous face. This specifies a face which is an aggregate of the
3028attributes of each of the listed faces. Faces occurring earlier in 3026attributes of each of the listed faces. Faces occurring earlier in
3029the list have higher priority. Each list element must have one of the 3027the list have higher priority.
3030two above forms (i.e., either a face name or a property list of face 3028
3031attributes). 3029@item
3030A cons cell of the form @code{(foreground-color . @var{color-name})}
3031or @code{(background-color . @var{color-name})}. This specifies the
3032foreground or background color, similar to @code{(:foreground
3033@var{color-name})} or @code{(:background @var{color-name})}. This
3034form is supported for backward compatibility only, and should be
3035avoided.
3032@end itemize 3036@end itemize
3033 3037
3034Font Lock mode (@pxref{Font Lock Mode}) works in most buffers by 3038Font Lock mode (@pxref{Font Lock Mode}) works in most buffers by
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index 4c443da3af8..c40ae408f7f 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -51,13 +51,15 @@ don't postpone it.
51 51
52@item 52@item
53You should choose a short word to distinguish your program from other 53You should choose a short word to distinguish your program from other
54Lisp programs. The names of all global variables, constants, and 54Lisp programs. The names of all global symbols in your program, that
55functions in your program should begin with that chosen prefix. 55is the names of variables, constants, and functions, should begin with
56Separate the prefix from the rest of the name with a hyphen, @samp{-}. 56that chosen prefix. Separate the prefix from the rest of the name
57This practice helps avoid name conflicts, since all global variables 57with a hyphen, @samp{-}. Use two hyphens if the symbol is not meant
58in Emacs Lisp share the same name space, and all functions share 58to be used by other packages. This practice helps avoid name
59another name space@footnote{The benefits of a Common Lisp-style 59conflicts, since all global variables in Emacs Lisp share the same
60package system are considered not to outweigh the costs.}. 60name space, and all functions share another name space@footnote{The
61benefits of a Common Lisp-style package system are considered not to
62outweigh the costs.}.
61 63
62Occasionally, for a command name intended for users to use, it is more 64Occasionally, for a command name intended for users to use, it is more
63convenient if some words come before the package's name prefix. And 65convenient if some words come before the package's name prefix. And
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index 792002add81..f2a4b3849dd 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -717,7 +717,7 @@ window.
717This section describes functions for creating a new window by 717This section describes functions for creating a new window by
718@dfn{splitting} an existing one. 718@dfn{splitting} an existing one.
719 719
720@deffn Command split-window &optional window size side 720@defun split-window &optional window size side
721This function creates a new live window next to the window 721This function creates a new live window next to the window
722@var{window}. If @var{window} is omitted or @code{nil}, it defaults 722@var{window}. If @var{window} is omitted or @code{nil}, it defaults
723to the selected window. That window is ``split'', and reduced in 723to the selected window. That window is ``split'', and reduced in
@@ -767,7 +767,7 @@ called with the arguments @var{window}, @var{size}, and @var{side}, in
767lieu of the usual action of @code{split-window}. Otherwise, this 767lieu of the usual action of @code{split-window}. Otherwise, this
768function obeys the @code{window-atom} or @code{window-side} window 768function obeys the @code{window-atom} or @code{window-side} window
769parameter, if any. @xref{Window Parameters}. 769parameter, if any. @xref{Window Parameters}.
770@end deffn 770@end defun
771 771
772 As an example, here is a sequence of @code{split-window} calls that 772 As an example, here is a sequence of @code{split-window} calls that
773yields the window configuration discussed in @ref{Windows and Frames}. 773yields the window configuration discussed in @ref{Windows and Frames}.
diff --git a/doc/man/ChangeLog b/doc/man/ChangeLog
index 8a2a90f7895..8b550dc4417 100644
--- a/doc/man/ChangeLog
+++ b/doc/man/ChangeLog
@@ -1,3 +1,7 @@
12013-04-20 Petr Hracek <phracek@redhat.com> (tiny change)
2
3 * emacs.1: Add some more command-line options. (Bug#14165)
4
12012-12-02 Kevin Ryde <user42@zip.com.au> 52012-12-02 Kevin Ryde <user42@zip.com.au>
2 6
3 * etags.1: Mention effect of --declarations in Lisp. 7 * etags.1: Mention effect of --declarations in Lisp.
diff --git a/doc/man/emacs.1 b/doc/man/emacs.1
index 3d0c5107adc..9149be2c523 100644
--- a/doc/man/emacs.1
+++ b/doc/man/emacs.1
@@ -79,12 +79,22 @@ Go to the specified
79and 79and
80.IR column . 80.IR column .
81.TP 81.TP
82.BI \-\-chdir " directory"
83Change to
84.IR directory .
85.TP
82.BR \-q ", " \-\-no\-init\-file 86.BR \-q ", " \-\-no\-init\-file
83Do not load an init file. 87Do not load an init file.
84.TP 88.TP
89.BR \-nl ", " \-\-no\-shared\-memory
90Do not use shared memory.
91.TP
85.B \-\-no\-site\-file 92.B \-\-no\-site\-file
86Do not load the site-wide startup file. 93Do not load the site-wide startup file.
87.TP 94.TP
95.BR \-nsl ", " \-\-no\-site\-lisp
96Do not add site-lisp directories to load-path.
97.TP
88.B \-\-no\-desktop 98.B \-\-no\-desktop
89Do not load a saved desktop. 99Do not load a saved desktop.
90.TP 100.TP
@@ -325,6 +335,9 @@ in iconified state.
325.BR \-nbc ", " \-\-no\-blinking\-cursor 335.BR \-nbc ", " \-\-no\-blinking\-cursor
326Disable blinking cursor. 336Disable blinking cursor.
327.TP 337.TP
338.BI \-\-parent-id " xid"
339Set parent window.
340.TP
328.BR \-nw ", " \-\-no\-window\-system 341.BR \-nw ", " \-\-no\-window\-system
329Tell 342Tell
330.I Emacs 343.I Emacs
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 45862f93f0c..8ee12718980 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,50 @@
12013-05-28 Xue Fuqiao <xfq.free@gmail.com>
2
3 * erc.texi (Special Features): ERC is being maintained within
4 Emacs now.
5
62013-05-25 Xue Fuqiao <xfq.free@gmail.com>
7
8 * flymake.texi: Changing from one space between sentences to two.
9
102013-05-04 Stefan Monnier <monnier@iro.umontreal.ca>
11
12 * cl.texi (Obsolete Macros): Describe replacements for `flet'
13 (bug#14293).
14
152013-04-16 Michael Albinus <michael.albinus@gmx.de>
16
17 * tramp.texi (Frequently Asked Questions): Precise, how to define
18 an own ControlPath.
19
202013-04-15 Michael Albinus <michael.albinus@gmx.de>
21
22 * tramp.texi (Frequently Asked Questions): New item for
23 ControlPath settings.
24
252013-03-31 Jay Belanger <jay.p.belanger@gmail.com>
26
27 * calc.texi: (Basic Operations on Units): Streamline some
28 descriptions.
29
302013-03-27 Aidan Gauland <aidalgol@no8wireless.co.nz>
31
32 * eshell.texi (Built-ins): Update manual to mention tramp module.
33
342013-03-18 Michael Albinus <michael.albinus@gmx.de>
35
36 * tramp.texi (Filename Syntax): Host names are not allowed to be
37 any method name, unless method name is specified explicitly.
38 Remove restriction on unibyte filenames.
39
40 * trampver.texi: Update release number.
41
422013-03-17 Paul Eggert <eggert@cs.ucla.edu>
43
44 doc: convert some TeX accents to UTF-8
45 * emacs-mime.texi (Interface Functions): Use 'ï' rather than
46 '@"{@dotless{i}}'.
47
12013-03-15 Michael Albinus <michael.albinus@gmx.de> 482013-03-15 Michael Albinus <michael.albinus@gmx.de>
2 49
3 Sync with Tramp 2.2.7. 50 Sync with Tramp 2.2.7.
@@ -2395,6 +2442,10 @@
2395 dired-add-entry, dired-initial-position, dired-clean-up-after-deletion, 2442 dired-add-entry, dired-initial-position, dired-clean-up-after-deletion,
2396 dired-read-shell-command, or dired-find-buffer-nocreate. 2443 dired-read-shell-command, or dired-find-buffer-nocreate.
2397 2444
24452013-02-18 Aidan Gauland <aidalgol@no8wireless.co.nz>
2446
2447 * eshell.texi (Input/Output): Document insert output redirection operator, >>>.
2448
23982011-02-18 Glenn Morris <rgm@gnu.org> 24492011-02-18 Glenn Morris <rgm@gnu.org>
2399 2450
2400 * dired-x.texi (Optional Installation File At Point): Simplify. 2451 * dired-x.texi (Optional Installation File At Point): Simplify.
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index 44462d1d5a8..b2b054ec1ea 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -27911,11 +27911,10 @@ prompt first for the old units which this value should be considered
27911to have, then for the new units. (If the value on the stack can be 27911to have, then for the new units. (If the value on the stack can be
27912simplified so that it doesn't contain any units, like @samp{ft/in} can 27912simplified so that it doesn't contain any units, like @samp{ft/in} can
27913be simplified to 12, then @kbd{u c} will still prompt for both old 27913be simplified to 12, then @kbd{u c} will still prompt for both old
27914units and new units. This can be disabled; @pxref{Customizing Calc}.) 27914units and new units. Assuming the old and new units you give are
27915Assuming the old and new units you give are consistent with each 27915consistent with each other, the result also will not contain any
27916other, the result also will not contain any units. For example, 27916units. For example, @kbd{@w{u c} cm @key{RET} in @key{RET}} converts
27917@kbd{@w{u c} cm @key{RET} in @key{RET}} converts the number 2 on the 27917the number 2 on the stack to 5.08.
27918stack to 5.08.
27919 27918
27920@kindex u b 27919@kindex u b
27921@pindex calc-base-units 27920@pindex calc-base-units
@@ -35694,17 +35693,6 @@ have different dimensions. The default value of @code{calc-ensure-consistent-uni
35694is @code{nil}. 35693is @code{nil}.
35695@end defvar 35694@end defvar
35696 35695
35697@defvar calc-allow-units-as-numbers
35698When converting units, the variable @code{calc-allow-units-as-numbers}
35699determines whether or not values which can be simplified so that
35700they don't contain units (such as @samp{ft/in} can be simplified to 12)
35701can be regarded as not containing units. If
35702@code{calc-allow-units-as-numbers} is non-@code{nil}, then @kbd{u c}
35703will prompt for both old units and new units when converting an expression
35704like @samp{ft/in}, otherwise @kbd{u c} will only prompt for the new units.
35705The default value of @code{calc-allow-units-as-numbers} is @code{t}.
35706@end defvar
35707
35708@defvar calc-undo-length 35696@defvar calc-undo-length
35709The variable @code{calc-undo-length} determines the number of undo 35697The variable @code{calc-undo-length} determines the number of undo
35710steps that Calc will keep track of when @code{calc-quit} is called. 35698steps that Calc will keep track of when @code{calc-quit} is called.
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index 83df411cb23..90f8a258d23 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -4850,10 +4850,27 @@ generated directly inside Emacs will not be caught since they make
4850direct C-language calls to the message routines rather than going 4850direct C-language calls to the message routines rather than going
4851through the Lisp @code{message} function. 4851through the Lisp @code{message} function.
4852 4852
4853For those cases where the dynamic scoping of @code{flet} is desired,
4854@code{cl-flet} is clearly not a substitute. The most direct replacement would
4855be instead to use @code{cl-letf} to temporarily rebind @code{(symbol-function
4856'@var{fun})}. But in most cases, a better substitute is to use an advice, such
4857as:
4858
4859@example
4860(defvar my-fun-advice-enable nil)
4861(add-advice '@var{fun} :around
4862 (lambda (orig &rest args)
4863 (if my-fun-advice-enable (do-something)
4864 (apply orig args))))
4865@end example
4866
4867so that you can then replace the @code{flet} with a simple dynamically scoped
4868binding of @code{my-fun-advice-enable}.
4869
4853@c Bug#411. 4870@c Bug#411.
4854Note that many primitives (e.g., @code{+}) have special byte-compile 4871Note that many primitives (e.g., @code{+}) have special byte-compile handling.
4855handling. Attempts to redefine such functions using @code{flet} will 4872Attempts to redefine such functions using @code{flet}, @code{cl-letf}, or an
4856fail if byte-compiled. 4873advice will fail when byte-compiled.
4857@c Or cl-flet. 4874@c Or cl-flet.
4858@c In such cases, use @code{labels} instead. 4875@c In such cases, use @code{labels} instead.
4859@end defmac 4876@end defmac
diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi
index 5f377e57725..cbb78af9d59 100644
--- a/doc/misc/emacs-mime.texi
+++ b/doc/misc/emacs-mime.texi
@@ -1221,7 +1221,7 @@ Return the value of the field under point.
1221@item mail-encode-encoded-word-region 1221@item mail-encode-encoded-word-region
1222@findex mail-encode-encoded-word-region 1222@findex mail-encode-encoded-word-region
1223Encode the non-@acronym{ASCII} words in the region. For instance, 1223Encode the non-@acronym{ASCII} words in the region. For instance,
1224@samp{Na@"{@dotless{i}}ve} is encoded as @samp{=?iso-8859-1?q?Na=EFve?=}. 1224@samp{Naïve} is encoded as @samp{=?iso-8859-1?q?Na=EFve?=}.
1225 1225
1226@item mail-encode-encoded-word-buffer 1226@item mail-encode-encoded-word-buffer
1227@findex mail-encode-encoded-word-buffer 1227@findex mail-encode-encoded-word-buffer
@@ -1234,7 +1234,7 @@ Encode the words that need encoding in a string, and return the result.
1234 1234
1235@example 1235@example
1236(mail-encode-encoded-word-string 1236(mail-encode-encoded-word-string
1237 "This is na@"{@dotless{i}}ve, baby") 1237 "This is naïve, baby")
1238@result{} "This is =?iso-8859-1?q?na=EFve,?= baby" 1238@result{} "This is =?iso-8859-1?q?na=EFve,?= baby"
1239@end example 1239@end example
1240 1240
@@ -1249,7 +1249,7 @@ Decode the encoded words in the string and return the result.
1249@example 1249@example
1250(mail-decode-encoded-word-string 1250(mail-decode-encoded-word-string
1251 "This is =?iso-8859-1?q?na=EFve,?= baby") 1251 "This is =?iso-8859-1?q?na=EFve,?= baby")
1252@result{} "This is na@"{@dotless{i}}ve, baby" 1252@result{} "This is naïve, baby"
1253@end example 1253@end example
1254 1254
1255@end table 1255@end table
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi
index cc61cd1ab5b..33686fd79fd 100644
--- a/doc/misc/erc.texi
+++ b/doc/misc/erc.texi
@@ -234,9 +234,9 @@ forwards.
234 234
235Different channels and servers may have different language encodings. 235Different channels and servers may have different language encodings.
236 236
237In addition, it is possible to translate the messages that ERC uses into 237In addition, it is possible to translate the messages that ERC uses
238multiple languages. Please contact the developers of ERC at 238into multiple languages. Please contact the developers of Emacs at
239@email{erc-discuss@@gnu.org} if you are interested in helping with the 239@email{emacs-devel@@gnu.org} if you are interested in helping with the
240translation effort. 240translation effort.
241 241
242@item user scripting 242@item user scripting
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index ec01f731daf..dca95da2d10 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -460,8 +460,9 @@ With @samp{cd -42}, you can access the directory stack by number.
460@cmindex su 460@cmindex su
461@itemx sudo 461@itemx sudo
462@cmindex sudo 462@cmindex sudo
463Uses TRAMP's @command{su} or @command{sudo} method to run a command via 463Uses TRAMP's @command{su} or @command{sudo} method @pxref{Inline methods, , , tramp}
464@command{su} or @command{sudo}. 464to run a command via @command{su} or @command{sudo}. These commands
465are in the eshell-tramp module, which is disabled by default.
465 466
466@end table 467@end table
467 468
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi
index 5dedda16ee1..f88bd95008c 100644
--- a/doc/misc/flymake.texi
+++ b/doc/misc/flymake.texi
@@ -63,13 +63,13 @@ modify this GNU manual.''
63@cindex Overview of Flymake 63@cindex Overview of Flymake
64 64
65Flymake is a universal on-the-fly syntax checker implemented as an 65Flymake is a universal on-the-fly syntax checker implemented as an
66Emacs minor mode. Flymake runs the pre-configured syntax check tool 66Emacs minor mode. Flymake runs the pre-configured syntax check tool
67(compiler for C++ files, @code{perl} for perl files, etc.)@: in the 67(compiler for C++ files, @code{perl} for perl files, etc.)@: in the
68background, passing it a temporary copy of the current buffer, and 68background, passing it a temporary copy of the current buffer, and
69parses the output for known error/warning message patterns. Flymake 69parses the output for known error/warning message patterns. Flymake
70then highlights erroneous lines (i.e., lines for which at least one 70then highlights erroneous lines (i.e., lines for which at least one
71error or warning has been reported by the syntax check tool), and 71error or warning has been reported by the syntax check tool), and
72displays an overall buffer status in the mode line. Status information 72displays an overall buffer status in the mode line. Status information
73displayed by Flymake contains total number of errors and warnings 73displayed by Flymake contains total number of errors and warnings
74reported for the buffer during the last syntax check. 74reported for the buffer during the last syntax check.
75 75
@@ -79,14 +79,14 @@ line, respectively.
79 79
80Calling @code{flymake-display-err-menu-for-current-line} will popup a 80Calling @code{flymake-display-err-menu-for-current-line} will popup a
81menu containing error messages reported by the syntax check tool for 81menu containing error messages reported by the syntax check tool for
82the current line. Errors/warnings belonging to another file, such as a 82the current line. Errors/warnings belonging to another file, such as a
83@code{.h} header file included by a @code{.c} file, are shown in the 83@code{.h} header file included by a @code{.c} file, are shown in the
84current buffer as belonging to the first line. Menu items for such 84current buffer as belonging to the first line. Menu items for such
85messages also contain a filename and a line number. Selecting such a 85messages also contain a filename and a line number. Selecting such a
86menu item will automatically open the file and jump to the line with 86menu item will automatically open the file and jump to the line with
87error. 87error.
88 88
89Syntax check is done 'on-the-fly'. It is started whenever 89Syntax check is done 'on-the-fly'. It is started whenever
90 90
91@itemize @bullet 91@itemize @bullet
92@item buffer is loaded 92@item buffer is loaded
@@ -97,7 +97,7 @@ delay is configurable).
97 97
98Flymake is a universal syntax checker in the sense that it's easily 98Flymake is a universal syntax checker in the sense that it's easily
99extended to support new syntax check tools and error message 99extended to support new syntax check tools and error message
100patterns. @xref{Configuring Flymake}. 100patterns. @xref{Configuring Flymake}.
101 101
102@node Installing Flymake 102@node Installing Flymake
103@chapter Installing 103@chapter Installing
@@ -107,7 +107,7 @@ patterns. @xref{Configuring Flymake}.
107Flymake is packaged in a single file, @code{flymake.el}. 107Flymake is packaged in a single file, @code{flymake.el}.
108 108
109To install/update Flymake, place @code{flymake.el} to a directory 109To install/update Flymake, place @code{flymake.el} to a directory
110somewhere on Emacs load path. You might also want to byte-compile 110somewhere on Emacs load path. You might also want to byte-compile
111@code{flymake.el} to improve performance. 111@code{flymake.el} to improve performance.
112 112
113Also, place the following line in the @code{.emacs} file. 113Also, place the following line in the @code{.emacs} file.
@@ -141,13 +141,13 @@ You might also map the most frequently used Flymake functions, such as
141@section Flymake mode 141@section Flymake mode
142@cindex flymake-mode 142@cindex flymake-mode
143 143
144Flymake is an Emacs minor mode. To use Flymake, you 144Flymake is an Emacs minor mode. To use Flymake, you
145must first activate @code{flymake-mode} by using the 145must first activate @code{flymake-mode} by using the
146@code{flymake-mode} function. 146@code{flymake-mode} function.
147 147
148Instead of manually activating @code{flymake-mode}, you can configure 148Instead of manually activating @code{flymake-mode}, you can configure
149Flymake to automatically enable @code{flymake-mode} upon opening any 149Flymake to automatically enable @code{flymake-mode} upon opening any
150file for which syntax check is possible. To do so, place the following 150file for which syntax check is possible. To do so, place the following
151line in @code{.emacs}: 151line in @code{.emacs}:
152 152
153@lisp 153@lisp
@@ -159,9 +159,9 @@ line in @code{.emacs}:
159@cindex Manually starting the syntax check 159@cindex Manually starting the syntax check
160 160
161When @code{flymake-mode} is active, syntax check is started 161When @code{flymake-mode} is active, syntax check is started
162automatically on any of the three conditions mentioned above. Syntax 162automatically on any of the three conditions mentioned above. Syntax
163check can also be started manually by using the 163check can also be started manually by using the
164@code{flymake-start-syntax-check-for-current-buffer} function. This 164@code{flymake-start-syntax-check-for-current-buffer} function. This
165can be used, for example, when changes were made to some other buffer 165can be used, for example, when changes were made to some other buffer
166affecting the current buffer. 166affecting the current buffer.
167 167
@@ -171,7 +171,7 @@ affecting the current buffer.
171 171
172After syntax check is completed, lines for which at least one error or 172After syntax check is completed, lines for which at least one error or
173warning has been reported are highlighted, and total number of errors 173warning has been reported are highlighted, and total number of errors
174and warning is shown in the mode line. Use the following functions to 174and warning is shown in the mode line. Use the following functions to
175navigate the highlighted lines. 175navigate the highlighted lines.
176 176
177@multitable @columnfractions 0.25 0.75 177@multitable @columnfractions 0.25 0.75
@@ -184,7 +184,7 @@ navigate the highlighted lines.
184 184
185@end multitable 185@end multitable
186 186
187These functions treat erroneous lines as a linked list. Therefore, 187These functions treat erroneous lines as a linked list. Therefore,
188@code{flymake-goto-next-error} will go to the first erroneous line 188@code{flymake-goto-next-error} will go to the first erroneous line
189when invoked in the end of the buffer. 189when invoked in the end of the buffer.
190 190
@@ -193,7 +193,7 @@ when invoked in the end of the buffer.
193@cindex Viewing error messages 193@cindex Viewing error messages
194 194
195To view error messages belonging to the current line, use the 195To view error messages belonging to the current line, use the
196@code{flymake-display-err-menu-for-current-line} function. If there's 196@code{flymake-display-err-menu-for-current-line} function. If there's
197at least one error or warning reported for the current line, this 197at least one error or warning reported for the current line, this
198function will display a popup menu with error/warning texts. 198function will display a popup menu with error/warning texts.
199Selecting the menu item whose error belongs to another file brings 199Selecting the menu item whose error belongs to another file brings
@@ -209,12 +209,12 @@ The following statuses are defined.
209 209
210@multitable @columnfractions 0.25 0.75 210@multitable @columnfractions 0.25 0.75
211@item Flymake* or Flymake:E/W* 211@item Flymake* or Flymake:E/W*
212@tab Flymake is currently running. For the second case, E/W contains the 212@tab Flymake is currently running. For the second case, E/W contains the
213error and warning count for the previous run. 213error and warning count for the previous run.
214 214
215@item Flymake 215@item Flymake
216@tab Syntax check is not running. Usually this means syntax check was 216@tab Syntax check is not running. Usually this means syntax check was
217successfully passed (no errors, no warnings). Other possibilities are: 217successfully passed (no errors, no warnings). Other possibilities are:
218syntax check was killed as a result of executing 218syntax check was killed as a result of executing
219@code{flymake-compile}, or syntax check cannot start as compilation 219@code{flymake-compile}, or syntax check cannot start as compilation
220is currently in progress. 220is currently in progress.
@@ -232,7 +232,7 @@ OFF for the buffer.
232@multitable @columnfractions 0.25 0.75 232@multitable @columnfractions 0.25 0.75
233@item CFGERR 233@item CFGERR
234@tab Syntax check process returned nonzero exit code, but no 234@tab Syntax check process returned nonzero exit code, but no
235errors/warnings were reported. This indicates a possible configuration 235errors/warnings were reported. This indicates a possible configuration
236error (for example, no suitable error message patterns for the 236error (for example, no suitable error message patterns for the
237syntax check tool). 237syntax check tool).
238 238
@@ -253,12 +253,12 @@ syntax check tool).
253@cindex Troubleshooting 253@cindex Troubleshooting
254 254
255Flymake uses a simple logging facility for indicating important points 255Flymake uses a simple logging facility for indicating important points
256in the control flow. The logging facility sends logging messages to 256in the control flow. The logging facility sends logging messages to
257the @code{*Messages*} buffer. The information logged can be used for 257the @code{*Messages*} buffer. The information logged can be used for
258resolving various problems related to Flymake. 258resolving various problems related to Flymake.
259 259
260Logging output is controlled by the @code{flymake-log-level} 260Logging output is controlled by the @code{flymake-log-level}
261variable. @code{3} is the most verbose level, and @code{-1} switches 261variable. @code{3} is the most verbose level, and @code{-1} switches
262logging off. 262logging off.
263 263
264@node Configuring Flymake 264@node Configuring Flymake
@@ -286,30 +286,30 @@ Controls logging output, see @ref{Troubleshooting}.
286 286
287@item flymake-allowed-file-name-masks 287@item flymake-allowed-file-name-masks
288A list of @code{(filename-regexp, init-function, cleanup-function 288A list of @code{(filename-regexp, init-function, cleanup-function
289getfname-function)} for configuring syntax check tools. @xref{Adding 289getfname-function)} for configuring syntax check tools. @xref{Adding
290support for a new syntax check tool}. 290support for a new syntax check tool}.
291 291
292@ignore 292@ignore
293@item flymake-buildfile-dirs 293@item flymake-buildfile-dirs
294A list of directories (relative paths) for searching a 294A list of directories (relative paths) for searching a
295buildfile. @xref{Locating the buildfile}. 295buildfile. @xref{Locating the buildfile}.
296@end ignore 296@end ignore
297 297
298@item flymake-master-file-dirs 298@item flymake-master-file-dirs
299A list of directories for searching a master file. @xref{Locating a 299A list of directories for searching a master file. @xref{Locating a
300master file}. 300master file}.
301 301
302@item flymake-get-project-include-dirs-function 302@item flymake-get-project-include-dirs-function
303A function used for obtaining a list of project include dirs (C/C++ 303A function used for obtaining a list of project include dirs (C/C++
304specific). @xref{Getting the include directories}. 304specific). @xref{Getting the include directories}.
305 305
306@item flymake-master-file-count-limit 306@item flymake-master-file-count-limit
307@itemx flymake-check-file-limit 307@itemx flymake-check-file-limit
308Used when looking for a master file. @xref{Locating a master file}. 308Used when looking for a master file. @xref{Locating a master file}.
309 309
310@item flymake-err-line-patterns 310@item flymake-err-line-patterns
311Patterns for error/warning messages in the form @code{(regexp file-idx 311Patterns for error/warning messages in the form @code{(regexp file-idx
312line-idx col-idx err-text-idx)}. @xref{Parsing the output}. 312line-idx col-idx err-text-idx)}. @xref{Parsing the output}.
313 313
314@item flymake-compilation-prevents-syntax-check 314@item flymake-compilation-prevents-syntax-check
315A flag indicating whether compilation and syntax check of the same 315A flag indicating whether compilation and syntax check of the same
@@ -321,7 +321,7 @@ started after @code{flymake-no-changes-timeout} seconds.
321 321
322@item flymake-gui-warnings-enabled 322@item flymake-gui-warnings-enabled
323A boolean flag indicating whether Flymake will show message boxes for 323A boolean flag indicating whether Flymake will show message boxes for
324non-recoverable errors. If @code{flymake-gui-warnings-enabled} is 324non-recoverable errors. If @code{flymake-gui-warnings-enabled} is
325@code{nil}, these errors will only be logged to the @code{*Messages*} 325@code{nil}, these errors will only be logged to the @code{*Messages*}
326buffer. 326buffer.
327 327
@@ -360,7 +360,7 @@ Which fringe (if any) should show the warning/error bitmaps.
360@end menu 360@end menu
361 361
362Syntax check tools are configured using the 362Syntax check tools are configured using the
363@code{flymake-allowed-file-name-masks} list. Each item of this list 363@code{flymake-allowed-file-name-masks} list. Each item of this list
364has the following format: 364has the following format:
365 365
366@lisp 366@lisp
@@ -371,14 +371,14 @@ has the following format:
371@item filename-regexp 371@item filename-regexp
372This field is used as a key for locating init/cleanup/getfname 372This field is used as a key for locating init/cleanup/getfname
373functions for the buffer. Items in 373functions for the buffer. Items in
374@code{flymake-allowed-file-name-masks} are searched sequentially. The 374@code{flymake-allowed-file-name-masks} are searched sequentially. The
375first item with @code{filename-regexp} matching buffer filename is 375first item with @code{filename-regexp} matching buffer filename is
376selected. If no match is found, @code{flymake-mode} is switched off. 376selected. If no match is found, @code{flymake-mode} is switched off.
377 377
378@item init-function 378@item init-function
379@code{init-function} is required to initialize the syntax check, 379@code{init-function} is required to initialize the syntax check,
380usually by creating a temporary copy of the buffer contents. The 380usually by creating a temporary copy of the buffer contents. The
381function must return @code{(list cmd-name arg-list)}. If 381function must return @code{(list cmd-name arg-list)}. If
382@code{init-function} returns null, syntax check is aborted, by 382@code{init-function} returns null, syntax check is aborted, by
383@code{flymake-mode} is not switched off. 383@code{flymake-mode} is not switched off.
384 384
@@ -389,7 +389,7 @@ usually deleting a temporary copy created by the @code{init-function}.
389 389
390@item getfname-function 390@item getfname-function
391This function is used for translating filenames reported by the syntax 391This function is used for translating filenames reported by the syntax
392check tool into ``real'' filenames. Filenames reported by the tool 392check tool into ``real'' filenames. Filenames reported by the tool
393will be different from the real ones, as actually the tool works with 393will be different from the real ones, as actually the tool works with
394the temporary copy. In most cases, the default implementation 394the temporary copy. In most cases, the default implementation
395provided by Flymake, @code{flymake-get-real-file-name}, can be used as 395provided by Flymake, @code{flymake-get-real-file-name}, can be used as
@@ -411,7 +411,7 @@ support for various syntax check tools.
411@cindex Adding support for perl 411@cindex Adding support for perl
412 412
413In this example, we will add support for @code{perl} as a syntax check 413In this example, we will add support for @code{perl} as a syntax check
414tool. @code{perl} supports the @code{-c} option which does syntax 414tool. @code{perl} supports the @code{-c} option which does syntax
415checking. 415checking.
416 416
417First, we write the @code{init-function}: 417First, we write the @code{init-function}:
@@ -463,7 +463,7 @@ In this example we will add support for C files syntax checked by
463@command{gcc} called via @command{make}. 463@command{gcc} called via @command{make}.
464 464
465We're not required to write any new functions, as Flymake already has 465We're not required to write any new functions, as Flymake already has
466functions for @command{make}. We just add a new entry to the 466functions for @command{make}. We just add a new entry to the
467@code{flymake-allowed-file-name-masks}: 467@code{flymake-allowed-file-name-masks}:
468 468
469@lisp 469@lisp
@@ -489,7 +489,7 @@ command line:
489 489
490@code{base-dir} is a directory containing @code{Makefile}, see @ref{Locating the buildfile}. 490@code{base-dir} is a directory containing @code{Makefile}, see @ref{Locating the buildfile}.
491 491
492Thus, @code{Makefile} must contain the @code{check-syntax} target. In 492Thus, @code{Makefile} must contain the @code{check-syntax} target. In
493our case this target might look like this: 493our case this target might look like this:
494 494
495@verbatim 495@verbatim
@@ -527,12 +527,12 @@ check-syntax:
527 527
528Syntax check is started by calling @code{flymake-start-syntax-check-for-current-buffer}. 528Syntax check is started by calling @code{flymake-start-syntax-check-for-current-buffer}.
529Flymake first determines whether it is able to do syntax 529Flymake first determines whether it is able to do syntax
530check. It then saves a copy of the buffer in a temporary file in the 530check. It then saves a copy of the buffer in a temporary file in the
531buffer's directory (or in the system temp directory, for java 531buffer's directory (or in the system temp directory, for java
532files), creates a syntax check command and launches a process with 532files), creates a syntax check command and launches a process with
533this command. The output is parsed using a list of error message patterns, 533this command. The output is parsed using a list of error message patterns,
534and error information (file name, line number, type and text) is 534and error information (file name, line number, type and text) is
535saved. After the process has finished, Flymake highlights erroneous 535saved. After the process has finished, Flymake highlights erroneous
536lines in the buffer using the accumulated error information. 536lines in the buffer using the accumulated error information.
537 537
538@node Determining whether syntax check is possible 538@node Determining whether syntax check is possible
@@ -551,14 +551,14 @@ Two syntax check modes are distinguished:
551@item 551@item
552Buffer can be syntax checked in a standalone fashion, that is, the 552Buffer can be syntax checked in a standalone fashion, that is, the
553file (its temporary copy, in fact) can be passed over to the compiler to 553file (its temporary copy, in fact) can be passed over to the compiler to
554do the syntax check. Examples are C/C++ (.c, .cpp) and Java (.java) 554do the syntax check. Examples are C/C++ (.c, .cpp) and Java (.java)
555sources. 555sources.
556 556
557@item 557@item
558Buffer can be syntax checked, but additional file, called master file, 558Buffer can be syntax checked, but additional file, called master file,
559is required to perform this operation. A master file is a file that 559is required to perform this operation. A master file is a file that
560includes the current file, so that running a syntax check tool on it 560includes the current file, so that running a syntax check tool on it
561will also check syntax in the current file. Examples are C/C++ (.h, 561will also check syntax in the current file. Examples are C/C++ (.h,
562.hpp) headers. 562.hpp) headers.
563 563
564@end enumerate 564@end enumerate
@@ -579,7 +579,7 @@ copies, finding master files, etc.), as well as some tool-specific
579 579
580After the possibility of the syntax check has been determined, a 580After the possibility of the syntax check has been determined, a
581temporary copy of the current buffer is made so that the most recent 581temporary copy of the current buffer is made so that the most recent
582unsaved changes could be seen by the syntax check tool. Making a copy 582unsaved changes could be seen by the syntax check tool. Making a copy
583is quite straightforward in a standalone case (mode @code{1}), as it's 583is quite straightforward in a standalone case (mode @code{1}), as it's
584just saving buffer contents to a temporary file. 584just saving buffer contents to a temporary file.
585 585
@@ -595,11 +595,11 @@ name.
595Locating a master file is discussed in the following section. 595Locating a master file is discussed in the following section.
596 596
597Patching just changes all appropriate lines of the master file so that they 597Patching just changes all appropriate lines of the master file so that they
598use the new (temporary) name of the current file. For example, suppose current 598use the new (temporary) name of the current file. For example, suppose current
599file name is @code{file.h}, the master file is @code{file.cpp}, and 599file name is @code{file.h}, the master file is @code{file.cpp}, and
600it includes current file via @code{#include "file.h"}. Current file's copy 600it includes current file via @code{#include "file.h"}. Current file's copy
601is saved to file @code{file_flymake.h}, so the include line must be 601is saved to file @code{file_flymake.h}, so the include line must be
602changed to @code{#include "file_flymake.h"}. Finally, patched master file 602changed to @code{#include "file_flymake.h"}. Finally, patched master file
603is saved to @code{file_flymake_master.cpp}, and the last one is passed to 603is saved to @code{file_flymake_master.cpp}, and the last one is passed to
604the syntax check tool. 604the syntax check tool.
605 605
@@ -609,27 +609,27 @@ the syntax check tool.
609 609
610Master file is located in two steps. 610Master file is located in two steps.
611 611
612First, a list of possible master files is built. A simple name 612First, a list of possible master files is built. A simple name
613matching is used to find the files. For a C++ header @code{file.h}, 613matching is used to find the files. For a C++ header @code{file.h},
614Flymake searches for all @code{.cpp} files in the directories whose relative paths are 614Flymake searches for all @code{.cpp} files in the directories whose relative paths are
615stored in a customizable variable @code{flymake-master-file-dirs}, which 615stored in a customizable variable @code{flymake-master-file-dirs}, which
616usually contains something like @code{("." "./src")}. No more than 616usually contains something like @code{("." "./src")}. No more than
617@code{flymake-master-file-count-limit} entries is added to the master file 617@code{flymake-master-file-count-limit} entries is added to the master file
618list. The list is then sorted to move files with names @code{file.cpp} to 618list. The list is then sorted to move files with names @code{file.cpp} to
619the top. 619the top.
620 620
621Next, each master file in a list is checked to contain the appropriate 621Next, each master file in a list is checked to contain the appropriate
622include directives. No more than @code{flymake-check-file-limit} of each 622include directives. No more than @code{flymake-check-file-limit} of each
623file are parsed. 623file are parsed.
624 624
625For @code{file.h}, the include directives to look for are 625For @code{file.h}, the include directives to look for are
626@code{#include "file.h"}, @code{#include "../file.h"}, etc. Each 626@code{#include "file.h"}, @code{#include "../file.h"}, etc. Each
627include is checked against a list of include directories 627include is checked against a list of include directories
628(see @ref{Getting the include directories}) to be sure it points to the 628(see @ref{Getting the include directories}) to be sure it points to the
629correct @code{file.h}. 629correct @code{file.h}.
630 630
631First matching master file found stops the search. The master file is then 631First matching master file found stops the search. The master file is then
632patched and saved to disk. In case no master file is found, syntax check is 632patched and saved to disk. In case no master file is found, syntax check is
633aborted, and corresponding status (!) is reported in the mode line. 633aborted, and corresponding status (!) is reported in the mode line.
634 634
635@node Getting the include directories 635@node Getting the include directories
@@ -637,19 +637,19 @@ aborted, and corresponding status (!) is reported in the mode line.
637@cindex Include directories (C/C++ specific) 637@cindex Include directories (C/C++ specific)
638 638
639Two sets of include directories are distinguished: system include directories 639Two sets of include directories are distinguished: system include directories
640and project include directories. The former is just the contents of the 640and project include directories. The former is just the contents of the
641@code{INCLUDE} environment variable. The latter is not so easy to obtain, 641@code{INCLUDE} environment variable. The latter is not so easy to obtain,
642and the way it can be obtained can vary greatly for different projects. 642and the way it can be obtained can vary greatly for different projects.
643Therefore, a customizable variable 643Therefore, a customizable variable
644@code{flymake-get-project-include-dirs-function} is used to provide the 644@code{flymake-get-project-include-dirs-function} is used to provide the
645way to implement the desired behavior. 645way to implement the desired behavior.
646 646
647The default implementation, @code{flymake-get-project-include-dirs-imp}, 647The default implementation, @code{flymake-get-project-include-dirs-imp},
648uses a @command{make} call. This requires a correct base directory, that is, a 648uses a @command{make} call. This requires a correct base directory, that is, a
649directory containing a correct @file{Makefile}, to be determined. 649directory containing a correct @file{Makefile}, to be determined.
650 650
651As obtaining the project include directories might be a costly operation, its 651As obtaining the project include directories might be a costly operation, its
652return value is cached in the hash table. The cache is cleared in the beginning 652return value is cached in the hash table. The cache is cleared in the beginning
653of every syntax check attempt. 653of every syntax check attempt.
654 654
655@node Locating the buildfile 655@node Locating the buildfile
@@ -659,18 +659,18 @@ of every syntax check attempt.
659@cindex Makefile, locating 659@cindex Makefile, locating
660 660
661Flymake can be configured to use different tools for performing syntax 661Flymake can be configured to use different tools for performing syntax
662checks. For example, it can use direct compiler call to syntax check a perl 662checks. For example, it can use direct compiler call to syntax check a perl
663script or a call to @command{make} for a more complicated case of a 663script or a call to @command{make} for a more complicated case of a
664@code{C/C++} source. The general idea is that simple files, like perl 664@code{C/C++} source. The general idea is that simple files, like perl
665scripts and html pages, can be checked by directly invoking a 665scripts and html pages, can be checked by directly invoking a
666corresponding tool. Files that are usually more complex and generally 666corresponding tool. Files that are usually more complex and generally
667used as part of larger projects, might require non-trivial options to 667used as part of larger projects, might require non-trivial options to
668be passed to the syntax check tool, like include directories for 668be passed to the syntax check tool, like include directories for
669C++. The latter files are syntax checked using some build tool, like 669C++. The latter files are syntax checked using some build tool, like
670Make or Ant. 670Make or Ant.
671 671
672All Make configuration data is usually stored in a file called 672All Make configuration data is usually stored in a file called
673@code{Makefile}. To allow for future extensions, flymake uses a notion of 673@code{Makefile}. To allow for future extensions, flymake uses a notion of
674buildfile to reference the 'project configuration' file. 674buildfile to reference the 'project configuration' file.
675 675
676Special function, @code{flymake-find-buildfile} is provided for locating buildfiles. 676Special function, @code{flymake-find-buildfile} is provided for locating buildfiles.
@@ -679,7 +679,7 @@ for possible master files.
679@ignore 679@ignore
680A customizable variable 680A customizable variable
681@code{flymake-buildfile-dirs} holds a list of relative paths to the 681@code{flymake-buildfile-dirs} holds a list of relative paths to the
682buildfile. They are checked sequentially until a buildfile is found. 682buildfile. They are checked sequentially until a buildfile is found.
683@end ignore 683@end ignore
684In case there's no build file, syntax check is aborted. 684In case there's no build file, syntax check is aborted.
685 685
@@ -690,7 +690,7 @@ Buildfile values are also cached.
690@cindex Syntax check process 690@cindex Syntax check process
691 691
692The command line (command name and the list of arguments) for launching a process is returned by the 692The command line (command name and the list of arguments) for launching a process is returned by the
693initialization function. Flymake then just calls @code{start-process} 693initialization function. Flymake then just calls @code{start-process}
694to start an asynchronous process and configures process filter and 694to start an asynchronous process and configures process filter and
695sentinel which is used for processing the output of the syntax check 695sentinel which is used for processing the output of the syntax check
696tool. 696tool.
@@ -701,24 +701,24 @@ tool.
701 701
702The output generated by the syntax check tool is parsed in the process 702The output generated by the syntax check tool is parsed in the process
703filter/sentinel using the error message patterns stored in the 703filter/sentinel using the error message patterns stored in the
704@code{flymake-err-line-patterns} variable. This variable contains a 704@code{flymake-err-line-patterns} variable. This variable contains a
705list of items of the form @code{(regexp file-idx line-idx 705list of items of the form @code{(regexp file-idx line-idx
706err-text-idx)}, used to determine whether a particular line is an 706err-text-idx)}, used to determine whether a particular line is an
707error message and extract file name, line number and error text, 707error message and extract file name, line number and error text,
708respectively. Error type (error/warning) is also guessed by matching 708respectively. Error type (error/warning) is also guessed by matching
709error text with the '@code{^[wW]arning}' pattern. Anything that was not 709error text with the '@code{^[wW]arning}' pattern. Anything that was not
710classified as a warning is considered an error. Type is then used to 710classified as a warning is considered an error. Type is then used to
711sort error menu items, which shows error messages first. 711sort error menu items, which shows error messages first.
712 712
713Flymake is also able to interpret error message patterns missing err-text-idx 713Flymake is also able to interpret error message patterns missing err-text-idx
714information. This is done by merely taking the rest of the matched line 714information. This is done by merely taking the rest of the matched line
715(@code{(substring line (match-end 0))}) as error text. This trick allows 715(@code{(substring line (match-end 0))}) as error text. This trick allows
716to make use of a huge collection of error message line patterns from 716to make use of a huge collection of error message line patterns from
717@code{compile.el}. All these error patterns are appended to 717@code{compile.el}. All these error patterns are appended to
718the end of @code{flymake-err-line-patterns}. 718the end of @code{flymake-err-line-patterns}.
719 719
720The error information obtained is saved in a buffer local 720The error information obtained is saved in a buffer local
721variable. The buffer for which the process output belongs is 721variable. The buffer for which the process output belongs is
722determined from the process-id@w{}->@w{}buffer mapping updated 722determined from the process-id@w{}->@w{}buffer mapping updated
723after every process launch/exit. 723after every process launch/exit.
724 724
@@ -727,7 +727,7 @@ after every process launch/exit.
727@cindex Erroneous lines, faces 727@cindex Erroneous lines, faces
728 728
729Highlighting is implemented with overlays and happens in the process 729Highlighting is implemented with overlays and happens in the process
730sentinel, after calling the cleanup function. Two customizable faces 730sentinel, after calling the cleanup function. Two customizable faces
731are used: @code{flymake-errline} and 731are used: @code{flymake-errline} and
732@code{flymake-warnline}. Errors belonging outside the current 732@code{flymake-warnline}. Errors belonging outside the current
733buffer are considered to belong to line 1 of the current buffer. 733buffer are considered to belong to line 1 of the current buffer.
@@ -749,12 +749,13 @@ and @code{flymake-warning-bitmap}.
749The only mode flymake currently knows about is @code{compile}. 749The only mode flymake currently knows about is @code{compile}.
750 750
751Flymake can be configured to not start syntax check if it thinks the 751Flymake can be configured to not start syntax check if it thinks the
752compilation is in progress. The check is made by the 752compilation is in progress. The check is made by the
753@code{flymake-compilation-is-running}, which tests the 753@code{flymake-compilation-is-running}, which tests the
754@code{compilation-in-progress} variable. The reason why this might be 754@code{compilation-in-progress} variable. The reason why this might be
755useful is saving CPU time in case both syntax check and compilation 755useful is saving CPU time in case both syntax check and compilation
756are very CPU intensive. The original reason for adding this feature, 756are very CPU intensive. The original reason for adding this feature,
757though, was working around a locking problem with MS Visual C++ compiler. 757though, was working around a locking problem with MS Visual C++
758compiler.
758 759
759Flymake also provides an alternative command for starting compilation, 760Flymake also provides an alternative command for starting compilation,
760@code{flymake-compile}: 761@code{flymake-compile}:
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 983887d721d..a7a9647fd81 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -15400,7 +15400,7 @@ substitutions in the group names), you can say things like:
15400In this example, messages sent to @samp{debian-foo@@lists.debian.org} 15400In this example, messages sent to @samp{debian-foo@@lists.debian.org}
15401will be filed in @samp{mail.debian.foo}. 15401will be filed in @samp{mail.debian.foo}.
15402 15402
15403If the string contains the element @samp{\&}, then the previously 15403If the string contains the element @samp{\\&}, then the previously
15404matched string will be substituted. Similarly, the elements @samp{\\1} 15404matched string will be substituted. Similarly, the elements @samp{\\1}
15405up to @samp{\\9} will be substituted with the text matched by the 15405up to @samp{\\9} will be substituted with the text matched by the
15406groupings 1 through 9. 15406groupings 1 through 9.
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 4a3e0ebc33c..4c3740f02f7 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -2406,13 +2406,18 @@ using the @option{ssh} method to transfer files, and edit
2406@file{.emacs} in my home directory I would specify the filename 2406@file{.emacs} in my home directory I would specify the filename
2407@file{@trampfn{ssh, daniel, melancholia, .emacs}}. 2407@file{@trampfn{ssh, daniel, melancholia, .emacs}}.
2408 2408
2409@ifset emacs
2410A remote filename containing a host name only, which is equal to a
2411method name, is not allowed. If such a host name is used, it must
2412always be preceded by an explicit method name, like
2413@file{@value{prefix}ssh@value{postfixhop}ssh@value{postfix}}.
2414@end ifset
2415
2409Finally, for some methods it is possible to specify a different port 2416Finally, for some methods it is possible to specify a different port
2410number than the default one, given by the method. This is specified 2417number than the default one, given by the method. This is specified
2411by adding @file{#<port>} to the host name, like in @file{@trampfn{ssh, 2418by adding @file{#<port>} to the host name, like in @file{@trampfn{ssh,
2412daniel, melancholia#42, .emacs}}. 2419daniel, melancholia#42, .emacs}}.
2413 2420
2414Note that @value{tramp} supports only filenames encoded in unibyte.
2415
2416 2421
2417@node Alternative Syntax 2422@node Alternative Syntax
2418@section URL-like filename syntax 2423@section URL-like filename syntax
@@ -3119,6 +3124,45 @@ Host *
3119 3124
3120 3125
3121@item 3126@item
3127@value{tramp} does not use my @command{ssh} @code{ControlPath}
3128
3129Your @code{ControlPath} setting will be overwritten by @command{ssh}
3130sessions initiated by @value{tramp}. This is because a master
3131session, initiated outside @value{emacsname}, could be closed, which
3132would stall all other @command{ssh} sessions for that host inside
3133@value{emacsname}.
3134
3135Consequently, if you connect to a remote host via @value{tramp}, you
3136might be prompted for a password again, even if you have established
3137already an @command{ssh} connection to that host. Further
3138@value{tramp} connections to that host, for example in order to run a
3139process on that host, will reuse that initial @command{ssh}
3140connection.
3141
3142If your @command{ssh} version supports the @code{ControlPersist}
3143option, you could customize the variable
3144@code{tramp-ssh-controlmaster-options} to use your @code{ControlPath},
3145for example:
3146
3147@lisp
3148(setq tramp-ssh-controlmaster-options
3149 (concat
3150 "-o ControlPath=/tmp/ssh-ControlPath-%%r@@%%h:%%p "
3151 "-o ControlMaster=auto -o ControlPersist=yes"))
3152@end lisp
3153
3154Note, that "%r", "%h" and "%p" must be encoded as "%%r", "%%h" and
3155"%%p", respectively. The entries of @code{ControlPath},
3156@code{ControlMaster} and @code{ControlPersist} can be removed from
3157this setting, if they are configured properly in your
3158@file{~/.ssh/config}:
3159
3160@lisp
3161(setq tramp-ssh-controlmaster-options "")
3162@end lisp
3163
3164
3165@item
3122File name completion does not work with @value{tramp} 3166File name completion does not work with @value{tramp}
3123 3167
3124When you log in to the remote machine, do you see the output of 3168When you log in to the remote machine, do you see the output of
diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi
index 18c4252e6d2..c22141335e1 100644
--- a/doc/misc/trampver.texi
+++ b/doc/misc/trampver.texi
@@ -8,7 +8,7 @@
8@c In the Tramp CVS, the version number is auto-frobbed from 8@c In the Tramp CVS, the version number is auto-frobbed from
9@c configure.ac, so you should edit that file and run 9@c configure.ac, so you should edit that file and run
10@c "autoconf && ./configure" to change the version number. 10@c "autoconf && ./configure" to change the version number.
11@set trampver 2.2.7 11@set trampver 2.2.8-pre
12 12
13@c Other flags from configuration 13@c Other flags from configuration
14@set instprefix /usr/local 14@set instprefix /usr/local