aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/emacs/ChangeLog7
-rw-r--r--doc/emacs/ack.texi59
-rw-r--r--doc/emacs/emacs.texi161
-rw-r--r--doc/emacs/mini.texi6
-rw-r--r--doc/lispref/ChangeLog72
-rw-r--r--doc/lispref/advice.texi101
-rw-r--r--doc/lispref/commands.texi195
-rw-r--r--doc/lispref/compile.texi204
-rw-r--r--doc/lispref/control.texi10
-rw-r--r--doc/lispref/debugging.texi216
-rw-r--r--doc/lispref/display.texi157
-rw-r--r--doc/lispref/elisp.texi7
-rw-r--r--doc/lispref/files.texi23
-rw-r--r--doc/lispref/loading.texi173
-rw-r--r--doc/lispref/objects.texi10
-rw-r--r--doc/lispref/streams.texi11
-rw-r--r--doc/lispref/text.texi20
-rw-r--r--doc/lispref/vol1.texi7
-rw-r--r--doc/lispref/vol2.texi7
-rw-r--r--doc/misc/ChangeLog5
-rw-r--r--doc/misc/gnus.texi9
-rw-r--r--doc/misc/url.texi8
22 files changed, 751 insertions, 717 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 3c4ee4181e4..b24c6946281 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,5 +1,12 @@
12012-02-12 Glenn Morris <rgm@gnu.org>
2
3 * ack.texi (Acknowledgments):
4 * emacs.texi (Acknowledgments): Updates for new files in 24.1.
5
12012-02-10 Glenn Morris <rgm@gnu.org> 62012-02-10 Glenn Morris <rgm@gnu.org>
2 7
8 * mini.texi (Minibuffer Edit): Mention minibuffer-inactive-mode.
9
3 * programs.texi (Misc for Programs): Mention electric-layout-mode. 10 * programs.texi (Misc for Programs): Mention electric-layout-mode.
4 11
52012-02-09 Glenn Morris <rgm@gnu.org> 122012-02-09 Glenn Morris <rgm@gnu.org>
diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi
index 13bc327fbab..5afbb9b1442 100644
--- a/doc/emacs/ack.texi
+++ b/doc/emacs/ack.texi
@@ -51,8 +51,9 @@ files.
51@item 51@item
52Michael Albinus wrote @file{dbus.el}, a package that implements the 52Michael Albinus wrote @file{dbus.el}, a package that implements the
53D-Bus message bus protocol; @file{zeroconf.el}, a mode for browsing 53D-Bus message bus protocol; @file{zeroconf.el}, a mode for browsing
54Avahi services; and @file{xesam.el}, a Xesam-based search engine 54Avahi services; @file{xesam.el}, a Xesam-based search engine
55interface. He and Kai Großjohann wrote the Tramp package, which 55interface; and @file{secrets.el}, an interface to keyring daemons for
56storing confidential data. He and Kai Großjohann wrote the Tramp package, which
56provides transparent remote file editing using rcp, ssh, ftp, and 57provides transparent remote file editing using rcp, ssh, ftp, and
57other network protocols. He and Daniel Pittman wrote 58other network protocols. He and Daniel Pittman wrote
58@file{tramp-cache.el}. 59@file{tramp-cache.el}.
@@ -196,7 +197,8 @@ prior to Emacs 23 for Mac OS.
196 197
197@item 198@item
198Chong Yidong was the Emacs co-maintainer for Emacs 23. He made many 199Chong Yidong was the Emacs co-maintainer for Emacs 23. He made many
199improvements to the Emacs display engine. 200improvements to the Emacs display engine. He also wrote
201@file{tabulated-list.el}, a generic major mode for lists of data.
200 202
201@item 203@item
202James Clark wrote SGML mode, a mode for editing SGML documents; and 204James Clark wrote SGML mode, a mode for editing SGML documents; and
@@ -231,7 +233,8 @@ files as ``thumbnails.''
231 233
232@item 234@item
233Julien Danjou wrote an implementation of ``Desktop Notifications'' 235Julien Danjou wrote an implementation of ``Desktop Notifications''
234(@file{notifications.el}). 236(@file{notifications.el}); and @file{color.el}, a library for general
237color manipulation. He also made various contributions to Gnus.
235 238
236@item 239@item
237Vivek Dasmohapatra wrote @file{htmlfontify.el}, to convert a buffer or 240Vivek Dasmohapatra wrote @file{htmlfontify.el}, to convert a buffer or
@@ -254,6 +257,7 @@ Eric Ding wrote @file{goto-addr.el},
254 257
255@item 258@item
256Jan Djärv added support for the GTK+ toolkit and X drag-and-drop. 259Jan Djärv added support for the GTK+ toolkit and X drag-and-drop.
260He also wrote @file{dynamic-setting.el}.
257 261
258@item 262@item
259Carsten Dominik wrote Ref@TeX{}, a package for setting up labels and 263Carsten Dominik wrote Ref@TeX{}, a package for setting up labels and
@@ -434,7 +438,10 @@ non-@acronym{ASCII} text from an @acronym{ASCII} keyboard.
434Jesper Harder wrote @file{yenc.el}, for decoding yenc encoded messages. 438Jesper Harder wrote @file{yenc.el}, for decoding yenc encoded messages.
435 439
436@item 440@item
437K. Shane Hartman wrote @file{chistory.el} and @file{echistory.el}, 441Alexandru Harsanyi wrote a library for accessing SOAP web services.
442
443@item
444K.@: Shane Hartman wrote @file{chistory.el} and @file{echistory.el},
438packages for browsing command history lists; @file{electric.el} and 445packages for browsing command history lists; @file{electric.el} and
439@file{helper.el}, which provide an alternative command loop and 446@file{helper.el}, which provide an alternative command loop and
440appropriate help facilities; @file{emacsbug.el}, a package for 447appropriate help facilities; @file{emacsbug.el}, a package for
@@ -486,12 +493,16 @@ wrote many of its parts. Several of these are now general components of
486Emacs: @file{dns.el} for Domain Name Service lookups; 493Emacs: @file{dns.el} for Domain Name Service lookups;
487@file{format-spec.el} for formatting arbitrary format strings; 494@file{format-spec.el} for formatting arbitrary format strings;
488@file{netrc.el} for parsing of @file{.netrc} files; and 495@file{netrc.el} for parsing of @file{.netrc} files; and
489@file{time-date.el} for general date and time handling. Components of 496@file{time-date.el} for general date and time handling.
490Gnus have also been written by: Nagy Andras, David Blacka, Scott Byer, 497He also wrote @file{network-stream.el}, for opening network processes;
491Kevin Greiner, Kai Großjohann, Joe Hildebrand, Paul Jarc, Sascha 498and @file{url-queue.el}, for controlling parallel downloads of URLs.
499Components of Gnus have also been written by: Nagy Andras, David
500Blacka, Scott Byer, Ludovic Courtès, Julien Danjou, Kevin Greiner, Kai
501Großjohann, Joe Hildebrand, Paul Jarc, Simon Josefsson, Sascha
492Lüdecke, David Moore, Jim Radford, Benjamin Rutt, Raymond Scholz, 502Lüdecke, David Moore, Jim Radford, Benjamin Rutt, Raymond Scholz,
493Thomas Steffen, Reiner Steib, Didier Verna, Ilja Weis, Katsumi Yamaoka, 503Thomas Steffen, Reiner Steib, Didier Verna, Ilja Weis, Katsumi
494Teodor Zlatanov, and others (@pxref{Contributors,,,gnus, the Gnus Manual}). 504Yamaoka, Teodor Zlatanov, and others (@pxref{Contributors,,,gnus, the
505Gnus Manual}).
495 506
496@item 507@item
497Andrew Innes contributed extensively to the MS-Windows support. 508Andrew Innes contributed extensively to the MS-Windows support.
@@ -612,13 +623,14 @@ R.@: Dodd. He also wrote @file{ls-lisp.el}, a Lisp emulation of the
612program. 623program.
613 624
614@item 625@item
615Ken Stevens wrote @file{ispell.el}, a spell-checker interface.
616
617@item
618David K@ringaccent{a}gedal wrote @file{tempo.el}, providing support for 626David K@ringaccent{a}gedal wrote @file{tempo.el}, providing support for
619easy insertion of boilerplate text and other common constructions. 627easy insertion of boilerplate text and other common constructions.
620 628
621@item 629@item
630Igor Kuzmin wrote @file{cconv.el}, providing closure conversion for
631statically scoped Emacs lisp.
632
633@item
622Daniel LaLiberte wrote @file{edebug.el}, a source-level debugger for 634Daniel LaLiberte wrote @file{edebug.el}, a source-level debugger for
623Emacs Lisp; @file{cl-specs.el}, specifications to help @code{edebug} 635Emacs Lisp; @file{cl-specs.el}, specifications to help @code{edebug}
624debug code written using David Gillespie's Common Lisp support; 636debug code written using David Gillespie's Common Lisp support;
@@ -810,8 +822,9 @@ a directory-level front end to the CVS version control system;
810text; @file{smerge-mode.el}, a minor mode for resolving @code{diff3} 822text; @file{smerge-mode.el}, a minor mode for resolving @code{diff3}
811conflicts; @file{diff-mode.el}, a mode for viewing and editing context 823conflicts; @file{diff-mode.el}, a mode for viewing and editing context
812diffs; @file{css-mode.el} for Cascading Style Sheets; 824diffs; @file{css-mode.el} for Cascading Style Sheets;
813@file{bibtex-style.el} for BibTeX Style files; and @file{mpc.el}, a 825@file{bibtex-style.el} for BibTeX Style files; @file{mpc.el}, a
814client for the ``Music Player Daemon''. 826client for the ``Music Player Daemon''; and @file{pcase.el},
827implementing ML-style pattern matching.
815 828
816@item 829@item
817Morioka Tomohiko wrote several packages for MIME support in Gnus and 830Morioka Tomohiko wrote several packages for MIME support in Gnus and
@@ -1172,8 +1185,7 @@ Peter Stephenson wrote @file{vcursor.el}, which implements a ``virtual
1172cursor'' that you can move with the keyboard and use for copying text. 1185cursor'' that you can move with the keyboard and use for copying text.
1173 1186
1174@item 1187@item
1175Ken Stevens wrote the initial version of @file{ispell.el} and maintains 1188Ken Stevens wrote @file{ispell.el}, a spell-checker interface.
1176that package since Ispell 3.1 release.
1177 1189
1178@item 1190@item
1179Kim F.@: Storm made many improvements to the Emacs display engine, 1191Kim F.@: Storm made many improvements to the Emacs display engine,
@@ -1228,7 +1240,7 @@ subprocess.
1228 1240
1229@item 1241@item
1230Tom Tromey wrote @file{bug-reference.el}, providing clickable links to 1242Tom Tromey wrote @file{bug-reference.el}, providing clickable links to
1231bug reports. 1243bug reports; and the first version of the Emacs package system.
1232 1244
1233@item 1245@item
1234Eli Tziperman wrote @file{rmail-spam-filter.el}, a spam filter for RMAIL. 1246Eli Tziperman wrote @file{rmail-spam-filter.el}, a spam filter for RMAIL.
@@ -1237,7 +1249,8 @@ Eli Tziperman wrote @file{rmail-spam-filter.el}, a spam filter for RMAIL.
1237Daiki Ueno wrote @file{starttls.el}, support for Transport Layer 1249Daiki Ueno wrote @file{starttls.el}, support for Transport Layer
1238Security protocol; @file{sasl-cram.el} and @file{sasl-digest.el} (with 1250Security protocol; @file{sasl-cram.el} and @file{sasl-digest.el} (with
1239Kenichi Okada), and @file{sasl.el}, support for Simple Authentication 1251Kenichi Okada), and @file{sasl.el}, support for Simple Authentication
1240and Security Layer (SASL); and the EasyPG (and its predecessor PGG) 1252and Security Layer (SASL); @file{plstore.el} for secure storage of
1253propery lists; and the EasyPG (and its predecessor PGG)
1241package, for GnuPG and PGP support. 1254package, for GnuPG and PGP support.
1242 1255
1243@item 1256@item
@@ -1348,7 +1361,8 @@ manual pages without the @code{man} command.
1348 1361
1349@item 1362@item
1350Masatake Yamato wrote @file{ld-script.el}, an editing mode for GNU 1363Masatake Yamato wrote @file{ld-script.el}, an editing mode for GNU
1351linker scripts, and contributed subword handling in CC mode. 1364linker scripts, and contributed subword handling and style
1365``guessing'' in CC mode.
1352 1366
1353@item 1367@item
1354Jonathan Yavner wrote @file{testcover.el}, a package for keeping track 1368Jonathan Yavner wrote @file{testcover.el}, a package for keeping track
@@ -1410,6 +1424,11 @@ Neal Ziring and Felix S.@: T.@: Wu wrote @file{vi.el}, an emulation of the
1410VI text editor. 1424VI text editor.
1411 1425
1412@item 1426@item
1427Ted Zlatanov (as well as his contributions to the Gnus newsreader)
1428wrote an interface to the GnuTLS library, for secure network
1429connections; and a futures facility for the URL library.
1430
1431@item
1413Detlev Zundel wrote @file{re-builder.el}, a package for building regexps 1432Detlev Zundel wrote @file{re-builder.el}, a package for building regexps
1414with visual feedback. 1433with visual feedback.
1415 1434
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 1f7fecb8b6a..f4cc4564407 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -1300,87 +1300,90 @@ occasionally, or subscribing to periodic updates.
1300@unnumberedsec Acknowledgments 1300@unnumberedsec Acknowledgments
1301 1301
1302Contributors to GNU Emacs include Jari Aalto, Per Abrahamsen, Tomas 1302Contributors to GNU Emacs include Jari Aalto, Per Abrahamsen, Tomas
1303Abrahamsson, Jay K.@: Adams, Michael Albinus, Nagy Andras, Ralf Angeli, 1303Abrahamsson, Jay K.@: Adams, Michael Albinus, Nagy Andras, Ralf
1304Joe Arceneaux, Miles Bader, David Bakhash, Juanma Barranquero, Eli 1304Angeli, Joe Arceneaux, Miles Bader, David Bakhash, Juanma Barranquero,
1305Barzilay, Thomas Baumann, Steven L.@: Baur, Jay Belanger, Alexander L.@: 1305Eli Barzilay, Thomas Baumann, Steven L.@: Baur, Jay Belanger,
1306Belikoff, Boaz Ben-Zvi, Karl Berry, Anna M.@: Bigatti, Ray Blaak, Jim 1306Alexander L.@: Belikoff, Boaz Ben-Zvi, Karl Berry, Anna M.@: Bigatti,
1307Blandy, Johan Bockgård, Jan Böcker, Lennart Borgman, Per Bothner, 1307Ray Blaak, Jim Blandy, Johan Bockgård, Jan Böcker, Lennart Borgman,
1308Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel Briot, Kevin 1308Per Bothner, Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel
1309Broadey, Vincent Broman, David M.@: Brown, Georges Brun-Cottan, Joe 1309Briot, Kevin Broadey, Vincent Broman, David M.@: Brown, Georges
1310Buehler, W@l{}odek Bzyl, Bill Carpenter, Per Cederqvist, Hans Chalupsky, 1310Brun-Cottan, Joe Buehler, W@l{}odek Bzyl, Bill Carpenter, Per
1311Chong Yidong, Chris Chase, Bob Chassell, Andrew Choi, Sacha Chua, James 1311Cederqvist, Hans Chalupsky, Chong Yidong, Chris Chase, Bob Chassell,
1312Clark, Mike Clarkson, Glynn Clements, Daniel Colascione, Andrew Csillag, 1312Andrew Choi, Sacha Chua, James Clark, Mike Clarkson, Glynn Clements,
1313Baoqiu Cui, Doug Cutting, Mathias Dahl, Julien Danjou, Satyaki Das, 1313Daniel Colascione, Ludovic Courtès, Andrew Csillag, Baoqiu Cui, Doug
1314Vivek Dasmohapatra, Michael DeCorte, Gary Delp, Matthieu Devin, Eri 1314Cutting, Mathias Dahl, Julien Danjou, Satyaki Das, Vivek Dasmohapatra,
1315Ding, Jan Djärv, Carsten Dominik, Scott Draves, Benjamin Drieu, 1315Michael DeCorte, Gary Delp, Matthieu Devin, Eri Ding, Jan Djärv,
1316Viktor Dukhovni, Dmitry Dzhus, John Eaton, Rolf Ebert, Paul Eggert, 1316Carsten Dominik, Scott Draves, Benjamin Drieu, Viktor Dukhovni, Dmitry
1317Stephen Eglen, Torbjörn Einarsson, Tsugutomo Enami, Hans Henrik 1317Dzhus, John Eaton, Rolf Ebert, Paul Eggert, Stephen Eglen, Torbjörn
1318Eriksen, Michael Ernst, Ata Etemadi, Frederick Farnbach, Oscar 1318Einarsson, Tsugutomo Enami, Hans Henrik Eriksen, Michael Ernst, Ata
1319Figueiredo, Fred Fish, Karl Fogel, Gary Foster, Romain Francoise, Noah 1319Etemadi, Frederick Farnbach, Oscar Figueiredo, Fred Fish, Karl Fogel,
1320Friedman, Andreas Fuchs, Hallvard Furuseth, Keith Gabryelski, Peter S.@: 1320Gary Foster, Romain Francoise, Noah Friedman, Andreas Fuchs, Hallvard
1321Galbraith, Kevin Gallagher, Kevin Gallo, Juan León Lahoz 1321Furuseth, Keith Gabryelski, Peter S.@: Galbraith, Kevin Gallagher,
1322García, Howard Gayle, Daniel German, Stephen Gildea, 1322Kevin Gallo, Juan León Lahoz García, Howard Gayle, Daniel German,
1323Julien Gilles, David Gillespie, Bob Glickstein, Deepak Goel, Boris 1323Stephen Gildea, Julien Gilles, David Gillespie, Bob Glickstein, Deepak
1324Goldowsky, Michelangelo Grigni, Odd Gripenstam, Kai Großjohann, 1324Goel, Boris Goldowsky, Michelangelo Grigni, Odd Gripenstam, Kai
1325Michael Gschwind, Bastien Guerry, Henry Guillaume, Doug Gwyn, Ken'ichi 1325Großjohann, Michael Gschwind, Bastien Guerry, Henry Guillaume, Doug
1326Handa, Lars Hansen, Chris Hanson, K. Shane Hartman, John Heidemann, Jon 1326Gwyn, Ken'ichi Handa, Lars Hansen, Chris Hanson, Jesper Harder,
1327K.@: Hellan, Jesper Harder, Magnus Henoch, Markus Heritsch, Karl Heuer, 1327Alexandru Harsanyi, K.@: Shane Hartman, John Heidemann, Jon K.@:
1328Manabu Higashida, Anders Holst, Jeffrey C.@: Honig, Tassilo Horn, Kurt 1328Hellan, Magnus Henoch, Markus Heritsch, Karl Heuer, Manabu Higashida,
1329Hornik, Tom Houlder, Joakim Hove, Denis Howe, Lars Ingebrigtsen, Andrew 1329Anders Holst, Jeffrey C.@: Honig, Tassilo Horn, Kurt Hornik, Tom
1330Innes, Seiichiro Inoue, Philip Jackson, Pavel Janik, Paul Jarc, Ulf 1330Houlder, Joakim Hove, Denis Howe, Lars Ingebrigtsen, Andrew Innes,
1331Jasper, Michael K. Johnson, Kyle Jones, Terry Jones, Simon Josefsson, 1331Seiichiro Inoue, Philip Jackson, Pavel Janik, Paul Jarc, Ulf Jasper,
1332Arne Jørgensen, Tomoji Kagatani, Brewster Kahle, Tokuya Kameshima, 1332Michael K.@: Johnson, Kyle Jones, Terry Jones, Simon Josefsson, Arne
1333Lute Kamstra, David Kastrup, David Kaufman, Henry Kautz, Taichi 1333Jørgensen, Tomoji Kagatani, Brewster Kahle, Tokuya Kameshima, Lute
1334Kawabata, Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg, Karel 1334Kamstra, David Kastrup, David Kaufman, Henry Kautz, Taichi Kawabata,
1335Klí@v{c}, Shuhei Kobayashi, Pavel Kobiakov, Larry K.@: 1335Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg, Karel
1336Kolodney, David M.@: Koppelman, Koseki Yoshinori, Robert Krawitz, 1336Klí@v{c}, Shuhei Kobayashi, Pavel Kobiakov, Larry K.@: Kolodney, David
1337Sebastian Kremer, Ryszard Kubiak, David Kågedal, Daniel LaLiberte, 1337M.@: Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian Kremer,
1338Karl Landstrom, Mario Lang, Aaron Larson, James R.@: Larus, Vinicius 1338Ryszard Kubiak, Igor Kuzmin, David Kågedal, Daniel LaLiberte, Karl
1339Jose Latorre, Werner Lemberg, Frederic Lepied, Peter Liljenberg, Lars 1339Landstrom, Mario Lang, Aaron Larson, James R.@: Larus, Vinicius Jose
1340Latorre, Werner Lemberg, Frederic Lepied, Peter Liljenberg, Lars
1340Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link, Juri Linkov, 1341Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link, Juri Linkov,
1341Francis Litterio, Emilio C. Lopes, Károly L@H{o}rentey, Dave Love, 1342Francis Litterio, Emilio C.@: Lopes, Károly L@H{o}rentey, Dave Love,
1342Sascha Lüdecke, Eric Ludlam, Alan Mackenzie, Christopher J.@: 1343Sascha Lüdecke, Eric Ludlam, Alan Mackenzie, Christopher J.@: Madsen,
1343Madsen, Neil M.@: Mager, Ken Manheimer, Bill Mann, Brian Marick, Simon 1344Neil M.@: Mager, Ken Manheimer, Bill Mann, Brian Marick, Simon
1344Marshall, Bengt Martensson, Charlie Martin, Thomas May, Roland McGrath, 1345Marshall, Bengt Martensson, Charlie Martin, Thomas May, Roland
1345Will Mengarini, David Megginson, Ben A. Mesander, Wayne Mesard, Brad 1346McGrath, Will Mengarini, David Megginson, Ben A.@: Mesander, Wayne
1346Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Moellmann, Stefan 1347Mesard, Brad Miller, Lawrence Mitchell, Richard Mlynarik, Gerd
1347Monnier, Morioka Tomohiko, Keith Moore, Jan Moringen, Glenn Morris, 1348Moellmann, Stefan Monnier, Morioka Tomohiko, Keith Moore, Jan
1348Diane Murray, Sen Nagata, Erik Naggum, Thomas Neumann, Thien-Thi Nguyen, 1349Moringen, Glenn Morris, Diane Murray, Sen Nagata, Erik Naggum, Thomas
1349Mike Newton, Jurgen Nickelsen, Dan Nicolaescu, Hrvoje Niksic, Jeff 1350Neumann, Thien-Thi Nguyen, Mike Newton, Jurgen Nickelsen, Dan
1350Norden, Andrew Norman, Christian Ohler, Alexandre Oliva, Bob Olson, 1351Nicolaescu, Hrvoje Niksic, Jeff Norden, Andrew Norman, Christian
1351Michael Olson, Takaaki Ota, Pieter E.@: J.@: Pareit, Ross Patterson, 1352Ohler, Alexandre Oliva, Bob Olson, Michael Olson, Takaaki Ota, Pieter
1352David Pearson, Jeff Peck, Damon Anton Permezel, Tom Perrine, William 1353E.@: J.@: Pareit, Ross Patterson, David Pearson, Jeff Peck, Damon
1353M.@: Perry, Per Persson, Jens Petersen, Daniel Pfeiffer, Richard L.@: 1354Anton Permezel, Tom Perrine, William M.@: Perry, Per Persson, Jens
1354Pieri, Fred Pierresteguy, Christian Plaunt, David Ponce, Francesco A.@: 1355Petersen, Daniel Pfeiffer, Richard L.@: Pieri, Fred Pierresteguy,
1355Potorti, Michael D. Prange, Mukesh Prasad, Ken Raeburn, Marko Rahamaa, 1356Christian Plaunt, David Ponce, Francesco A.@: Potorti, Michael D.@:
1356Ashwin Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, Alex 1357Prange, Mukesh Prasad, Ken Raeburn, Marko Rahamaa, Ashwin Ram, Eric
1357Rezinsky, Rob Riepel, David Reitter, Adrian Robert, Nick Roberts, Roland 1358S.@: Raymond, Paul Reilly, Edward M.@: Reingold, Alex Rezinsky, Rob
1358B.@: Roberts, John Robinson, Danny Roozendaal, Sebastian Rose, William 1359Riepel, David Reitter, Adrian Robert, Nick Roberts, Roland B.@:
1360Roberts, John Robinson, Danny Roozendaal, Sebastian Rose, William
1359Rosenblatt, Guillermo J.@: Rozas, Martin Rudalics, Ivar Rummelhoff, 1361Rosenblatt, Guillermo J.@: Rozas, Martin Rudalics, Ivar Rummelhoff,
1360Jason Rumney, Wolfgang Rupprecht, Kevin Ryde, James B. Salem, Masahiko 1362Jason Rumney, Wolfgang Rupprecht, Kevin Ryde, James B.@: Salem,
1361Sato, Jorgen Schaefer, Holger Schauer, William Schelter, Ralph 1363Masahiko Sato, Jorgen Schaefer, Holger Schauer, William Schelter,
1362Schleicher, Gregor Schmid, Michael Schmidt, Ronald S. Schnell, Philippe 1364Ralph Schleicher, Gregor Schmid, Michael Schmidt, Ronald S.@: Schnell,
1363Schnoebelen, Jan Schormann, Alex Schroeder, Stephen Schoef, Raymond 1365Philippe Schnoebelen, Jan Schormann, Alex Schroeder, Stephen Schoef,
1364Scholz, Eric Schulte, Andreas Schwab, Randal Schwartz, Oliver Seidel, 1366Raymond Scholz, Eric Schulte, Andreas Schwab, Randal Schwartz, Oliver
1365Manuel Serrano, Paul Sexton, Hovav Shacham, Stanislav Shalunov, Marc 1367Seidel, Manuel Serrano, Paul Sexton, Hovav Shacham, Stanislav
1366Shapiro, Richard Sharman, Olin Shivers, Espen Skoglund, Rick Sladkey, 1368Shalunov, Marc Shapiro, Richard Sharman, Olin Shivers, Espen Skoglund,
1367Lynn Slater, Chris Smith, David Smith, Paul D.@: Smith, William 1369Rick Sladkey, Lynn Slater, Chris Smith, David Smith, Paul D.@: Smith,
1368Sommerfeld, Andre Spiegel, Michael Staats, Ulf Stegemann, Reiner Steib, 1370William Sommerfeld, Andre Spiegel, Michael Staats, Ulf Stegemann,
1369Sam Steingold, Ake Stenhoff, Peter Stephenson, Ken Stevens, Andy Stewart, 1371Reiner Steib, Sam Steingold, Ake Stenhoff, Peter Stephenson, Ken
1370Jonathan Stigelman, Martin Stjernholm, Kim F.@: Storm, Steve Strassmann, 1372Stevens, Andy Stewart, Jonathan Stigelman, Martin Stjernholm, Kim F.@:
1371Olaf Sylvester, Naoto Takahashi, Steven Tamm, Jean-Philippe Theberge, 1373Storm, Steve Strassmann, Olaf Sylvester, Naoto Takahashi, Steven Tamm,
1372Jens T.@: Berger Thielemann, Spencer Thomas, Jim Thompson, Luc 1374Jean-Philippe Theberge, Jens T.@: Berger Thielemann, Spencer Thomas,
1373Teirlinck, David O'Toole, Tom Tromey, Enami Tsugutomo, Eli Tziperman, 1375Jim Thompson, Luc Teirlinck, David O'Toole, Tom Tromey, Enami
1374Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil W.@: Van Dyke, 1376Tsugutomo, Eli Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh
1375Didier Verna, Joakim Verona, Ulrik Vieth, Geoffrey Voelker, Johan 1377Vaidheeswarran, Neil W.@: Van Dyke, Didier Verna, Joakim Verona, Ulrik
1376Vromans, Inge Wallin, John Paul Wallington, Colin Walters, Barry Warsaw, 1378Vieth, Geoffrey Voelker, Johan Vromans, Inge Wallin, John Paul
1377Morten Welinder, Joseph Brian Wells, Rodney Whitby, John Wiegley, Ed 1379Wallington, Colin Walters, Barry Warsaw, Morten Welinder, Joseph Brian
1378Wilkinson, Mike Williams, Bill Wohler, Steven A. Wood, Dale R.@: Worley, 1380Wells, Rodney Whitby, John Wiegley, Ed Wilkinson, Mike Williams, Bill
1379Francis J.@: Wright, Felix S. T. Wu, Tom Wurgler, Katsumi Yamaoka, 1381Wohler, Steven A.@: Wood, Dale R.@: Worley, Francis J.@: Wright, Felix
1380Yamamoto Mitsuharu, Masatake Yamato, Jonathan Yavner, Ryan Yeske, Ilya 1382S.@: T.@: Wu, Tom Wurgler, Katsumi Yamaoka, Yamamoto Mitsuharu,
1381Zakharevich, Milan Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski, 1383Masatake Yamato, Jonathan Yavner, Ryan Yeske, Ilya Zakharevich, Milan
1382Shenghuo Zhu, Piotr Zielinski, Ian T.@: Zimmermann, Reto Zimmermann, 1384Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski, Shenghuo Zhu,
1383Neal Ziring, Teodor Zlatanov, and Detlev Zundel. 1385Piotr Zielinski, Ian T.@: Zimmermann, Reto Zimmermann, Neal Ziring,
1386Teodor Zlatanov, and Detlev Zundel.
1384@end iftex 1387@end iftex
1385 1388
1386@node Intro, Glossary, Distrib, Top 1389@node Intro, Glossary, Distrib, Top
diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi
index b7c63171c56..ca8e8f705b4 100644
--- a/doc/emacs/mini.texi
+++ b/doc/emacs/mini.texi
@@ -195,6 +195,12 @@ possible completions. @xref{Other Window}.
195the minibuffer is active. To allow such commands in the minibuffer, 195the minibuffer is active. To allow such commands in the minibuffer,
196set the variable @code{enable-recursive-minibuffers} to @code{t}. 196set the variable @code{enable-recursive-minibuffers} to @code{t}.
197 197
198@findex minibuffer-inactive-mode
199 When not active, the minibuffer is in @code{minibuffer-inactive-mode},
200and clicking @kbd{Mouse-1} there shows the @samp{*Messages*} buffer.
201If you use a dedicated frame for minibuffers, Emacs also recognizes
202certain keys there, for example @kbd{n} to make a new frame.
203
198@node Completion 204@node Completion
199@section Completion 205@section Completion
200@c This node is referenced in the tutorial. When renaming or deleting 206@c This node is referenced in the tutorial. When renaming or deleting
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index a823f4272fc..c5848ca8b2d 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,5 +1,77 @@
12012-02-12 Chong Yidong <cyd@gnu.org>
2
3 * debugging.texi (Debugger Commands): Continuing is now allowed
4 for errors.
5
62012-02-11 Chong Yidong <cyd@gnu.org>
7
8 * display.texi (Fringe Indicators): Add xref to Fringe Bitmaps.
9 Move the list of standard bitmaps there.
10 (Fringe Cursors): Rewrite for clarity.
11 (Fringe Bitmaps): Consolidate the list of standard bitmaps here.
12
13 * commands.texi (Command Overview): Mention read-key.
14 (Using Interactive, Interactive Call): Minor clarifications.
15 (Function Keys, Click Events): Avoid "input stream" terminology.
16 (Click Events): Add xref to Window Sizes and Accessing Mouse.
17 Clarify column and row components.
18 (Accessing Mouse): Add xref to Click Events. Minor fixes.
19 (Special Events): Copyedits.
20
21 * streams.texi (Input Streams): De-document get-file-char.
22 (Output Variables): Don't refer to old backquote syntax.
23
24 * debugging.texi (Debugging): Copyedits. Describe testcover, ERT.
25 (Error Debugging): Note that debug-ignored-errors overrides list
26 values of debug-on-error too. Add xref to Signaling Errors. Note
27 that debug-on-signal is not customizable. Mention
28 condition-case-unless-debug.
29 (Compilation Errors): Node deleted.
30
31 * compile.texi (Compiler Errors): Move a paragraph here from
32 deleted node Compilation Errors.
33
342012-02-10 Leo Liu <sdl.web@gmail.com>
35
36 * control.texi (Handling Errors): Change condition-case-no-debug
37 to condition-case-unless-debug.
38
392012-02-10 Chong Yidong <cyd@gnu.org>
40
41 * advice.texi (Defining Advice): Clarify ad-unadvise.
42 (Activation of Advice): Specifying the ACTIVATE flag in defadvice
43 is not abnormal.
44 (Advising Primitives): Node deleted; ad-define-subr-args has been
45 removed.
46
47 * compile.texi (Speed of Byte-Code): Use float-time in example.
48 (Compilation Functions): Note that the log uses Compilation mode.
49 Don't discuss the contents of byte-code function object here.
50 (Compilation Functions): De-document internal function byte-code.
51 (Docs and Compilation): Minor clarifications.
52
53 * objects.texi (Byte-Code Type): Add xref to Byte-Code Function
54 Objects.
55
562012-02-10 Glenn Morris <rgm@gnu.org>
57
58 * text.texi (Checksum/Hash): Rename node from MD5 Checksum.
59 Mention secure-hash.
60 * elisp.texi, vol1.texi, vol2.texi: Update menu entry.
61
622012-02-10 Chong Yidong <cyd@gnu.org>
63
64 * loading.texi (Loading): Don't emphasize "library" terminology.
65 (Library Search): load-path is not a user option. Mention role of
66 -L option and packages. Improve examples.
67 (Loading Non-ASCII): Don't mention unibyte Emacs, which is
68 obsolete.
69 (Autoload): Minor clarifications.
70
12012-02-10 Glenn Morris <rgm@gnu.org> 712012-02-10 Glenn Morris <rgm@gnu.org>
2 72
73 * files.texi (Magic File Names): Tweak remote-file-name-inhibit-cache.
74
3 * modes.texi (Basic Major Modes): Mention tabulated-list-mode. 75 * modes.texi (Basic Major Modes): Mention tabulated-list-mode.
4 76
52012-02-08 Glenn Morris <rgm@gnu.org> 772012-02-08 Glenn Morris <rgm@gnu.org>
diff --git a/doc/lispref/advice.texi b/doc/lispref/advice.texi
index ee1950a589a..78b4ac9aa2d 100644
--- a/doc/lispref/advice.texi
+++ b/doc/lispref/advice.texi
@@ -13,30 +13,35 @@ for a library to customize functions defined within Emacs---cleaner
13than redefining the whole function. 13than redefining the whole function.
14 14
15@cindex piece of advice 15@cindex piece of advice
16 Each function can have multiple @dfn{pieces of advice}, separately 16 Each function can have multiple @dfn{pieces of advice}, each of
17defined. Each defined piece of advice can be @dfn{enabled} or 17which can be separately defined and then @dfn{enabled} or
18@dfn{disabled} explicitly. All the enabled pieces of advice for any given 18@dfn{disabled}. All the enabled pieces of advice for any given
19function actually take effect when you @dfn{activate} advice for that 19function actually take effect when you @dfn{activate advice} for that
20function, or when you define or redefine the function. Note that 20function, or when you define or redefine the function. Note that
21enabling a piece of advice and activating advice for a function 21enabling a piece of advice and activating advice for a function are
22are not the same thing. 22not the same thing.
23 23
24 @strong{Usage Note:} Advice is useful for altering the behavior of 24 Advice is useful for altering the behavior of existing calls to an
25existing calls to an existing function. If you want the new behavior 25existing function. If you want the new behavior for new function
26for new calls, or for key bindings, you should define a new function 26calls or new key bindings, you should define a new function or
27(or a new command) which uses the existing function. 27command, and have it use the existing function as a subroutine.
28 28
29 @strong{Usage note:} Advising a function can cause confusion in 29 Advising a function can cause confusion in debugging, since people
30debugging, since people who debug calls to the original function may 30who debug calls to the original function may not notice that it has
31not notice that it has been modified with advice. Therefore, if you 31been modified with advice. Therefore, if you have the possibility to
32have the possibility to change the code of that function (or ask 32change the code of that function to run a hook, please solve the
33someone to do so) to run a hook, please solve the problem that way. 33problem that way. Advice should be reserved for the cases where you
34Advice should be reserved for the cases where you cannot get the 34cannot get the function changed. In particular, Emacs' own source
35function changed. 35files should not put advice on functions in Emacs. There are
36 36currently a few exceptions to this convention, but we aim to correct
37 In particular, this means that a file in Emacs should not put advice 37them.
38on a function in Emacs. There are currently a few exceptions to this 38
39convention, but we aim to correct them. 39 Unless you know what you are doing, do @emph{not} advise a primitive
40(@pxref{What Is a Function}). Some primitives are used by the advice
41mechanism; advising them could cause an infinite recursion. Also,
42many primitives are called directly from C code. Calls to the
43primitive from Lisp code will take note of the advice, but calls from
44C code will ignore the advice.
40 45
41@menu 46@menu
42* Simple Advice:: A simple example to explain the basics of advice. 47* Simple Advice:: A simple example to explain the basics of advice.
@@ -48,7 +53,6 @@ convention, but we aim to correct them.
48* Preactivation:: Preactivation is a way of speeding up the 53* Preactivation:: Preactivation is a way of speeding up the
49 loading of compiled advice. 54 loading of compiled advice.
50* Argument Access in Advice:: How advice can access the function's arguments. 55* Argument Access in Advice:: How advice can access the function's arguments.
51* Advising Primitives:: Accessing arguments when advising a primitive.
52* Combined Definition:: How advice is implemented. 56* Combined Definition:: How advice is implemented.
53@end menu 57@end menu
54 58
@@ -258,7 +262,7 @@ All subroutines used by the advice need to be available when the byte
258compiler expands the macro. 262compiler expands the macro.
259 263
260@deffn Command ad-unadvise function 264@deffn Command ad-unadvise function
261This command deletes the advice from @var{function}. 265This command deletes all pieces of advice from @var{function}.
262@end deffn 266@end deffn
263 267
264@deffn Command ad-unadvise-all 268@deffn Command ad-unadvise-all
@@ -355,13 +359,13 @@ replaced with the new one.
355@cindex advice, activating 359@cindex advice, activating
356 360
357By default, advice does not take effect when you define it---only when 361By default, advice does not take effect when you define it---only when
358you @dfn{activate} advice for the function that was advised. However, 362you @dfn{activate} advice for the function. However, the advice will
359the advice will be activated automatically if you define or redefine 363be activated automatically if you define or redefine the function
360the function later. You can request the activation of advice for a 364later. You can request the activation of advice for a function when
361function when you define the advice, by specifying the @code{activate} 365you define the advice, by specifying the @code{activate} flag in the
362flag in the @code{defadvice}. But normally you activate the advice 366@code{defadvice}; or you can activate the advice separately by calling
363for a function by calling the function @code{ad-activate} or one of 367the function @code{ad-activate} or one of the other activation
364the other activation commands listed below. 368commands listed below.
365 369
366Separating the activation of advice from the act of defining it permits 370Separating the activation of advice from the act of defining it permits
367you to add several pieces of advice to one function efficiently, without 371you to add several pieces of advice to one function efficiently, without
@@ -680,39 +684,6 @@ will be 3, and @var{r} will be @code{(2 1 0)} inside the body of
680 These argument constructs are not really implemented as Lisp macros. 684 These argument constructs are not really implemented as Lisp macros.
681Instead they are implemented specially by the advice mechanism. 685Instead they are implemented specially by the advice mechanism.
682 686
683@node Advising Primitives
684@section Advising Primitives
685@cindex advising primitives
686
687 Advising a primitive function (@pxref{What Is a Function}) is risky.
688Some primitive functions are used by the advice mechanism; advising
689them could cause an infinite recursion. Also, many primitive
690functions are called directly from C code. Calls to the primitive
691from Lisp code will take note of the advice, but calls from C code
692will ignore the advice.
693
694When the advice facility constructs the combined definition, it needs
695to know the argument list of the original function. This is not
696always possible for primitive functions. When advice cannot determine
697the argument list, it uses @code{(&rest ad-subr-args)}, which always
698works but is inefficient because it constructs a list of the argument
699values. You can use @code{ad-define-subr-args} to declare the proper
700argument names for a primitive function:
701
702@defun ad-define-subr-args function arglist
703This function specifies that @var{arglist} should be used as the
704argument list for function @var{function}.
705@end defun
706
707For example,
708
709@example
710(ad-define-subr-args 'fset '(sym newdef))
711@end example
712
713@noindent
714specifies the argument list for the function @code{fset}.
715
716@node Combined Definition 687@node Combined Definition
717@section The Combined Definition 688@section The Combined Definition
718 689
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index 91e224a439f..f4e7c922331 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -37,13 +37,13 @@ are done, and the subroutines that allow Lisp programs to do them.
37@node Command Overview 37@node Command Overview
38@section Command Loop Overview 38@section Command Loop Overview
39 39
40 The first thing the command loop must do is read a key sequence, which 40 The first thing the command loop must do is read a key sequence,
41is a sequence of events that translates into a command. It does this by 41which is a sequence of input events that translates into a command.
42calling the function @code{read-key-sequence}. Your Lisp code can also 42It does this by calling the function @code{read-key-sequence}. Lisp
43call this function (@pxref{Key Sequence Input}). Lisp programs can also 43programs can also call this function (@pxref{Key Sequence Input}).
44do input at a lower level with @code{read-event} (@pxref{Reading One 44They can also read input at a lower level with @code{read-key} or
45Event}) or discard pending input with @code{discard-input} 45@code{read-event} (@pxref{Reading One Event}), or discard pending
46(@pxref{Event Input Misc}). 46input with @code{discard-input} (@pxref{Event Input Misc}).
47 47
48 The key sequence is translated into a command through the currently 48 The key sequence is translated into a command through the currently
49active keymaps. @xref{Key Lookup}, for information on how this is done. 49active keymaps. @xref{Key Lookup}, for information on how this is done.
@@ -67,12 +67,9 @@ use the minibuffer, so if you call @code{find-file} as a function from
67Lisp code, you must supply the file name string as an ordinary Lisp 67Lisp code, you must supply the file name string as an ordinary Lisp
68function argument. 68function argument.
69 69
70 If the command is a string or vector (i.e., a keyboard macro) then 70 If the command is a keyboard macro (i.e.@: a string or vector),
71@code{execute-kbd-macro} is used to execute it. You can call this 71Emacs executes it using @code{execute-kbd-macro} (@pxref{Keyboard
72function yourself (@pxref{Keyboard Macros}). 72Macros}).
73
74 To terminate the execution of a running command, type @kbd{C-g}. This
75character causes @dfn{quitting} (@pxref{Quitting}).
76 73
77@defvar pre-command-hook 74@defvar pre-command-hook
78This normal hook is run by the editor command loop before it executes 75This normal hook is run by the editor command loop before it executes
@@ -175,8 +172,8 @@ or more arguments.
175 172
176@item 173@item
177It may be a string; its contents are a sequence of elements separated 174It may be a string; its contents are a sequence of elements separated
178by newlines, one for each parameter@footnote{Some elements actually 175by newlines, one for each argument@footnote{Some elements actually
179supply two parameters.}. Each element consists of a code character 176supply two arguments.}. Each element consists of a code character
180(@pxref{Interactive Codes}) optionally followed by a prompt (which 177(@pxref{Interactive Codes}) optionally followed by a prompt (which
181some code characters use and some ignore). Here is an example: 178some code characters use and some ignore). Here is an example:
182 179
@@ -575,21 +572,24 @@ the command is a function, @code{command-execute} calls
575@code{call-interactively}, which reads the arguments and calls the 572@code{call-interactively}, which reads the arguments and calls the
576command. You can also call these functions yourself. 573command. You can also call these functions yourself.
577 574
578@defun commandp object &optional for-call-interactively 575 Note that the term ``command'', in this context, refers to an
579Returns @code{t} if @var{object} is suitable for calling interactively; 576interactively callable function (or function-like object), or a
580that is, if @var{object} is a command. Otherwise, returns @code{nil}. 577keyboard macro. It does not refer to the key sequence used to invoke
581 578a command (@pxref{Keymaps}).
582Interactively-callable objects include strings and vectors (which are
583treated as keyboard macros), lambda expressions that contain a
584top-level @code{interactive} form (@pxref{Using Interactive}),
585byte-code function objects made from such lambda expressions, autoload
586objects that are declared as interactive (non-@code{nil} fourth
587argument to @code{autoload}), and some primitive functions.
588 579
589A symbol satisfies @code{commandp} if it has a non-@code{nil} 580@defun commandp object &optional for-call-interactively
581This function returns @code{t} if @var{object} is a command.
582Otherwise, it returns @code{nil}.
583
584Commands include strings and vectors (which are treated as keyboard
585macros), lambda expressions that contain a top-level
586@code{interactive} form (@pxref{Using Interactive}), byte-code
587function objects made from such lambda expressions, autoload objects
588that are declared as interactive (non-@code{nil} fourth argument to
589@code{autoload}), and some primitive functions. Also, a symbol is
590considered a command if it has a non-@code{nil}
590@code{interactive-form} property, or if its function definition 591@code{interactive-form} property, or if its function definition
591satisfies @code{commandp}. Keys and keymaps are not commands. 592satisfies @code{commandp}.
592Rather, they are used to look up commands (@pxref{Keymaps}).
593 593
594If @var{for-call-interactively} is non-@code{nil}, then 594If @var{for-call-interactively} is non-@code{nil}, then
595@code{commandp} returns @code{t} only for objects that 595@code{commandp} returns @code{t} only for objects that
@@ -649,14 +649,14 @@ callable function or a keyboard macro.
649 649
650A string or vector as @var{command} is executed with 650A string or vector as @var{command} is executed with
651@code{execute-kbd-macro}. A function is passed to 651@code{execute-kbd-macro}. A function is passed to
652@code{call-interactively}, along with the optional @var{record-flag} 652@code{call-interactively} (see above), along with the
653and @var{keys}. 653@var{record-flag} and @var{keys} arguments.
654 654
655A symbol is handled by using its function definition in its place. A 655If @var{command} is a symbol, its function definition is used in its
656symbol with an @code{autoload} definition counts as a command if it was 656place. A symbol with an @code{autoload} definition counts as a
657declared to stand for an interactively callable function. Such a 657command if it was declared to stand for an interactively callable
658definition is handled by loading the specified library and then 658function. Such a definition is handled by loading the specified
659rechecking the definition of the symbol. 659library and then rechecking the definition of the symbol.
660 660
661The argument @var{special}, if given, means to ignore the prefix 661The argument @var{special}, if given, means to ignore the prefix
662argument and not clear it. This is used for executing special events 662argument and not clear it. This is used for executing special events
@@ -1131,9 +1131,9 @@ The
1131@ifnottex 1131@ifnottex
11322**22 11322**22
1133@end ifnottex 1133@end ifnottex
1134bit in the character code indicates a character typed with 1134bit in the character code indicates a character typed with the alt key
1135the alt key held down. (On some terminals, the key labeled @key{ALT} 1135held down. (The key labeled @key{Alt} on most keyboards is actually
1136is actually the meta key.) 1136treated as the meta key, not this.)
1137@end table 1137@end table
1138 1138
1139 It is best to avoid mentioning specific bit numbers in your program. 1139 It is best to avoid mentioning specific bit numbers in your program.
@@ -1151,10 +1151,10 @@ specify the characters (@pxref{Changing Key Bindings}). The function
1151 1151
1152@cindex function keys 1152@cindex function keys
1153Most keyboards also have @dfn{function keys}---keys that have names or 1153Most keyboards also have @dfn{function keys}---keys that have names or
1154symbols that are not characters. Function keys are represented in Emacs 1154symbols that are not characters. Function keys are represented in
1155Lisp as symbols; the symbol's name is the function key's label, in lower 1155Emacs Lisp as symbols; the symbol's name is the function key's label,
1156case. For example, pressing a key labeled @key{F1} places the symbol 1156in lower case. For example, pressing a key labeled @key{F1} generates
1157@code{f1} in the input stream. 1157an input event represented by the symbol @code{f1}.
1158 1158
1159The event type of a function key event is the event symbol itself. 1159The event type of a function key event is the event symbol itself.
1160@xref{Classifying Events}. 1160@xref{Classifying Events}.
@@ -1287,6 +1287,11 @@ the marginal areas, @var{position} has this form:
1287 @var{image} (@var{dx} . @var{dy}) (@var{width} . @var{height})) 1287 @var{image} (@var{dx} . @var{dy}) (@var{width} . @var{height}))
1288@end example 1288@end example
1289 1289
1290@noindent
1291The meanings of these list elements are documented below.
1292@xref{Accessing Mouse}, for functions that let you easily access these
1293elements.
1294
1290@table @asis 1295@table @asis
1291@item @var{window} 1296@item @var{window}
1292This is the window in which the click occurred. 1297This is the window in which the click occurred.
@@ -1298,39 +1303,36 @@ which the click occurred. It is one of the symbols @code{mode-line},
1298@code{header-line}, @code{vertical-line}, @code{left-margin}, 1303@code{header-line}, @code{vertical-line}, @code{left-margin},
1299@code{right-margin}, @code{left-fringe}, or @code{right-fringe}. 1304@code{right-margin}, @code{left-fringe}, or @code{right-fringe}.
1300 1305
1301In one special case, @var{pos-or-area} is a list containing a symbol (one 1306In one special case, @var{pos-or-area} is a list containing a symbol
1302of the symbols listed above) instead of just the symbol. This happens 1307(one of the symbols listed above) instead of just the symbol. This
1303after the imaginary prefix keys for the event are inserted into the 1308happens after the imaginary prefix keys for the event are registered
1304input stream. @xref{Key Sequence Input}. 1309by Emacs. @xref{Key Sequence Input}.
1305
1306 1310
1307@item @var{x}, @var{y} 1311@item @var{x}, @var{y}
1308These are the pixel coordinates of the click, relative to 1312These are the relative pixel coordinates of the click. For clicks in
1309the top left corner of @var{window}, which is @code{(0 . 0)}. 1313the text area of a window, the coordinate origin @code{(0 . 0)} is
1310For a click on text, these are relative to the top left corner of 1314taken to be the top left corner of the text area. @xref{Window
1311the window's text area. For the mode or header line, they are 1315Sizes}. For clicks in a mode line or header line, the coordinate
1312relative to the top left window edge. For fringes, margins, and the 1316origin is the top left corner of the window itself. For fringes,
1313vertical border, @var{x} does not have meaningful data. For fringes 1317margins, and the vertical border, @var{x} does not have meaningful
1314and margins, @var{y} is relative to the bottom edge of the header 1318data. For fringes and margins, @var{y} is relative to the bottom edge
1315line. 1319of the header line. In all cases, the @var{x} and @var{y} coordinates
1320increase rightward and downward respectively.
1316 1321
1317@item @var{timestamp} 1322@item @var{timestamp}
1318This is the time at which the event occurred, in milliseconds. 1323This is the time at which the event occurred, in milliseconds.
1319 1324
1320@item @var{object} 1325@item @var{object}
1321This is the object on which the click occurred. It is either 1326This is either @code{nil} if there is no string-type text property at
1322@code{nil} if there is no string property, or it has the form 1327the click position, or a cons cell of the form (@var{string}
1323(@var{string} . @var{string-pos}) when there is a string-type text 1328. @var{string-pos}) if there is one:
1324property at the click position.
1325 1329
1326@table @asis 1330@table @asis
1327@item @var{string} 1331@item @var{string}
1328This is the string on which the click occurred, including any 1332The string which was clicked on, including any properties.
1329properties.
1330 1333
1331@item @var{string-pos} 1334@item @var{string-pos}
1332This is the position in the string on which the click occurred, 1335The position in the string where the click occurred.
1333relevant if properties at the click need to be looked up.
1334@end table 1336@end table
1335 1337
1336@item @var{text-pos} 1338@item @var{text-pos}
@@ -1340,14 +1342,17 @@ the window. For other events, it is the current buffer position in
1340the window. 1342the window.
1341 1343
1342@item @var{col}, @var{row} 1344@item @var{col}, @var{row}
1343These are the actual coordinates of the glyph under the @var{x}, 1345These are the actual column and row coordinate numbers of the glyph
1344@var{y} position, possibly padded with default character width 1346under the @var{x}, @var{y} position. If @var{x} lies beyond the last
1345glyphs if @var{x} is beyond the last glyph on the line. For clicks on 1347column of actual text on its line, @var{col} is reported by adding
1346the header or mode line, these are measured from the top left edge of 1348fictional extra columns that have the default character width. Row 0
1347the header or mode line. For clicks on the fringes and on the 1349is taken to be the header line if the window has one, or the topmost
1348vertical border, these have no meaningful data. For clicks on the 1350row of the text area otherwise. Column 0 is taken to be the leftmost
1349margins, @var{col} is measured from the left edge of the margin area 1351column of the text area for clicks on a window text area, or the
1350and @var{row} is measured from the top of the margin area. 1352leftmost mode line or header line column for clicks there. For clicks
1353on fringes or vertical borders, these have no meaningful data. For
1354clicks on margins, @var{col} is measured from the left edge of the
1355margin area and @var{row} is measured from the top of the margin area.
1351 1356
1352@item @var{image} 1357@item @var{image}
1353This is the image object on which the click occurred. It is either 1358This is the image object on which the click occurred. It is either
@@ -1885,7 +1890,7 @@ must be the last element of the list. For example,
1885a mouse button or motion event. 1890a mouse button or motion event.
1886 1891
1887 These two functions return the starting or ending position of a 1892 These two functions return the starting or ending position of a
1888mouse-button event, as a list of this form: 1893mouse-button event, as a list of this form (@pxref{Click Events}):
1889 1894
1890@example 1895@example
1891(@var{window} @var{pos-or-area} (@var{x} . @var{y}) @var{timestamp} 1896(@var{window} @var{pos-or-area} (@var{x} . @var{y}) @var{timestamp}
@@ -1936,12 +1941,13 @@ Return the pixel-based x and y coordinates in @var{position}, as a
1936cons cell @code{(@var{x} . @var{y})}. These coordinates are relative 1941cons cell @code{(@var{x} . @var{y})}. These coordinates are relative
1937to the window given by @code{posn-window}. 1942to the window given by @code{posn-window}.
1938 1943
1939This example shows how to convert these window-relative coordinates 1944This example shows how to convert the window-relative coordinates in
1940into frame-relative coordinates: 1945the text area of a window into frame-relative coordinates:
1941 1946
1942@example 1947@example
1943(defun frame-relative-coordinates (position) 1948(defun frame-relative-coordinates (position)
1944 "Return frame-relative coordinates from POSITION." 1949 "Return frame-relative coordinates from POSITION.
1950POSITION is assumed to lie in a window text area."
1945 (let* ((x-y (posn-x-y position)) 1951 (let* ((x-y (posn-x-y position))
1946 (window (posn-window position)) 1952 (window (posn-window position))
1947 (edges (window-inside-pixel-edges window))) 1953 (edges (window-inside-pixel-edges window)))
@@ -1966,10 +1972,10 @@ window possesses a header line (@pxref{Header Lines}), it is
1966 1972
1967@defun posn-actual-col-row position 1973@defun posn-actual-col-row position
1968Return the actual row and column in @var{position}, as a cons cell 1974Return the actual row and column in @var{position}, as a cons cell
1969@code{(@var{col} . @var{row})}. The values are the actual row number 1975@code{(@var{col} . @var{row})}. The values are the actual row and
1970in the window, and the actual character number in that row. It returns 1976column numbers in the window. @xref{Click Events}, for details. It
1971@code{nil} if @var{position} does not include actual positions values. 1977returns @code{nil} if @var{position} does not include actual positions
1972You can use @code{posn-col-row} to get approximate values. 1978values.
1973@end defun 1979@end defun
1974 1980
1975@defun posn-string position 1981@defun posn-string position
@@ -2680,9 +2686,9 @@ Likewise, incremental search uses this feature to unread events with no
2680special meaning in a search, because these events should exit the search 2686special meaning in a search, because these events should exit the search
2681and then execute normally. 2687and then execute normally.
2682 2688
2683The reliable and easy way to extract events from a key sequence so as to 2689The reliable and easy way to extract events from a key sequence so as
2684put them in @code{unread-command-events} is to use 2690to put them in @code{unread-command-events} is to use
2685@code{listify-key-sequence} (@pxref{Strings of Events}). 2691@code{listify-key-sequence} (see below).
2686 2692
2687Normally you add events to the front of this list, so that the events 2693Normally you add events to the front of this list, so that the events
2688most recently unread will be reread first. 2694most recently unread will be reread first.
@@ -2787,28 +2793,29 @@ during the sleep.
2787@section Special Events 2793@section Special Events
2788 2794
2789@cindex special events 2795@cindex special events
2790Special events are handled at a very low level---as soon as they are 2796Certain @dfn{special events} are handled at a very low level---as soon
2791read. The @code{read-event} function processes these events itself, and 2797as they are read. The @code{read-event} function processes these
2792never returns them. Instead, it keeps waiting for the first event 2798events itself, and never returns them. Instead, it keeps waiting for
2793that is not special and returns that one. 2799the first event that is not special and returns that one.
2794 2800
2795Events that are handled in this way do not echo, they are never grouped 2801 Special events do not echo, they are never grouped into key
2796into key sequences, and they never appear in the value of 2802sequences, and they never appear in the value of
2797@code{last-command-event} or @code{(this-command-keys)}. They do not 2803@code{last-command-event} or @code{(this-command-keys)}. They do not
2798discard a numeric argument, they cannot be unread with 2804discard a numeric argument, they cannot be unread with
2799@code{unread-command-events}, they may not appear in a keyboard macro, 2805@code{unread-command-events}, they may not appear in a keyboard macro,
2800and they are not recorded in a keyboard macro while you are defining 2806and they are not recorded in a keyboard macro while you are defining
2801one. 2807one.
2802 2808
2803These events do, however, appear in @code{last-input-event} immediately 2809 Special events do, however, appear in @code{last-input-event}
2804after they are read, and this is the way for the event's definition to 2810immediately after they are read, and this is the way for the event's
2805find the actual event. 2811definition to find the actual event.
2806 2812
2807The events types @code{iconify-frame}, @code{make-frame-visible}, 2813 The events types @code{iconify-frame}, @code{make-frame-visible},
2808@code{delete-frame}, @code{drag-n-drop}, and user signals like 2814@code{delete-frame}, @code{drag-n-drop}, and user signals like
2809@code{sigusr1} are normally handled in this way. The keymap which 2815@code{sigusr1} are normally handled in this way. The keymap which
2810defines how to handle special events---and which events are special---is 2816defines how to handle special events---and which events are
2811in the variable @code{special-event-map} (@pxref{Active Keymaps}). 2817special---is in the variable @code{special-event-map} (@pxref{Active
2818Keymaps}).
2812 2819
2813@node Waiting 2820@node Waiting
2814@section Waiting for Elapsed Time or Input 2821@section Waiting for Elapsed Time or Input
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index 4e21df78430..90d038c29d6 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -32,9 +32,6 @@ variable binding for @code{no-byte-compile} into it, like this:
32;; -*-no-byte-compile: t; -*- 32;; -*-no-byte-compile: t; -*-
33@end example 33@end example
34 34
35 @xref{Compilation Errors}, for how to investigate errors occurring in
36byte compilation.
37
38@menu 35@menu
39* Speed of Byte-Code:: An example of speedup from byte compilation. 36* Speed of Byte-Code:: An example of speedup from byte compilation.
40* Compilation Functions:: Byte compilation functions. 37* Compilation Functions:: Byte compilation functions.
@@ -56,18 +53,16 @@ Here is an example:
56@example 53@example
57@group 54@group
58(defun silly-loop (n) 55(defun silly-loop (n)
59 "Return time before and after N iterations of a loop." 56 "Return the time, in seconds, to run N iterations of a loop."
60 (let ((t1 (current-time-string))) 57 (let ((t1 (float-time)))
61 (while (> (setq n (1- n)) 58 (while (> (setq n (1- n)) 0))
62 0)) 59 (- (float-time) t1)))
63 (list t1 (current-time-string))))
64@result{} silly-loop 60@result{} silly-loop
65@end group 61@end group
66 62
67@group 63@group
68(silly-loop 50000000) 64(silly-loop 50000000)
69@result{} ("Wed Mar 11 21:10:19 2009" 65@result{} 10.235304117202759
70 "Wed Mar 11 21:10:41 2009") ; @r{22 seconds}
71@end group 66@end group
72 67
73@group 68@group
@@ -77,18 +72,17 @@ Here is an example:
77 72
78@group 73@group
79(silly-loop 50000000) 74(silly-loop 50000000)
80@result{} ("Wed Mar 11 21:12:26 2009" 75@result{} 3.705854892730713
81 "Wed Mar 11 21:12:32 2009") ; @r{6 seconds}
82@end group 76@end group
83@end example 77@end example
84 78
85 In this example, the interpreted code required 22 seconds to run, 79 In this example, the interpreted code required 10 seconds to run,
86whereas the byte-compiled code required 6 seconds. These results are 80whereas the byte-compiled code required less than 4 seconds. These
87representative, but actual results will vary greatly. 81results are representative, but actual results may vary.
88 82
89@node Compilation Functions 83@node Compilation Functions
90@comment node-name, next, previous, up 84@comment node-name, next, previous, up
91@section The Compilation Functions 85@section Byte-Compilation Functions
92@cindex compilation functions 86@cindex compilation functions
93 87
94 You can byte-compile an individual function or macro definition with 88 You can byte-compile an individual function or macro definition with
@@ -96,43 +90,36 @@ the @code{byte-compile} function. You can compile a whole file with
96@code{byte-compile-file}, or several files with 90@code{byte-compile-file}, or several files with
97@code{byte-recompile-directory} or @code{batch-byte-compile}. 91@code{byte-recompile-directory} or @code{batch-byte-compile}.
98 92
99 The byte compiler produces error messages and warnings about each file 93 Sometimes, the byte compiler produces warning and/or error messages
100in a buffer called @samp{*Compile-Log*}. These report things in your 94(@pxref{Compiler Errors}, for details). These messages are recorded
101program that suggest a problem but are not necessarily erroneous. 95in a buffer called @samp{*Compile-Log*}, which uses Compilation mode.
96@xref{Compilation Mode,,,emacs, The GNU Emacs Manual}.
102 97
103@cindex macro compilation 98@cindex macro compilation
104 Be careful when writing macro calls in files that you may someday 99 Be careful when writing macro calls in files that you intend to
105byte-compile. Macro calls are expanded when they are compiled, so the 100byte-compile. Since macro calls are expanded when they are compiled,
106macros must already be defined for proper compilation. For more 101the macros need to be loaded into Emacs or the byte compiler will not
107details, see @ref{Compiling Macros}. If a program does not work the 102do the right thing. The usual way to handle this is with
108same way when compiled as it does when interpreted, erroneous macro 103@code{require} forms which specify the files containing the needed
109definitions are one likely cause (@pxref{Problems with Macros}). 104macro definitions (@pxref{Named Features}). Normally, the
110Inline (@code{defsubst}) functions are less troublesome; if you 105byte compiler does not evaluate the code that it is compiling, but it
106handles @code{require} forms specially, by loading the specified
107libraries. To avoid loading the macro definition files when someone
108@emph{runs} the compiled program, write @code{eval-when-compile}
109around the @code{require} calls (@pxref{Eval During Compile}). For
110more details, @xref{Compiling Macros}.
111
112 Inline (@code{defsubst}) functions are less troublesome; if you
111compile a call to such a function before its definition is known, the 113compile a call to such a function before its definition is known, the
112call will still work right, it will just run slower. 114call will still work right, it will just run slower.
113 115
114 Normally, compiling a file does not evaluate the file's contents or
115load the file. But it does execute any @code{require} calls at top
116level in the file. One way to ensure that necessary macro definitions
117are available during compilation is to require the file that defines
118them (@pxref{Named Features}). To avoid loading the macro definition files
119when someone @emph{runs} the compiled program, write
120@code{eval-when-compile} around the @code{require} calls (@pxref{Eval
121During Compile}).
122
123@defun byte-compile symbol 116@defun byte-compile symbol
124This function byte-compiles the function definition of @var{symbol}, 117This function byte-compiles the function definition of @var{symbol},
125replacing the previous definition with the compiled one. The function 118replacing the previous definition with the compiled one. The function
126definition of @var{symbol} must be the actual code for the function; 119definition of @var{symbol} must be the actual code for the function;
127i.e., the compiler does not follow indirection to another symbol. 120@code{byte-compile} does not handle function indirection. The return
128@code{byte-compile} returns the new, compiled definition of 121value is the byte-code function object which is the compiled
129@var{symbol}. 122definition of @var{symbol} (@pxref{Byte-Code Objects}).
130
131 If @var{symbol}'s definition is a byte-code function object,
132@code{byte-compile} does nothing and returns @code{nil}. Lisp records
133only one function definition for any symbol, and if that is already
134compiled, non-compiled code is not available anywhere. So there is no
135way to ``compile the same definition again.''
136 123
137@example 124@example
138@group 125@group
@@ -153,16 +140,15 @@ way to ``compile the same definition again.''
153@end group 140@end group
154@end example 141@end example
155 142
156@noindent 143If @var{symbol}'s definition is a byte-code function object,
157The result is a byte-code function object. The string it contains is 144@code{byte-compile} does nothing and returns @code{nil}. It does not
158the actual byte-code; each character in it is an instruction or an 145``compile the symbol's definition again'', since the original
159operand of an instruction. The vector contains all the constants, 146(non-compiled) code has already been replaced in the symbol's function
160variable names and function names used by the function, except for 147cell by the byte-compiled code.
161certain primitives that are coded as special instructions. 148
162 149The argument to @code{byte-compile} can also be a @code{lambda}
163If the argument to @code{byte-compile} is a @code{lambda} expression, 150expression. In that case, the function returns the corresponding
164it returns the corresponding compiled code, but does not store 151compiled code but does not store it anywhere.
165it anywhere.
166@end defun 152@end defun
167 153
168@deffn Command compile-defun &optional arg 154@deffn Command compile-defun &optional arg
@@ -252,19 +238,6 @@ files that have an up-to-date @samp{.elc} file.
252@end example 238@end example
253@end defun 239@end defun
254 240
255@defun byte-code code-string data-vector max-stack
256@cindex byte-code interpreter
257This function actually interprets byte-code. A byte-compiled function
258is actually defined with a body that calls @code{byte-code}. Don't call
259this function yourself---only the byte compiler knows how to generate
260valid calls to this function.
261
262In Emacs version 18, byte-code was always executed by way of a call to
263the function @code{byte-code}. Nowadays, byte-code is usually executed
264as part of a byte-code function object, and only rarely through an
265explicit call to @code{byte-code}.
266@end defun
267
268@node Docs and Compilation 241@node Docs and Compilation
269@section Documentation Strings and Compilation 242@section Documentation Strings and Compilation
270@cindex dynamic loading of documentation 243@cindex dynamic loading of documentation
@@ -290,33 +263,11 @@ then further access to documentation strings in this file will
290probably give nonsense results. 263probably give nonsense results.
291@end itemize 264@end itemize
292 265
293 If your site installs Emacs following the usual procedures, these 266@noindent
294problems will never normally occur. Installing a new version uses a new 267These problems normally occur only if you build Emacs yourself and use
295directory with a different name; as long as the old version remains 268it from the directory where you built it, and you happen to edit
296installed, its files will remain unmodified in the places where they are 269and/or recompile the Lisp source files. They can be easily cured by
297expected to be. 270reloading each file after recompiling it.
298
299 However, if you have built Emacs yourself and use it from the
300directory where you built it, you will experience this problem
301occasionally if you edit and recompile Lisp files. When it happens, you
302can cure the problem by reloading the file after recompiling it.
303
304 You can turn off this feature at compile time by setting
305@code{byte-compile-dynamic-docstrings} to @code{nil}; this is useful
306mainly if you expect to change the file, and you want Emacs processes
307that have already loaded it to keep working when the file changes.
308You can do this globally, or for one source file by specifying a
309file-local binding for the variable. One way to do that is by adding
310this string to the file's first line:
311
312@example
313-*-byte-compile-dynamic-docstrings: nil;-*-
314@end example
315
316@defvar byte-compile-dynamic-docstrings
317If this is non-@code{nil}, the byte compiler generates compiled files
318that are set up for dynamic loading of documentation strings.
319@end defvar
320 271
321@cindex @samp{#@@@var{count}} 272@cindex @samp{#@@@var{count}}
322@cindex @samp{#$} 273@cindex @samp{#$}
@@ -328,6 +279,23 @@ string.'' It is usually best not to use these constructs in Lisp source
328files, since they are not designed to be clear to humans reading the 279files, since they are not designed to be clear to humans reading the
329file. 280file.
330 281
282 You can disable the dynamic documentation string feature at compile
283time by setting @code{byte-compile-dynamic-docstrings} to @code{nil};
284this is useful mainly if you expect to change the file, and you want
285Emacs processes that have already loaded it to keep working when the
286file changes. You can do this globally, or for one source file by
287specifying a file-local binding for the variable. One way to do that
288is by adding this string to the file's first line:
289
290@example
291-*-byte-compile-dynamic-docstrings: nil;-*-
292@end example
293
294@defvar byte-compile-dynamic-docstrings
295If this is non-@code{nil}, the byte compiler generates compiled files
296that are set up for dynamic loading of documentation strings.
297@end defvar
298
331@node Dynamic Loading 299@node Dynamic Loading
332@section Dynamic Loading of Individual Functions 300@section Dynamic Loading of Individual Functions
333 301
@@ -477,13 +445,22 @@ to what @code{eval-when-compile} does.
477 Byte compilation outputs all errors and warnings into the buffer 445 Byte compilation outputs all errors and warnings into the buffer
478@samp{*Compile-Log*}. The messages include file names and line 446@samp{*Compile-Log*}. The messages include file names and line
479numbers that identify the location of the problem. The usual Emacs 447numbers that identify the location of the problem. The usual Emacs
480commands for operating on compiler diagnostics work properly on 448commands for operating on compiler diagnostics work properly on these
481these messages. 449messages.
482 450
483 However, the warnings about functions that were used but not 451 When an error is due to invalid syntax in the program, the byte
484defined are always ``located'' at the end of the file, so these 452compiler might get confused about the errors' exact location. One way
485commands won't find the places they are really used. To do that, 453to investigate is to switch to the buffer @w{@samp{*Compiler Input*}}.
486you must search for the function names. 454(This buffer name starts with a space, so it does not show up in
455@kbd{M-x list-buffers}.) This buffer contains the program being
456compiled, and point shows how far the byte compiler was able to read;
457the cause of the error might be nearby. @xref{Syntax Errors}, for
458some tips for locating syntax errors.
459
460 When the byte compiler warns about functions that were used but not
461defined, it always reports the line number for the end of the file,
462not the locations where the missing functions were called. To find
463the latter, you must search for the function names.
487 464
488 You can suppress the compiler warning for calling an undefined 465 You can suppress the compiler warning for calling an undefined
489function @var{func} by conditionalizing the function call on an 466function @var{func} by conditionalizing the function call on an
@@ -541,17 +518,16 @@ one you intend to suppress.
541@cindex byte-code function 518@cindex byte-code function
542 519
543 Byte-compiled functions have a special data type: they are 520 Byte-compiled functions have a special data type: they are
544@dfn{byte-code function objects}. 521@dfn{byte-code function objects}. Whenever such an object appears as
522a function to be called, Emacs uses the byte-code interpreter to
523execute the byte-code.
545 524
546 Internally, a byte-code function object is much like a vector; 525 Internally, a byte-code function object is much like a vector; its
547however, the evaluator handles this data type specially when it appears 526elements can be accessed using @code{aref}. Its printed
548as a function to be called. The printed representation for a byte-code 527representation is like that for a vector, with an additional @samp{#}
549function object is like that for a vector, with an additional @samp{#} 528before the opening @samp{[}. It must have at least four elements;
550before the opening @samp{[}. 529there is no maximum number, but only the first six elements have any
551 530normal use. They are:
552 A byte-code function object must have at least four elements; there is
553no maximum number, but only the first six elements have any normal use.
554They are:
555 531
556@table @var 532@table @var
557@item arglist 533@item arglist
@@ -588,7 +564,7 @@ representation. It is the definition of the command
588 [arg 1 forward-sexp] 564 [arg 1 forward-sexp]
589 2 565 2
590 254435 566 254435
591 "p"] 567 "^p"]
592@end example 568@end example
593 569
594 The primitive way to create a byte-code object is with 570 The primitive way to create a byte-code object is with
@@ -604,10 +580,6 @@ function yourself, because if they are inconsistent, Emacs may crash
604when you call the function. Always leave it to the byte compiler to 580when you call the function. Always leave it to the byte compiler to
605create these objects; it makes the elements consistent (we hope). 581create these objects; it makes the elements consistent (we hope).
606 582
607 You can access the elements of a byte-code object using @code{aref};
608you can also use @code{vconcat} to create a vector with the same
609elements.
610
611@node Disassembly 583@node Disassembly
612@section Disassembled Byte-Code 584@section Disassembled Byte-Code
613@cindex disassembled byte-code 585@cindex disassembled byte-code
diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi
index 3673f753a0a..c23c93300a6 100644
--- a/doc/lispref/control.texi
+++ b/doc/lispref/control.texi
@@ -948,8 +948,8 @@ The effect of @code{debug} here is only to prevent
948given error will invoke the debugger only if @code{debug-on-error} and 948given error will invoke the debugger only if @code{debug-on-error} and
949the other usual filtering mechanisms say it should. @xref{Error Debugging}. 949the other usual filtering mechanisms say it should. @xref{Error Debugging}.
950 950
951@defmac condition-case-no-debug var protected-form handlers@dots{} 951@defmac condition-case-unless-debug var protected-form handlers@dots{}
952The macro @code{condition-case-no-debug} provides another way to 952The macro @code{condition-case-unless-debug} provides another way to
953handle debugging of such forms. It behaves exactly like 953handle debugging of such forms. It behaves exactly like
954@code{condition-case}, unless the variable @code{debug-on-error} is 954@code{condition-case}, unless the variable @code{debug-on-error} is
955non-@code{nil}, in which case it does not handle any errors at all. 955non-@code{nil}, in which case it does not handle any errors at all.
@@ -1131,9 +1131,9 @@ Here's the example at the beginning of this subsection rewritten using
1131@defmac with-demoted-errors body@dots{} 1131@defmac with-demoted-errors body@dots{}
1132This macro is like a milder version of @code{ignore-errors}. Rather 1132This macro is like a milder version of @code{ignore-errors}. Rather
1133than suppressing errors altogether, it converts them into messages. 1133than suppressing errors altogether, it converts them into messages.
1134Use this form around code that is not expected to signal errors, 1134Use this form around code that is not expected to signal errors, but
1135but should be robust if one does occur. Note that this macro 1135should be robust if one does occur. Note that this macro uses
1136uses @code{condition-case-no-debug} rather than @code{condition-case}. 1136@code{condition-case-unless-debug} rather than @code{condition-case}.
1137@end defmac 1137@end defmac
1138 1138
1139@node Error Symbols 1139@node Error Symbols
diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi
index cc92fc225f9..6e7d0078e07 100644
--- a/doc/lispref/debugging.texi
+++ b/doc/lispref/debugging.texi
@@ -6,41 +6,46 @@
6@node Debugging, Read and Print, Advising Functions, Top 6@node Debugging, Read and Print, Advising Functions, Top
7@chapter Debugging Lisp Programs 7@chapter Debugging Lisp Programs
8 8
9 There are three ways to investigate a problem in an Emacs Lisp program, 9 There are several ways to find and investigate problems in an Emacs
10depending on what you are doing with the program when the problem appears. 10Lisp program.
11 11
12@itemize @bullet 12@itemize @bullet
13@item 13@item
14If the problem occurs when you run the program, you can use a Lisp 14If a problem occurs when you run the program, you can use the built-in
15debugger to investigate what is happening during execution. In addition 15Emacs Lisp debugger to suspend the Lisp evaluator, and examine and/or
16to the ordinary debugger, Emacs comes with a source-level debugger, 16alter its internal state.
17Edebug. This chapter describes both of them.
18 17
19@item 18@item
20If the problem is syntactic, so that Lisp cannot even read the program, 19You can use Edebug, a source-level debugger for Emacs Lisp.
21you can use the Emacs facilities for editing Lisp to localize it.
22 20
23@item 21@item
24If the problem occurs when trying to compile the program with the byte 22If a syntactic problem is preventing Lisp from even reading the
25compiler, you need to know how to examine the compiler's input buffer. 23program, you can locate it using Lisp editing commands.
24
25@item
26You can look at the error and warning messages produced by the byte
27compiler when it compiles the program. @xref{Compiler Errors}.
28
29@item
30You can use the Testcover package to perform coverage testing on the
31program.
32
33@item
34You can use the ERT package to write regression tests for the program.
35@xref{Top,the ERT manual,, ERT, ERT: Emacs Lisp Regression Testing}.
26@end itemize 36@end itemize
27 37
38 Other useful tools for debugging input and output problems are the
39dribble file (@pxref{Terminal Input}) and the @code{open-termscript}
40function (@pxref{Terminal Output}).
41
28@menu 42@menu
29* Debugger:: How the Emacs Lisp debugger is implemented. 43* Debugger:: A debugger for the Emacs Lisp evaluator.
30* Edebug:: A source-level Emacs Lisp debugger. 44* Edebug:: A source-level Emacs Lisp debugger.
31* Syntax Errors:: How to find syntax errors. 45* Syntax Errors:: How to find syntax errors.
32* Test Coverage:: Ensuring you have tested all branches in your code. 46* Test Coverage:: Ensuring you have tested all branches in your code.
33* Compilation Errors:: How to find errors that show up in byte compilation.
34@end menu 47@end menu
35 48
36 Another useful debugging tool is the dribble file. When a dribble
37file is open, Emacs copies all keyboard input characters to that file.
38Afterward, you can examine the file to find out what input was used.
39@xref{Terminal Input}.
40
41 For debugging problems in terminal descriptions, the
42@code{open-termscript} function can be useful. @xref{Terminal Output}.
43
44@node Debugger 49@node Debugger
45@section The Lisp Debugger 50@section The Lisp Debugger
46@cindex debugger for Emacs Lisp 51@cindex debugger for Emacs Lisp
@@ -76,25 +81,29 @@ happens. This allows you to investigate the immediate causes of the
76error. 81error.
77 82
78 However, entry to the debugger is not a normal consequence of an 83 However, entry to the debugger is not a normal consequence of an
79error. Many commands frequently cause Lisp errors when invoked 84error. Many commands signal Lisp errors when invoked inappropriately,
80inappropriately, and during ordinary editing it would be very 85and during ordinary editing it would be very inconvenient to enter the
81inconvenient to enter the debugger each time this happens. So if you 86debugger each time this happens. So if you want errors to enter the
82want errors to enter the debugger, set the variable 87debugger, set the variable @code{debug-on-error} to non-@code{nil}.
83@code{debug-on-error} to non-@code{nil}. (The command 88(The command @code{toggle-debug-on-error} provides an easy way to do
84@code{toggle-debug-on-error} provides an easy way to do this.) 89this.)
85 90
86@defopt debug-on-error 91@defopt debug-on-error
87This variable determines whether the debugger is called when an error 92This variable determines whether the debugger is called when an error
88is signaled and not handled. If @code{debug-on-error} is @code{t}, 93is signaled and not handled. If @code{debug-on-error} is @code{t},
89all kinds of errors call the debugger, except those listed in 94all kinds of errors call the debugger, except those listed in
90@code{debug-ignored-errors} (see below). If it is @code{nil}, none 95@code{debug-ignored-errors} (see below). If it is @code{nil}, none
91call the debugger. (Note that @code{eval-expression-debug-on-error} 96call the debugger.
92affects the setting of this variable in some cases; see below.)
93 97
94The value can also be a list of error conditions that should call the 98The value can also be a list of error conditions (@pxref{Signaling
95debugger. For example, if you set it to the list 99Errors}). Then the debugger is called only for error conditions in
96@code{(void-variable)}, then only errors about a variable that has no 100this list (except those also listed in @code{debug-ignored-errors}).
97value invoke the debugger. 101For example, if you set @code{debug-on-error} to the list
102@code{(void-variable)}, the debugger is only called for errors about a
103variable that has no value.
104
105Note that @code{eval-expression-debug-on-error} overrides this
106variable in some cases; see below.
98 107
99When this variable is non-@code{nil}, Emacs does not create an error 108When this variable is non-@code{nil}, Emacs does not create an error
100handler around process filter functions and sentinels. Therefore, 109handler around process filter functions and sentinels. Therefore,
@@ -102,52 +111,50 @@ errors in these functions also invoke the debugger. @xref{Processes}.
102@end defopt 111@end defopt
103 112
104@defopt debug-ignored-errors 113@defopt debug-ignored-errors
105This variable specifies certain kinds of errors that should not enter 114This variable specifies errors which should not enter the debugger,
106the debugger. Its value is a list of error condition symbols and/or 115regardless of the value of @code{debug-on-error}. Its value is a list
107regular expressions. If the error has any of those condition symbols, 116of error condition symbols and/or regular expressions. If the error
108or if the error message matches any of the regular expressions, then 117has any of those condition symbols, or if the error message matches
109that error does not enter the debugger, regardless of the value of 118any of the regular expressions, then that error does not enter the
110@code{debug-on-error}. 119debugger.
111 120
112The normal value of this variable lists several errors that happen often 121The normal value of this variable lists several errors that happen
113during editing but rarely result from bugs in Lisp programs. However, 122often during editing but rarely result from bugs in Lisp programs.
114``rarely'' is not ``never''; if your program fails with an error that 123However, ``rarely'' is not ``never''; if your program fails with an
115matches this list, you will need to change this list in order to debug 124error that matches this list, you may try changing this list to debug
116the error. The easiest way is usually to set 125the error. The easiest way is usually to set
117@code{debug-ignored-errors} to @code{nil}. 126@code{debug-ignored-errors} to @code{nil}.
118@end defopt 127@end defopt
119 128
120@defopt eval-expression-debug-on-error 129@defopt eval-expression-debug-on-error
121If this variable has a non-@code{nil} value, then 130If this variable has a non-@code{nil} value (the default), running the
122@code{debug-on-error} is set to @code{t} when evaluating with the 131command @code{eval-expression} causes @code{debug-on-error} to be
123command @code{eval-expression}. If 132temporarily bound to to @code{t}. @xref{Lisp Eval,, Evaluating
124@code{eval-expression-debug-on-error} is @code{nil}, then the value of
125@code{debug-on-error} is not changed. @xref{Lisp Eval,, Evaluating
126Emacs-Lisp Expressions, emacs, The GNU Emacs Manual}. 133Emacs-Lisp Expressions, emacs, The GNU Emacs Manual}.
127@end defopt
128 134
129@defopt debug-on-signal 135If @code{eval-expression-debug-on-error} is @code{nil}, then the value
130Normally, errors that are caught by @code{condition-case} never run the 136of @code{debug-on-error} is not changed during @code{eval-expression}.
131debugger, even if @code{debug-on-error} is non-@code{nil}. In other
132words, @code{condition-case} gets a chance to handle the error before
133the debugger gets a chance.
134
135If you set @code{debug-on-signal} to a non-@code{nil} value, then the
136debugger gets the first chance at every error; an error will invoke the
137debugger regardless of any @code{condition-case}, if it fits the
138criteria specified by the values of @code{debug-on-error} and
139@code{debug-ignored-errors}.
140
141@strong{Warning:} This variable is strong medicine! Various parts of
142Emacs handle errors in the normal course of affairs, and you may not
143even realize that errors happen there. If you set
144@code{debug-on-signal} to a non-@code{nil} value, those errors will
145enter the debugger.
146
147@strong{Warning:} @code{debug-on-signal} has no effect when
148@code{debug-on-error} is @code{nil}.
149@end defopt 137@end defopt
150 138
139@defvar debug-on-signal
140Normally, errors caught by @code{condition-case} never invoke the
141debugger. The @code{condition-case} gets a chance to handle the error
142before the debugger gets a chance.
143
144If you change @code{debug-on-signal} to a non-@code{nil} value, the
145debugger gets the first chance at every error, regardless of the
146presence of @code{condition-case}. (To invoke the debugger, the error
147must still fulfill the criteria specified by @code{debug-on-error} and
148@code{debug-ignored-errors}.)
149
150@strong{Warning:} Setting this variable to non-@code{nil} may have
151annoying effects. Various parts of Emacs catch errors in the normal
152course of affairs, and you may not even realize that errors happen
153there. If you need to debug code wrapped in @code{condition-case},
154consider using @code{condition-case-unless-debug} (@pxref{Handling
155Errors}).
156@end defvar
157
151@defopt debug-on-event 158@defopt debug-on-event
152If you set @code{debug-on-event} to a special event (@pxref{Special 159If you set @code{debug-on-event} to a special event (@pxref{Special
153Events}), Emacs will try to enter the debugger as soon as it receives 160Events}), Emacs will try to enter the debugger as soon as it receives
@@ -171,27 +178,26 @@ init file.
171@cindex stopping an infinite loop 178@cindex stopping an infinite loop
172 179
173 When a program loops infinitely and fails to return, your first 180 When a program loops infinitely and fails to return, your first
174problem is to stop the loop. On most operating systems, you can do this 181problem is to stop the loop. On most operating systems, you can do
175with @kbd{C-g}, which causes a @dfn{quit}. 182this with @kbd{C-g}, which causes a @dfn{quit}. @xref{Quitting}.
176 183
177 Ordinary quitting gives no information about why the program was 184 Ordinary quitting gives no information about why the program was
178looping. To get more information, you can set the variable 185looping. To get more information, you can set the variable
179@code{debug-on-quit} to non-@code{nil}. Quitting with @kbd{C-g} is not 186@code{debug-on-quit} to non-@code{nil}. Once you have the debugger
180considered an error, and @code{debug-on-error} has no effect on the 187running in the middle of the infinite loop, you can proceed from the
181handling of @kbd{C-g}. Likewise, @code{debug-on-quit} has no effect on 188debugger using the stepping commands. If you step through the entire
182errors. 189loop, you may get enough information to solve the problem.
183 190
184 Once you have the debugger running in the middle of the infinite loop, 191 Quitting with @kbd{C-g} is not considered an error, and
185you can proceed from the debugger using the stepping commands. If you 192@code{debug-on-error} has no effect on the handling of @kbd{C-g}.
186step through the entire loop, you will probably get enough information 193Likewise, @code{debug-on-quit} has no effect on errors.
187to solve the problem.
188 194
189@defopt debug-on-quit 195@defopt debug-on-quit
190This variable determines whether the debugger is called when @code{quit} 196This variable determines whether the debugger is called when
191is signaled and not handled. If @code{debug-on-quit} is non-@code{nil}, 197@code{quit} is signaled and not handled. If @code{debug-on-quit} is
192then the debugger is called whenever you quit (that is, type @kbd{C-g}). 198non-@code{nil}, then the debugger is called whenever you quit (that
193If @code{debug-on-quit} is @code{nil}, then the debugger is not called 199is, type @kbd{C-g}). If @code{debug-on-quit} is @code{nil} (the
194when you quit. @xref{Quitting}. 200default), then the debugger is not called when you quit.
195@end defopt 201@end defopt
196 202
197@node Function Debugging 203@node Function Debugging
@@ -337,8 +343,8 @@ that exiting that frame will call the debugger again. This is useful
337for examining the return value of a function. 343for examining the return value of a function.
338 344
339 If a function name is underlined, that means the debugger knows 345 If a function name is underlined, that means the debugger knows
340where its source code is located. You can click @kbd{Mouse-2} on that 346where its source code is located. You can click with the mouse on
341name, or move to it and type @key{RET}, to visit the source code. 347that name, or move to it and type @key{RET}, to visit the source code.
342 348
343 The debugger itself must be run byte-compiled, since it makes 349 The debugger itself must be run byte-compiled, since it makes
344assumptions about how many stack frames are used for the debugger 350assumptions about how many stack frames are used for the debugger
@@ -364,14 +370,10 @@ to step through a primitive function.
364 370
365@table @kbd 371@table @kbd
366@item c 372@item c
367Exit the debugger and continue execution. When continuing is possible, 373Exit the debugger and continue execution. This resumes execution of
368it resumes execution of the program as if the debugger had never been 374the program as if the debugger had never been entered (aside from any
369entered (aside from any side-effects that you caused by changing 375side-effects that you caused by changing variable values or data
370variable values or data structures while inside the debugger). 376structures while inside the debugger).
371
372Continuing is possible after entry to the debugger due to function entry
373or exit, explicit invocation, or quitting. You cannot continue if the
374debugger was entered because of an error.
375 377
376@item d 378@item d
377Continue execution, but enter the debugger the next time any Lisp 379Continue execution, but enter the debugger the next time any Lisp
@@ -790,29 +792,3 @@ never return. If it ever does return, you get a run-time error.
790 Edebug also has a coverage testing feature (@pxref{Coverage 792 Edebug also has a coverage testing feature (@pxref{Coverage
791Testing}). These features partly duplicate each other, and it would 793Testing}). These features partly duplicate each other, and it would
792be cleaner to combine them. 794be cleaner to combine them.
793
794@node Compilation Errors
795@section Debugging Problems in Compilation
796@cindex debugging byte compilation problems
797
798 When an error happens during byte compilation, it is normally due to
799invalid syntax in the program you are compiling. The compiler prints a
800suitable error message in the @samp{*Compile-Log*} buffer, and then
801stops. The message may state a function name in which the error was
802found, or it may not. Either way, here is how to find out where in the
803file the error occurred.
804
805 What you should do is switch to the buffer @w{@samp{ *Compiler Input*}}.
806(Note that the buffer name starts with a space, so it does not show
807up in @kbd{M-x list-buffers}.) This buffer contains the program being
808compiled, and point shows how far the byte compiler was able to read.
809
810 If the error was due to invalid Lisp syntax, point shows exactly where
811the invalid syntax was @emph{detected}. The cause of the error is not
812necessarily near by! Use the techniques in the previous section to find
813the error.
814
815 If the error was detected while compiling a form that had been read
816successfully, then point is located at the end of the form. In this
817case, this technique can't localize the error precisely, but can still
818show you which function to check.
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index d5870fd3abb..ae8a5fde29f 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -3380,12 +3380,11 @@ indicator.
3380Used for truncation and continuation lines. 3380Used for truncation and continuation lines.
3381 3381
3382@item @code{up}, @code{down}, @code{top}, @code{bottom}, @code{top-bottom} 3382@item @code{up}, @code{down}, @code{top}, @code{bottom}, @code{top-bottom}
3383Used to indicate buffer boundaries when 3383Used when @code{indicate-buffer-boundaries} is non-@code{nil}:
3384@code{indicate-buffer-boundaries} is non-@code{nil}: @code{up} and 3384@code{up} and @code{down} indicate a buffer boundary lying above or
3385@code{down} indicate a buffer boundary lying above or below the window 3385below the window edge; @code{top} and @code{bottom} indicate the
3386edge; @code{top} and @code{bottom} indicate the topmost and bottommost 3386topmost and bottommost buffer text line; and @code{top-bottom}
3387buffer text line; and @code{top-bottom} indicates where there is just 3387indicates where there is just one line of text in the buffer.
3388one line of text in the buffer.
3389 3388
3390@item @code{empty-line} 3389@item @code{empty-line}
3391Used to indicate empty lines when @code{indicate-empty-lines} is 3390Used to indicate empty lines when @code{indicate-empty-lines} is
@@ -3407,24 +3406,9 @@ are used to indicate that the last text line has no final newline.
3407Alternatively, @var{bitmaps} may be a single symbol which is used in 3406Alternatively, @var{bitmaps} may be a single symbol which is used in
3408both left and right fringes. 3407both left and right fringes.
3409 3408
3410 The standard symbols for fringe bitmaps are: 3409 @xref{Fringe Bitmaps}, for a list of standard bitmap symbols and how
3411 3410to define your own. In addition, @code{nil} represents the empty
3412@example 3411bitmap (i.e.@: an indicator that is not shown).
3413left-arrow right-arrow up-arrow down-arrow
3414left-curly-arrow right-curly-arrow
3415left-triangle right-triangle
3416top-left-angle top-right-angle
3417bottom-left-angle bottom-right-angle
3418left-bracket right-bracket
3419filled-rectangle hollow-rectangle
3420filled-square hollow-square
3421vertical-bar horizontal-bar
3422empty-line question-mark
3423@end example
3424
3425@noindent
3426In addition, @code{nil} represents the empty bitmap (i.e.@: an
3427indicator that is not shown).
3428 3412
3429 When @code{fringe-indicator-alist} has a buffer-local value, and 3413 When @code{fringe-indicator-alist} has a buffer-local value, and
3430there is no bitmap defined for a logical indicator, or the bitmap is 3414there is no bitmap defined for a logical indicator, or the bitmap is
@@ -3442,16 +3426,6 @@ cursor in the right fringe instead of using two lines. Different
3442bitmaps are used to represent the cursor in the fringe depending on 3426bitmaps are used to represent the cursor in the fringe depending on
3443the current buffer's cursor type. 3427the current buffer's cursor type.
3444 3428
3445@table @asis
3446@item Logical cursor types:
3447@code{box} , @code{hollow}, @code{bar},
3448@code{hbar}, @code{hollow-small}.
3449@end table
3450
3451The @code{hollow-small} type is used instead of @code{hollow} when the
3452normal @code{hollow-rectangle} bitmap is too tall to fit on a specific
3453display line.
3454
3455@defopt overflow-newline-into-fringe 3429@defopt overflow-newline-into-fringe
3456If this is non-@code{nil}, lines exactly as wide as the window (not 3430If this is non-@code{nil}, lines exactly as wide as the window (not
3457counting the final newline character) are not continued. Instead, 3431counting the final newline character) are not continued. Instead,
@@ -3462,24 +3436,31 @@ fringe.
3462@defvar fringe-cursor-alist 3436@defvar fringe-cursor-alist
3463This variable specifies the mapping from logical cursor type to the 3437This variable specifies the mapping from logical cursor type to the
3464actual fringe bitmaps displayed in the right fringe. The value is an 3438actual fringe bitmaps displayed in the right fringe. The value is an
3465alist where each element @code{(@var{cursor} . @var{bitmap})} specifies 3439alist where each element has the form @code{(@var{cursor-type}
3466the fringe bitmaps used to display a specific logical cursor type in 3440. @var{bitmap})}, which means to use the fringe bitmap @var{bitmap} to
3467the fringe. Here, @var{cursor} specifies the logical cursor type and 3441display cursors of type @var{cursor-type}.
3468@var{bitmap} is a symbol specifying the fringe bitmap to be displayed 3442
3469for that logical cursor type. 3443Each @var{cursor-type} should be one of @code{box}, @code{hollow},
3444@code{bar}, @code{hbar}, or @code{hollow-small}. The first four have
3445the same meanings as in the @code{cursor-type} frame parameter
3446(@pxref{Cursor Parameters}). The @code{hollow-small} type is used
3447instead of @code{hollow} when the normal @code{hollow-rectangle}
3448bitmap is too tall to fit on a specific display line.
3449
3450Each @var{bitmap} should be a symbol specifying the fringe bitmap to
3451be displayed for that logical cursor type.
3452@iftex
3453See the next subsection for details.
3454@end iftex
3455@ifnottex
3456@xref{Fringe Bitmaps}.
3457@end ifnottex
3470 3458
3471When @code{fringe-cursor-alist} has a buffer-local value, and there is 3459When @code{fringe-cursor-alist} has a buffer-local value, and there is
3472no bitmap defined for a cursor type, the corresponding value from the 3460no bitmap defined for a cursor type, the corresponding value from the
3473default value of @code{fringes-indicator-alist} is used. 3461default value of @code{fringes-indicator-alist} is used.
3474@end defvar 3462@end defvar
3475 3463
3476Standard bitmaps for displaying the cursor in right fringe:
3477@example
3478filled-rectangle hollow-rectangle filled-square hollow-square
3479vertical-bar horizontal-bar
3480@end example
3481
3482
3483@node Fringe Bitmaps 3464@node Fringe Bitmaps
3484@subsection Fringe Bitmaps 3465@subsection Fringe Bitmaps
3485@cindex fringe bitmaps 3466@cindex fringe bitmaps
@@ -3487,22 +3468,74 @@ vertical-bar horizontal-bar
3487 3468
3488 The @dfn{fringe bitmaps} are the actual bitmaps which represent the 3469 The @dfn{fringe bitmaps} are the actual bitmaps which represent the
3489logical fringe indicators for truncated or continued lines, buffer 3470logical fringe indicators for truncated or continued lines, buffer
3490boundaries, overlay arrow, etc. Fringe bitmap symbols have their own 3471boundaries, overlay arrows, etc. Each bitmap is represented by a
3491name space. The fringe bitmaps are shared by all frames and windows. 3472symbol.
3492You can redefine the built-in fringe bitmaps, and you can define new 3473@iftex
3493fringe bitmaps. 3474These symbols are referred to by the variables
3494 3475@code{fringe-indicator-alist} and @code{fringe-cursor-alist},
3495 The way to display a bitmap in the left or right fringes for a given 3476described in the previous subsections.
3496line in a window is by specifying the @code{display} property for one 3477@end iftex
3497of the characters that appears in it. Use a display specification of 3478@ifnottex
3498the form @code{(left-fringe @var{bitmap} [@var{face}])} or 3479These symbols are referred to by the variable
3499@code{(right-fringe @var{bitmap} [@var{face}])} (@pxref{Display 3480@code{fringe-indicator-alist}, which maps fringe indicators to bitmaps
3500Property}). Here, @var{bitmap} is a symbol identifying the bitmap you 3481(@pxref{Fringe Indicators}), and the variable
3501want, and @var{face} (which is optional) is the name of the face whose 3482@code{fringe-cursor-alist}, which maps fringe cursors to bitmaps
3502colors should be used for displaying the bitmap, instead of the 3483(@pxref{Fringe Cursors}).
3503default @code{fringe} face. @var{face} is automatically merged with 3484@end ifnottex
3504the @code{fringe} face, so normally @var{face} need only specify the 3485
3505foreground color for the bitmap. 3486 Lisp programs can also directly display a bitmap in the left or
3487right fringe, by using a @code{display} property for one of the
3488characters appearing in the line (@pxref{Other Display Specs}). Such
3489a display specification has the form
3490
3491@example
3492(left-fringe @var{bitmap} [@var{face}])
3493@end example
3494
3495@noindent
3496or
3497
3498@example
3499(right-fringe @var{bitmap} [@var{face}])
3500@end example
3501
3502@noindent
3503The symbol @var{bitmap} identifies the bitmap to display. The
3504optional @var{face} names a face whose foreground color is used to
3505display the bitmap; this face is automatically merged with the
3506@code{fringe} face.
3507
3508 Here is a list of the standard fringe bitmaps defined in Emacs, and
3509how they are currently used in Emacs (via
3510@code{fringe-indicator-alist} and @code{fringe-cursor-alist}):
3511
3512@table @asis
3513@item @code{left-arrow}, @code{right-arrow}
3514Used to indicate truncated lines.
3515
3516@item @code{left-curly-arrow}, @code{right-curly-arrow}
3517Used to indicate continued lines.
3518
3519@item @code{right-triangle}, @code{left-triangle}
3520The former is used by overlay arrows. The latter is unused.
3521
3522@item @code{up-arrow}, @code{down-arrow}, @code{top-left-angle} @code{top-right-angle}
3523@itemx @code{bottom-left-angle}, @code{bottom-right-angle}
3524@itemx @code{top-right-angle}, @code{top-left-angle}
3525@itemx @code{left-bracket}, @code{right-bracket}, @code{top-right-angle}, @code{top-left-angle}
3526Used to indicate buffer boundaries.
3527
3528@item @code{filled-rectangle}, @code{hollow-rectangle}
3529@itemx @code{filled-square}, @code{hollow-square}
3530@itemx @code{vertical-bar}, @code{horizontal-bar}
3531Used for different types of fringe cursors.
3532
3533@item @code{empty-line}, @code{question-mark}
3534Unused.
3535@end table
3536
3537@noindent
3538The next subsection describes how to define your own fringe bitmaps.
3506 3539
3507@defun fringe-bitmaps-at-pos &optional pos window 3540@defun fringe-bitmaps-at-pos &optional pos window
3508This function returns the fringe bitmaps of the display line 3541This function returns the fringe bitmaps of the display line
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index f69823101d0..42c3613dd0b 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -548,17 +548,14 @@ Advising Emacs Lisp Functions
548* Preactivation:: Preactivation is a way of speeding up the 548* Preactivation:: Preactivation is a way of speeding up the
549 loading of compiled advice. 549 loading of compiled advice.
550* Argument Access in Advice:: How advice can access the function's arguments. 550* Argument Access in Advice:: How advice can access the function's arguments.
551* Advising Primitives:: Accessing arguments when advising a primitive.
552* Combined Definition:: How advice is implemented. 551* Combined Definition:: How advice is implemented.
553 552
554Debugging Lisp Programs 553Debugging Lisp Programs
555 554
556* Debugger:: How the Emacs Lisp debugger is implemented. 555* Debugger:: A debugger for the Emacs Lisp evaluator.
557* Edebug:: A source-level Emacs Lisp debugger. 556* Edebug:: A source-level Emacs Lisp debugger.
558* Syntax Errors:: How to find syntax errors. 557* Syntax Errors:: How to find syntax errors.
559* Test Coverage:: Ensuring you have tested all branches in your code. 558* Test Coverage:: Ensuring you have tested all branches in your code.
560* Compilation Errors:: How to find errors that show up in
561 byte compilation.
562 559
563The Lisp Debugger 560The Lisp Debugger
564 561
@@ -1061,7 +1058,7 @@ Text
1061* Registers:: How registers are implemented. Accessing 1058* Registers:: How registers are implemented. Accessing
1062 the text or position stored in a register. 1059 the text or position stored in a register.
1063* Base 64:: Conversion to or from base 64 encoding. 1060* Base 64:: Conversion to or from base 64 encoding.
1064* MD5 Checksum:: Compute the MD5 "message digest"/"checksum". 1061* Checksum/Hash:: Computing "message digests"/"checksums"/"hashes".
1065* Atomic Changes:: Installing several buffer changes "atomically". 1062* Atomic Changes:: Installing several buffer changes "atomically".
1066* Change Hooks:: Supplying functions to be run when text is changed. 1063* Change Hooks:: Supplying functions to be run when text is changed.
1067 1064
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index 087eb6ef1db..cf093ba36cb 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -2862,24 +2862,21 @@ is a good way to come up with one.
2862@end defun 2862@end defun
2863 2863
2864@defopt remote-file-name-inhibit-cache 2864@defopt remote-file-name-inhibit-cache
2865Whether to use the remote file-name cache for read access. 2865The attributes of remote files can be cached for better performance. If
2866 2866they are changed outside of Emacs's control, the cached values become
2867File attributes of remote files are cached for better performance. If
2868they are changed out of Emacs' control, the cached values become
2869invalid, and must be reread. 2867invalid, and must be reread.
2870 2868
2871When set to @code{nil}, cached values are always used. This shall be 2869When this variable is set to @code{nil}, cached values are never
2872set with care. When set to @code{t}, cached values are never used. 2870expired. Use this setting with caution, only if you are sure nothing
2873ALthough this is the safest value, it could result in performance 2871other than Emacs ever changes the remote files. If it is set to
2874degradation. 2872@code{t}, cached values are never used. This is the safest value, but
2873could result in performance degradation.
2875 2874
2876A compromise is to set it to a positive number. This means that 2875A compromise is to set it to a positive number. This means that
2877cached values are used for that amount of seconds since they were 2876cached values are used for that amount of seconds since they were
2878cached. 2877cached. If a remote file is checked regularly, it might be a good
2879 2878idea to let-bind this variable to a value less than the time period
2880In case a remote file is checked regularly, it might be reasonable to 2879between consecutive checks. For example:
2881let-bind this variable to a value less then the time period between
2882two checks. Example:
2883 2880
2884@example 2881@example
2885(defun display-time-file-nonempty-p (file) 2882(defun display-time-file-nonempty-p (file)
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index 0b822751df6..3c2fa60248e 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -10,9 +10,10 @@
10@cindex library 10@cindex library
11@cindex Lisp library 11@cindex Lisp library
12 12
13 Loading a file of Lisp code means bringing its contents into the Lisp 13 Loading a file of Lisp code means bringing its contents into the
14environment in the form of Lisp objects. Emacs finds and opens the 14Lisp environment in the form of Lisp objects. Emacs finds and opens
15file, reads the text, evaluates each form, and then closes the file. 15the file, reads the text, evaluates each form, and then closes the
16file. Such a file is also called a @dfn{Lisp library}.
16 17
17 The load functions evaluate all the expressions in a file just 18 The load functions evaluate all the expressions in a file just
18as the @code{eval-buffer} function evaluates all the 19as the @code{eval-buffer} function evaluates all the
@@ -29,11 +30,6 @@ into a buffer and evaluated there. (Indeed, most code is tested this
29way.) Most often, the forms are function definitions and variable 30way.) Most often, the forms are function definitions and variable
30definitions. 31definitions.
31 32
32 A file containing Lisp code is often called a @dfn{library}. Thus,
33the ``Rmail library'' is a file containing code for Rmail mode.
34Similarly, a ``Lisp library directory'' is a directory of files
35containing Lisp code.
36
37@menu 33@menu
38* How Programs Do Loading:: The @code{load} function and others. 34* How Programs Do Loading:: The @code{load} function and others.
39* Load Suffixes:: Details about the suffixes that @code{load} tries. 35* Load Suffixes:: Details about the suffixes that @code{load} tries.
@@ -88,8 +84,8 @@ this case, you must specify the precise file name you want, except
88that, if Auto Compression mode is enabled, @code{load} will still use 84that, if Auto Compression mode is enabled, @code{load} will still use
89@code{jka-compr-load-suffixes} to find compressed versions. By 85@code{jka-compr-load-suffixes} to find compressed versions. By
90specifying the precise file name and using @code{t} for 86specifying the precise file name and using @code{t} for
91@var{nosuffix}, you can prevent perverse file names such as 87@var{nosuffix}, you can prevent file names like @file{foo.el.el} from
92@file{foo.el.el} from being tried. 88being tried.
93 89
94If the optional argument @var{must-suffix} is non-@code{nil}, then 90If the optional argument @var{must-suffix} is non-@code{nil}, then
95@code{load} insists that the file name used must end in either 91@code{load} insists that the file name used must end in either
@@ -238,73 +234,37 @@ it skips the latter group.
238 When Emacs loads a Lisp library, it searches for the library 234 When Emacs loads a Lisp library, it searches for the library
239in a list of directories specified by the variable @code{load-path}. 235in a list of directories specified by the variable @code{load-path}.
240 236
241@defopt load-path 237@defvar load-path
242@cindex @code{EMACSLOADPATH} environment variable 238@cindex @code{EMACSLOADPATH} environment variable
243The value of this variable is a list of directories to search when 239The value of this variable is a list of directories to search when
244loading files with @code{load}. Each element is a string (which must be 240loading files with @code{load}. Each element is a string (which must be
245a directory name) or @code{nil} (which stands for the current working 241a directory name) or @code{nil} (which stands for the current working
246directory). 242directory).
247@end defopt 243@end defvar
248
249 The value of @code{load-path} is initialized from the environment
250variable @code{EMACSLOADPATH}, if that exists; otherwise its default
251value is specified in @file{emacs/src/epaths.h} when Emacs is built.
252Then the list is expanded by adding subdirectories of the directories
253in the list.
254
255 The syntax of @code{EMACSLOADPATH} is the same as used for @code{PATH};
256@samp{:} (or @samp{;}, according to the operating system) separates
257directory names, and @samp{.} is used for the current default directory.
258Here is an example of how to set your @code{EMACSLOADPATH} variable from
259a @code{csh} @file{.login} file:
260
261@smallexample
262setenv EMACSLOADPATH .:/user/bil/emacs:/usr/local/share/emacs/20.3/lisp
263@end smallexample
264 244
265 Here is how to set it using @code{sh}: 245 Each time Emacs starts up, it sets up the value of @code{load-path}
246in several steps. First, it initializes @code{load-path} to the
247directories specified by the environment variable @env{EMACSLOADPATH},
248if that exists. The syntax of @env{EMACSLOADPATH} is the same as used
249for @code{PATH}; directory names are separated by @samp{:} (or
250@samp{;}, on some operating systems), and @samp{.} stands for the
251current default directory. Here is an example of how to set
252@env{EMACSLOADPATH} variable from @command{sh}:
266 253
267@smallexample 254@smallexample
268export EMACSLOADPATH 255export EMACSLOADPATH
269EMACSLOADPATH=.:/user/bil/emacs:/usr/local/share/emacs/20.3/lisp 256EMACSLOADPATH=/home/foo/.emacs.d/lisp:/opt/emacs/lisp
270@end smallexample 257@end smallexample
271 258
272 Here is an example of code you can place in your init file (@pxref{Init 259@noindent
273File}) to add several directories to the front of your default 260Here is how to set it from @code{csh}:
274@code{load-path}:
275 261
276@smallexample 262@smallexample
277@group 263setenv EMACSLOADPATH /home/foo/.emacs.d/lisp:/opt/emacs/lisp
278(setq load-path
279 (append (list nil "/user/bil/emacs"
280 "/usr/local/lisplib"
281 "~/emacs")
282 load-path))
283@end group
284@end smallexample 264@end smallexample
285 265
286@c Wordy to rid us of an overfull hbox. --rjc 15mar92 266 If @env{EMACSLOADPATH} is not set (which is usually the case), Emacs
287@noindent 267initializes @code{load-path} with the following two directories:
288In this example, the path searches the current working directory first,
289followed then by the @file{/user/bil/emacs} directory, the
290@file{/usr/local/lisplib} directory, and the @file{~/emacs} directory,
291which are then followed by the standard directories for Lisp code.
292
293 Dumping Emacs uses a special value of @code{load-path}. If the value of
294@code{load-path} at the end of dumping is unchanged (that is, still the
295same special value), the dumped Emacs switches to the ordinary
296@code{load-path} value when it starts up, as described above. But if
297@code{load-path} has any other value at the end of dumping, that value
298is used for execution of the dumped Emacs also.
299
300 Therefore, if you want to change @code{load-path} temporarily for
301loading a few libraries in @file{site-init.el} or @file{site-load.el},
302you should bind @code{load-path} locally with @code{let} around the
303calls to @code{load}.
304
305 The default value of @code{load-path}, when running an Emacs which has
306been installed on the system, includes two special directories (and
307their subdirectories as well):
308 268
309@smallexample 269@smallexample
310"/usr/local/share/emacs/@var{version}/site-lisp" 270"/usr/local/share/emacs/@var{version}/site-lisp"
@@ -319,33 +279,42 @@ and
319 279
320@noindent 280@noindent
321The first one is for locally installed packages for a particular Emacs 281The first one is for locally installed packages for a particular Emacs
322version; the second is for locally installed packages meant for use with 282version; the second is for locally installed packages meant for use
323all installed Emacs versions. 283with all installed Emacs versions.
324
325 There are several reasons why a Lisp package that works well in one
326Emacs version can cause trouble in another. Sometimes packages need
327updating for incompatible changes in Emacs; sometimes they depend on
328undocumented internal Emacs data that can change without notice;
329sometimes a newer Emacs version incorporates a version of the package,
330and should be used only with that version.
331
332 Emacs finds these directories' subdirectories and adds them to
333@code{load-path} when it starts up. Both immediate subdirectories and
334subdirectories multiple levels down are added to @code{load-path}.
335
336 Not all subdirectories are included, though. Subdirectories whose
337names do not start with a letter or digit are excluded. Subdirectories
338named @file{RCS} or @file{CVS} are excluded. Also, a subdirectory which
339contains a file named @file{.nosearch} is excluded. You can use these
340methods to prevent certain subdirectories of the @file{site-lisp}
341directories from being searched.
342 284
343 If you run Emacs from the directory where it was built---that is, an 285 If you run Emacs from the directory where it was built---that is, an
344executable that has not been formally installed---then @code{load-path} 286executable that has not been formally installed---Emacs puts two more
345normally contains two additional directories. These are the @code{lisp} 287directories in @code{load-path}. These are the @code{lisp} and
346and @code{site-lisp} subdirectories of the main build directory. (Both 288@code{site-lisp} subdirectories of the main build directory. (Both
347are represented as absolute file names.) 289are represented as absolute file names.)
348 290
291 Next, Emacs ``expands'' the initial list of directories in
292@code{load-path} by adding the subdirectories of those directories.
293Both immediate subdirectories and subdirectories multiple levels down
294are added. But it excludes subdirectories whose names do not start
295with a letter or digit, and subdirectories named @file{RCS} or
296@file{CVS}, and subdirectories containing a file named
297@file{.nosearch}.
298
299 Next, Emacs adds any extra load directory that you specify using the
300@samp{-L} command-line option (@pxref{Action Arguments,,,emacs, The
301GNU Emacs Manual}). It also adds the directories where optional
302packages are installed, if any (@pxref{Packaging Basics}).
303
304 It is common to add code to one's init file (@pxref{Init File}) to
305add one or more directories to @code{load-path}. For example:
306
307@smallexample
308(push "~/.emacs.d/lisp" load-path)
309@end smallexample
310
311 Dumping Emacs uses a special value of @code{load-path}. If the
312value of @code{load-path} at the end of dumping is unchanged (that is,
313still the same special value), the dumped Emacs switches to the
314ordinary @code{load-path} value when it starts up, as described above.
315But if @code{load-path} has any other value at the end of dumping,
316that value is used for execution of the dumped Emacs also.
317
349@deffn Command locate-library library &optional nosuffix path interactive-call 318@deffn Command locate-library library &optional nosuffix path interactive-call
350This command finds the precise file name for library @var{library}. It 319This command finds the precise file name for library @var{library}. It
351searches for the library in the same way @code{load} does, and the 320searches for the library in the same way @code{load} does, and the
@@ -401,30 +370,26 @@ example) is read without decoding, the text of the program will be
401unibyte text, and its string constants will be unibyte strings. 370unibyte text, and its string constants will be unibyte strings.
402@xref{Coding Systems}. 371@xref{Coding Systems}.
403 372
404 The reason Emacs is designed this way is so that Lisp programs give 373 In most Emacs Lisp programs, the fact that non-@acronym{ASCII}
405predictable results, regardless of how Emacs was started. In addition, 374strings are multibyte strings should not be noticeable, since
406this enables programs that depend on using multibyte text to work even 375inserting them in unibyte buffers converts them to unibyte
407in a unibyte Emacs. 376automatically. However, if this does make a difference, you can force
408 377a particular Lisp file to be interpreted as unibyte by writing
409 In most Emacs Lisp programs, the fact that non-@acronym{ASCII} strings are 378@samp{-*-unibyte: t;-*-} in a comment on the file's first line. With
410multibyte strings should not be noticeable, since inserting them in 379that designator, the file will unconditionally be interpreted as
411unibyte buffers converts them to unibyte automatically. However, if 380unibyte, even in an ordinary multibyte Emacs session. This can matter
412this does make a difference, you can force a particular Lisp file to be 381when making keybindings to non-@acronym{ASCII} characters written as
413interpreted as unibyte by writing @samp{-*-unibyte: t;-*-} in a 382@code{?v@var{literal}}.
414comment on the file's first line. With that designator, the file will
415unconditionally be interpreted as unibyte, even in an ordinary
416multibyte Emacs session. This can matter when making keybindings to
417non-@acronym{ASCII} characters written as @code{?v@var{literal}}.
418 383
419@node Autoload 384@node Autoload
420@section Autoload 385@section Autoload
421@cindex autoload 386@cindex autoload
422 387
423 The @dfn{autoload} facility allows you to make a function or macro 388 The @dfn{autoload} facility allows you to register the existence of
424known in Lisp, but put off loading the file that defines it. The first 389a function or macro, but put off loading the file that defines it.
425call to the function automatically reads the proper file to install the 390The first call to the function automatically reads the proper file, in
426real definition and other associated code, then runs the real definition 391order to install the real definition and other associated code, then
427as if it had been loaded all along. 392runs the real definition as if it had been loaded all along.
428 393
429 There are two ways to set up an autoloaded function: by calling 394 There are two ways to set up an autoloaded function: by calling
430@code{autoload}, and by writing a special ``magic'' comment in the 395@code{autoload}, and by writing a special ``magic'' comment in the
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index 445cb800d33..995a4d89352 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -1323,11 +1323,11 @@ with the name of the subroutine.
1323@node Byte-Code Type 1323@node Byte-Code Type
1324@subsection Byte-Code Function Type 1324@subsection Byte-Code Function Type
1325 1325
1326The byte compiler produces @dfn{byte-code function objects}. 1326@dfn{Byte-code function objects} are produced by byte-compiling Lisp
1327Internally, a byte-code function object is much like a vector; however, 1327code (@pxref{Byte Compilation}). Internally, a byte-code function
1328the evaluator handles this data type specially when it appears as a 1328object is much like a vector; however, the evaluator handles this data
1329function to be called. @xref{Byte Compilation}, for information about 1329type specially when it appears in a function call. @xref{Byte-Code
1330the byte compiler. 1330Objects}.
1331 1331
1332The printed representation and read syntax for a byte-code function 1332The printed representation and read syntax for a byte-code function
1333object is like that for a vector, with an additional @samp{#} before the 1333object is like that for a vector, with an additional @samp{#} before the
diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi
index 36691624405..1628f32aa29 100644
--- a/doc/lispref/streams.texi
+++ b/doc/lispref/streams.texi
@@ -266,12 +266,6 @@ reader encountered the open parenthesis, decided that it ended the
266input, and unread it. Another attempt to read from the stream at this 266input, and unread it. Another attempt to read from the stream at this
267point would read @samp{()} and return @code{nil}. 267point would read @samp{()} and return @code{nil}.
268 268
269@defun get-file-char
270This function is used internally as an input stream to read from the
271input file opened by the function @code{load}. Don't use this function
272yourself.
273@end defun
274
275@node Input Functions 269@node Input Functions
276@section Input Functions 270@section Input Functions
277 271
@@ -702,9 +696,8 @@ The default is @code{t}, meaning display in the echo area.
702 696
703@defvar print-quoted 697@defvar print-quoted
704If this is non-@code{nil}, that means to print quoted forms using 698If this is non-@code{nil}, that means to print quoted forms using
705abbreviated reader syntax. @code{(quote foo)} prints as @code{'foo}, 699abbreviated reader syntax, e.g.@: @code{(quote foo)} prints as
706@code{(function foo)} as @code{#'foo}, and backquoted forms print 700@code{'foo}, and @code{(function foo)} as @code{#'foo}.
707using modern backquote syntax.
708@end defvar 701@end defvar
709 702
710@defvar print-escape-newlines 703@defvar print-escape-newlines
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index 8e7434de2ed..416bfef4a60 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -56,7 +56,7 @@ the character after point.
56* Registers:: How registers are implemented. Accessing the text or 56* Registers:: How registers are implemented. Accessing the text or
57 position stored in a register. 57 position stored in a register.
58* Base 64:: Conversion to or from base 64 encoding. 58* Base 64:: Conversion to or from base 64 encoding.
59* MD5 Checksum:: Compute the MD5 "message digest"/"checksum". 59* Checksum/Hash:: Computing "message digests"/"checksums"/"hashes".
60* Parsing HTML:: Parsing HTML and XML. 60* Parsing HTML:: Parsing HTML and XML.
61* Atomic Changes:: Installing several buffer changes "atomically". 61* Atomic Changes:: Installing several buffer changes "atomically".
62* Change Hooks:: Supplying functions to be run when text is changed. 62* Change Hooks:: Supplying functions to be run when text is changed.
@@ -4071,9 +4071,11 @@ decoded text.
4071The decoding functions ignore newline characters in the encoded text. 4071The decoding functions ignore newline characters in the encoded text.
4072@end defun 4072@end defun
4073 4073
4074@node MD5 Checksum 4074@node Checksum/Hash
4075@section MD5 Checksum 4075@section Checksum/Hash
4076@cindex MD5 checksum 4076@cindex MD5 checksum
4077@cindex hashing, secure
4078@cindex SHA-1
4077@cindex message digest computation 4079@cindex message digest computation
4078 4080
4079 MD5 cryptographic checksums, or @dfn{message digests}, are 128-bit 4081 MD5 cryptographic checksums, or @dfn{message digests}, are 128-bit
@@ -4084,7 +4086,7 @@ RFC@footnote{
4084For an explanation of what is an RFC, see the footnote in @ref{Base 4086For an explanation of what is an RFC, see the footnote in @ref{Base
408564}. 408764}.
4086}1321. This section describes the Emacs facilities for computing 4088}1321. This section describes the Emacs facilities for computing
4087message digests. 4089message digests and other forms of ``secure hash''.
4088 4090
4089@defun md5 object &optional start end coding-system noerror 4091@defun md5 object &optional start end coding-system noerror
4090This function returns the MD5 message digest of @var{object}, which 4092This function returns the MD5 message digest of @var{object}, which
@@ -4119,6 +4121,16 @@ using the specified or chosen coding system. However, if
4119coding instead. 4121coding instead.
4120@end defun 4122@end defun
4121 4123
4124@defun secure-hash algorithm object &optional start end binary
4125This function provides a general interface to a variety of secure
4126hashing algorithms. As well as the MD5 algorithm, it supports SHA-1,
4127SHA-2, SHA-224, SHA-256, SHA-384 and SHA-512. The argument
4128@var{algorithm} is a symbol stating which hash to compute. The
4129arguments @var{object}, @var{start}, and @var{end} are as for the
4130@code{md5} function. If the optional argument @var{binary} is
4131non-@code{nil}, returns a string in binary form.
4132@end defun
4133
4122@node Parsing HTML 4134@node Parsing HTML
4123@section Parsing HTML 4135@section Parsing HTML
4124@cindex parsing html 4136@cindex parsing html
diff --git a/doc/lispref/vol1.texi b/doc/lispref/vol1.texi
index 0f4a4447ed3..cc96726745f 100644
--- a/doc/lispref/vol1.texi
+++ b/doc/lispref/vol1.texi
@@ -568,17 +568,14 @@ Advising Emacs Lisp Functions
568* Preactivation:: Preactivation is a way of speeding up the 568* Preactivation:: Preactivation is a way of speeding up the
569 loading of compiled advice. 569 loading of compiled advice.
570* Argument Access in Advice:: How advice can access the function's arguments. 570* Argument Access in Advice:: How advice can access the function's arguments.
571* Advising Primitives:: Accessing arguments when advising a primitive.
572* Combined Definition:: How advice is implemented. 571* Combined Definition:: How advice is implemented.
573 572
574Debugging Lisp Programs 573Debugging Lisp Programs
575 574
576* Debugger:: How the Emacs Lisp debugger is implemented. 575* Debugger:: A debugger for the Emacs Lisp evaluator.
577* Edebug:: A source-level Emacs Lisp debugger. 576* Edebug:: A source-level Emacs Lisp debugger.
578* Syntax Errors:: How to find syntax errors. 577* Syntax Errors:: How to find syntax errors.
579* Test Coverage:: Ensuring you have tested all branches in your code. 578* Test Coverage:: Ensuring you have tested all branches in your code.
580* Compilation Errors:: How to find errors that show up in
581 byte compilation.
582 579
583The Lisp Debugger 580The Lisp Debugger
584 581
@@ -1082,7 +1079,7 @@ Text
1082* Registers:: How registers are implemented. Accessing 1079* Registers:: How registers are implemented. Accessing
1083 the text or position stored in a register. 1080 the text or position stored in a register.
1084* Base 64:: Conversion to or from base 64 encoding. 1081* Base 64:: Conversion to or from base 64 encoding.
1085* MD5 Checksum:: Compute the MD5 "message digest"/"checksum". 1082* Checksum/Hash:: Computing "message digests"/"checksums"/"hashes".
1086* Atomic Changes:: Installing several buffer changes "atomically". 1083* Atomic Changes:: Installing several buffer changes "atomically".
1087* Change Hooks:: Supplying functions to be run when text is changed. 1084* Change Hooks:: Supplying functions to be run when text is changed.
1088 1085
diff --git a/doc/lispref/vol2.texi b/doc/lispref/vol2.texi
index 241728fd1d2..33246cb567d 100644
--- a/doc/lispref/vol2.texi
+++ b/doc/lispref/vol2.texi
@@ -567,17 +567,14 @@ Advising Emacs Lisp Functions
567* Preactivation:: Preactivation is a way of speeding up the 567* Preactivation:: Preactivation is a way of speeding up the
568 loading of compiled advice. 568 loading of compiled advice.
569* Argument Access in Advice:: How advice can access the function's arguments. 569* Argument Access in Advice:: How advice can access the function's arguments.
570* Advising Primitives:: Accessing arguments when advising a primitive.
571* Combined Definition:: How advice is implemented. 570* Combined Definition:: How advice is implemented.
572 571
573Debugging Lisp Programs 572Debugging Lisp Programs
574 573
575* Debugger:: How the Emacs Lisp debugger is implemented. 574* Debugger:: A debugger for the Emacs Lisp evaluator.
576* Edebug:: A source-level Emacs Lisp debugger. 575* Edebug:: A source-level Emacs Lisp debugger.
577* Syntax Errors:: How to find syntax errors. 576* Syntax Errors:: How to find syntax errors.
578* Test Coverage:: Ensuring you have tested all branches in your code. 577* Test Coverage:: Ensuring you have tested all branches in your code.
579* Compilation Errors:: How to find errors that show up in
580 byte compilation.
581 578
582The Lisp Debugger 579The Lisp Debugger
583 580
@@ -1081,7 +1078,7 @@ Text
1081* Registers:: How registers are implemented. Accessing 1078* Registers:: How registers are implemented. Accessing
1082 the text or position stored in a register. 1079 the text or position stored in a register.
1083* Base 64:: Conversion to or from base 64 encoding. 1080* Base 64:: Conversion to or from base 64 encoding.
1084* MD5 Checksum:: Compute the MD5 "message digest"/"checksum". 1081* Checksum/Hash:: Computing "message digests"/"checksums"/"hashes".
1085* Atomic Changes:: Installing several buffer changes "atomically". 1082* Atomic Changes:: Installing several buffer changes "atomically".
1086* Change Hooks:: Supplying functions to be run when text is changed. 1083* Change Hooks:: Supplying functions to be run when text is changed.
1087 1084
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index d287b340542..adad93ef89c 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,8 @@
12012-02-13 Lars Ingebrigtsen <larsi@gnus.org>
2
3 * gnus.texi (Customizing the IMAP Connection): Mention
4 nnimap-record-commands.
5
12012-02-10 Glenn Morris <rgm@gnu.org> 62012-02-10 Glenn Morris <rgm@gnu.org>
2 7
3 * url.texi (Retrieving URLs): Update url-retrieve arguments. 8 * url.texi (Retrieving URLs): Update url-retrieve arguments.
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 865888a28e4..c149ddfcf0f 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -14227,8 +14227,9 @@ if the server supports UID EXPUNGE, but it's not done by default on
14227servers that doesn't support that command. 14227servers that doesn't support that command.
14228 14228
14229@item nnimap-streaming 14229@item nnimap-streaming
14230Virtually all @code{IMAP} server support fast streaming of data. If 14230Virtually all @acronym{IMAP} server support fast streaming of data.
14231you have problems connecting to the server, try setting this to @code{nil}. 14231If you have problems connecting to the server, try setting this to
14232@code{nil}.
14232 14233
14233@item nnimap-fetch-partial-articles 14234@item nnimap-fetch-partial-articles
14234If non-@code{nil}, fetch partial articles from the server. If set to 14235If non-@code{nil}, fetch partial articles from the server. If set to
@@ -14236,6 +14237,10 @@ a string, then it's interpreted as a regexp, and parts that have
14236matching types will be fetched. For instance, @samp{"text/"} will 14237matching types will be fetched. For instance, @samp{"text/"} will
14237fetch all textual parts, while leaving the rest on the server. 14238fetch all textual parts, while leaving the rest on the server.
14238 14239
14240@item nnimap-record-commands
14241If non-@code{nil}, record all @acronym{IMAP} commands in the
14242@samp{"*imap log*"} buffer.
14243
14239@end table 14244@end table
14240 14245
14241 14246
diff --git a/doc/misc/url.texi b/doc/misc/url.texi
index e60aebb665b..771430251b6 100644
--- a/doc/misc/url.texi
+++ b/doc/misc/url.texi
@@ -216,10 +216,10 @@ non-@code{nil}, do not store or send cookies.
216@vindex url-queue-parallel-processes 216@vindex url-queue-parallel-processes
217@vindex url-queue-timeout 217@vindex url-queue-timeout
218@defun url-queue-retrieve url callback &optional cbargs silent no-cookies 218@defun url-queue-retrieve url callback &optional cbargs silent no-cookies
219This acts like the @code{url-retrieve} function, but downloads in 219This acts like the @code{url-retrieve} function, but with limits on
220parallel. The option @code{url-queue-parallel-processes} controls the 220the degree of parallelism. The option @code{url-queue-parallel-processes}
221number of concurrent processes, and the option @code{url-queue-timeout} 221controls the number of concurrent processes, and the option
222sets a timeout in seconds. 222@code{url-queue-timeout} sets a timeout in seconds.
223@end defun 223@end defun
224 224
225@node Supported URL Types 225@node Supported URL Types