branch: externals/poke
commit 2344be65bfa60ebf6202b34f7e0bf73b8331b91f
Author: Jose E. Marchesi <[email protected]>
Commit: Jose E. Marchesi <[email protected]>

    poke.el: introductory chapter in the manual
---
 poke-el.texi | 178 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 177 insertions(+), 1 deletion(-)

diff --git a/poke-el.texi b/poke-el.texi
index fc33ae1055..d9bcc4e9bf 100644
--- a/poke-el.texi
+++ b/poke-el.texi
@@ -25,7 +25,7 @@ later version.
 
 @dircategory Emacs
 @direntry
-* Poke-El: (poke-el). Emacs interface to GNU poke
+* Emacs meets GNU poke: (poke-el). Emacs interface to GNU poke
 @end direntry
 
 @titlepage
@@ -48,4 +48,180 @@ This manual documents version @value{VERSION} of poke.el.
 @insertcopying
 @end ifnottex
 
+@menu
+* Introduction::                Getting started
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+Introduction
+
+* Installation::                How to install this package
+* Configuration::               Loading and configuring
+* Running::                     Running and exiting poke
+* Feedback::                    Bug reports, ideas, patches etc.
+@end detailmenu
+@end menu
+
+@node Introduction
+@chapter Introduction
+
+poke-el is an Emacs interface to GNU
+poke@footnote{@url{https://jemarch.net/poke}}, the extensible editor
+for structured binary data.
+
+@menu
+* Installation::                How to install this package
+* Configuration::               Loading and configuring
+* Running::                     Running and exiting poke
+* Feedback::                    Bug reports, ideas, patches etc.
+@end menu
+
+@node Installation
+@section Installation
+
+This program is implemented in a self-contained elisp file called
+@file{poke.el}.  It can be obtained in several ways:
+
+@itemize @minus
+@item From @url{https://elpa.gnu.org/packages/poke.html, GNU ELPA}
+using the built-in Emacs package manager.
+@item As part of the source tree cloned from the development git
+repository of GNU poke.  @file{poke.el} can be found in the
+@file{emacs/} directory of the GNU poke source tree.
+@item As a single file downloaded form some other location in
+internet.
+@item It may be already installed as part of a binary package in some
+distribution.
+@end itemize
+
+@noindent In the second case you need to tell Emacs where to locate the
+@file{poke.el} file and to load it.  Add the following to your
+@file{.emacs} file.
+
+@lisp
+(add-to-list 'load-path "~/path/to/poke-el/")
+(require 'poke)
+@end lisp
+
+@noindent If @file{poke.el} was installed as part of a binary
+package in a distribution then you usually don't have to touch the
+@code{load-path} variable.  Depending on the specific case you may
+have to @code{require} the package.
+
+@node Configuration
+@section Configuration
+@cindex configuration
+
+Once loaded, there are many aspects of poke-el that can be configured
+by the user.
+
+@menu
+* Settings::                    Output numeration base and other settings.
+* Window Layouts::              Predefined layouts.
+@end menu
+
+@node Settings
+@subsection Settings
+
+The following variables can be customized in order to change the
+default behavior of poke.
+
+@table @code
+@item poke-setting-pretty-print
+Indicates whether Poke values are pretty-printed.  Valid values are
+the strings @code{"yes"} and @code{"no}.  Defaults to @code{"no"}.
+@item poke-setting-omode
+The numeration base to use when printing numerical values.  Valid
+values are 2, 8, 10 and 16.  Defaults to 10.
+@item poke-setting-omode
+How to print composite Poke values, such as arrays and structs.  Valid
+values are @code{"plain"} and @code{"tree"}.
+@end table
+
+Note that all the settings above can be interactively changed at any
+time using the settings editor.  XXX xref.
+
+@node Window Layouts
+@subsection Window Layouts
+
+The poke Emacs interface is composed by many different buffers, each
+playing a different role: the repl, the bytes viewer, the settings
+editor, the maps tree, @i{etc}.  When using the interface, actions
+will often result in many of these buffers to be displayed using
+@code{switch-to-buffer-other-window}.
+
+In Emacs it is possible to configure how buffers are associated to
+windows by customizing the @code{display-buffer-alist} variable.  This
+is often used in order to make the interface more predictable, i.e. to
+always have certain of the buffers shown in the same area of the
+screen.
+
+poke-el provides an example of such a configuration, that you can use
+as-is or as the basis of your own layouts, in the function
+@code{poke-frame-layout-1}.  This function appends entries to
+@code{display-buffer-alist}.  It implements the following window
+layout:
+
+@smallexample
+@group
+     ___________________________________
+    |                                   |
+    |            *poke-vu*              |
+    |                                   |
+    |___________________________________|
+    |                  |                |
+    |                  |                |
+    |                  | *poke-maps*/   |
+    |                  | *poke-edit*/   |
+    |    *poke-repl*   | *poke-code*/   |
+    |                  | *poke-ios*/    |
+    |                  | *poke-settings*|
+    |                  |                |
+    |__________________|________________|
+    |                                   |
+    |            *poke-out*             |
+    |___________________________________|
+@end group
+@end smallexample
+
+To use this layout, simply include this call in your
+@file{.emacs}:
+
+@lisp
+(poke-frame-layout-1)
+@end lisp
+
+@node Running
+@section Running
+
+Once you have loaded and configured poke-el, it is time to run poke!
+To do so, simply issue @kbd{M-xpoke}.
+
+This command will start the poke daemon if it wasn't already running
+and initialize the interface if necessary. Then it will show the poke
+windows in the current frame (using whatever configured layout.
+@xref{Window Layouts}) and drop you on the poke REPL.
+
+In order to exit poke, you can either use the command
+@kbd{M-xpoke-exit} or the @command{quit} command at the repl:
+
+@example
+#!poke!# quit
+@end example
+
+@node Feedback
+@section Feedback
+@cindex feedback
+@cindex bug reports
+
+If you find problems with poke-el, or if you have questions, remarks,
+or ideas about it, please mail to the GNU poke mailing list
+@email{poke-devel@@gnu.org}.  If you are not a member of the mailing
+list, your mail will be passed to the list after a moderator has
+approved it@footnote{Please consider subscribing to the mailing list,
+in order to minimize the work the mailing list moderators have to do.
+The subscription can be done online at
+@url{http://lists.gnu.org/mailman/listinfo/poke-devel}.}.
+
 @bye

Reply via email to