aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorAidan Gauland2013-02-08 09:59:24 -0500
committerStefan Monnier2013-02-08 09:59:24 -0500
commitdacbc44ca3fc825c9e5ffa799f1a0937c1da0020 (patch)
treecff56a036c7abef2b9dce907eff83aadcfcc568a /doc
parentc220ea73ff3c6fa59b75837c950cc729295f2038 (diff)
parentc7205e538701bcfe2718e97429127a3a066d86c7 (diff)
downloademacs-dacbc44ca3fc825c9e5ffa799f1a0937c1da0020.tar.gz
emacs-dacbc44ca3fc825c9e5ffa799f1a0937c1da0020.zip
* doc/misc/eshell.texi: Fill most of the missing sections.
Diffstat (limited to 'doc')
-rw-r--r--doc/misc/ChangeLog170
-rw-r--r--doc/misc/eshell.texi535
2 files changed, 474 insertions, 231 deletions
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 1b454741fc0..db3bd460055 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,7 @@
12013-02-08 Aidan Gauland <aidalgol@no8wireless.co.nz>
2
3 * eshell.texi: Fill most of the missing sections.
4
12013-02-07 Bastien Guerry <bzg@gnu.org> 52013-02-07 Bastien Guerry <bzg@gnu.org>
2 6
3 * org.texi (References): Clarify an example. 7 * org.texi (References): Clarify an example.
@@ -17,8 +21,8 @@
17 from ede new. 21 from ede new.
18 (Simple projects): Re-write to not talk about ede-simple-project 22 (Simple projects): Re-write to not talk about ede-simple-project
19 which is deprecated, and instead use the term to mean projects 23 which is deprecated, and instead use the term to mean projects
20 that don't do much management, just project wrapping. Add 24 that don't do much management, just project wrapping.
21 ede-generic-project link. 25 Add ede-generic-project link.
22 (ede-generic-project): New node (bug#11441). 26 (ede-generic-project): New node (bug#11441).
23 27
242013-02-03 Glenn Morris <rgm@gnu.org> 282013-02-03 Glenn Morris <rgm@gnu.org>
@@ -72,8 +76,7 @@
72 * ede.texi (Top): Rename from top, all uses changed. 76 * ede.texi (Top): Rename from top, all uses changed.
73 * eshell.texi: Add missing argument to @sp. 77 * eshell.texi: Add missing argument to @sp.
74 * forms.texi (Top): Reorder menu to match structure. 78 * forms.texi (Top): Reorder menu to match structure.
75 * htmlfontify.texi (Customisation): Add missing @item in 79 * htmlfontify.texi (Customisation): Add missing @item in @enumerate.
76 @enumerate.
77 * org.texi (Advanced features): Add missing argument for @item. 80 * org.texi (Advanced features): Add missing argument for @item.
78 (Property searches): Use @backslashchar{} in macro argument. 81 (Property searches): Use @backslashchar{} in macro argument.
79 * pcl-cvs.texi: Add missing argument to @sp. 82 * pcl-cvs.texi: Add missing argument to @sp.
@@ -212,8 +215,8 @@
212 * org.texi (Summary, Code block specific header arguments) 215 * org.texi (Summary, Code block specific header arguments)
213 (Code block specific header arguments) 216 (Code block specific header arguments)
214 (Header arguments in function calls, var, noweb) 217 (Header arguments in function calls, var, noweb)
215 (Results of evaluation, Code evaluation security): Small 218 (Results of evaluation, Code evaluation security):
216 reformatting: add a blank line before some example. 219 Small reformatting: add a blank line before some example.
217 220
218 * org.texi (System-wide header arguments) 221 * org.texi (System-wide header arguments)
219 (Header arguments in Org mode properties, Conflicts) 222 (Header arguments in Org mode properties, Conflicts)
@@ -222,8 +225,7 @@
222 225
223 * org.texi (Comment lines): Fix description of the comment syntax. 226 * org.texi (Comment lines): Fix description of the comment syntax.
224 227
225 * org.texi (Installation): Mention "make test" in the correct 228 * org.texi (Installation): Mention "make test" in the correct section.
226 section.
227 229
2282012-12-02 Michael Albinus <michael.albinus@gmx.de> 2302012-12-02 Michael Albinus <michael.albinus@gmx.de>
229 231
@@ -271,8 +273,8 @@
271 273
2722012-11-08 Chong Yidong <cyd@gnu.org> 2742012-11-08 Chong Yidong <cyd@gnu.org>
273 275
274 * url.texi (Introduction): Rename from Getting Started. Rewrite 276 * url.texi (Introduction): Rename from Getting Started.
275 the introduction. 277 Rewrite the introduction.
276 (URI Parsing): Rewrite. Omit the obsolete attributes slot. 278 (URI Parsing): Rewrite. Omit the obsolete attributes slot.
277 279
2782012-11-07 Glenn Morris <rgm@gnu.org> 2802012-11-07 Glenn Morris <rgm@gnu.org>
@@ -372,14 +374,14 @@
372 374
3732012-10-26 Bastien Guerry <bzg@gnu.org> 3752012-10-26 Bastien Guerry <bzg@gnu.org>
374 376
375 * org.texi (Installation): Update the link to Org's ELPA. Also 377 * org.texi (Installation): Update the link to Org's ELPA.
376 don't mention org-install.el anymore as the replacement file 378 Also don't mention org-install.el anymore as the replacement file
377 org-loaddefs.el is now loaded by org.el. 379 org-loaddefs.el is now loaded by org.el.
378 380
3792012-10-25 Michael Albinus <michael.albinus@gmx.de> 3812012-10-25 Michael Albinus <michael.albinus@gmx.de>
380 382
381 * tramp.texi (Frequently Asked Questions): Mention 383 * tramp.texi (Frequently Asked Questions):
382 `tramp-completion-reread-directory-timeout' for performance 384 Mention `tramp-completion-reread-directory-timeout' for performance
383 improvement. 385 improvement.
384 386
3852012-10-25 Glenn Morris <rgm@gnu.org> 3872012-10-25 Glenn Morris <rgm@gnu.org>
@@ -483,8 +485,7 @@
483 (Imprint): Mention Wolfgang in list of contributors. 485 (Imprint): Mention Wolfgang in list of contributors.
484 (Creating Citations): Give a hint about how to 486 (Creating Citations): Give a hint about how to
485 auto-revert the BibTeX database file when using external editors. 487 auto-revert the BibTeX database file when using external editors.
486 (Referencing Labels): Simplify section about reference macro 488 (Referencing Labels): Simplify section about reference macro cycling.
487 cycling.
488 (Options (Referencing Labels)): Adapt to new structure of 489 (Options (Referencing Labels)): Adapt to new structure of
489 `reftex-ref-style-alist'. 490 `reftex-ref-style-alist'.
490 (Referencing Labels, Reference Styles): Document changes in the 491 (Referencing Labels, Reference Styles): Document changes in the
@@ -502,8 +503,8 @@
502 (Referencing Labels): Update regarding reference styles. 503 (Referencing Labels): Update regarding reference styles.
503 (Citation Styles): Mention support for ConTeXt. 504 (Citation Styles): Mention support for ConTeXt.
504 (Options (Defining Label Environments)): Fix typo. 505 (Options (Defining Label Environments)): Fix typo.
505 (Options (Creating Citations)): Document 506 (Options (Creating Citations)):
506 `reftex-cite-key-separator'. 507 Document `reftex-cite-key-separator'.
507 508
5082012-09-30 Achim Gratz <Stromeko@Stromeko.DE> 5092012-09-30 Achim Gratz <Stromeko@Stromeko.DE>
509 510
@@ -535,8 +536,8 @@
535 536
5362012-09-30 Bastien Guerry <bzg@gnu.org> 5372012-09-30 Bastien Guerry <bzg@gnu.org>
537 538
538 * org.texi (Installation, Feedback, Batch execution): Use 539 * org.texi (Installation, Feedback, Batch execution):
539 (add-to-list 'load-path ... t) for the contrib dir. 540 Use (add-to-list 'load-path ... t) for the contrib dir.
540 541
541 * org.texi (results): Update documentation for ":results drawer" 542 * org.texi (results): Update documentation for ":results drawer"
542 and ":results org". 543 and ":results org".
@@ -553,18 +554,16 @@
553 554
554 * org.texi (History and Acknowledgments): Fix typo. 555 * org.texi (History and Acknowledgments): Fix typo.
555 556
556 * org.texi (History and Acknowledgments): Add my own 557 * org.texi (History and Acknowledgments): Add my own acknowledgments.
557 acknowledgments.
558 558
559 * org.texi (Agenda commands): Document the new command and the new 559 * org.texi (Agenda commands): Document the new command and the new
560 option. 560 option.
561 561
562 * org.texi (Agenda commands): Delete `org-agenda-action' section. 562 * org.texi (Agenda commands): Delete `org-agenda-action' section.
563 (Agenda commands): Reorder. Document `*' to toggle persistent 563 (Agenda commands): Reorder. Document `*' to toggle persistent marks.
564 marks.
565 564
566 * org.texi (Agenda dispatcher): Mention 565 * org.texi (Agenda dispatcher):
567 `org-toggle-agenda-sticky'. 566 Mention `org-toggle-agenda-sticky'.
568 (Agenda commands, Exporting Agenda Views): Fix typo. 567 (Agenda commands, Exporting Agenda Views): Fix typo.
569 568
570 * org.texi (Templates in contexts, Setting Options): Update to 569 * org.texi (Templates in contexts, Setting Options): Update to
@@ -582,8 +581,7 @@
582 * org.texi (Formula syntax for Lisp): Reformat. 581 * org.texi (Formula syntax for Lisp): Reformat.
583 582
584 * org.texi (Special properties, Column attributes) 583 * org.texi (Special properties, Column attributes)
585 (Agenda column view): Document the new special property 584 (Agenda column view): Document the new special property CLOCKSUM_T.
586 CLOCKSUM_T.
587 585
588 * org.texi (Template expansion): Document the new %l template. 586 * org.texi (Template expansion): Document the new %l template.
589 587
@@ -739,8 +737,8 @@
739 (Unsafe Simplifications): Mention `m E'. 737 (Unsafe Simplifications): Mention `m E'.
740 (Simplification of Units): Mention `m U'. 738 (Simplification of Units): Mention `m U'.
741 (Trigonometric/Hyperbolic Functions, Reducing and Mapping) 739 (Trigonometric/Hyperbolic Functions, Reducing and Mapping)
742 (Kinds of Declarations, Functions for Declarations): Mention 740 (Kinds of Declarations, Functions for Declarations):
743 "algebraic simplifications" instead of `a s'. 741 Mention "algebraic simplifications" instead of `a s'.
744 (Algebraic Entry): Remove mention of default simplifications. 742 (Algebraic Entry): Remove mention of default simplifications.
745 743
7462012-07-30 Jay Belanger <jay.p.belanger@gmail.com> 7442012-07-30 Jay Belanger <jay.p.belanger@gmail.com>
@@ -772,8 +770,8 @@
772 770
7732012-07-06 Michael Albinus <michael.albinus@gmx.de> 7712012-07-06 Michael Albinus <michael.albinus@gmx.de>
774 772
775 * tramp.texi (Multi-hops): Introduce 773 * tramp.texi (Multi-hops):
776 `tramp-restricted-shell-hosts-alist'. 774 Introduce `tramp-restricted-shell-hosts-alist'.
777 775
7782012-06-26 Lars Magne Ingebrigtsen <larsi@gnus.org> 7762012-06-26 Lars Magne Ingebrigtsen <larsi@gnus.org>
779 777
@@ -965,8 +963,8 @@
965 (Synchronous Methods): Remove obsolete dbus-call-method-non-blocking. 963 (Synchronous Methods): Remove obsolete dbus-call-method-non-blocking.
966 (Asynchronous Methods): Fix description of 964 (Asynchronous Methods): Fix description of
967 dbus-call-method-asynchronously. 965 dbus-call-method-asynchronously.
968 (Receiving Method Calls): Fix some minor errors. Add 966 (Receiving Method Calls): Fix some minor errors.
969 dbus-interface-emacs. 967 Add dbus-interface-emacs.
970 (Signals): Describe unicast signals and the new match rules. 968 (Signals): Describe unicast signals and the new match rules.
971 (Alternative Buses): Add the PRIVATE optional argument to 969 (Alternative Buses): Add the PRIVATE optional argument to
972 dbus-init-bus. Describe its new return value. Add dbus-setenv. 970 dbus-init-bus. Describe its new return value. Add dbus-setenv.
@@ -999,8 +997,8 @@
999 997
10002012-04-09 Eli Zaretskii <eliz@gnu.org> 9982012-04-09 Eli Zaretskii <eliz@gnu.org>
1001 999
1002 * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, clean): Add 1000 * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, clean):
1003 emacs-gnutls. 1001 Add emacs-gnutls.
1004 ($(infodir)/emacs-gnutls, emacs-gnutls.dvi): New targets. 1002 ($(infodir)/emacs-gnutls, emacs-gnutls.dvi): New targets.
1005 1003
10062012-04-09 Teodor Zlatanov <tzz@lifelogs.com> 10042012-04-09 Teodor Zlatanov <tzz@lifelogs.com>
@@ -1098,12 +1096,11 @@
10982012-04-01 Carsten Dominik <carsten.dominik@gmail.com> 10962012-04-01 Carsten Dominik <carsten.dominik@gmail.com>
1099 1097
1100 * org.texi (MobileOrg): Change the wording to reflect that the 1098 * org.texi (MobileOrg): Change the wording to reflect that the
1101 Android Version is no longer just the little brother of the iOS 1099 Android Version is no longer just the little brother of the iOS version.
1102 version.
1103 1100
11042012-04-01 Eric Schulte <eric.schulte@gmx.com> 11012012-04-01 Eric Schulte <eric.schulte@gmx.com>
1105 1102
1106 * org.texi (Key bindings and useful functions): Updated babel key 1103 * org.texi (Key bindings and useful functions): Update babel key
1107 binding documentation in manual. 1104 binding documentation in manual.
1108 1105
11092012-04-01 Eric Schulte <eric.schulte@gmx.com> 11062012-04-01 Eric Schulte <eric.schulte@gmx.com>
@@ -1204,8 +1201,8 @@
1204 1201
12052012-02-13 Lars Ingebrigtsen <larsi@gnus.org> 12022012-02-13 Lars Ingebrigtsen <larsi@gnus.org>
1206 1203
1207 * gnus.texi (Customizing the IMAP Connection): Mention 1204 * gnus.texi (Customizing the IMAP Connection):
1208 nnimap-record-commands. 1205 Mention nnimap-record-commands.
1209 1206
12102012-02-10 Glenn Morris <rgm@gnu.org> 12072012-02-10 Glenn Morris <rgm@gnu.org>
1211 1208
@@ -1253,8 +1250,7 @@
12532012-01-03 Eric Schulte <eric.schulte@gmx.com> 12502012-01-03 Eric Schulte <eric.schulte@gmx.com>
1254 1251
1255 * org.texi (Noweb reference syntax): Adding documentation of 1252 * org.texi (Noweb reference syntax): Adding documentation of
1256 the `*org-babel-use-quick-and-dirty-noweb-expansion*' 1253 the `*org-babel-use-quick-and-dirty-noweb-expansion*' variable.
1257 variable.
1258 1254
12592012-01-03 Bastien Guerry <bzg@gnu.org> 12552012-01-03 Bastien Guerry <bzg@gnu.org>
1260 1256
@@ -1276,8 +1272,8 @@
1276 1272
12772012-01-03 Bernt Hansen <bernt@norang.ca> 12732012-01-03 Bernt Hansen <bernt@norang.ca>
1278 1274
1279 * org.texi (Agenda commands): Document 1275 * org.texi (Agenda commands):
1280 `org-clock-report-include-clocking-task'. 1276 Document `org-clock-report-include-clocking-task'.
1281 1277
12822012-01-03 Bastien Guerry <bzg@gnu.org> 12782012-01-03 Bastien Guerry <bzg@gnu.org>
1283 1279
@@ -1327,8 +1323,7 @@
1327 1323
13282012-01-03 Thomas Dye <dk@poto.local> 13242012-01-03 Thomas Dye <dk@poto.local>
1329 1325
1330 * org.texi: Changed DATA to NAME in Working With Source Code 1326 * org.texi: Changed DATA to NAME in Working With Source Code section.
1331 section.
1332 1327
13332012-01-03 Tom Dye <tsd@tsdye.com> 13282012-01-03 Tom Dye <tsd@tsdye.com>
1334 1329
@@ -1362,8 +1357,8 @@
1362 1357
13632012-01-03 Eric Schulte <schulte.eric@gmail.com> 13582012-01-03 Eric Schulte <schulte.eric@gmail.com>
1364 1359
1365 * org.texi (Buffer-wide header arguments): Update 1360 * org.texi (Buffer-wide header arguments):
1366 documentation to reflect removal of #+PROPERTIES. 1361 Update documentation to reflect removal of #+PROPERTIES.
1367 1362
13682012-01-03 Carsten Dominik <carsten.dominik@gmail.com> 13632012-01-03 Carsten Dominik <carsten.dominik@gmail.com>
1369 1364
@@ -1382,8 +1377,7 @@
1382 1377
13832012-01-03 Tom Dye <tsd@tsdye.com> 13782012-01-03 Tom Dye <tsd@tsdye.com>
1384 1379
1385 * org.texi: Added a line to specify that header arguments are 1380 * org.texi: Added a line to specify that header arguments are lowercase.
1386 lowercase.
1387 1381
13882012-01-03 Tom Dye <tsd@tsdye.com> 13822012-01-03 Tom Dye <tsd@tsdye.com>
1389 1383
@@ -1396,9 +1390,8 @@
1396 1390
13972012-01-03 David Maus <dmaus@ictsoc.de> 13912012-01-03 David Maus <dmaus@ictsoc.de>
1398 1392
1399 * org.texi (Exporting Agenda Views, Extracting agenda 1393 * org.texi (Exporting Agenda Views, Extracting agenda information):
1400 information): Fix command line syntax, quote symbol parameter 1394 Fix command line syntax, quote symbol parameter values.
1401 values.
1402 1395
14032012-01-03 David Maus <dmaus@ictsoc.de> 13962012-01-03 David Maus <dmaus@ictsoc.de>
1404 1397
@@ -1524,7 +1517,7 @@
1524 1517
1525 * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for 1518 * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for
1526 release 8.3. 1519 release 8.3.
1527 (Preface): Updated support information. 1520 (Preface): Update support information.
1528 (From Bill Wohler): Reset text to original version. As a 1521 (From Bill Wohler): Reset text to original version. As a
1529 historical quote, the tense should be correct in the time that it 1522 historical quote, the tense should be correct in the time that it
1530 was written. 1523 was written.
@@ -1564,8 +1557,7 @@
1564 1557
15652011-08-15 Bastien Guerry <bzg@gnu.org> 15582011-08-15 Bastien Guerry <bzg@gnu.org>
1566 1559
1567 * org.texi (Languages): Add Lilypond and Awk as supported 1560 * org.texi (Languages): Add Lilypond and Awk as supported languages.
1568 languages.
1569 1561
15702011-08-15 Achim Gratz <stromeko@nexgo.de> 15622011-08-15 Achim Gratz <stromeko@nexgo.de>
1571 1563
@@ -1583,8 +1575,7 @@
15832011-08-15 Eric Schulte <schulte.eric@gmail.com> 15752011-08-15 Eric Schulte <schulte.eric@gmail.com>
1584 1576
1585 * org.texi (Results of evaluation): More explicit about the 1577 * org.texi (Results of evaluation): More explicit about the
1586 mechanism through which interactive evaluation of code is 1578 mechanism through which interactive evaluation of code is performed.
1587 performed.
1588 1579
15892011-08-15 Eric Schulte <schulte.eric@gmail.com> 15802011-08-15 Eric Schulte <schulte.eric@gmail.com>
1590 1581
@@ -1663,13 +1654,11 @@
1663 1654
16642011-08-15 Puneeth Chaganti <punchagan@gmail.com> 16552011-08-15 Puneeth Chaganti <punchagan@gmail.com>
1665 1656
1666 * org.texi (Agenda commands): Doc for function option to bulk 1657 * org.texi (Agenda commands): Doc for function option to bulk action.
1667 action.
1668 1658
16692011-08-15 Carsten Dominik <carsten.dominik@gmail.com> 16592011-08-15 Carsten Dominik <carsten.dominik@gmail.com>
1670 1660
1671 * org.texi (Template expansion): Document new %<...> template 1661 * org.texi (Template expansion): Document new %<...> template escape.
1672 escape.
1673 1662
16742011-08-15 Carsten Dominik <carsten.dominik@gmail.com> 16632011-08-15 Carsten Dominik <carsten.dominik@gmail.com>
1675 1664
@@ -1689,8 +1678,7 @@
1689 1678
16902011-08-15 Eric Schulte <schulte.eric@gmail.com> 16792011-08-15 Eric Schulte <schulte.eric@gmail.com>
1691 1680
1692 * org.texi (padline): Documentation of the new padline header 1681 * org.texi (padline): Documentation of the new padline header argument.
1693 argument.
1694 1682
16952011-08-15 Eric Schulte <schulte.eric@gmail.com> 16832011-08-15 Eric Schulte <schulte.eric@gmail.com>
1696 1684
@@ -1711,8 +1699,7 @@
1711 1699
17122011-08-15 Eric Schulte <schulte.eric@gmail.com> 17002011-08-15 Eric Schulte <schulte.eric@gmail.com>
1713 1701
1714 * org.texi (var): Clarification of indexing into tabular 1702 * org.texi (var): Clarification of indexing into tabular variables.
1715 variables.
1716 1703
17172011-08-15 Eric Schulte <schulte.eric@gmail.com> 17042011-08-15 Eric Schulte <schulte.eric@gmail.com>
1718 1705
@@ -1726,8 +1713,8 @@
1726 1713
17272011-08-15 Bastien Guerry <bzg@gnu.org> 17142011-08-15 Bastien Guerry <bzg@gnu.org>
1728 1715
1729 * org.texi (Dynamic blocks, Structure editing): Mention 1716 * org.texi (Dynamic blocks, Structure editing):
1730 the function `org-narrow-to-block'. 1717 Mention the function `org-narrow-to-block'.
1731 1718
17322011-08-15 Eric Schulte <schulte.eric@gmail.com> 17192011-08-15 Eric Schulte <schulte.eric@gmail.com>
1733 1720
@@ -1754,15 +1741,15 @@
1754 1741
17552011-08-15 Eric Schulte <schulte.eric@gmail.com> 17422011-08-15 Eric Schulte <schulte.eric@gmail.com>
1756 1743
1757 * org.texi (Conflicts): Changed "yasnippets" to "yasnippet" and 1744 * org.texi (Conflicts): Change "yasnippets" to "yasnippet" and
1758 added extra whitespace around functions to be consistent with the 1745 added extra whitespace around functions to be consistent with the
1759 rest of the section. 1746 rest of the section.
1760 1747
17612011-08-15 Eric Schulte <schulte.eric@gmail.com> 17482011-08-15 Eric Schulte <schulte.eric@gmail.com>
1762 1749
1763 * org.texi (Evaluating code blocks): Expanded discussion of 1750 * org.texi (Evaluating code blocks): Expand discussion of
1764 #+call: line syntax. 1751 #+call: line syntax.
1765 (Header arguments in function calls): Expanded discussion of 1752 (Header arguments in function calls): Expand discussion of
1766 #+call: line syntax. 1753 #+call: line syntax.
1767 1754
17682011-08-15 Eric Schulte <schulte.eric@gmail.com> 17552011-08-15 Eric Schulte <schulte.eric@gmail.com>
@@ -1792,17 +1779,16 @@
1792 1779
17932011-08-15 Tom Dye <tsd@tsdye.com> 17802011-08-15 Tom Dye <tsd@tsdye.com>
1794 1781
1795 * org.texi (cache): Improved documentation of code block caches. 1782 * org.texi (cache): Improve documentation of code block caches.
1796 1783
17972011-08-15 Tom Dye <tsd@tsdye.com> 17842011-08-15 Tom Dye <tsd@tsdye.com>
1798 1785
1799 * org.texi (Code block specific header arguments): Documentation 1786 * org.texi (Code block specific header arguments):
1800 of multi-line header arguments. 1787 Documentation of multi-line header arguments.
1801 1788
18022011-08-15 Eric Schulte <schulte.eric@gmail.com> 17892011-08-15 Eric Schulte <schulte.eric@gmail.com>
1803 1790
1804 * org.texi (Code evaluation security): Add example for using a 1791 * org.texi (Code evaluation security): Add example for using a function.
1805 function.
1806 1792
18072011-08-15 Eric Schulte <schulte.eric@gmail.com> 17932011-08-15 Eric Schulte <schulte.eric@gmail.com>
1808 1794
@@ -1827,8 +1813,7 @@
18272011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org> 18132011-07-14 Lars Magne Ingebrigtsen <larsi@gnus.org>
1828 1814
1829 * widget.texi (Setting Up the Buffer): Remove mention of the 1815 * widget.texi (Setting Up the Buffer): Remove mention of the
1830 global keymap parent, which doesn't seem to be accurate 1816 global keymap parent, which doesn't seem to be accurate (bug#7045).
1831 (bug#7045).
1832 1817
18332011-07-12 Lars Magne Ingebrigtsen <larsi@gnus.org> 18182011-07-12 Lars Magne Ingebrigtsen <larsi@gnus.org>
1834 1819
@@ -1853,15 +1838,15 @@
1853 1838
18542011-07-04 Michael Albinus <michael.albinus@gmx.de> 18392011-07-04 Michael Albinus <michael.albinus@gmx.de>
1855 1840
1856 * tramp.texi (Cleanup remote connections): Add 1841 * tramp.texi (Cleanup remote connections):
1857 `tramp-cleanup-this-connection'. 1842 Add `tramp-cleanup-this-connection'.
1858 1843
18592011-07-03 Lars Magne Ingebrigtsen <larsi@gnus.org> 18442011-07-03 Lars Magne Ingebrigtsen <larsi@gnus.org>
1860 1845
1861 * gnus.texi (Subscription Methods): Link to "Group Levels" to explain 1846 * gnus.texi (Subscription Methods): Link to "Group Levels" to explain
1862 zombies. 1847 zombies.
1863 (Checking New Groups): Ditto (bug#8974). 1848 (Checking New Groups): Ditto (bug#8974).
1864 (Checking New Groups): Moved the reference to the right place. 1849 (Checking New Groups): Move the reference to the right place.
1865 1850
18662011-07-03 Dave Abrahams <dave@boostpro.com> (tiny change) 18512011-07-03 Dave Abrahams <dave@boostpro.com> (tiny change)
1867 1852
@@ -1888,8 +1873,8 @@
1888 1873
18892011-06-26 Lars Magne Ingebrigtsen <larsi@gnus.org> 18742011-06-26 Lars Magne Ingebrigtsen <larsi@gnus.org>
1890 1875
1891 * gnus.texi (Summary Mail Commands): Document 1876 * gnus.texi (Summary Mail Commands):
1892 `gnus-summary-reply-to-list-with-original'. 1877 Document `gnus-summary-reply-to-list-with-original'.
1893 1878
18942011-06-20 Stefan Monnier <monnier@iro.umontreal.ca> 18792011-06-20 Stefan Monnier <monnier@iro.umontreal.ca>
1895 1880
@@ -1952,7 +1937,7 @@
1952 1937
1953 * gnus.texi (nnmairix caveats, Setup, Registry Article Refer Method) 1938 * gnus.texi (nnmairix caveats, Setup, Registry Article Refer Method)
1954 (Fancy splitting to parent, Store arbitrary data): 1939 (Fancy splitting to parent, Store arbitrary data):
1955 Updated gnus-registry docs. 1940 Update gnus-registry docs.
1956 1941
19572011-04-13 Juanma Barranquero <lekktu@gmail.com> 19422011-04-13 Juanma Barranquero <lekktu@gmail.com>
1958 1943
@@ -2024,9 +2009,8 @@
2024 2009
20252011-03-06 Jay Belanger <jay.p.belanger@gmail.com> 20102011-03-06 Jay Belanger <jay.p.belanger@gmail.com>
2026 2011
2027 * calc.texi (Logarithmic Units): Rename calc-logunits-dblevel 2012 * calc.texi (Logarithmic Units): Rename calc-logunits-dblevel and
2028 and calc-logunits-nplevel to calc-dblevel and calc-nplevel, 2013 calc-logunits-nplevel to calc-dblevel and calc-nplevel, respectively.
2029 respectively.
2030 (Musical Notes): New section. 2014 (Musical Notes): New section.
2031 (Customizing Calc): Mention the customizable variable 2015 (Customizing Calc): Mention the customizable variable
2032 calc-note-threshold. 2016 calc-note-threshold.
@@ -3069,8 +3053,8 @@
3069 3053
3070 Sync with Tramp 2.1.19. 3054 Sync with Tramp 2.1.19.
3071 3055
3072 * tramp.texi (Inline methods, Default Method): Mention 3056 * tramp.texi (Inline methods, Default Method):
3073 `tramp-inline-compress-start-size'. Remove "kludgy" phrase. 3057 Mention `tramp-inline-compress-start-size'. Remove "kludgy" phrase.
3074 Remove remark about doubled "-t" argument. 3058 Remove remark about doubled "-t" argument.
3075 (Auto-save and Backup): Remove reference to Emacs 21. 3059 (Auto-save and Backup): Remove reference to Emacs 21.
3076 (Filename Syntax): Describe port numbers. 3060 (Filename Syntax): Describe port numbers.
@@ -5724,7 +5708,7 @@
57242007-10-28 Kevin Greiner <kevin.greiner@compsol.cc> 57082007-10-28 Kevin Greiner <kevin.greiner@compsol.cc>
5725 5709
5726 * gnus.texi (nntp-open-via-telnet-and-telnet): Fix grammar. 5710 * gnus.texi (nntp-open-via-telnet-and-telnet): Fix grammar.
5727 (Agent Parameters): Updated parameter names to match code. 5711 (Agent Parameters): Update parameter names to match code.
5728 (Group Agent Commands): Corrected 'gnus-agent-fetch-series' as 5712 (Group Agent Commands): Corrected 'gnus-agent-fetch-series' as
5729 'gnus-agent-summary-fetch-series'. 5713 'gnus-agent-summary-fetch-series'.
5730 (Agent and flags): New section providing a generalized discussion 5714 (Agent and flags): New section providing a generalized discussion
@@ -6528,7 +6512,7 @@
6528 (Tag searches): Document regular expression search for tags. 6512 (Tag searches): Document regular expression search for tags.
6529 (Stuck projects): New section. 6513 (Stuck projects): New section.
6530 (In-buffer settings): New keywords. 6514 (In-buffer settings): New keywords.
6531 (History and Acknowledgments): Updated description. 6515 (History and Acknowledgments): Update description.
6532 6516
65332007-02-24 Alan Mackenzie <acm@muc.de> 65172007-02-24 Alan Mackenzie <acm@muc.de>
6534 6518
@@ -6760,7 +6744,7 @@
6760 (Custom agenda views): Section completely rewritten. 6744 (Custom agenda views): Section completely rewritten.
6761 (Summary): Compare with Planner. 6745 (Summary): Compare with Planner.
6762 (Feedback): More info about creating backtraces. 6746 (Feedback): More info about creating backtraces.
6763 (Plain lists): Modified example. 6747 (Plain lists): Modify example.
6764 (Breaking down tasks): New section. 6748 (Breaking down tasks): New section.
6765 (Custom time format): New section. 6749 (Custom time format): New section.
6766 (Time stamps): Document inactive timestamps. 6750 (Time stamps): Document inactive timestamps.
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index af457d7a9af..8d398900238 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -2,6 +2,7 @@
2@c %**start of header 2@c %**start of header
3@setfilename ../../info/eshell 3@setfilename ../../info/eshell
4@settitle Eshell: The Emacs Shell 4@settitle Eshell: The Emacs Shell
5@defindex cm
5@synindex vr fn 6@synindex vr fn
6@c %**end of header 7@c %**end of header
7 8
@@ -42,7 +43,7 @@ modify this GNU manual.''
42@c -release- 43@c -release-
43@end ignore 44@end ignore
44@sp 3 45@sp 3
45@center John Wiegley 46@center John Wiegley & Aidan Gauland
46@c -date- 47@c -date-
47 48
48@page 49@page
@@ -75,16 +76,15 @@ handling the sort of tasks accomplished by those tools.
75* What is Eshell?:: A brief introduction to the Emacs Shell. 76* What is Eshell?:: A brief introduction to the Emacs Shell.
76* Command basics:: The basics of command usage. 77* Command basics:: The basics of command usage.
77* Commands:: 78* Commands::
78* Arguments:: 79* Expansion::
79* Input/Output:: 80* Input/Output::
80* Process control::
81* Extension modules:: 81* Extension modules::
82* Extras and Goodies::
83* Bugs and ideas:: Known problems, and future ideas. 82* Bugs and ideas:: Known problems, and future ideas.
84* GNU Free Documentation License:: The license for this documentation. 83* GNU Free Documentation License:: The license for this documentation.
85* Concept Index:: 84* Concept Index::
86* Function and Variable Index:: 85* Function and Variable Index::
87* Key Index:: 86* Key Index::
87* Command Index::
88@end menu 88@end menu
89 89
90@node What is Eshell? 90@node What is Eshell?
@@ -278,83 +278,56 @@ on your mind. Have fun!
278@node Commands 278@node Commands
279@chapter Commands 279@chapter Commands
280 280
281In a command shell, everything is done by invoking commands. This
282chapter covers command invocations in Eshell, including the command
283history and invoking commands in a script file.
284
281@menu 285@menu
282* Invocation:: 286* Invocation::
283* Completion:: 287* Arguments::
288* Variables::
289* Built-ins::
284* Aliases:: 290* Aliases::
285* History:: 291* History::
292* Completion::
293* for loop::
286* Scripts:: 294* Scripts::
287* Built-ins::
288@end menu 295@end menu
289 296
290Essentially, a command shell is all about invoking commands---and
291everything that entails. So understanding how Eshell invokes commands
292is the key to comprehending how it all works.
293
294@node Invocation 297@node Invocation
295@section Invocation 298@section Invocation
296
297Unlike regular system shells, Eshell never invokes kernel functions 299Unlike regular system shells, Eshell never invokes kernel functions
298directly, such as @code{exec(3)}. Instead, it uses the Lisp functions 300directly, such as @code{exec(3)}. Instead, it uses the Lisp functions
299available in the Emacs Lisp library. It does this by transforming the 301available in the Emacs Lisp library. It does this by transforming the
300command you specify into a callable Lisp form.@footnote{To see the Lisp 302input line into a callable Lisp form.@footnote{To see the Lisp form that will be invoked, type: @samp{eshell-parse-command "echo hello"}}
301form that will be invoked, type: @samp{eshell-parse-command "echo 303
302hello"}} 304The command can be either an Elisp function or an external command.
303 305Eshell looks first for an @ref{Aliases, alias} with the same name as the
304This transformation, from the string of text typed at the command 306command, then a @ref{Built-ins, built-in command} or a function with the
305prompt, to the ultimate invocation of either a Lisp function or external 307same name; if there is no match, it then tries to execute it as an
306command, follows these steps: 308external command.
307 309
308@enumerate 310The semicolon (@code{;}) can be used to separate multiple command
309@item Parse the command string into separate arguments. 311invocations on a single line. A command invocation followed by an
310@item 312ampersand (@code{&}) will be run in the background. Eshell has no job
311@end enumerate 313control, so you can not suspend or background the current process, or
312 314bring a background process into the foreground. That said, background
313@node Completion 315processes invoked from Eshell can be controlled the same way as any
314@section Completion 316other background process in Emacs.
315
316@node Aliases
317@section Aliases
318
319@node History
320@section History
321
322Eshell knows a few built-in variables:
323
324@table @code
325
326@item $+
327@vindex $+
328This variable always contains the current working directory.
329
330@item $-
331@vindex $-
332This variable always contains the previous working directory (the
333current working directory from before the last @code{cd} command).
334
335@item $_
336@vindex $_
337It refers to the last argument of the last command.
338
339@item $$
340@vindex $$
341This is the result of the last command. In case of an external
342command, it is @code{t} or @code{nil}.
343
344@item $?
345@vindex $?
346This variable contains the exit code of the last command (0 or 1 for
347Lisp functions, based on successful completion).
348
349@end table
350
351@node Scripts
352@section Scripts
353 317
318@node Arguments
319@section Arguments
320Command arguments are passed to the functions as either strings or
321numbers, depending on what the parser thinks they look like. If you
322need to use a function that takes some other data type, you will need to
323call it in an Elisp expression (which can also be used with
324@ref{Expansion, expansions}). As with other shells, you can
325escape special characters and spaces with the backslash (@code{\}) and
326the single (@code{''}) and double (@code{""}) quotes.
354 327
355@node Built-ins 328@node Built-ins
356@section Built-in commands
357 329
330@section Built-in commands
358Several commands are built-in in Eshell. In order to call the 331Several commands are built-in in Eshell. In order to call the
359external variant of a built-in command @code{foo}, you could call 332external variant of a built-in command @code{foo}, you could call
360@code{*foo}. Usually, this should not be necessary. You can check 333@code{*foo}. Usually, this should not be necessary. You can check
@@ -368,7 +341,7 @@ eshell/ls is a compiled Lisp function in `em-ls.el'
368@end example 341@end example
369 342
370If you want to discard a given built-in command, you could declare an 343If you want to discard a given built-in command, you could declare an
371alias, @ref{Aliases}. Eample: 344alias, @ref{Aliases}. Example:
372 345
373@example 346@example
374~ $ which sudo 347~ $ which sudo
@@ -378,15 +351,96 @@ eshell/sudo is a compiled Lisp function in `em-unix.el'
378sudo is an alias, defined as "*sudo $*" 351sudo is an alias, defined as "*sudo $*"
379@end example 352@end example
380 353
381Some of the built-in commands have a special behavior in Eshell: 354@vindex eshell-prefer-lisp-functions
355If you would prefer to use the built-in commands instead of the external
356commands, set @var{eshell-prefer-lisp-functions} to @code{t}.
357
358Some of the built-in commands have different behaviour from their
359external counterparts, and some have no external counterpart. Most of
360these will print a usage message when given the @code{--help} option.
382 361
383@table @code 362@table @code
384 363
364@item addpath
365@cmindex addpath
366Adds a given path or set of paths to the PATH environment variable, or,
367with no arguments, prints the current paths in this variable.
368
369@item alias
370@cmindex alias
371Define an alias (@pxref{Aliases}). This does not add it to the aliases
372file.
373
374@item date
375@cmindex date
376Similar to, but slightly different from, the GNU Coreutils
377@command{date} command.
378
379@item define
380@cmindex define
381Define a varalias. @xref{Variable Aliases, , , elisp}.
382
383@item diff
384@cmindex diff
385Use Emacs's internal @code{diff} (not to be confused with
386@code{ediff}). @xref{Comparing Files, , , elisp}.
387
388@item grep
389@cmindex grep
390@itemx agrep
391@cmindex agrep
392@itemx egrep
393@cmindex egrep
394@itemx fgrep
395@cmindex fgrep
396@itemx glimpse
397@cmindex glimpse
398The @command{grep} commands are compatible with GNU @command{grep}, but
399use Emacs's internal @code{grep} instead.
400
401@item info
402@cmindex info
403Same as the external @command{info} command, but uses Emacs's internal
404Info reader.
405
406@item jobs
407@cmindex jobs
408List subprocesses of the Emacs process, if any, using the function
409@code{list-processes}.
410
411@item kill
412@cmindex kill
413Kill processes. Takes a PID or a process object and an optional
414signal specifier.
415
416@item listify
417@cmindex listify
418Eshell version of @code{list}. Allows you to create a list using Eshell
419syntax, rather than Elisp syntax. For example, @samp{listify foo bar}
420and @code{("foo" "bar")} both evaluate to @code{("foo" "bar")}.
421
422@item locate
423@cmindex locate
424Alias to Emacs's @code{locate} function, which simply runs the external
425@command{locate} command and parses the results. @xref{Dired and `find', , , elisp}.
426
427@item make
428@cmindex make
429Run @command{make} through @code{compile}. @xref{Running Compilations under Emacs, , , elisp}.
430
431@item occur
432@cmindex occur
433Alias to Emacs's @code{occur}. @xref{Other Search-and-Loop Commands, , , elisp}.
434
435@item printnl
436@cmindex printnl
437Print the arguments separated by newlines.
438
385@item cd 439@item cd
386@findex cd 440@cmindex cd
387This command changes the current working directory. Usually, it is 441This command changes the current working directory. Usually, it is
388invoked as @samp{cd foo} where @file{foo} is the new working 442invoked as @samp{cd foo} where @file{foo} is the new working directory.
389directory. But @code{cd} knows about a few special arguments: 443But @command{cd} knows about a few special arguments:
390 444
391When it receives no argument at all, it changes to the home directory. 445When it receives no argument at all, it changes to the home directory.
392 446
@@ -396,14 +450,73 @@ directory (this is the same as @samp{cd $-}).
396The command @samp{cd =} shows the directory stack. Each line is 450The command @samp{cd =} shows the directory stack. Each line is
397numbered. 451numbered.
398 452
399With @samp{cd =foo}, Eshell searches the directory stack for a 453With @samp{cd =foo}, Eshell searches the directory stack for a directory
400directory matching the regular expression @samp{foo} and changes to 454matching the regular expression @samp{foo} and changes to that
401that directory. 455directory.
402 456
403With @samp{cd -42}, you can access the directory stack by number. 457With @samp{cd -42}, you can access the directory stack by number.
404 458
405@item history 459@item su
406@findex history 460@cmindex su
461@itemx sudo
462@cmindex sudo
463Uses TRAMP's @command{su} or @command{sudo} method to run a command via
464@command{su} or @command{sudo}.
465
466@end table
467
468@section Built-in variables
469Eshell knows a few built-in variables:
470
471@table @code
472
473@item $+
474@vindex $+
475This variable always contains the current working directory.
476
477@item $-
478@vindex $-
479This variable always contains the previous working directory (the
480current working directory from before the last @code{cd} command).
481
482@item $_
483@vindex $_
484It refers to the last argument of the last command.
485
486@item $$
487@vindex $$
488This is the result of the last command. In case of an external
489command, it is @code{t} or @code{nil}.
490
491@item $?
492@vindex $?
493This variable contains the exit code of the last command (0 or 1 for
494Lisp functions, based on successful completion).
495
496@end table
497
498@node Variables
499@section Variables
500Since Eshell is just an Emacs REPL@footnote{Read-Eval-Print Loop}, it
501does not have its own scope, and simply stores variables the same you
502would in an Elisp program. Eshell provides a command version of
503@code{setq} for convenience.
504
505@node Aliases
506@section Aliases
507
508Aliases are commands that expand to a longer input line. For example,
509@command{ll} is a common alias for @code{ls -l}, and would be defined
510with the command invocation @samp{alias ll ls -l}; with this defined,
511running @samp{ll foo} in Eshell will actually run @samp{ls -l foo}.
512Aliases defined (or deleted) by the @command{alias} command are
513automatically written to the file named by @var{eshell-aliases-file},
514which you can also edit directly (although you will have to manually
515reload it).
516
517@node History
518@section History
519@cmindex history
407The @samp{history} command shows all commands kept in the history ring 520The @samp{history} command shows all commands kept in the history ring
408as numbered list. If the history ring contains 521as numbered list. If the history ring contains
409@code{eshell-history-size} commands, those numbers change after every 522@code{eshell-history-size} commands, those numbers change after every
@@ -419,70 +532,226 @@ of the history ring.
419argument of the last command beginning with @code{foo} is accessible 532argument of the last command beginning with @code{foo} is accessible
420by @code{!foo:n}. 533by @code{!foo:n}.
421 534
422@item su 535The history ring is loaded from a file at the start of every session,
423@findex su 536and written back to the file at the end of every session. The file path
424@itemx sudo 537is specified in @var{eshell-history-file-name}. Unlike other shells,
425@findex sudo 538such as Bash, Eshell can not be configured to keep a history ring of a
426@code{su} and @code{sudo} work as expected: they apply the following 539different size than that of the history file.
427commands (@code{su}), or the command being an argument (@code{sudo}) 540
428under the permissions of somebody else. 541Since the default buffer navigation and searching key-bindings are
429 542still present in the Eshell buffer, the commands for history
430This does not work only on 543navigation and searching are bound to different keys:
431the local host, but even on a remote one, when 544
432@code{default-directory} is a remote file name. The necessary 545@table @kbd
433proxy configuration of Tramp is performed 546@item M-r
434@ifinfo 547@itemx M-s
435automatically, @ref{Multi-hops, , , tramp}. 548History I-search.
436@end ifinfo 549
437@ifnotinfo 550@item M-p
438automatically. 551@itemx M-n
439@end ifnotinfo 552Previous and next history line. If there is anything on the input
440Example: 553line when you run these commands, they will instead jump to the
554precious or next line that begins with that string.
555@end table
556
557@node Completion
558@section Completion
559Eshell uses the pcomplete package for programmable completion, similar
560to that of other command shells. Argument completion differs depending
561on the preceding command: for example, possible completions for
562@command{rmdir} are only directories, while @command{rm} completions can
563be directories @emph{and} files. Eshell provides predefined completions
564for the built-in functions and some common external commands, and you
565can define your own for any command.
566
567Eshell completion also works for lisp forms and glob patterns. If the
568point is on a lisp form, then @key{TAB} will behave similarly to completion
569in @code{elisp-mode} and @code{lisp-interaction-mode}. For glob
570patterns, If there are few enough possible completions of the patterns,
571they will be cycled when @key{TAB} is pressed, otherwise it will be removed
572from the input line and the possible completions will be listed.
573
574If you want to see the entire list of possible completions when it's
575below the cycling threshold, press @kbd{M-?}.
576
577@subsection pcomplete
578Pcomplete, short for programmable completion, is the completion
579library originally written for Eshell, but usable for command
580completion@footnote{Command completion as opposed to code completion,
581which is a beyond the scope of pcomplete.} in other modes.
582
583Completions are defined as functions (with @code{defun}) named
584@code{pcomplete/COMMAND}, where @code{COMMAND} is the name of the
585command for which this function provides completions; you can also name
586the function @code{pcomplete/MAJOR-MODE/COMMAND} to define completions
587for a specific major mode.
588
589@node for loop
590@section @code{for} loop
591Because Eshell commands can not (easily) be combined with lisp forms,
592Eshell provides a command-oriented @command{for}-loop for convenience.
593The syntax is as follows:
441 594
442@example 595@example
443~ $ cd /ssh:otherhost:/etc 596@code{for VAR in TOKENS @{ command invocation(s) @}}
444/ssh:user@@otherhost:/etc $ sudo find-file shadow
445@end example 597@end example
446 598
447@end table 599where @samp{TOKENS} is a space-separated sequence of values of
448 600@var{VAR} for each iteration. This can even be the output of a
601command if @samp{TOKENS} is replaced with @samp{@{ command invocation @}}.
449 602
450@node Arguments 603@node Scripts
451@chapter Arguments 604@section Scripts
605@cmindex source
606@fnindex eshell-source-file
607You can run Eshell scripts much like scripts for other shells; the main
608difference is that since Eshell is not a system command, you have to run
609it from within Emacs. An Eshell script is simply a file containing a
610sequence of commands, as with almost any other shell script. Scripts
611are invoked from Eshell with @command{source}, or from anywhere in Emacs
612with @code{eshell-source-file}.
613
614@cmindex .
615If you wish to load a script into your @emph{current} environment,
616rather than in a subshell, use the @code{.} command.
617
618@node Expansion
619@chapter Expansion
620Expansion in a command shell is somewhat like macro expansion in macro
621parsers (such as @command{cpp} and @command{m4}), but in a command
622shell, they are less often used for constants, and usually for using
623variables and string manipulation.@footnote{Eshell has no
624string-manipulation expansions because the Elisp library already
625provides many functions for this.} For example, @code{$var} on a line
626expands to the value of the variable @code{var} when the line is
627executed. Expansions are usually passed as arguments, but may also be
628used as commands.@footnote{e.g. Entering just @samp{$var} at the prompt
629is equivalent to entering the value of @code{var} at the prompt.}
452 630
453@menu 631@menu
454* The Parser:: 632* Dollars Expansion::
455* Variables::
456* Substitution::
457* Globbing:: 633* Globbing::
458* Predicates::
459@end menu 634@end menu
460 635
461@node The Parser 636@node Dollars Expansion
462@section The Parser 637@section Dollars Expansion
638Eshell has different @code{$} expansion syntax from other shells. There
639are some similarities, but don't let these lull you into a false sense
640of familiarity.
463 641
464@node Variables 642@table @code
465@section Variables
466 643
467@node Substitution 644@item $var
468@section Substitution 645Expands to the value bound to @code{var}. This is the main way to use
646variables in command invocations.
469 647
470@node Globbing 648@item $#var
471@section Globbing 649Expands to the length of the value bound to @code{var}. Raises an error
650if the value is not a sequence (@pxref{Sequences Arrays and Vectors, Sequences, , elisp}).
472 651
473@node Predicates 652@item $(lisp)
474@section Predicates 653Expands to the result of evaluating the S-expression @code{(lisp)}. On
654its own, this is identical to just @code{(lisp)}, but with the @code{$},
655it can be used in a string, such as @samp{/some/path/$(lisp).txt}.
475 656
657@item $@{command@}
658Returns the output of @command{command}, which can be any valid Eshell
659command invocation, and may even contain expansions.
476 660
477@node Input/Output 661@item $var[i]
478@chapter Input/Output 662Expands to the @code{i}th element of the value bound to @code{var}. If
663the value is a string, it will be split at whitespace to make it a list.
664Again, raises an error if the value is not a sequence.
665
666@item $var[: i]
667As above, but now splitting occurs at the colon character.
479 668
480@node Process control 669@item $var[: i j]
481@chapter Process control 670As above, but instead of returning just a string, it now returns a list
671of two strings. If the result is being interpolated into a larger
672string, this list will be flattened into one big string, with each
673element separated by a space.
482 674
675@item $var["\\\\" i]
676Separate on backslash characters. Actually, the first argument -- if it
677doesn't have the form of a number, or a plain variable name -- can be
678any regular expression. So to split on numbers, use @samp{$var["[0-9]+" 10 20]}.
679
680@item $var[hello]
681Calls @code{assoc} on @code{var} with @code{"hello"}, expecting it to be
682an alist (@pxref{Association List Type, Association Lists, , elisp}).
683
684@item $#var[hello]
685Returns the length of the cdr of the element of @code{var} who car is equal
686to @code{"hello"}.
687
688@end table
689
690@node Globbing
691@section Globbing
692Eshell's globbing syntax is very similar to that of Zsh. Users coming
693from Bash can still use Bash-style globbing, as there are no
694incompatibilities. Most globbing is pattern-based expansion, but there
695is also predicate-based expansion. See @ref{Filename Generation, , , zsh}
696for full syntax. To customize the syntax and behaviour of globbing in
697Eshell see the Customize@footnote{@xref{Customization Settings, Customize, , elisp}.}
698groups ``eshell-glob'' and ``eshell-pred''.
699
700@node Input/Output
701@chapter Input/Output
702Since Eshell does not communicate with a terminal like most command
703shells, IO is a little different. If you try to run programs from
704within Eshell that are not line-oriented, such as programs that use
705ncurses, you will just get garbage output, since the Eshell buffer is
706not a terminal emulator. Eshell solves this problem by running
707specified commands in Emacs's terminal emulator; to let Eshell know
708which commands need to be run in a terminal, add them to the list
709@var{eshell-visual-commands}.
710
711Redirection is mostly the same in Eshell as it is in other command
712shells. The output redirection operators @code{>} and @code{>>} as well
713as pipes are supported, but there is not yet any support for input
714redirection. Output can also be redirected to Elisp functions, using
715virtual devices.
716
717@var{eshell-virtual-targets} is a list of mappings of virtual device
718names to functions. Eshell comes with two virtual devices:
719@file{/dev/kill}, which sends the text to the kill ring, and
720@file{/dev/clip}, which sends text to the clipboard.
721
722You can, of course, define your own virtual targets. They are defined
723by adding a list of the form @code{("/dev/name" function mode)} to
724@var{eshell-virtual-targets}. The first element is the device name;
725@code{function} may be either a lambda or a function name. If
726@code{mode} is nil, then the function is the output function; if it is
727non-nil, then the function is passed the redirection mode as a
728symbol--@code{overwrite}, @code{append}, or @code{insert}--and the
729function is expected to return the output function.
730
731The output function is called once on each line of output until
732@code{nil} is passed, indicating end of output.
483 733
484@node Extension modules 734@node Extension modules
485@chapter Extension modules 735@chapter Extension modules
736Eshell provides a facility for defining extension modules so that they
737can be disabled and enabled without having to unload and reload them,
738and to provide a common parent Customize group for the
739modules.@footnote{ERC provides a similar module facility.} An Eshell
740module is defined the same as any other library but one requirement: the
741module must define a Customize@footnote{@xref{Customization Settings, Customize, , elisp}.}
742group using @code{eshell-defgroup} (in place of @code{defgroup}) with
743@code{eshell-module} as the parent group.@footnote{If the module has
744no user-customizable options, then there is no need to define it as an
745Eshell module.} You also need to load the following as shown:
746
747@example
748(eval-when-compile
749 (require 'cl)
750 (require 'esh-mode)
751 (require 'eshell))
752
753(require 'esh-util)
754@end example
486 755
487@menu 756@menu
488* Writing a module:: 757* Writing a module::
@@ -491,7 +760,6 @@ Example:
491* Key rebinding:: 760* Key rebinding::
492* Smart scrolling:: 761* Smart scrolling::
493* Terminal emulation:: 762* Terminal emulation::
494* Built-in UNIX commands::
495@end menu 763@end menu
496 764
497@node Writing a module 765@node Writing a module
@@ -512,13 +780,6 @@ Example:
512@node Terminal emulation 780@node Terminal emulation
513@section Terminal emulation 781@section Terminal emulation
514 782
515@node Built-in UNIX commands
516@section Built-in UNIX commands
517
518
519@node Extras and Goodies
520@chapter Extras and Goodies
521
522@node Bugs and ideas 783@node Bugs and ideas
523@chapter Bugs and ideas 784@chapter Bugs and ideas
524@cindex reporting bugs and ideas 785@cindex reporting bugs and ideas
@@ -527,6 +788,8 @@ Example:
527@cindex email to the author 788@cindex email to the author
528@cindex FAQ 789@cindex FAQ
529@cindex problems, list of common 790@cindex problems, list of common
791@cindex known bugs
792@cindex bugs, known
530 793
531If you find a bug or misfeature, don't hesitate to let me know! Send 794If you find a bug or misfeature, don't hesitate to let me know! Send
532email to @email{johnw@@gnu.org}. Feature requests should also be sent 795email to @email{johnw@@gnu.org}. Feature requests should also be sent
@@ -537,16 +800,7 @@ If you have ideas for improvements, or if you have written some
537extensions to this package, I would like to hear from you. I hope you 800extensions to this package, I would like to hear from you. I hope you
538find this package useful! 801find this package useful!
539 802
540@menu 803Below is a complete list of known problems with Eshell version 2.4.2,
541* Known problems::
542@end menu
543
544@node Known problems
545@section Known problems
546@cindex known bugs
547@cindex bugs, known
548
549Below is complete list of known problems with Eshell version 2.4.2,
550which is the version included with Emacs 22. 804which is the version included with Emacs 22.
551 805
552@table @asis 806@table @asis
@@ -554,7 +808,7 @@ which is the version included with Emacs 22.
554 808
555@item Differentiate between aliases and functions 809@item Differentiate between aliases and functions
556 810
557Allow for a bash-compatible syntax, such as: 811Allow for a Bash-compatible syntax, such as:
558 812
559@example 813@example
560alias arg=blah 814alias arg=blah
@@ -838,7 +1092,7 @@ them; @code{min} would display the smallest figure, etc.
838It would provide syntax, abbrev, highlighting and indenting support like 1092It would provide syntax, abbrev, highlighting and indenting support like
839@code{emacs-lisp-mode} and @code{shell-mode}. 1093@code{emacs-lisp-mode} and @code{shell-mode}.
840 1094
841@item In the history mechanism, finish the @command{bash}-style support 1095@item In the history mechanism, finish the Bash-style support
842 1096
843This means @samp{!n}, @samp{!#}, @samp{!:%}, and @samp{!:1-} as separate 1097This means @samp{!n}, @samp{!#}, @samp{!:%}, and @samp{!:1-} as separate
844from @samp{!:1*}. 1098from @samp{!:1*}.
@@ -1008,6 +1262,11 @@ Since it keeps the cursor up where the command was invoked.
1008 1262
1009@printindex fn 1263@printindex fn
1010 1264
1265@node Command Index
1266@unnumbered Command Index
1267
1268@printindex cm
1269
1011@node Key Index 1270@node Key Index
1012@unnumbered Key Index 1271@unnumbered Key Index
1013 1272