emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/emacs-24 r111233: * doc/misc/eshell.texi: F


From: Stefan Monnier
Subject: [Emacs-diffs] /srv/bzr/emacs/emacs-24 r111233: * doc/misc/eshell.texi: Fill most of the missing sections.
Date: Fri, 08 Feb 2013 09:59:24 -0500
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 111233 [merge]
author: Aidan Gauland <address@hidden>
committer: Stefan Monnier <address@hidden>
branch nick: emacs-24
timestamp: Fri 2013-02-08 09:59:24 -0500
message:
  * doc/misc/eshell.texi: Fill most of the missing sections.
modified:
  doc/misc/ChangeLog
  doc/misc/eshell.texi
=== modified file 'doc/misc/ChangeLog'
--- a/doc/misc/ChangeLog        2013-02-07 07:11:59 +0000
+++ b/doc/misc/ChangeLog        2013-02-08 14:59:24 +0000
@@ -1,3 +1,7 @@
+2013-02-08  Aidan Gauland  <address@hidden>
+
+       * eshell.texi: Fill most of the missing sections.
+
 2013-02-07  Bastien Guerry  <address@hidden>
 
        * org.texi (References): Clarify an example.
@@ -17,8 +21,8 @@
        from ede new.
        (Simple projects): Re-write to not talk about ede-simple-project
        which is deprecated, and instead use the term to mean projects
-       that don't do much management, just project wrapping.  Add
-       ede-generic-project link.
+       that don't do much management, just project wrapping.
+       Add ede-generic-project link.
        (ede-generic-project): New node (bug#11441).
 
 2013-02-03  Glenn Morris  <address@hidden>
@@ -72,8 +76,7 @@
        * ede.texi (Top): Rename from top, all uses changed.
        * eshell.texi: Add missing argument to @sp.
        * forms.texi (Top): Reorder menu to match structure.
-       * htmlfontify.texi (Customisation): Add missing @item in
-       @enumerate.
+       * htmlfontify.texi (Customisation): Add missing @item in @enumerate.
        * org.texi (Advanced features): Add missing argument for @item.
        (Property searches): Use @backslashchar{} in macro argument.
        * pcl-cvs.texi: Add missing argument to @sp.
@@ -212,8 +215,8 @@
        * org.texi (Summary, Code block specific header arguments)
        (Code block specific header arguments)
        (Header arguments in function calls, var, noweb)
-       (Results of evaluation, Code evaluation security): Small
-       reformatting: add a blank line before some example.
+       (Results of evaluation, Code evaluation security):
+       Small reformatting: add a blank line before some example.
 
        * org.texi (System-wide header arguments)
        (Header arguments in Org mode properties, Conflicts)
@@ -222,8 +225,7 @@
 
        * org.texi (Comment lines): Fix description of the comment syntax.
 
-       * org.texi (Installation): Mention "make test" in the correct
-       section.
+       * org.texi (Installation): Mention "make test" in the correct section.
 
 2012-12-02  Michael Albinus  <address@hidden>
 
@@ -271,8 +273,8 @@
 
 2012-11-08  Chong Yidong  <address@hidden>
 
-       * url.texi (Introduction): Rename from Getting Started.  Rewrite
-       the introduction.
+       * url.texi (Introduction): Rename from Getting Started.
+       Rewrite the introduction.
        (URI Parsing): Rewrite.  Omit the obsolete attributes slot.
 
 2012-11-07  Glenn Morris  <address@hidden>
@@ -372,14 +374,14 @@
 
 2012-10-26  Bastien Guerry  <address@hidden>
 
-       * org.texi (Installation): Update the link to Org's ELPA.  Also
-       don't mention org-install.el anymore as the replacement file
+       * org.texi (Installation): Update the link to Org's ELPA.
+       Also don't mention org-install.el anymore as the replacement file
        org-loaddefs.el is now loaded by org.el.
 
 2012-10-25  Michael Albinus  <address@hidden>
 
-       * tramp.texi (Frequently Asked Questions): Mention
-       `tramp-completion-reread-directory-timeout' for performance
+       * tramp.texi (Frequently Asked Questions):
+       Mention `tramp-completion-reread-directory-timeout' for performance
        improvement.
 
 2012-10-25  Glenn Morris  <address@hidden>
@@ -483,8 +485,7 @@
        (Imprint): Mention Wolfgang in list of contributors.
        (Creating Citations): Give a hint about how to
        auto-revert the BibTeX database file when using external editors.
-       (Referencing Labels): Simplify section about reference macro
-       cycling.
+       (Referencing Labels): Simplify section about reference macro cycling.
        (Options (Referencing Labels)): Adapt to new structure of
        `reftex-ref-style-alist'.
        (Referencing Labels, Reference Styles): Document changes in the
@@ -502,8 +503,8 @@
        (Referencing Labels): Update regarding reference styles.
        (Citation Styles): Mention support for ConTeXt.
        (Options (Defining Label Environments)): Fix typo.
-       (Options (Creating Citations)): Document
-       `reftex-cite-key-separator'.
+       (Options (Creating Citations)):
+       Document `reftex-cite-key-separator'.
 
 2012-09-30  Achim Gratz  <address@hidden>
 
@@ -535,8 +536,8 @@
 
 2012-09-30  Bastien Guerry  <address@hidden>
 
-       * org.texi (Installation, Feedback, Batch execution): Use
-       (add-to-list 'load-path ... t) for the contrib dir.
+       * org.texi (Installation, Feedback, Batch execution):
+       Use (add-to-list 'load-path ... t) for the contrib dir.
 
        * org.texi (results): Update documentation for ":results drawer"
        and ":results org".
@@ -553,18 +554,16 @@
 
        * org.texi (History and Acknowledgments): Fix typo.
 
-       * org.texi (History and Acknowledgments): Add my own
-       acknowledgments.
+       * org.texi (History and Acknowledgments): Add my own acknowledgments.
 
        * org.texi (Agenda commands): Document the new command and the new
        option.
 
        * org.texi (Agenda commands): Delete `org-agenda-action' section.
-       (Agenda commands): Reorder.  Document `*' to toggle persistent
-       marks.
+       (Agenda commands): Reorder.  Document `*' to toggle persistent marks.
 
-       * org.texi (Agenda dispatcher): Mention
-       `org-toggle-agenda-sticky'.
+       * org.texi (Agenda dispatcher):
+       Mention `org-toggle-agenda-sticky'.
        (Agenda commands, Exporting Agenda Views): Fix typo.
 
        * org.texi (Templates in contexts, Setting Options): Update to
@@ -582,8 +581,7 @@
        * org.texi (Formula syntax for Lisp): Reformat.
 
        * org.texi (Special properties, Column attributes)
-       (Agenda column view): Document the new special property
-       CLOCKSUM_T.
+       (Agenda column view): Document the new special property CLOCKSUM_T.
 
        * org.texi (Template expansion): Document the new %l template.
 
@@ -739,8 +737,8 @@
        (Unsafe Simplifications):  Mention `m E'.
        (Simplification of Units): Mention `m U'.
        (Trigonometric/Hyperbolic Functions, Reducing and Mapping)
-       (Kinds of Declarations, Functions for Declarations):  Mention
-       "algebraic simplifications" instead of `a s'.
+       (Kinds of Declarations, Functions for Declarations):
+       Mention "algebraic simplifications" instead of `a s'.
        (Algebraic Entry): Remove mention of default simplifications.
 
 2012-07-30  Jay Belanger  <address@hidden>
@@ -772,8 +770,8 @@
 
 2012-07-06  Michael Albinus  <address@hidden>
 
-       * tramp.texi (Multi-hops): Introduce
-       `tramp-restricted-shell-hosts-alist'.
+       * tramp.texi (Multi-hops):
+       Introduce `tramp-restricted-shell-hosts-alist'.
 
 2012-06-26  Lars Magne Ingebrigtsen  <address@hidden>
 
@@ -965,8 +963,8 @@
        (Synchronous Methods): Remove obsolete dbus-call-method-non-blocking.
        (Asynchronous Methods): Fix description of
        dbus-call-method-asynchronously.
-       (Receiving Method Calls): Fix some minor errors.  Add
-       dbus-interface-emacs.
+       (Receiving Method Calls): Fix some minor errors.
+       Add dbus-interface-emacs.
        (Signals): Describe unicast signals and the new match rules.
        (Alternative Buses): Add the PRIVATE optional argument to
        dbus-init-bus.  Describe its new return value.  Add dbus-setenv.
@@ -999,8 +997,8 @@
 
 2012-04-09  Eli Zaretskii  <address@hidden>
 
-       * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, clean): Add
-       emacs-gnutls.
+       * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, clean):
+       Add emacs-gnutls.
        ($(infodir)/emacs-gnutls, emacs-gnutls.dvi): New targets.
 
 2012-04-09  Teodor Zlatanov  <address@hidden>
@@ -1098,12 +1096,11 @@
 2012-04-01  Carsten Dominik  <address@hidden>
 
        * org.texi (MobileOrg): Change the wording to reflect that the
-       Android Version is no longer just the little brother of the iOS
-       version.
+       Android Version is no longer just the little brother of the iOS version.
 
 2012-04-01  Eric Schulte  <address@hidden>
 
-       * org.texi (Key bindings and useful functions): Updated babel key
+       * org.texi (Key bindings and useful functions): Update babel key
        binding documentation in manual.
 
 2012-04-01  Eric Schulte  <address@hidden>
@@ -1204,8 +1201,8 @@
 
 2012-02-13  Lars Ingebrigtsen  <address@hidden>
 
-       * gnus.texi (Customizing the IMAP Connection): Mention
-       nnimap-record-commands.
+       * gnus.texi (Customizing the IMAP Connection):
+       Mention nnimap-record-commands.
 
 2012-02-10  Glenn Morris  <address@hidden>
 
@@ -1253,8 +1250,7 @@
 2012-01-03  Eric Schulte  <address@hidden>
 
        * org.texi (Noweb reference syntax): Adding documentation of
-       the `*org-babel-use-quick-and-dirty-noweb-expansion*'
-       variable.
+       the `*org-babel-use-quick-and-dirty-noweb-expansion*' variable.
 
 2012-01-03  Bastien Guerry  <address@hidden>
 
@@ -1276,8 +1272,8 @@
 
 2012-01-03  Bernt Hansen  <address@hidden>
 
-       * org.texi (Agenda commands): Document
-       `org-clock-report-include-clocking-task'.
+       * org.texi (Agenda commands):
+       Document `org-clock-report-include-clocking-task'.
 
 2012-01-03  Bastien Guerry  <address@hidden>
 
@@ -1327,8 +1323,7 @@
 
 2012-01-03  Thomas Dye  <address@hidden>
 
-       * org.texi: Changed DATA to NAME in Working With Source Code
-       section.
+       * org.texi: Changed DATA to NAME in Working With Source Code section.
 
 2012-01-03  Tom Dye  <address@hidden>
 
@@ -1362,8 +1357,8 @@
 
 2012-01-03  Eric Schulte  <address@hidden>
 
-       * org.texi (Buffer-wide header arguments): Update
-       documentation to reflect removal of #+PROPERTIES.
+       * org.texi (Buffer-wide header arguments):
+       Update documentation to reflect removal of #+PROPERTIES.
 
 2012-01-03  Carsten Dominik  <address@hidden>
 
@@ -1382,8 +1377,7 @@
 
 2012-01-03  Tom Dye  <address@hidden>
 
-       * org.texi: Added a line to specify that header arguments are
-       lowercase.
+       * org.texi: Added a line to specify that header arguments are lowercase.
 
 2012-01-03  Tom Dye  <address@hidden>
 
@@ -1396,9 +1390,8 @@
 
 2012-01-03  David Maus  <address@hidden>
 
-       * org.texi (Exporting Agenda Views, Extracting agenda
-       information): Fix command line syntax, quote symbol parameter
-       values.
+       * org.texi (Exporting Agenda Views, Extracting agenda information):
+       Fix command line syntax, quote symbol parameter values.
 
 2012-01-03  David Maus  <address@hidden>
 
@@ -1524,7 +1517,7 @@
 
        * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for
        release 8.3.
-       (Preface): Updated support information.
+       (Preface): Update support information.
        (From Bill Wohler): Reset text to original version.  As a
        historical quote, the tense should be correct in the time that it
        was written.
@@ -1564,8 +1557,7 @@
 
 2011-08-15  Bastien Guerry  <address@hidden>
 
-       * org.texi (Languages): Add Lilypond and Awk as supported
-       languages.
+       * org.texi (Languages): Add Lilypond and Awk as supported languages.
 
 2011-08-15  Achim Gratz  <address@hidden>
 
@@ -1583,8 +1575,7 @@
 2011-08-15  Eric Schulte  <address@hidden>
 
        * org.texi (Results of evaluation): More explicit about the
-       mechanism through which interactive evaluation of code is
-       performed.
+       mechanism through which interactive evaluation of code is performed.
 
 2011-08-15  Eric Schulte  <address@hidden>
 
@@ -1663,13 +1654,11 @@
 
 2011-08-15  Puneeth Chaganti  <address@hidden>
 
-       * org.texi (Agenda commands): Doc for function option to bulk
-       action.
+       * org.texi (Agenda commands): Doc for function option to bulk action.
 
 2011-08-15  Carsten Dominik  <address@hidden>
 
-       * org.texi (Template expansion): Document new %<...> template
-       escape.
+       * org.texi (Template expansion): Document new %<...> template escape.
 
 2011-08-15  Carsten Dominik  <address@hidden>
 
@@ -1689,8 +1678,7 @@
 
 2011-08-15  Eric Schulte  <address@hidden>
 
-       * org.texi (padline): Documentation of the new padline header
-       argument.
+       * org.texi (padline): Documentation of the new padline header argument.
 
 2011-08-15  Eric Schulte  <address@hidden>
 
@@ -1711,8 +1699,7 @@
 
 2011-08-15  Eric Schulte  <address@hidden>
 
-       * org.texi (var): Clarification of indexing into tabular
-       variables.
+       * org.texi (var): Clarification of indexing into tabular variables.
 
 2011-08-15  Eric Schulte  <address@hidden>
 
@@ -1726,8 +1713,8 @@
 
 2011-08-15  Bastien Guerry  <address@hidden>
 
-       * org.texi (Dynamic blocks, Structure editing): Mention
-       the function `org-narrow-to-block'.
+       * org.texi (Dynamic blocks, Structure editing):
+       Mention the function `org-narrow-to-block'.
 
 2011-08-15  Eric Schulte  <address@hidden>
 
@@ -1754,15 +1741,15 @@
 
 2011-08-15  Eric Schulte  <address@hidden>
 
-       * org.texi (Conflicts): Changed "yasnippets" to "yasnippet" and
+       * org.texi (Conflicts): Change "yasnippets" to "yasnippet" and
        added extra whitespace around functions to be consistent with the
        rest of the section.
 
 2011-08-15  Eric Schulte  <address@hidden>
 
-       * org.texi (Evaluating code blocks): Expanded discussion of
+       * org.texi (Evaluating code blocks): Expand discussion of
        #+call: line syntax.
-       (Header arguments in function calls): Expanded discussion of
+       (Header arguments in function calls): Expand discussion of
        #+call: line syntax.
 
 2011-08-15  Eric Schulte  <address@hidden>
@@ -1792,17 +1779,16 @@
 
 2011-08-15  Tom Dye  <address@hidden>
 
-       * org.texi (cache): Improved documentation of code block caches.
+       * org.texi (cache): Improve documentation of code block caches.
 
 2011-08-15  Tom Dye  <address@hidden>
 
-       * org.texi (Code block specific header arguments): Documentation
-       of multi-line header arguments.
+       * org.texi (Code block specific header arguments):
+       Documentation of multi-line header arguments.
 
 2011-08-15  Eric Schulte  <address@hidden>
 
-       * org.texi (Code evaluation security): Add example for using a
-       function.
+       * org.texi (Code evaluation security): Add example for using a function.
 
 2011-08-15  Eric Schulte  <address@hidden>
 
@@ -1827,8 +1813,7 @@
 2011-07-14  Lars Magne Ingebrigtsen  <address@hidden>
 
        * widget.texi (Setting Up the Buffer): Remove mention of the
-       global keymap parent, which doesn't seem to be accurate
-       (bug#7045).
+       global keymap parent, which doesn't seem to be accurate (bug#7045).
 
 2011-07-12  Lars Magne Ingebrigtsen  <address@hidden>
 
@@ -1853,15 +1838,15 @@
 
 2011-07-04  Michael Albinus  <address@hidden>
 
-       * tramp.texi (Cleanup remote connections): Add
-       `tramp-cleanup-this-connection'.
+       * tramp.texi (Cleanup remote connections):
+       Add `tramp-cleanup-this-connection'.
 
 2011-07-03  Lars Magne Ingebrigtsen  <address@hidden>
 
        * gnus.texi (Subscription Methods): Link to "Group Levels" to explain
        zombies.
        (Checking New Groups): Ditto (bug#8974).
-       (Checking New Groups): Moved the reference to the right place.
+       (Checking New Groups): Move the reference to the right place.
 
 2011-07-03  Dave Abrahams  <address@hidden>  (tiny change)
 
@@ -1888,8 +1873,8 @@
 
 2011-06-26  Lars Magne Ingebrigtsen  <address@hidden>
 
-       * gnus.texi (Summary Mail Commands): Document
-       `gnus-summary-reply-to-list-with-original'.
+       * gnus.texi (Summary Mail Commands):
+       Document `gnus-summary-reply-to-list-with-original'.
 
 2011-06-20  Stefan Monnier  <address@hidden>
 
@@ -1952,7 +1937,7 @@
 
        * gnus.texi (nnmairix caveats, Setup, Registry Article Refer Method)
        (Fancy splitting to parent, Store arbitrary data):
-       Updated gnus-registry docs.
+       Update gnus-registry docs.
 
 2011-04-13  Juanma Barranquero  <address@hidden>
 
@@ -2024,9 +2009,8 @@
 
 2011-03-06  Jay Belanger  <address@hidden>
 
-       * calc.texi (Logarithmic Units): Rename calc-logunits-dblevel
-       and calc-logunits-nplevel to calc-dblevel and calc-nplevel,
-       respectively.
+       * calc.texi (Logarithmic Units): Rename calc-logunits-dblevel and
+       calc-logunits-nplevel to calc-dblevel and calc-nplevel, respectively.
        (Musical Notes): New section.
        (Customizing Calc): Mention the customizable variable
        calc-note-threshold.
@@ -3069,8 +3053,8 @@
 
        Sync with Tramp 2.1.19.
 
-       * tramp.texi (Inline methods, Default Method): Mention
-       `tramp-inline-compress-start-size'.  Remove "kludgy" phrase.
+       * tramp.texi (Inline methods, Default Method):
+       Mention `tramp-inline-compress-start-size'.  Remove "kludgy" phrase.
        Remove remark about doubled "-t" argument.
        (Auto-save and Backup): Remove reference to Emacs 21.
        (Filename Syntax): Describe port numbers.
@@ -5724,7 +5708,7 @@
 2007-10-28  Kevin Greiner  <address@hidden>
 
        * gnus.texi (nntp-open-via-telnet-and-telnet): Fix grammar.
-       (Agent Parameters): Updated parameter names to match code.
+       (Agent Parameters): Update parameter names to match code.
        (Group Agent Commands): Corrected 'gnus-agent-fetch-series' as
        'gnus-agent-summary-fetch-series'.
        (Agent and flags): New section providing a generalized discussion
@@ -6528,7 +6512,7 @@
        (Tag searches): Document regular expression search for tags.
        (Stuck projects): New section.
        (In-buffer settings): New keywords.
-       (History and Acknowledgments): Updated description.
+       (History and Acknowledgments): Update description.
 
 2007-02-24  Alan Mackenzie  <address@hidden>
 
@@ -6760,7 +6744,7 @@
        (Custom agenda views): Section completely rewritten.
        (Summary): Compare with Planner.
        (Feedback): More info about creating backtraces.
-       (Plain lists): Modified example.
+       (Plain lists): Modify example.
        (Breaking down tasks): New section.
        (Custom time format): New section.
        (Time stamps): Document inactive timestamps.

=== modified file 'doc/misc/eshell.texi'
--- a/doc/misc/eshell.texi      2013-01-05 16:19:53 +0000
+++ b/doc/misc/eshell.texi      2013-02-08 14:59:24 +0000
@@ -2,6 +2,7 @@
 @c %**start of header
 @setfilename ../../info/eshell
 @settitle Eshell: The Emacs Shell
address@hidden cm
 @synindex vr fn
 @c %**end of header
 
@@ -42,7 +43,7 @@
 @c -release-
 @end ignore
 @sp 3
address@hidden John Wiegley
address@hidden John Wiegley & Aidan Gauland
 @c -date-
 
 @page
@@ -75,16 +76,15 @@
 * What is Eshell?::             A brief introduction to the Emacs Shell.
 * Command basics::              The basics of command usage.
 * Commands::
-* Arguments::
+* Expansion::
 * Input/Output::
-* Process control::
 * Extension modules::
-* Extras and Goodies::
 * Bugs and ideas::              Known problems, and future ideas.
 * GNU Free Documentation License:: The license for this documentation.
 * Concept Index::
 * Function and Variable Index::
 * Key Index::
+* Command Index::
 @end menu
 
 @node What is Eshell?
@@ -278,83 +278,56 @@
 @node Commands
 @chapter Commands
 
+In a command shell, everything is done by invoking commands.  This
+chapter covers command invocations in Eshell, including the command
+history and invoking commands in a script file.
+
 @menu
 * Invocation::
-* Completion::
+* Arguments::
+* Variables::
+* Built-ins::
 * Aliases::
 * History::
+* Completion::
+* for loop::
 * Scripts::
-* Built-ins::
 @end menu
 
-Essentially, a command shell is all about invoking commands---and
-everything that entails.  So understanding how Eshell invokes commands
-is the key to comprehending how it all works.
-
 @node Invocation
 @section Invocation
-
 Unlike regular system shells, Eshell never invokes kernel functions
 directly, such as @code{exec(3)}.  Instead, it uses the Lisp functions
 available in the Emacs Lisp library.  It does this by transforming the
-command you specify into a callable Lisp address@hidden see the Lisp
-form that will be invoked, type: @samp{eshell-parse-command "echo
-hello"}}
-
-This transformation, from the string of text typed at the command
-prompt, to the ultimate invocation of either a Lisp function or external
-command, follows these steps:
-
address@hidden
address@hidden Parse the command string into separate arguments.
address@hidden
address@hidden enumerate
-
address@hidden Completion
address@hidden Completion
-
address@hidden Aliases
address@hidden Aliases
-
address@hidden History
address@hidden History
-
-Eshell knows a few built-in variables:
-
address@hidden @code
-
address@hidden $+
address@hidden $+
-This variable always contains the current working directory.
-
address@hidden $-
address@hidden $-
-This variable always contains the previous working directory (the
-current working directory from before the last @code{cd} command).
-
address@hidden $_
address@hidden $_
-It refers to the last argument of the last command.
-
address@hidden $$
address@hidden $$
-This is the result of the last command.  In case of an external
-command, it is @code{t} or @code{nil}.
-
address@hidden $?
address@hidden $?
-This variable contains the exit code of the last command (0 or 1 for
-Lisp functions, based on successful completion).
-
address@hidden table
-
address@hidden Scripts
address@hidden Scripts
-
+input line into a callable Lisp address@hidden see the Lisp form that will be 
invoked, type: @samp{eshell-parse-command "echo hello"}}
+
+The command can be either an Elisp function or an external command.
+Eshell looks first for an @ref{Aliases, alias} with the same name as the
+command, then a @ref{Built-ins, built-in command} or a function with the
+same name; if there is no match, it then tries to execute it as an
+external command.
+
+The semicolon (@code{;}) can be used to separate multiple command
+invocations on a single line.  A command invocation followed by an
+ampersand (@code{&}) will be run in the background.  Eshell has no job
+control, so you can not suspend or background the current process, or
+bring a background process into the foreground.  That said, background
+processes invoked from Eshell can be controlled the same way as any
+other background process in Emacs.
+
address@hidden Arguments
address@hidden Arguments
+Command arguments are passed to the functions as either strings or
+numbers, depending on what the parser thinks they look like.  If you
+need to use a function that takes some other data type, you will need to
+call it in an Elisp expression (which can also be used with
address@hidden, expansions}).  As with other shells, you can
+escape special characters and spaces with the backslash (@code{\}) and
+the single (@code{''}) and double (@code{""}) quotes.
 
 @node Built-ins
+
 @section Built-in commands
-
 Several commands are built-in in Eshell.  In order to call the
 external variant of a built-in command @code{foo}, you could call
 @code{*foo}.  Usually, this should not be necessary.  You can check
@@ -368,7 +341,7 @@
 @end example
 
 If you want to discard a given built-in command, you could declare an
-alias, @ref{Aliases}.  Eample:
+alias, @ref{Aliases}.  Example:
 
 @example
 ~ $ which sudo
@@ -378,15 +351,96 @@
 sudo is an alias, defined as "*sudo $*"
 @end example
 
-Some of the built-in commands have a special behavior in Eshell:
address@hidden eshell-prefer-lisp-functions
+If you would prefer to use the built-in commands instead of the external
+commands, set @var{eshell-prefer-lisp-functions} to @code{t}.
+
+Some of the built-in commands have different behaviour from their
+external counterparts, and some have no external counterpart.  Most of
+these will print a usage message when given the @code{--help} option.
 
 @table @code
 
address@hidden addpath
address@hidden addpath
+Adds a given path or set of paths to the PATH environment variable, or,
+with no arguments, prints the current paths in this variable.
+
address@hidden alias
address@hidden alias
+Define an alias (@pxref{Aliases}).  This does not add it to the aliases
+file.
+
address@hidden date
address@hidden date
+Similar to, but slightly different from, the GNU Coreutils
address@hidden command.
+
address@hidden define
address@hidden define
+Define a varalias.  @xref{Variable Aliases, , , elisp}.
+
address@hidden diff
address@hidden diff
+Use Emacs's internal @code{diff} (not to be confused with
address@hidden).  @xref{Comparing Files, , , elisp}.
+
address@hidden grep
address@hidden grep
address@hidden agrep
address@hidden agrep
address@hidden egrep
address@hidden egrep
address@hidden fgrep
address@hidden fgrep
address@hidden glimpse
address@hidden glimpse
+The @command{grep} commands are compatible with GNU @command{grep}, but
+use Emacs's internal @code{grep} instead.
+
address@hidden info
address@hidden info
+Same as the external @command{info} command, but uses Emacs's internal
+Info reader.
+
address@hidden jobs
address@hidden jobs
+List subprocesses of the Emacs process, if any, using the function
address@hidden
+
address@hidden kill
address@hidden kill
+Kill processes.  Takes a PID or a process object and an optional
+signal specifier.
+
address@hidden listify
address@hidden listify
+Eshell version of @code{list}.  Allows you to create a list using Eshell
+syntax, rather than Elisp syntax.  For example, @samp{listify foo bar}
+and @code{("foo" "bar")} both evaluate to @code{("foo" "bar")}.
+
address@hidden locate
address@hidden locate
+Alias to Emacs's @code{locate} function, which simply runs the external
address@hidden command and parses the results.  @xref{Dired and `find', , , 
elisp}.
+
address@hidden make
address@hidden make
+Run @command{make} through @code{compile}.  @xref{Running Compilations under 
Emacs, , , elisp}.
+
address@hidden occur
address@hidden occur
+Alias to Emacs's @code{occur}.  @xref{Other Search-and-Loop Commands, , , 
elisp}.
+
address@hidden printnl
address@hidden printnl
+Print the arguments separated by newlines.
+
 @item cd
address@hidden cd
address@hidden cd
 This command changes the current working directory.  Usually, it is
-invoked as @samp{cd foo} where @file{foo} is the new working
-directory.  But @code{cd} knows about a few special arguments:
+invoked as @samp{cd foo} where @file{foo} is the new working directory.
+But @command{cd} knows about a few special arguments:
 
 When it receives no argument at all, it changes to the home directory.
 
@@ -396,14 +450,73 @@
 The command @samp{cd =} shows the directory stack.  Each line is
 numbered.
 
-With @samp{cd =foo}, Eshell searches the directory stack for a
-directory matching the regular expression @samp{foo} and changes to
-that directory.
+With @samp{cd =foo}, Eshell searches the directory stack for a directory
+matching the regular expression @samp{foo} and changes to that
+directory.
 
 With @samp{cd -42}, you can access the directory stack by number.
 
address@hidden history
address@hidden history
address@hidden su
address@hidden su
address@hidden sudo
address@hidden sudo
+Uses TRAMP's @command{su} or @command{sudo} method to run a command via
address@hidden or @command{sudo}.
+
address@hidden table
+
address@hidden Built-in variables
+Eshell knows a few built-in variables:
+
address@hidden @code
+
address@hidden $+
address@hidden $+
+This variable always contains the current working directory.
+
address@hidden $-
address@hidden $-
+This variable always contains the previous working directory (the
+current working directory from before the last @code{cd} command).
+
address@hidden $_
address@hidden $_
+It refers to the last argument of the last command.
+
address@hidden $$
address@hidden $$
+This is the result of the last command.  In case of an external
+command, it is @code{t} or @code{nil}.
+
address@hidden $?
address@hidden $?
+This variable contains the exit code of the last command (0 or 1 for
+Lisp functions, based on successful completion).
+
address@hidden table
+
address@hidden Variables
address@hidden Variables
+Since Eshell is just an Emacs address@hidden Loop}, it
+does not have its own scope, and simply stores variables the same you
+would in an Elisp program.  Eshell provides a command version of
address@hidden for convenience.
+
address@hidden Aliases
address@hidden Aliases
+
+Aliases are commands that expand to a longer input line.  For example,
address@hidden is a common alias for @code{ls -l}, and would be defined
+with the command invocation @samp{alias ll ls -l}; with this defined,
+running @samp{ll foo} in Eshell will actually run @samp{ls -l foo}.
+Aliases defined (or deleted) by the @command{alias} command are
+automatically written to the file named by @var{eshell-aliases-file},
+which you can also edit directly (although you will have to manually
+reload it).
+
address@hidden History
address@hidden History
address@hidden history
 The @samp{history} command shows all commands kept in the history ring
 as numbered list.  If the history ring contains
 @code{eshell-history-size} commands, those numbers change after every
@@ -419,70 +532,226 @@
 argument of the last command beginning with @code{foo} is accessible
 by @code{!foo:n}.
 
address@hidden su
address@hidden su
address@hidden sudo
address@hidden sudo
address@hidden and @code{sudo} work as expected: they apply the following
-commands (@code{su}), or the command being an argument (@code{sudo})
-under the permissions of somebody else.
-
-This does not work only on
-the local host, but even on a remote one, when
address@hidden is a remote file name.  The necessary
-proxy configuration of Tramp is performed
address@hidden
-automatically, @ref{Multi-hops, , , tramp}.
address@hidden ifinfo
address@hidden
-automatically.
address@hidden ifnotinfo
-Example:
+The history ring is loaded from a file at the start of every session,
+and written back to the file at the end of every session.  The file path
+is specified in @var{eshell-history-file-name}.  Unlike other shells,
+such as Bash, Eshell can not be configured to keep a history ring of a
+different size than that of the history file.
+
+Since the default buffer navigation and searching key-bindings are
+still present in the Eshell buffer, the commands for history
+navigation and searching are bound to different keys:
+
address@hidden @kbd
address@hidden M-r
address@hidden M-s
+History I-search.
+
address@hidden M-p
address@hidden M-n
+Previous and next history line.  If there is anything on the input
+line when you run these commands, they will instead jump to the
+precious or next line that begins with that string.
address@hidden table
+
address@hidden Completion
address@hidden Completion
+Eshell uses the pcomplete package for programmable completion, similar
+to that of other command shells.  Argument completion differs depending
+on the preceding command: for example, possible completions for
address@hidden are only directories, while @command{rm} completions can
+be directories @emph{and} files.  Eshell provides predefined completions
+for the built-in functions and some common external commands, and you
+can define your own for any command.
+
+Eshell completion also works for lisp forms and glob patterns. If the
+point is on a lisp form, then @key{TAB} will behave similarly to completion
+in @code{elisp-mode} and @code{lisp-interaction-mode}.  For glob
+patterns, If there are few enough possible completions of the patterns,
+they will be cycled when @key{TAB} is pressed, otherwise it will be removed
+from the input line and the possible completions will be listed.
+
+If you want to see the entire list of possible completions when it's
+below the cycling threshold, press @kbd{M-?}.
+
address@hidden pcomplete
+Pcomplete, short for programmable completion, is the completion
+library originally written for Eshell, but usable for command
address@hidden completion as opposed to code completion,
+which is a beyond the scope of pcomplete.}  in other modes.
+
+Completions are defined as functions (with @code{defun}) named
address@hidden/COMMAND}, where @code{COMMAND} is the name of the
+command for which this function provides completions; you can also name
+the function @code{pcomplete/MAJOR-MODE/COMMAND} to define completions
+for a specific major mode.
+
address@hidden for loop
address@hidden @code{for} loop
+Because Eshell commands can not (easily) be combined with lisp forms,
+Eshell provides a command-oriented @command{for}-loop for convenience.
+The syntax is as follows:
 
 @example
-~ $ cd /ssh:otherhost:/etc
-/ssh:user@@otherhost:/etc $ sudo find-file shadow
address@hidden VAR in TOKENS @{ command invocation(s) @}}
 @end example
 
address@hidden table
-
-
address@hidden Arguments
address@hidden Arguments
+where @samp{TOKENS} is a space-separated sequence of values of
address@hidden for each iteration.  This can even be the output of a
+command if @samp{TOKENS} is replaced with @address@hidden command invocation 
@}}.
+
address@hidden Scripts
address@hidden Scripts
address@hidden source
address@hidden eshell-source-file
+You can run Eshell scripts much like scripts for other shells; the main
+difference is that since Eshell is not a system command, you have to run
+it from within Emacs.  An Eshell script is simply a file containing a
+sequence of commands, as with almost any other shell script.  Scripts
+are invoked from Eshell with @command{source}, or from anywhere in Emacs
+with @code{eshell-source-file}.
+
address@hidden .
+If you wish to load a script into your @emph{current} environment,
+rather than in a subshell, use the @code{.} command.
+
address@hidden Expansion
address@hidden Expansion
+Expansion in a command shell is somewhat like macro expansion in macro
+parsers (such as @command{cpp} and @command{m4}), but in a command
+shell, they are less often used for constants, and usually for using
+variables and string address@hidden has no
+string-manipulation expansions because the Elisp library already
+provides many functions for this.}  For example, @code{$var} on a line
+expands to the value of the variable @code{var} when the line is
+executed.  Expansions are usually passed as arguments, but may also be
+used as address@hidden Entering just @samp{$var} at the prompt
+is equivalent to entering the value of @code{var} at the prompt.}
 
 @menu
-* The Parser::
-* Variables::
-* Substitution::
+* Dollars Expansion::
 * Globbing::
-* Predicates::
 @end menu
 
address@hidden The Parser
address@hidden The Parser
-
address@hidden Variables
address@hidden Variables
-
address@hidden Substitution
address@hidden Substitution
address@hidden Dollars Expansion
address@hidden Dollars Expansion
+Eshell has different @code{$} expansion syntax from other shells.  There
+are some similarities, but don't let these lull you into a false sense
+of familiarity.
+
address@hidden @code
+
address@hidden $var
+Expands to the value bound to @code{var}.  This is the main way to use
+variables in command invocations.
+
address@hidden $#var
+Expands to the length of the value bound to @code{var}.  Raises an error
+if the value is not a sequence (@pxref{Sequences Arrays and Vectors, 
Sequences, , elisp}).
+
address@hidden $(lisp)
+Expands to the result of evaluating the S-expression @code{(lisp)}.  On
+its own, this is identical to just @code{(lisp)}, but with the @code{$},
+it can be used in a string, such as @samp{/some/path/$(lisp).txt}.
+
address@hidden address@hidden@}
+Returns the output of @command{command}, which can be any valid Eshell
+command invocation, and may even contain expansions.
+
address@hidden $var[i]
+Expands to the @code{i}th element of the value bound to @code{var}.  If
+the value is a string, it will be split at whitespace to make it a list.
+Again, raises an error if the value is not a sequence.
+
address@hidden $var[: i]
+As above, but now splitting occurs at the colon character.
+
address@hidden $var[: i j]
+As above, but instead of returning just a string, it now returns a list
+of two strings.  If the result is being interpolated into a larger
+string, this list will be flattened into one big string, with each
+element separated by a space.
+
address@hidden $var["\\\\" i]
+Separate on backslash characters.  Actually, the first argument -- if it
+doesn't have the form of a number, or a plain variable name -- can be
+any regular expression.  So to split on numbers, use @samp{$var["[0-9]+" 10 
20]}.
+
address@hidden $var[hello]
+Calls @code{assoc} on @code{var} with @code{"hello"}, expecting it to be
+an alist (@pxref{Association List Type, Association Lists, , elisp}).
+
address@hidden $#var[hello]
+Returns the length of the cdr of the element of @code{var} who car is equal
+to @code{"hello"}.
+
address@hidden table
 
 @node Globbing
 @section Globbing
-
address@hidden Predicates
address@hidden Predicates
-
+Eshell's globbing syntax is very similar to that of Zsh.  Users coming
+from Bash can still use Bash-style globbing, as there are no
+incompatibilities.  Most globbing is pattern-based expansion, but there
+is also predicate-based expansion.  See @ref{Filename Generation, , , zsh}
+for full syntax.  To customize the syntax and behaviour of globbing in
+Eshell see the address@hidden@xref{Customization Settings, Customize, , 
elisp}.}
+groups ``eshell-glob'' and ``eshell-pred''.
 
 @node Input/Output
 @chapter Input/Output
-
address@hidden Process control
address@hidden Process control
-
+Since Eshell does not communicate with a terminal like most command
+shells, IO is a little different.  If you try to run programs from
+within Eshell that are not line-oriented, such as programs that use
+ncurses, you will just get garbage output, since the Eshell buffer is
+not a terminal emulator.  Eshell solves this problem by running
+specified commands in Emacs's terminal emulator; to let Eshell know
+which commands need to be run in a terminal, add them to the list
address@hidden
+
+Redirection is mostly the same in Eshell as it is in other command
+shells.  The output redirection operators @code{>} and @code{>>} as well
+as pipes are supported, but there is not yet any support for input
+redirection.  Output can also be redirected to Elisp functions, using
+virtual devices.
+
address@hidden is a list of mappings of virtual device
+names to functions.  Eshell comes with two virtual devices:
address@hidden/dev/kill}, which sends the text to the kill ring, and
address@hidden/dev/clip}, which sends text to the clipboard.
+
+You can, of course, define your own virtual targets.  They are defined
+by adding a list of the form @code{("/dev/name" function mode)} to
address@hidden  The first element is the device name;
address@hidden may be either a lambda or a function name.  If
address@hidden is nil, then the function is the output function; if it is
+non-nil, then the function is passed the redirection mode as a
address@hidden, @code{append}, or @code{insert}--and the
+function is expected to return the output function.
+
+The output function is called once on each line of output until
address@hidden is passed, indicating end of output.
 
 @node Extension modules
 @chapter Extension modules
+Eshell provides a facility for defining extension modules so that they
+can be disabled and enabled without having to unload and reload them,
+and to provide a common parent Customize group for the
address@hidden provides a similar module facility.}  An Eshell
+module is defined the same as any other library but one requirement: the
+module must define a address@hidden@xref{Customization Settings, Customize, , 
elisp}.}
+group using @code{eshell-defgroup} (in place of @code{defgroup}) with
address@hidden as the parent address@hidden the module has
+no user-customizable options, then there is no need to define it as an
+Eshell module.}  You also need to load the following as shown:
+
address@hidden
+(eval-when-compile
+  (require 'cl)
+  (require 'esh-mode)
+  (require 'eshell))
+
+(require 'esh-util)
address@hidden example
 
 @menu
 * Writing a module::
@@ -491,7 +760,6 @@
 * Key rebinding::
 * Smart scrolling::
 * Terminal emulation::
-* Built-in UNIX commands::
 @end menu
 
 @node Writing a module
@@ -512,13 +780,6 @@
 @node Terminal emulation
 @section Terminal emulation
 
address@hidden Built-in UNIX commands
address@hidden Built-in UNIX commands
-
-
address@hidden Extras and Goodies
address@hidden Extras and Goodies
-
 @node Bugs and ideas
 @chapter Bugs and ideas
 @cindex reporting bugs and ideas
@@ -527,6 +788,8 @@
 @cindex email to the author
 @cindex FAQ
 @cindex problems, list of common
address@hidden known bugs
address@hidden bugs, known
 
 If you find a bug or misfeature, don't hesitate to let me know!  Send
 email to @email{johnw@@gnu.org}.  Feature requests should also be sent
@@ -537,16 +800,7 @@
 extensions to this package, I would like to hear from you.  I hope you
 find this package useful!
 
address@hidden
-* Known problems::
address@hidden menu
-
address@hidden Known problems
address@hidden Known problems
address@hidden known bugs
address@hidden bugs, known
-
-Below is complete list of known problems with Eshell version 2.4.2,
+Below is a complete list of known problems with Eshell version 2.4.2,
 which is the version included with Emacs 22.
 
 @table @asis
@@ -554,7 +808,7 @@
 
 @item Differentiate between aliases and functions
 
-Allow for a bash-compatible syntax, such as:
+Allow for a Bash-compatible syntax, such as:
 
 @example
 alias arg=blah
@@ -838,7 +1092,7 @@
 It would provide syntax, abbrev, highlighting and indenting support like
 @code{emacs-lisp-mode} and @code{shell-mode}.
 
address@hidden In the history mechanism, finish the @command{bash}-style support
address@hidden In the history mechanism, finish the Bash-style support
 
 This means @samp{!n}, @samp{!#}, @samp{!:%}, and @samp{!:1-} as separate
 from @samp{!:1*}.
@@ -1008,6 +1262,11 @@
 
 @printindex fn
 
address@hidden Command Index
address@hidden Command Index
+
address@hidden cm
+
 @node Key Index
 @unnumbered Key Index
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]