1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-23 14:10:28 -08:00

Restructure Eshell extension modules documentation

This adds a section for documenting all the optional modules.

* doc/misc/eshell.texi (Extension modules): Move explanation about
writing modules to...
(Writing a module): ... here.
(Module testing): Remove.  Testing an Eshell module doesn't require
any special documentation.
(Key binding, Smart scrolling, Electric forward slash): Move under...
(Optional modules): ... here.
(Directory handling, Terminal emulation): Remove.  These modules are
enabled by default, and so are documented above.
(Tramp extensions, Extra built-in commands): New sections.
This commit is contained in:
Jim Porter 2023-01-29 19:59:56 -08:00
parent 194de36ca9
commit f2981a1681

View file

@ -2019,66 +2019,38 @@ at the end of the command are excluded. This allows input like this:
Eshell provides a facility for defining extension modules so that they Eshell provides a facility for defining extension modules so that they
can be disabled and enabled without having to unload and reload them, can be disabled and enabled without having to unload and reload them,
and to provide a common parent Customize group for the and to provide a common parent Customize group for the
modules.@footnote{ERC provides a similar module facility.} An Eshell modules.@footnote{ERC provides a similar module facility.}
module is defined the same as any other library but one requirement: the
module must define a Customize@footnote{@xref{Customization, , ,
elisp, The Emacs Lisp Reference Manual}.}
group using @code{eshell-defgroup} (in place of @code{defgroup}) with
@code{eshell-module} as the parent group.@footnote{If 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:
@example
(eval-when-compile
(require 'cl-lib)
(require 'esh-mode)
(require 'eshell))
(require 'esh-util)
@end example
@menu @menu
* Optional modules::
* Writing a module:: * Writing a module::
* Module testing::
* Directory handling::
* Key rebinding::
* Smart scrolling::
* Terminal emulation::
* Electric forward slash::
@end menu @end menu
@node Writing a module @node Optional modules
@section Writing a module @section Optional modules
This section is not yet written. This section is not yet written.
@node Module testing @menu
@section Module testing * Key rebinding::
* Smart scrolling::
This section is not yet written. * Electric forward slash::
* Tramp extensions::
@node Directory handling * Extra built-in commands::
@section Directory handling @end menu
This section is not yet written.
@node Key rebinding @node Key rebinding
@section Key rebinding @subsection Key rebinding
This section is not yet written. This section is not yet written.
@node Smart scrolling @node Smart scrolling
@section Smart scrolling @subsection Smart scrolling
This section is not yet written.
@node Terminal emulation
@section Terminal emulation
This section is not yet written. This section is not yet written.
@node Electric forward slash @node Electric forward slash
@section Electric forward slash @subsection Electric forward slash
To help with supplying absolute file name arguments to remote To help with supplying absolute file name arguments to remote
commands, you can add the @code{eshell-elecslash} module to commands, you can add the @code{eshell-elecslash} module to
@ -2132,6 +2104,36 @@ when chaining commands with the operators @code{&&}, @code{||},
@code{|} and @code{;}, the electric forward slash is active only @code{|} and @code{;}, the electric forward slash is active only
within the first command. within the first command.
@node Tramp extensions
@subsection Tramp extensions
This section is not yet written.
@node Extra built-in functions
@subsection Extra built-in functions
This section is not yet written.
@node Writing a module
@section Writing a module
An Eshell module is defined the same as any other library but one requirement: the
module must define a Customize@footnote{@xref{Customization, , ,
elisp, The Emacs Lisp Reference Manual}.}
group using @code{eshell-defgroup} (in place of @code{defgroup}) with
@code{eshell-module} as the parent group.@footnote{If 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:
@example
(eval-when-compile
(require 'cl-lib)
(require 'esh-mode)
(require 'eshell))
(require 'esh-util)
@end example
@node Bugs and ideas @node Bugs and ideas
@chapter Bugs and ideas @chapter Bugs and ideas
@cindex reporting bugs and ideas @cindex reporting bugs and ideas