emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/hyperbole 8fbfc1b 35/53: Renamed @ command functions to


From: Robert Weiner
Subject: [elpa] externals/hyperbole 8fbfc1b 35/53: Renamed @ command functions to hycontrol-windows-grid. Updated manual and DEMO with newest commands.
Date: Wed, 15 Nov 2017 22:47:05 -0500 (EST)

branch: externals/hyperbole
commit 8fbfc1bff57c1749ecc019d793440af689cb4c40
Author: Bob Weiner <address@hidden>
Commit: Bob Weiner <address@hidden>

    Renamed @ command functions to hycontrol-windows-grid.  Updated manual and 
DEMO with newest commands.
    
    * hycontrol.el: Extended initial commentary with new features and improved 
explanations.
                    (hycontrol-split-windows-rows-columns): Modified to 
temporarily exit HyControl mode if need
        to read a rows-columns argument.
                    (hycontrol-split-windows-buffer-list, 
hycontrol-split-windows, hycontrol-split-windows-by-major-mode
                    hycontrol-split-windows-repeatedly, 
hycontrol-split-windows-rows-columns): Renamed by replacing
        'split-windows' with 'windows-grid'.
                    (hycontrol-window-minimize-lines): Previously did not 
resize window if it could not display all of the
        buffer lines in the window.  Now will resize to 1 line if cannor or if 
all lines are already displayed.
                    (hycontrol-split-windows-buffer-list): Added doc string.
    
    * DEMO (HyControl): Added interactive examples of newest HyControl commands.
    
    * hui-window.el (hmouse-goto-depress-prev-point): Fixed to handle when no 
prev-point is saved.
                    (hmouse-drag-region-active): Return nil if no prev-point 
saved.
    
    * hpath.el (hpath:is-p): Fixed to handle single % in path argument when 
sent as format string near the
        end of the function.
    
    * hib-kbd.el (kbd-key:normalize): Quoted % characters as %% to prevent 
format from treating them specially.
                 (kbd-key:hyperbole-hycontrol-key-p): Added to match key 
sequences within HyControl since
        its prefix arguments are specified without C-u or ESC or META prefixes.
                 (kbd-key, kbd-key:act): Used above function here.
    
    * hmouse-drv.el (hkey-either): Fixed to ignore prefix args set by HyControl.
    
    * hyperbole.el (hkey-initialize):
      hui-menu.el (hui-menu-key-bindings): Changed {C-c \} entry from 
hycontrol-windows to new hycontrol-enable-windows-mode.
---
 Changes            |  30 ++++++++
 DEMO               |  65 ++++++++++++++--
 hib-kbd.el         |  15 +++-
 hmouse-drv.el      |  10 ++-
 hpath.el           |   8 +-
 hui-menu.el        |  14 ++--
 hui-window.el      |  15 ++--
 hycontrol.el       | 214 +++++++++++++++++++++++++++++++++++------------------
 hyperbole.el       |   2 +-
 man/hyperbole.html | 125 ++++++++++++++++++++++---------
 man/hyperbole.info | Bin 449114 -> 451356 bytes
 man/hyperbole.pdf  | Bin 816756 -> 818665 bytes
 man/hyperbole.texi |  91 ++++++++++++++++-------
 man/version.texi   |   2 +-
 14 files changed, 433 insertions(+), 158 deletions(-)

diff --git a/Changes b/Changes
index fb12c00..23a6441 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,33 @@
+2017-10-25  Bob Weiner  <address@hidden>
+
+* hycontrol.el: Extended initial commentary with new features and improved 
explanations.
+                (hycontrol-split-windows-rows-columns): Modified to 
temporarily exit HyControl mode if need
+    to read a rows-columns argument.
+                (hycontrol-split-windows-buffer-list, hycontrol-split-windows, 
hycontrol-split-windows-by-major-mode
+                hycontrol-split-windows-repeatedly, 
hycontrol-split-windows-rows-columns): Renamed by replacing
+    'split-windows' with 'windows-grid'.
+                (hycontrol-window-minimize-lines): Previously did not resize 
window if it could not display all of the
+    buffer lines in the window.  Now will resize to 1 line if cannor or if all 
lines are already displayed.
+                (hycontrol-split-windows-buffer-list): Added doc string.
+
+* DEMO (HyControl): Added interactive examples of newest HyControl commands.
+
+* hui-window.el (hmouse-goto-depress-prev-point): Fixed to handle when no 
prev-point is saved.
+                (hmouse-drag-region-active): Return nil if no prev-point saved.
+
+* hpath.el (hpath:is-p): Fixed to handle single % in path argument when sent 
as format string near the
+    end of the function.
+
+* hib-kbd.el (kbd-key:normalize): Quoted % characters as %% to prevent format 
from treating them specially.
+             (kbd-key:hyperbole-hycontrol-key-p): Added to match key sequences 
within HyControl since
+    its prefix arguments are specified without C-u or ESC or META prefixes.
+             (kbd-key, kbd-key:act): Used above function here.
+
+* hmouse-drv.el (hkey-either): Fixed to ignore prefix args set by HyControl.
+
+* hyperbole.el (hkey-initialize):
+  hui-menu.el (hui-menu-key-bindings): Changed {C-c \} entry from 
hycontrol-windows to new hycontrol-enable-windows-mode.
+
 2017-10-24  Bob Weiner  <address@hidden>
 
 * man/hyperbole.texi (Version): Updated to 6.0.2f and rebuilt output formats.
diff --git a/DEMO b/DEMO
index 1a17a38..e4ce14b 100644
--- a/DEMO
+++ b/DEMO
@@ -176,13 +176,14 @@ menu.  If you use a lot of Emacs windows or frames 
(typically, window system
 windows) then this tool is for you.  A long video demonstrating most of
 HyControl's features is available at https://youtu.be/M3-aMh1ccJk.
 
-HyControl interactively adjusts the layout of your windows and frames
-down to the pixel-level if desired.  You adjust the location, size and
-display elements of your windows and frames until they look as you like
-and then simply quit HyControl and go back to work.  It has smart features to
-avoid covering toolbars anchored at the edges of your screen and allows you
-to quickly set numeric arguments to apply to operations, like resizing a
-frame to a percentage of your screen size.
+HyControl interactively adjusts the layout of your windows and frames down
+to the pixel-level if desired.  You adjust the location, size and display
+elements of your windows and frames until they look as you like and then
+simply quit HyControl and go back to work.  It has smart features for laying
+out large grids of windows, avoiding having frames cover graphical toolbars
+anchored at the edges of your screen, and allows you to quickly set numeric
+arguments to apply to operations, like resizing a frame to a percentage of
+your screen size.
 
 Hyperbole binds {C-c \} to invoke HyControl windows control; otherwise, the
 Hyperbole minibuffer menu item, Screen/WindowsControl {C-h h s w}, will do
@@ -196,6 +197,56 @@ frames and windows, the minor modes of HyControl, with a 
mode-line indicator
 of either "HyFrm" or HyWin" depending on which type of control is active.  See
 "(hyperbole)HyControl" for full usage information.
 
+Let's try some of the more interesting commands.  You can either type the
+following key sequences (ignoring the braces) for practice or simply press
+the Action Key within them to see what they look like.
+
+{C-h h s f}  - enter HyControl Frames mode
+
+{.50 %}      - make frame 50% of screen size
+{ c }        - use this multiple times to move frame around screen edges
+{ a }        - use this multiple times to adjust frame width
+{ A }        - use this multiple times to adjust frame height
+
+The following 4 commands use the prefix argument as a percentage of the
+screen height, except that no argument or an argument of 1 mean 50% since
+the argument is used to adjust one dimension of the frame.
+
+{ i }        - move to top edge, next press cuts height by ARG %
+{ m }        - move to bottom edge, next press cuts height by ARG %
+{ j }        - move to left edge, next press cuts width by ARG %
+{ k }        - move to right edge, next press cuts width by ARG %
+
+{ f }        - clone the selected window to a new frame
+{ F }        - tear off the selected window (if more than one window)
+               into a new frame
+
+The address@hidden command splits a frame into a grid of up to 9 rows by 9 
columns of
+windows, showing a different buffer in each window, if available.  First
+let's expand our frame to full screen with the {.1 %} command and then show
+a 2 x 3 grid.  We can do multiple commands in one key sequence.  Press the
+action key here: {.1 % .23 @}.
+
+You can even write something like this to do the whole thing in one sequence.
+First, let's quit out of HyControl Frames mode with {q}.  Then go back to one
+window with {C-x 1}.  Now we can execute a single sequence from any buffer that
+creates our 2x3 window grid:  {C-h h s f  .1 %  .23 @  q}.  Pretty amazing,
+right?  You can separate each command by any number of spaces or even jam them
+all together: address@hidden
+
+A zero argument to the address@hidden command is special.  It means you want to
+display buffers with a particular major mode first, e.g. c-mode.  You
+will be prompted for the major mode and then the size of the grid.
+
+To try it, activate: {C-hhsf .0 @}.
+
+If you ever need to experiment with different sized window grids, use
+{M-x hycontrol-window-grid-repeatedly RET}.  It will repeatedly prompt
+you for a grid size and then display it.  When you are done, simply press
+{RET} to exit.
+
+There is lots more to discover in HyControl as you explore.
+
 
 * History
 
diff --git a/hib-kbd.el b/hib-kbd.el
index 423bef0..8cbd445 100644
--- a/hib-kbd.el
+++ b/hib-kbd.el
@@ -59,6 +59,7 @@ Forms such as {\C-b}, {\^b}, and {^b} will not be recognized."
              binding (key-binding key-sequence)))
       (and (cond (binding (not (integerp binding)))
                 ((kbd-key:hyperbole-mini-menu-key-p key-sequence))
+                ((kbd-key:hyperbole-hycontrol-key-p key-sequence))
                 ((kbd-key:extended-command-p key-sequence)))
           (ibut:label-set seq-and-pos)
           (hact 'kbd-key key-sequence)))))
@@ -78,6 +79,7 @@ Returns t if KEY-SEQUENCE has a binding, else nil."
           ;; or a M-x extended command, execute it by adding its keys
           ;; to the stream of unread command events.
           (when (or (kbd-key:hyperbole-mini-menu-key-p key-sequence)
+                    (kbd-key:hyperbole-hycontrol-key-p key-sequence)
                     (kbd-key:extended-command-p key-sequence))
             (setq unread-command-events (nconc unread-command-events (mapcar 
'identity key-sequence)))))
          ((memq binding '(action-key action-mouse-key hkey-either))
@@ -120,8 +122,19 @@ With optional prefix arg FULL, displays full documentation 
for command."
   (let ((kbd-key (hbut:key-to-label (hattr:get but 'lbl-key))))
     (if kbd-key (kbd-key:doc kbd-key t))))
 
+(defun kbd-key:hyperbole-hycontrol-key-p (key-sequence)
+  "Returns t if normalized KEY-SEQUENCE is given when in a HyControl mode, 
else nil.
+Allows for multiple key sequences strung together."
+  (and key-sequence
+       (featurep 'hycontrol)
+       (or hycontrol-windows-mode hycontrol-frames-mode)
+       ;; If wanted to limit to single key bindings and provide tighter 
checking:
+       ;;   (string-match "[-.0-9]*\\(.*\\)" key-sequence)
+       ;;   (key-binding (match-string 1 key-sequence))
+       t))
+
 (defun kbd-key:hyperbole-mini-menu-key-p (key-sequence)
-  "Returns t if normalized KEY-SEQUENCE appears to invoke a Hyperbole menu 
item, else nil."
+  "Returns t if normalized KEY-SEQUENCE appears to invoke a Hyperbole menu 
item or sequence of keys, else nil."
   (when key-sequence
     (let ((mini-menu-key (kbd-key:normalize (key-description (car 
(where-is-internal 'hyperbole))))))
       (if (string-match (regexp-quote mini-menu-key) key-sequence) t))))
diff --git a/hmouse-drv.el b/hmouse-drv.el
index 3b4f2f9..d31986d 100644
--- a/hmouse-drv.el
+++ b/hmouse-drv.el
@@ -87,7 +87,9 @@ Note that this may be a buffer different than where the 
release occurs.")
   "When non-nil, forces display of help for next Assist Key release.")
 
 (defvar assist-flag nil
-  "Non-nil when Hyperbole's Assist Key is in use rather than the Action Key.")
+  "Non-nil when Hyperbole's Assist Key is in use rather than the Action Key.
+Never set directly.  Bound as a parameter when `hkey-execute' is called
+and then used as a free variable.")
 
 (defcustom hkey-debug nil
   "If non-nil, displays a message with the context and values from each Smart 
Key activation.
@@ -279,6 +281,12 @@ bound to a valid function."
 (defun hkey-either (arg)
   "Execute `action-key' or with non-nil ARG execute `assist-key'."
   (interactive "P")
+  (when (and (featurep 'hycontrol)
+            (or hycontrol-windows-mode hycontrol-frames-mode))
+      ;; Ignore any prefix arg set by HyControl and use prefix arg
+      ;; only if it was given by a user as any number of C-u presses
+      ;; and is therefore a list.
+    (unless (listp arg) (setq arg nil)))
   (if arg (assist-key) (action-key)))
 
 ;;; ************************************************************************
diff --git a/hpath.el b/hpath.el
index a2d1c6b..11ba5cf 100644
--- a/hpath.el
+++ b/hpath.el
@@ -884,10 +884,10 @@ nonexistent local paths are allowed."
                   (let (decoded-path)
                     (while (not (equal rtn-path (setq decoded-path 
(hypb:decode-url rtn-path))))
                       (setq rtn-path decoded-path))))
-                ;; Quote any %s except for one at the end of the path
-                ;; part of rtn-path (immediately preceding a # or ,
-                ;; character or the end of string).
-                (setq rtn-path (hypb:replace-match-string "%s" rtn-path "%%s")
+                ;; Quote any % except for one %s at the end of the
+                ;; path part of rtn-path (immediately preceding a #
+                ;; or , character or the end of string).
+                (setq rtn-path (hypb:replace-match-string "%" rtn-path "%%")
                       rtn-path (hypb:replace-match-string 
"%%s\\([#,]\\|\\'\\)" rtn-path "%s\\1"))
                 ;; Return path if non-nil return value.
                 (if (stringp suffix) ;; suffix could = t, which we ignore
diff --git a/hui-menu.el b/hui-menu.el
index fd45590..78cad19 100644
--- a/hui-menu.el
+++ b/hui-menu.el
@@ -130,13 +130,13 @@ Return t if cutoff, else nil."
 (defun hui-menu-key-bindings (rest-of-menu)
   (nconc
    (list
-    (vector (hui-menu-key-binding-item "Action-Key         \t\t\t" 
'hkey-either)       '(hui:bind-key #'hkey-either) t)        ;; {M-RET}
-    (vector (hui-menu-key-binding-item "Button-Rename-Key  \t\t"   
'hui:ebut-rename)   '(hui:bind-key #'hui:ebut-rename) t)    ;; {C-c C-r}
-    (vector (hui-menu-key-binding-item "Drag-Emulation-Key \t\t"   
'hkey-operate)      '(hui:bind-key #'hkey-operate) t)       ;; {M-o}
-    (vector (hui-menu-key-binding-item "Hyperbole-Menu-Key \t"     'hyperbole) 
        '(hui:bind-key #'hyperbole) t)          ;; {C-h h}
-    (vector (hui-menu-key-binding-item "Mark-Thing-Key     \t\t"   
'hui-select-thing)  '(hui:bind-key #'hui-select-thing) t)   ;; {C-c C-m}
-    (vector (hui-menu-key-binding-item "Smart-Help-Key     \t\t"   'hkey-help) 
        '(hui:bind-key #'hkey-help) t)          ;; {C-h A}
-    (vector (hui-menu-key-binding-item "Windows-Control-Key\t"     
'hycontrol-windows) '(hui:bind-key #'hycontrol-windows) t)) ;; {C-C \}
+    (vector (hui-menu-key-binding-item "Action-Key         \t\t\t" 
'hkey-either)                   '(hui:bind-key #'hkey-either) t)                
    ;; {M-RET}
+    (vector (hui-menu-key-binding-item "Button-Rename-Key  \t\t"   
'hui:ebut-rename)               '(hui:bind-key #'hui:ebut-rename) t)            
    ;; {C-c C-r}
+    (vector (hui-menu-key-binding-item "Drag-Emulation-Key \t\t"   
'hkey-operate)                  '(hui:bind-key #'hkey-operate) t)               
    ;; {M-o}
+    (vector (hui-menu-key-binding-item "Hyperbole-Menu-Key \t"     'hyperbole) 
                    '(hui:bind-key #'hyperbole) t)                      ;; {C-h 
h}
+    (vector (hui-menu-key-binding-item "Mark-Thing-Key     \t\t"   
'hui-select-thing)              '(hui:bind-key #'hui-select-thing) t)           
    ;; {C-c C-m}
+    (vector (hui-menu-key-binding-item "Smart-Help-Key     \t\t"   'hkey-help) 
                    '(hui:bind-key #'hkey-help) t)                      ;; {C-h 
A}
+    (vector (hui-menu-key-binding-item "Windows-Control-Key\t"     
'hycontrol-enable-windows-mode) '(hui:bind-key #'hycontrol-enable-windows-mode) 
t)) ;; {C-C \}
    rest-of-menu))
 
 ;; Dynamically compute submenus for Screen menu
diff --git a/hui-window.el b/hui-window.el
index 437e0dc..7f04859 100644
--- a/hui-window.el
+++ b/hui-window.el
@@ -308,8 +308,8 @@ Key behavior reverts to as though no items have been 
dragged."
 (defun hmouse-drag-region-active ()
   "Return non-nil if an active region existed in the depress buffer prior to 
the depress and a drag motion has occurred."
   (save-excursion
-    (hmouse-goto-depress-prev-point)
-    (and (region-active-p)
+    (and (hmouse-goto-depress-prev-point)
+        (region-active-p)
         (or (hmouse-drag-vertically) (hmouse-drag-horizontally) 
(hmouse-drag-diagonally))
         (setq hkey-value (point)))))
 
@@ -707,10 +707,13 @@ Ignores minibuffer window."
     (if point (goto-char point))))
 
 (defun hmouse-goto-depress-prev-point ()
-  "Temporarily set point to where the last Smart Key was depressed."
-  (let ((buf (marker-buffer (if assist-flag assist-key-depress-prev-point 
action-key-depress-prev-point)))
-       (loc (marker-position (if assist-flag assist-key-depress-prev-point 
action-key-depress-prev-point))))
-    (hmouse-set-buffer-and-point buf loc)))
+  "Temporarily set point to where the last Smart Key was depressed and return 
t, else nil if no such point saved."
+  (let* ((prev-point (if assist-flag assist-key-depress-prev-point 
action-key-depress-prev-point))
+        (buf (and prev-point (marker-buffer prev-point)))
+        (loc (marker-position prev-point)))
+    (when (and buf loc)
+      (hmouse-set-buffer-and-point buf loc)
+      t)))
 
 (defun hmouse-goto-depress-point ()
   "Temporarily set point to where the last Smart Key was depressed."
diff --git a/hycontrol.el b/hycontrol.el
index f6bde75..3a9a292 100644
--- a/hycontrol.el
+++ b/hycontrol.el
@@ -14,44 +14,101 @@
 ;;   This library provides full interactive control of window and
 ;;   frame sizes and locations utilizing quick single key commands.
 ;;   It has the ability to change from increasing a window height by
-;;   5 lines, {.5 h}, to moving a frame 820 pixels, {.820 right-arrow},
-;;   with just a few keystrokes.
+;;   5 lines, {.5 h}, to moving a frame 82 pixels, {.82 right-arrow},
+;;   with just a few keystrokes (the leading . just resets the numeric
+;;   argument to 0 prior to typing the new number).
 ;;
-;;   It supplies two commands, both of which can toggle to the other
-;;   by pressing {t}.  `hycontrol-enable-frames-mode' manages visible
-;;   frame creation, deletion, sizing, position and face
-;;   zooming (enlarging and shrinking); if called interactively, it
-;;   stores the current frame configuration for restoration via a
+;;   ----
+;;
+;;   HyControl is invoked via either of two global minor modes under
+;;   the Hyperbole screen menu, both of which can toggle to the other
+;;   by pressing {t}. `hycontrol-enable-frames-mode' bound to {C-h h s
+;;   f} manages visible frame creation, deletion, sizing, position and
+;;   face zooming (enlarging and shrinking); if called interactively,
+;;   it stores the current frame configuration for restoration via a
 ;;   press of the `)' key.  `hycontrol-enable-windows-mode' manages
 ;;   per frame window creation, deletion, sizing, reframing and face
 ;;   zooming; if called interactively, it stores the current window
 ;;   configuration for restoration via a press of the `)' key.
-;;
-;;   These commands are available under the Hyperbole Screen menu.
 ;;   `hycontrol-enable-windows-mode' is typically bound by Hyperbole
-;;   to {C-c \}.  Then press {t} if you want to switch to frame
-;;   control.
+;;   to {C-c \} or just use {C-h h s w}.  Then press {t} if you want
+;;   to switch to frame control.
+;;
+;;   With a HyControl minor mode active, a multi-line help summary of
+;;   most available key bindings is shown in the minibuffer.  Simply
+;;   read this and try each command out to get a feel for it.  Below
+;;   we highlight some of the most unique commands.
+;;
+;;   ----
+;;
+;;   In either HyControl mode, you can instantly create a grid of
+;;   windows to display many buffers by choosing a number of rows as
+;;   your first digit, then a number of columns of windows as the
+;;   second digit and then pressing address@hidden, e.g. {.26 @} produces 2 
rows,
+;;   each with 6 columns of windows in the selected frame.  Grids can
+;;   be from 1x1 to 9x9 windows.  This command also works outside of a
+;;   HyControl mode when in Dired, Buffer Menu or IBuffer modes with
+;;   a prefix argument (no preceding period).
+;;
+;;   The buffers displayed by the address@hidden command are chosen smartly.
+;;   With a current buffer in Dired, Buffer Menu or IBuffer mode with
+;;   marked items, the buffers associated with those items are
+;;   displayed first.  Then the most recently used buffers are
+;;   displayed in each window, first selecting from buffers which
+;;   match any of the predicate expressions in
+;;   `hycontrol-display-buffer-predicate-list'.  Then, if there are
+;;   not enough buffers for all windows, the buffers that failed to
+;;   match to any predicate are used.  The default predicate list
+;;   chooses buffers with attached files.  In all cases, buffers whose
+;;   names start with a space are filtered out.  If a prefix argument
+;;   of 0 is given, a major mode symbol is prompted for and buffers
+;;   with that major mode are preferred for display instead of those
+;;   matching the predicate list.
+;;
+;;   ----
 ;;
-;;   HyControl allows placement of frames at screen edges and corners. 
-;;   (A screen may span multiple physical monitors).  To prevent widgets
-;;   and toolbars at the corners of the screen from being obscured,
-;;   HyControl can offset each frame from each screen edge by a fixed
-;;   number of pixels.  These offsets are specified by the variable,
-;;   `hycontrol-screen-offset-alist' and can differ for each type of
-;;   screen; see its documentation for details.  If you change its value,
-;;   then call `hycontrol-set-screen-offsets' to set any new offset values.
-;;   `hycontrol-get-screen-offsets' returns the list of offsets in clockwise
-;;   order starting from the top edge.
+;;   HyControl allows placement of frames at screen edges and corners
+;;   using the keys of the numeric keypad, matching their physical
+;;   layout, e.g. {3} moves to the lower right corner.  Press {p} for
+;;   a prompt with a virtual numeric keypad if you lack a physical one.
+;;   You can also cycle through all of these placement positions with
+;;   the {c} key.
+;;
+;;   HyControl can rapidly resize frames to common percentages of
+;;   screen sizes via a number of commands.  Each press of {a} or {A}
+;;   cycles through resizing the selected frame's width and height
+;;   respectively to a percentage of the screen given by the lists,
+;;   `hycontrol-frame-widths' and `hycontrol-frame-heights', e.g. 25%,
+;;   50%, etc.  The keys: {i} top, {j} left, {k} right, and {m}
+;;   bottom, first maximize a frame to the respective screen edge and
+;;   then with successive presses, shrink the frame dimension
+;;   perpendicular to that edge by 50% while keeping the original edge
+;;   fixed in place.  Try them and you will quickly see how they can
+;;   help.
+;;   
+;;   ----
 ;;
 ;;   When HyControl creates a new frame, it automatically sizes it to the
 ;;   same size as the previously selected frame and offsets it from that
 ;;   frame by the (X . Y) number of pixels given in the variable,
 ;;   `hycontrol-frame-offset'.
 ;;
+;;   A display screen may span multiple physical monitors.  To prevent
+;;   widgets and toolbars at the corners of the screen from being
+;;   obscured, HyControl can offset each frame from each screen edge
+;;   by a fixed number of pixels.  These offsets are specified by the
+;;   variable, `hycontrol-screen-offset-alist' and can differ for each
+;;   type of screen; see its documentation for details.  If you change
+;;   its value, then call `hycontrol-set-screen-offsets' to set any
+;;   new offset values.  `hycontrol-get-screen-offsets' returns the
+;;   list of offsets in clockwise order starting from the top edge.
+;;
+;;   ----
+;;
 ;;   Please note that the frame zoom in/out commands on Z and z will
 ;;   not work unless you have the separately available "zoom-frm.el"
 ;;   library (which itself requires another library).  If not available,
-;;   they command will just beep at you.  The window-based zoom commands
+;;   this command will just beep at you.  The window-based zoom commands
 ;;   utilize a built-in Emacs library, so they will always work under
 ;;   any window system.  These commands enlarge and shrink the default
 ;;   text face.
@@ -78,7 +135,7 @@
   (list #'buffer-file-name)
   "List of single buffer/name predicates.
 If any predicate returns non-nil for a buffer, include that buffer in
-the list to display in the windows created by 
`hycontrol-split-windows-rows-columns'.
+the list to display in the windows created by 
`hycontrol-windows-grid-rows-columns'.
 
 A predicate may be either a function that takes a single buffer
 argument or a boolean expression, in which case the expression is
@@ -192,7 +249,7 @@ The final predicate should always be t, for default values, 
typically of zero.")
 
     ;; Clear hycontrol-arg
     (define-key map "."     (lambda () (interactive) (setq hycontrol-arg 0) 
(hycontrol-frame-to-screen-edges 0)))
-    (define-key map "@"     'hycontrol-split-windows)
+    (define-key map "@"     'hycontrol-windows-grid)
     (define-key map "?"     'hycontrol-toggle-help)
     (define-key map "a"     'hycontrol-frame-adjust-widths)
     (define-key map "A"     'hycontrol-frame-adjust-heights)
@@ -264,11 +321,11 @@ The final predicate should always be t, for default 
values, typically of zero.")
 ;;; Window Keys
 
 ;;;###autoload
-(eval-after-load "buff-menu" '(define-key Buffer-menu-mode-map "@" 
'hycontrol-split-windows))
+(eval-after-load "buff-menu" '(define-key Buffer-menu-mode-map "@" 
'hycontrol-windows-grid))
 ;;;###autoload
-(eval-after-load "ibuffer"   '(define-key ibuffer-mode-map     "@" 
'hycontrol-split-windows))
+(eval-after-load "ibuffer"   '(define-key ibuffer-mode-map     "@" 
'hycontrol-windows-grid))
 ;;;###autoload
-(eval-after-load "dired"     '(define-key dired-mode-map       "@" 
'hycontrol-split-windows))
+(eval-after-load "dired"     '(define-key dired-mode-map       "@" 
'hycontrol-windows-grid))
 
 (defvar hycontrol-windows-mode-map
   (let ((map (make-sparse-keymap)))
@@ -292,7 +349,7 @@ The final predicate should always be t, for default values, 
typically of zero.")
 
     ;; Clear hycontrol-arg
     (define-key map "."     (lambda () (interactive) (setq hycontrol-arg 0) 
(hycontrol-frame-to-screen-edges 0)))
-    (define-key map "@"     'hycontrol-split-windows)
+    (define-key map "@"     'hycontrol-windows-grid)
     (define-key map "?"     'hycontrol-toggle-help)
     (define-key map "a"     'hycontrol-frame-adjust-widths)
     (define-key map "A"     'hycontrol-frame-adjust-heights)
@@ -1217,7 +1274,7 @@ width to affect only that dimension."
 
 ;;;###autoload
 (defun hycontrol-frame-adjust-widths ()
-  "Cycle though different common width adjustments of a frame.
+  "Cycle through different common width adjustments of a frame.
 Widths are given in screen percentages by the list
 `hycontrol-frame-widths' and typically go from widest to narrowest."
   (interactive)
@@ -1234,7 +1291,7 @@ Widths are given in screen percentages by the list
 
 ;;;###autoload
 (defun hycontrol-frame-adjust-widths-full-height ()
-  "Cycle though different common widths adjustments of a frame after fixing 
its height full-screen.
+  "Cycle through different common widths adjustments of a frame after fixing 
its height full-screen.
 Widths are given in screen percentages by the list
 `hycontrol-frame-widths' and typically go from widest to narrowest."
   (interactive)
@@ -1249,7 +1306,7 @@ Widths are given in screen percentages by the list
 
 ;;;###autoload
 (defun hycontrol-frame-adjust-heights ()
-  "Cycle though different common height adjustments of a frame.
+  "Cycle through different common height adjustments of a frame.
 Heights are given in screen percentages by the list
 `hycontrol-frame-heights' and typically go from tallest to shortest."
   (interactive)
@@ -1258,15 +1315,16 @@ Heights are given in screen percentages by the list
   (hycontrol-frame-height-percentage-of-screen
    (car hycontrol--frame-heights-pointer))
   (message "Screen Percentage: Fixed Width %.1f%%; Height %.1f%%"
-          (* 100.0 (/ (float (hycontrol-frame-width)) (- (display-pixel-width)
-                                                         
hycontrol-screen-left-offset hycontrol-screen-right-offset)))
+          (* 100.0 (/ (float (hycontrol-frame-width))
+                      (- (display-pixel-width)
+                         hycontrol-screen-left-offset 
hycontrol-screen-right-offset)))
           (* 100.0 (car hycontrol--frame-heights-pointer)))
   (setq hycontrol--frame-heights-pointer
        (cdr hycontrol--frame-heights-pointer)))
 
 ;;;###autoload
 (defun hycontrol-frame-adjust-heights-full-width ()
-  "Cycle though different common height adjustments of a frame after fixing 
its width full-screen.
+  "Cycle through different common height adjustments of a frame after fixing 
its width full-screen.
 Heights are given in screen percentages by the list
 `hycontrol-frame-heights' and typically go from tallest to shortest."
   (interactive)
@@ -1310,7 +1368,10 @@ Heights are given in screen percentages by the list
       (set-face-background 'mode-line fg))
     (redraw-modeline t)))
 
-(defun hycontrol-split-windows-buffer-list ()
+(defun hycontrol-windows-grid-buffer-list ()
+  "Return the existing frame's buffer list with any marked items prepended.
+Marked items are included when the current buffer is in Dired, Buffer
+Menu or IBuffer mode."
   ;; If selecting buffers by major-mode, then ignore any marked items.
   (if (and (boundp 'mode) (symbolp mode))
       (buffer-list (selected-frame))
@@ -1330,33 +1391,39 @@ Heights are given in screen percentages by the list
       (apply 'set:create (nconc items (buffer-list (selected-frame)))))))
 
 ;;;###autoload
-(defun hycontrol-split-windows (arg)
-  "Split windows according to prefix ARG.
-If ARG is 0, prompt for a number of rows and columns of windows
-to display and a major mode whose buffers should be preferred for
-display in the windows of the selected frame.  Otherwise, split
-selected frame into left digit of ARG rows and right digit of ARG
-columns of windows.
-
-In Dired, Buffer Menu or IBuffer modes with marked items, the
-buffers associated with those items are preferred for display.
-Otherwise, display the most recent buffers in each window,
-allowing buffers matching predicates in
-`hycontrol-display-buffer-predicate-list' only on the first pass.
-Then, if not enough buffers for all windows, use the buffers that
-failed to match in the first pass, aside from those whose names
-begin with a space."
+(defun hycontrol-windows-grid (arg)
+  "Create a grid of windows in the selected frame according to prefix ARG.
+
+If ARG is 0, prompt for a major mode whose buffers should be
+displayed first in the windows of the selected frame and then for
+the number of rows and columns of windows to display in the grid.
+Otherwise, split the selected frame into left digit of ARG rows
+and right digit of ARG columns of windows.
+
+With a current buffer in Dired, Buffer Menu or IBuffer mode that
+contains marked items, the buffers associated with those items
+are displayed first in the grid.  Then the most recently used
+buffers are displayed in each window, first selecting only those
+buffers which match any of the predicate expressions in
+`hycontrol-display-buffer-predicate-list'.  (The default
+predicate list chooses buffers with attached files).  Then, if
+there are not enough buffers for all windows, the buffers that
+failed to match to any predicate are used.  In all cases, buffers
+whose names start with a space are ignored.
+
+When done, resets the persistent prefix argument to 1 to prevent
+following commands from using the often large grid size argument."
   (interactive "p")
   (setq arg (abs (prefix-numeric-value (or arg current-prefix-arg))))
   (if (/= arg 0)
-      (hycontrol-split-windows-rows-columns arg)
+      (hycontrol-windows-grid-rows-columns arg)
     (setq current-prefix-arg 0)
-    (call-interactively #'hycontrol-split-windows-by-major-mode)))
+    (call-interactively #'hycontrol-windows-grid-by-major-mode)))
 
 ;;; Split selected frame into a matrix of windows given by row and
 ;;; column count, displaying different buffers in each window.
 ;;;###autoload
-(defun hycontrol-split-windows-by-major-mode (arg mode)
+(defun hycontrol-windows-grid-by-major-mode (arg mode)
   "Split selected frame into left digit of ARG rows and right digit of ARG 
columns of windows, preferring buffers with major MODE.
 Then, if not enough buffers for all windows, use the buffers that
 failed to match in the first pass, aside from those whose names
@@ -1365,17 +1432,17 @@ begin with a space."
    (list (prefix-numeric-value current-prefix-arg)
         (let* ((set:equal-op 'eq)
                (mode-strings (mapcar 'symbol-name (apply #'set:create (mapcar 
(lambda (buf) (buffer-local-value 'major-mode buf))
-                                                                              
(hycontrol-split-windows-buffer-list))))))
-          (intern-soft (completing-read "(HyControl Split Windows): Major mode 
of buffers to display: "
+                                                                              
(hycontrol-windows-grid-buffer-list))))))
+          (intern-soft (completing-read "(HyControl Grid Windows): Major mode 
of buffers to display: "
                                         mode-strings nil t (symbol-name 
major-mode))))))
   (let ((hycontrol-display-buffer-predicate-list `((eq major-mode ',mode))))
-    (hycontrol-split-windows-rows-columns arg)))
+    (hycontrol-windows-grid-rows-columns arg)))
 
 ;;;###autoload
-(defun hycontrol-split-windows-repeatedly (&optional arg)
-  "Repeatedly split windows according to prefix ARG and ARG prompted for each 
time.
+(defun hycontrol-windows-grid-repeatedly (&optional arg)
+  "Repeatedly displays different window grid layouts according to prefix ARG 
prompted for each time.
 
-See documentation for `hycontrol-split-windows' for details."
+See documentation of `hycontrol-windows-grid' for details."
   (interactive "p")
   (catch 'done
     (let (hycontrol-help-flag)
@@ -1387,23 +1454,27 @@ See documentation for `hycontrol-split-windows' for 
details."
                      (string-to-number arg)))
          (unless (or (eq arg 0) (and (integerp arg) (>= arg 11) (<= arg 99)))
            (beep)))
-       (hycontrol-split-windows arg)
+       (hycontrol-windows-grid arg)
        (setq arg nil)))))
 
-(defun hycontrol-split-windows-rows-columns (arg)
+(defun hycontrol-windows-grid-rows-columns (arg)
   "Split selected frame into left digit of ARG rows and right digit of ARG 
columns of windows.
 
-See documentation for `hycontrol-split-windows' for details."
+See documentation of `hycontrol-windows-grid' for details."
   (interactive "p")
 
   ;; Check ARG, must be 2 digits of [1-9], else read a new ARG or
   ;; signal an error when in a HyControl mode and help is displayed.
   (if (and (and hycontrol-help-flag (or hycontrol-frames-mode 
hycontrol-windows-mode))
           (not (and (integerp arg) (>= arg 11) (<= arg 99))))
-      ;; Can't read a number because numeric keys are specially bound.
-      (progn (pop-to-buffer "*Messages*")
-            (error "(HyControl): Split frame into a matrix of 
windows.\nArgument must be a rows digit (1-9) followed by a columns digit 
(1-9), not `%s'." arg))
-    (while (not (and (integerp arg) (or (= arg 0) (and (>= arg 11) (<= arg 
99)))))
+      (let ((hyc-mode (if hycontrol-frames-mode #'hycontrol-frames-mode 
#'hycontrol-windows-mode)))
+       (hycontrol-disable-modes)
+       (setq arg 0)
+       (while (not (and (integerp arg) (and (>= arg 11) (<= arg 99))))
+         (unless (eq arg 0) (beep))
+         (setq arg (read-number "Split frame into a matrix of ROW digit by 
COLUMN digit windows, e.g. 23 for 2R by 3C: ")))
+       (funcall hyc-mode arg))
+    (while (not (and (integerp arg) (and (>= arg 11) (<= arg 99))))
       (unless (eq arg 0) (beep))
       (setq arg (read-number "Split frame into a matrix of ROW digit by COLUMN 
digit windows, e.g. 23 for 2R by 3C: "))))
 
@@ -1450,7 +1521,7 @@ See documentation for `hycontrol-split-windows' for 
details."
               ;; the predicate tests.  Always ignore buffers that
               ;; start with a space.  With each succeeding pass, the
               ;; predicate list is inverted again.
-              (let ((buffer-list (hycontrol-split-windows-buffer-list)))
+              (let ((buffer-list (hycontrol-windows-grid-buffer-list)))
                 (setq hycontrol--buffer-list-pointer buffer-list)
                 (walk-windows #'hycontrol-window-display-buffer 'no-minibuf))
 
@@ -1477,14 +1548,17 @@ See documentation for `hycontrol-split-windows' for 
details."
 
 (defun hycontrol-window-minimize-lines ()
   "Shrink window to its smallest possible number of lines to display entire 
buffer, if possible.
-Otherwise, do nothing."
+Otherwise or if the window is already displaying all of its lines, shrink it 
to about one line,
+if possible."
   (interactive)
   (let ((neg-shrink-amount (- (1+ (count-lines (point-min) (point-max)))))
        (window-min-height 1))
     ;; Don't use minimize-window here since it shrinks regardless of
     ;; buffer size.
     (if (window-resizable-p (selected-window) neg-shrink-amount)
-       (shrink-window (+ (window-height) neg-shrink-amount)))))
+       (progn (goto-char (point-min))
+              (shrink-window (+ (window-height) neg-shrink-amount)))
+      (shrink-window (1- (window-height))))))
 
 (defun hycontrol-window-swap-buffers ()
   "Swap the buffers displayed by each of two windows within the selected frame 
and return t.
diff --git a/hyperbole.el b/hyperbole.el
index 538e849..1d59e56 100644
--- a/hyperbole.el
+++ b/hyperbole.el
@@ -284,7 +284,7 @@ Entry format is: (key-description key-sequence 
key-binding)."
     (hkey-maybe-global-set-key "\C-c\C-m" 'hui-select-thing)
     ;;
     ;; Binds {C-c \} to interactively manage windows and frames.
-    (hkey-maybe-global-set-key "\C-c\\" 'hycontrol-windows)
+    (hkey-maybe-global-set-key "\C-c\\" 'hycontrol-enable-windows-mode)
     ;;
     ;; Binds {C-c /} to display the Hyperbole Find/Web search menu.
     (hkey-maybe-global-set-key "\C-c/" 'hui-search-web)
diff --git a/man/hyperbole.html b/man/hyperbole.html
index 2111ca3..56a05df 100644
--- a/man/hyperbole.html
+++ b/man/hyperbole.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
 <html>
 <!-- This manual is for GNU Hyperbole
-(Edition 6.0.2f, Published October 24, 2017).
+(Edition 6.0.2f, Published October 25, 2017).
 
 Copyright (C) 1989-2016  Free Software Foundation, Inc.
 
@@ -323,7 +323,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
 Edition 6.0.2f
-Printed October 24, 2017.
+Printed October 25, 2017.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -3618,27 +3618,64 @@ and frame submodes.
 <a name="index-_002e"></a>
 </dd>
 <dt><kbd>{.}</kbd></dt>
-<dd><p>Clear the argument to a value of 0.
+<dd><p>Clear the prefix argument to a value of 0.
 </p>
 <a name="index-screen_002c-0_002d9"></a>
 <a name="index-0_002d9"></a>
 </dd>
 <dt><kbd>{0-9}</kbd></dt>
-<dd><p>Multiply the argument by 10 and add the digit pressed.
-</p>
+<dd><p>Multiply the prefix argument by 10 and add the digit pressed.
+</p>
+<a name="index-screen_002c-_0040"></a>
+<a name="index-_0040"></a>
+</dd>
+<dt><kbd>address@hidden</kbd></dt>
+<dd><p>Create a grid of windows in the selected frame according to the
+prefix argument.
+</p>
+<p>If the prefix argument is 0, prompt for a major mode whose buffers
+should be displayed first in the windows of the selected frame and
+then for the number of rows and columns of windows to display in the
+grid.  Otherwise, split the selected frame into the number of rows
+given by the left digit of the argument and the number of columns
+given by the right digit.
+</p>
+<a name="index-hycontrol_002ddisplay_002dbuffer_002dpredicate_002dlist"></a>
+<p>With a current buffer in Dired, Buffer Menu or IBuffer mode that
+contains marked items, the buffers associated with those items are
+displayed first in the grid.  Then the most recently used buffers are
+displayed in each window, first selecting only those buffers which
+match any of the predicate expressions in
+<var>hycontrol-display-buffer-predicate-list</var>.  (The default predicate
+list chooses buffers with attached files).  Then, if there are not
+enough buffers for all windows, the buffers that failed to match to
+any predicate are used. In all cases, buffers whose names start with a
+space are ignored.
+</p>
+<p>When done, this resets the persistent prefix argument to 1 to prevent
+following commands from using the often large grid size argument.
+</p>
+<p>If you ever need to experiment with different sized window grids, use
+<kbd>{M-x hycontrol-window-grid-repeatedly <span 
class="key">RET</span>}</kbd>.  It will
+repeatedly prompt you for a grid size and then display it.  When you
+are done, simply press <kbd>{<span class="key">RET</span>}</kbd> to exit.
+</p>
+<a name="index-hycontrol_002dframe_002dwidths"></a>
 <a name="index-screen_002c-a"></a>
 <a name="index-a"></a>
 </dd>
 <dt><kbd>{a}</kbd></dt>
-<dd><p>Cycle though common width adjustments of a frame, such as 25% and 50%.
-Widths are given in screen percentages by the list
-<var>hycontrol-frame-widths</var> and typically go from widest to narrowest.
+<dd><p>Cycle through common width adjustments of a frame, such as 25% and
+50%. Widths are given in screen percentages by the list
+<var>hycontrol-frame-widths</var> and typically go from widest to
+narrowest.
 </p>
+<a name="index-hycontrol_002dframe_002dheights"></a>
 <a name="index-screen_002c-A"></a>
 <a name="index-A"></a>
 </dd>
 <dt><kbd>{A}</kbd></dt>
-<dd><p>Cycle though common height adjustments of a frame, such as 33.3% and
+<dd><p>Cycle through common height adjustments of a frame, such as 33.3% and
 75%.  Heights are given in screen percentages by the list
 <var>hycontrol-frame-heights</var> and typically go from tallest to shortest.
 </p>
@@ -3671,21 +3708,21 @@ character height).
 <a name="index-_0025"></a>
 </dd>
 <dt><kbd>{%}</kbd></dt>
-<dd><p>In FRAME mode, resize frame&rsquo;s height and width to about argument 
percent
+<dd><p>In FRAMES mode, resize frame&rsquo;s height and width to about argument 
percent
 of the screen size.
 </p>
 <a name="index-screen_002c-H"></a>
 <a name="index-H"></a>
 </dd>
 <dt><kbd>{H}</kbd></dt>
-<dd><p>In FRAME mode, resize frame&rsquo;s height to about argument percent of 
the
+<dd><p>In FRAMES mode, resize frame&rsquo;s height to about argument percent 
of the
 screen size.
 </p>
 <a name="index-screen_002c-W"></a>
 <a name="index-W"></a>
 </dd>
 <dt><kbd>{W}</kbd></dt>
-<dd><p>In FRAME mode, resize frame&rsquo;s width to about argument percent of 
the
+<dd><p>In FRAMES mode, resize frame&rsquo;s width to about argument percent of 
the
 screen size.
 </p>
 <a name="index-screen_002c-up"></a>
@@ -3731,7 +3768,7 @@ based on mode.
 <a name="index-l"></a>
 </dd>
 <dt><kbd>{l}</kbd></dt>
-<dd><p>In FRAME mode, lower the selected frame below all other Emacs session 
frames.
+<dd><p>In FRAMES mode, lower the selected frame below all other Emacs session 
frames.
 </p>
 <a name="index-screen_002c-o"></a>
 <a name="index-o"></a>
@@ -3748,7 +3785,7 @@ based on mode.
 <a name="index-keypad-number"></a>
 </dd>
 <dt><kbd>{keypad number}</kbd></dt>
-<dd><p>In FRAME mode, move the frame directly to the screen edge position given
+<dd><p>In FRAMES mode, move the frame directly to the screen edge position 
given
 by the numeric keypad layout.  For example, 3 moves the frame to the
 bottom right corner and 8 moves it to the middle of the top edge.
 Keypad numeric keys do not adjust the argument.  Respects the pixel edge
@@ -3765,7 +3802,7 @@ Each digit key operates just as a numeric keypad key 
would.
 <a name="index-r"></a>
 </dd>
 <dt><kbd>{r}</kbd></dt>
-<dd><p>In FRAME mode, raise the selected frame above all other Emacs session 
frames.
+<dd><p>In FRAMES mode, raise the selected frame above all other Emacs session 
frames.
 </p>
 <a name="index-hycontrol_002dframe_002doffset"></a>
 <a name="index-screen_002c-_005b"></a>
@@ -3797,6 +3834,7 @@ configuration and wish to save it temporarily.
 <dd><p>After confirmation, restore the last saved window or frame configuration
 based on mode.
 </p>
+<a name="index-hycontrol_002dkeep_002dwindow_002dflag"></a>
 <a name="index-screen_002c-f"></a>
 <a name="index-f"></a>
 </dd>
@@ -3837,22 +3875,27 @@ edge.  Respects the pixel edge offsets returned by
 <a name="index-_003d"></a>
 </dd>
 <dt><kbd>{=}</kbd></dt>
-<dd><p>After confirmation, in WINDOW mode, make the current frame&rsquo;s 
windows
-approximately the same size.  In FRAME mode, make all visible frames
+<dd><p>After confirmation, in WINDOWS mode, make the current frame&rsquo;s 
windows
+approximately the same size.  In FRAMES mode, make all visible frames
 the size of the selected frame.
 </p>
 <a name="index-screen_002c-_002d"></a>
 <a name="index-_002d"></a>
 </dd>
 <dt><kbd>{-}</kbd></dt>
-<dd><p>Make the selected window or frame (based on mode) as small as possible
-while still displaying it.
+<dd><p>In WINDOWS mode, shrink window to its smallest possible number of lines
+to display the entire buffer, if possible.  Otherwise or if the window
+is already displaying all of its lines, shrink it to about one line,
+if possible.
+</p>
+<p>In FRAMES mode, make the frame as small as possible while still
+displaying it.
+</p>
 <a name="index-screen_002c-_002b"></a>
 <a name="index-_002b"></a>
-</p></dd>
+</dd>
 <dt><kbd>{+}</kbd></dt>
-<dd><p>Make the window or frame (based on mode) as large as possible.  In FRAME
-mode, a second press of this key restores its size to whatever it was
+<dd><p>Make the window or frame (based on mode) as large as possible.  In 
FRAMES mode, a second press of this key restores its size to whatever it was
 prior to the first use of this command.
 </p>
 <a name="index-burying"></a>
@@ -3876,8 +3919,8 @@ selected window.
 </dd>
 <dt><kbd>{~}</kbd></dt>
 <dd><p>Swap two buffers between the selected window or frame and one other.
-In WINDOW mode, there must be precisely two windows in the selected
-frame.  In FRAME mode, the second frame must have a single window.
+In WINDOWS mode, there must be precisely two windows in the selected
+frame.  In FRAMES mode, the second frame must have a single window.
 </p>
 <a name="index-zoom_002dfrm_002eel"></a>
 <a name="index-zooming"></a>
@@ -3896,7 +3939,7 @@ face size.  Zooming supports an argument of between 1 and 
9 (any other
 value sets the argument to 1).  The argument determines the number of
 sizes by which to zoom.
 </p>
-<p>FRAME mode zooming requires the separately available
+<p>FRAMES mode zooming requires the separately available
 <samp>zoom-frm.el</samp> library.  WINDOW zooming works without this library.
 </p>
 <a name="index-screen_002c-t"></a>
@@ -8446,7 +8489,7 @@ Next: <a href="#Smart-Mouse-_002d-Drags-between-Windows" 
accesskey="n" rel="next
 <a name="index-action_002dkey_002dmodeline_002dfunction-1"></a>
 <a name="index-assist_002dkey_002dmodeline_002dfunction-1"></a>
 <div class="format">
-<pre class="format">If depressed within a window mode line:
+<pre class="format">If depressed within a window modeline:
   ACTION KEY
      (1) clicked on the first blank character of a window&rsquo;s modeline,
          the window&rsquo;s buffer is buried (placed at the bottom of the
@@ -10338,11 +10381,13 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
  &nbsp; 
 <a class="summary-letter" href="#Key-Index_ky_symbol-10"><b>?</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Key-Index_ky_symbol-11"><b>[</b></a>
+<a class="summary-letter" href="#Key-Index_ky_symbol-11"><b>@</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Key-Index_ky_symbol-12"><b>[</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Key-Index_ky_symbol-12"><b>]</b></a>
+<a class="summary-letter" href="#Key-Index_ky_symbol-13"><b>]</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Key-Index_ky_symbol-13"><b>~</b></a>
+<a class="summary-letter" href="#Key-Index_ky_symbol-14"><b>~</b></a>
  &nbsp; 
 <br>
 <a class="summary-letter" href="#Key-Index_ky_letter-A"><b>A</b></a>
@@ -10422,13 +10467,16 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><th><a name="Key-Index_ky_symbol-10">?</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-_003f"><code>?</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Key-Index_ky_symbol-11">[</a></th><td></td><td></td></tr>
+<tr><th><a name="Key-Index_ky_symbol-11">@</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-_0040"><code>@</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="Key-Index_ky_symbol-12">[</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-_005b"><code>[</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Key-Index_ky_symbol-12">]</a></th><td></td><td></td></tr>
+<tr><th><a name="Key-Index_ky_symbol-13">]</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-_005d"><code>]</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Key-Index_ky_symbol-13">~</a></th><td></td><td></td></tr>
+<tr><th><a name="Key-Index_ky_symbol-14">~</a></th><td></td><td></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-_007e"><code>~</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td colspan="4"> <hr></td></tr>
 <tr><th><a name="Key-Index_ky_letter-A">A</a></th><td></td><td></td></tr>
@@ -10657,6 +10705,7 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
 <tr><td></td><td valign="top"><a 
href="#index-screen_002c-0_002d9"><code>screen, 
0-9</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-_003d"><code>screen, 
=</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-_003f"><code>screen, 
?</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-screen_002c-_0040"><code>screen, 
@</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-a"><code>screen, 
a</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-A"><code>screen, 
A</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a href="#index-screen_002c-b"><code>screen, 
b</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#HyControl">HyControl</a></td></tr>
@@ -10741,11 +10790,13 @@ Next: <a href="#Function" accesskey="n" 
rel="next">Function</a>, Previous: <a hr
  &nbsp; 
 <a class="summary-letter" href="#Key-Index_ky_symbol-10"><b>?</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Key-Index_ky_symbol-11"><b>[</b></a>
+<a class="summary-letter" href="#Key-Index_ky_symbol-11"><b>@</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Key-Index_ky_symbol-12"><b>[</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Key-Index_ky_symbol-12"><b>]</b></a>
+<a class="summary-letter" href="#Key-Index_ky_symbol-13"><b>]</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Key-Index_ky_symbol-13"><b>~</b></a>
+<a class="summary-letter" href="#Key-Index_ky_symbol-14"><b>~</b></a>
  &nbsp; 
 <br>
 <a class="summary-letter" href="#Key-Index_ky_letter-A"><b>A</b></a>
@@ -11038,11 +11089,15 @@ Next: <a href="#Concept-Index" accesskey="n" 
rel="next">Concept Index</a>, Previ
 <tr><td></td><td valign="top"><a 
href="#index-hui_003aebut_002ddelete_002dconfirm_002dp">hui:ebut-delete-confirm-p</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Deletion">Deletion</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hui_003aebut_002dprompt_002dfor_002daction">hui:ebut-prompt-for-action</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Action-Types">Action Types</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hui_003aebut_002drename"><code>hui:ebut-rename</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Renaming">Renaming</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hycontrol_002ddisplay_002dbuffer_002dpredicate_002dlist">hycontrol-display-buffer-predicate-list</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hycontrol_002denable_002d_002dwindows_002dmode"><code>hycontrol-enable--windows-mode</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hycontrol_002denable_002dframes_002dmode"><code>hycontrol-enable-frames-mode</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dframe_002dheights">hycontrol-frame-heights</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dframe_002doffset">hycontrol-frame-offset</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dframe_002doffset-1">hycontrol-frame-offset</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dframe_002dwidths">hycontrol-frame-widths</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dget_002dscreen_002doffsets"><code>hycontrol-get-screen-offsets</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
+<tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dkeep_002dwindow_002dflag">hycontrol-keep-window-flag</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dscreen_002doffset_002dalist">hycontrol-screen-offset-alist</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hycontrol_002dset_002dscreen_002doffsets"><code>hycontrol-set-screen-offsets</code></a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#HyControl">HyControl</a></td></tr>
 <tr><td></td><td valign="top"><a 
href="#index-hypb_003argrep_002dcommand">hypb:rgrep-command</a>:</td><td>&nbsp;</td><td
 valign="top"><a href="#Menus">Menus</a></td></tr>
diff --git a/man/hyperbole.info b/man/hyperbole.info
index 0cf6e21..a78f5ea 100644
Binary files a/man/hyperbole.info and b/man/hyperbole.info differ
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index 7fb98b3..9822a23 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index 902da13..a3ba1d5 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -152,7 +152,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
 Edition 6.0.2f
-Printed October 24, 2017.
+Printed October 25, 2017.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -176,7 +176,7 @@ Printed October 24, 2017.
 
 @center The Everyday Hypertextual Information Manager
 
address@hidden Edition 6.0.2f, October 24, 2017.
address@hidden Edition 6.0.2f, October 25, 2017.
 
 @sp 2
 @noindent
@@ -2970,21 +2970,56 @@ Toggle whether HyControl displays key binding help in 
the minibuffer.
 @kindex HyControl, see screen
 @kindex screen, .
 @kitem .
-Clear the argument to a value of 0.
+Clear the prefix argument to a value of 0.
 
 @kindex screen, 0-9
 @kitem 0-9
-Multiply the argument by 10 and add the digit pressed.
-
+Multiply the prefix argument by 10 and add the digit pressed.
+
address@hidden screen, @@
address@hidden @@
+Create a grid of windows in the selected frame according to the
+prefix argument.
+
+If the prefix argument is 0, prompt for a major mode whose buffers
+should be displayed first in the windows of the selected frame and
+then for the number of rows and columns of windows to display in the
+grid.  Otherwise, split the selected frame into the number of rows
+given by the left digit of the argument and the number of columns
+given by the right digit.
+
address@hidden hycontrol-display-buffer-predicate-list
+With a current buffer in Dired, Buffer Menu or IBuffer mode that
+contains marked items, the buffers associated with those items are
+displayed first in the grid.  Then the most recently used buffers are
+displayed in each window, first selecting only those buffers which
+match any of the predicate expressions in
address@hidden  (The default predicate
+list chooses buffers with attached files).  Then, if there are not
+enough buffers for all windows, the buffers that failed to match to
+any predicate are used. In all cases, buffers whose names start with a
+space are ignored.
+
+When done, this resets the persistent prefix argument to 1 to prevent
+following commands from using the often large grid size argument.
+
+If you ever need to experiment with different sized window grids, use
address@hidden hycontrol-window-grid-repeatedly @key{RET}}.  It will
+repeatedly prompt you for a grid size and then display it.  When you
+are done, simply press @address@hidden to exit.
+
address@hidden hycontrol-frame-widths
 @kindex screen, a
 @kitem a
-Cycle though common width adjustments of a frame, such as 25% and 50%.
-Widths are given in screen percentages by the list
address@hidden and typically go from widest to narrowest.
+Cycle through common width adjustments of a frame, such as 25% and
+50%. Widths are given in screen percentages by the list
address@hidden and typically go from widest to
+narrowest.
 
address@hidden hycontrol-frame-heights
 @kindex screen, A
 @kitem A
-Cycle though common height adjustments of a frame, such as 33.3% and
+Cycle through common height adjustments of a frame, such as 33.3% and
 75%.  Heights are given in screen percentages by the list
 @var{hycontrol-frame-heights} and typically go from tallest to shortest.
 
@@ -3007,17 +3042,17 @@ Narrow by argument characters.
 
 @kindex screen, %
 @kitem %
-In FRAME mode, resize frame's height and width to about argument percent
+In FRAMES mode, resize frame's height and width to about argument percent
 of the screen size.
 
 @kindex screen, H
 @kitem H
-In FRAME mode, resize frame's height to about argument percent of the
+In FRAMES mode, resize frame's height to about argument percent of the
 screen size.
 
 @kindex screen, W
 @kitem W
-In FRAME mode, resize frame's width to about argument percent of the
+In FRAMES mode, resize frame's width to about argument percent of the
 screen size.
 
 @kindex screen, up
@@ -3047,7 +3082,7 @@ based on mode.
 
 @kindex screen, l
 @kitem l
-In FRAME mode, lower the selected frame below all other Emacs session frames.
+In FRAMES mode, lower the selected frame below all other Emacs session frames.
 
 @kindex screen, o
 @kitem o
@@ -3058,7 +3093,7 @@ Select the next visible frame.
 
 @kindex screen, keypad number
 @kitem keypad number
-In FRAME mode, move the frame directly to the screen edge position given
+In FRAMES mode, move the frame directly to the screen edge position given
 by the numeric keypad layout.  For example, 3 moves the frame to the
 bottom right corner and 8 moves it to the middle of the top edge.
 Keypad numeric keys do not adjust the argument.  Respects the pixel edge
@@ -3071,7 +3106,7 @@ Each digit key operates just as a numeric keypad key 
would.
 
 @kindex screen, r
 @kitem r
-In FRAME mode, raise the selected frame above all other Emacs session frames.
+In FRAMES mode, raise the selected frame above all other Emacs session frames.
 
 @vindex hycontrol-frame-offset
 @kindex screen, [
@@ -3095,6 +3130,7 @@ configuration and wish to save it temporarily.
 After confirmation, restore the last saved window or frame configuration
 based on mode.
 
address@hidden hycontrol-keep-window-flag
 @kindex screen, f
 @kitem f
 Clone the selected window to a new similarly sized frame.
@@ -3121,18 +3157,23 @@ edge.  Respects the pixel edge offsets returned by
 
 @kindex screen, =
 @kitem =
-After confirmation, in WINDOW mode, make the current frame's windows
-approximately the same size.  In FRAME mode, make all visible frames
+After confirmation, in WINDOWS mode, make the current frame's windows
+approximately the same size.  In FRAMES mode, make all visible frames
 the size of the selected frame.
 
 @kindex screen, -
 @kitem -
-Make the selected window or frame (based on mode) as small as possible
-while still displaying it.
+In WINDOWS mode, shrink window to its smallest possible number of lines
+to display the entire buffer, if possible.  Otherwise or if the window
+is already displaying all of its lines, shrink it to about one line,
+if possible.
+
+In FRAMES mode, make the frame as small as possible while still
+displaying it.
+
 @kindex screen, +
 @kitem +
-Make the window or frame (based on mode) as large as possible.  In FRAME
-mode, a second press of this key restores its size to whatever it was
+Make the window or frame (based on mode) as large as possible.  In FRAMES 
mode, a second press of this key restores its size to whatever it was
 prior to the first use of this command.
 
 @cindex burying
@@ -3150,8 +3191,8 @@ selected window.
 @kindex screen, ~
 @kitem ~
 Swap two buffers between the selected window or frame and one other.
-In WINDOW mode, there must be precisely two windows in the selected
-frame.  In FRAME mode, the second frame must have a single window.
+In WINDOWS mode, there must be precisely two windows in the selected
+frame.  In FRAMES mode, the second frame must have a single window.
 
 @findex zoom-frm.el
 @cindex zooming
@@ -3166,7 +3207,7 @@ face size.  Zooming supports an argument of between 1 and 
9 (any other
 value sets the argument to 1).  The argument determines the number of
 sizes by which to zoom.
 
-FRAME mode zooming requires the separately available
+FRAMES mode zooming requires the separately available
 @file{zoom-frm.el} library.  WINDOW zooming works without this library.
 
 @kindex screen, t
@@ -7017,7 +7058,7 @@ a vertical scroll bar:
 @vindex assist-key-modeline-function
 @format
 @group
-If depressed within a window mode line:
+If depressed within a window modeline:
   ACTION KEY
      (1) clicked on the first blank character of a window's modeline,
          the window's buffer is buried (placed at the bottom of the
diff --git a/man/version.texi b/man/version.texi
index 3e4e1c5..55307b8 100644
--- a/man/version.texi
+++ b/man/version.texi
@@ -1,4 +1,4 @@
address@hidden UPDATED October 24, 2017
address@hidden UPDATED October 25, 2017
 @set UPDATED-MONTH OCT 2017
 @set EDITION 6.0.2f
 @set VERSION 6.0.2f



reply via email to

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