[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’s height and width to about argument
percent
+<dd><p>In FRAMES mode, resize frame’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’s height to about argument percent of
the
+<dd><p>In FRAMES mode, resize frame’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’s width to about argument percent of
the
+<dd><p>In FRAMES mode, resize frame’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’s
windows
-approximately the same size. In FRAME mode, make all visible frames
+<dd><p>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.
</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’s modeline,
the window’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
<a class="summary-letter" href="#Key-Index_ky_symbol-10"><b>?</b></a>
-<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>
+
+<a class="summary-letter" href="#Key-Index_ky_symbol-12"><b>[</b></a>
-<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>
-<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>
<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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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
<a class="summary-letter" href="#Key-Index_ky_symbol-10"><b>?</b></a>
-<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>
+
+<a class="summary-letter" href="#Key-Index_ky_symbol-12"><b>[</b></a>
-<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>
-<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>
<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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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
- [elpa] externals/hyperbole c45ce9b 52/53: Merge branch 'master' of http://git.savannah.gnu.org/r/hyperbole into externals/hyperbole, (continued)
- [elpa] externals/hyperbole c45ce9b 52/53: Merge branch 'master' of http://git.savannah.gnu.org/r/hyperbole into externals/hyperbole, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 45714d5 46/53: Minor doc and code improvements, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 9b2d75a 53/53: Merge branch 'externals/hyperbole' of git+ssh://git.sv.gnu.org/srv/git/emacs/elpa into externals/hyperbole, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole a76d502 34/53: Hyperbole 6.0.2f pre-release, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 450688e 39/53: Corrected mouse-position and mouse-pixel-position to return selected frame; added key sequences with args support., Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 55a1f04 06/53: 2017-09-18 Bob Weiner <address@hidden>, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole ff2c292 20/53: Minor bug fixes for Koutlines; updated Hyperbole manual version, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 5d6b9cd 05/53: 2017-09-10 Bob Weiner <address@hidden>, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole ce6fa24 41/53: Updated HY-NEWS with all new features for next major release., Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 152e2be 47/53: Highlighted explicit buttons when yanked; fixed region location bugs with hmouse-drag-thing and region kill, copy and yank, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 8fbfc1b 35/53: Renamed @ command functions to hycontrol-windows-grid. Updated manual and DEMO with newest commands.,
Robert Weiner <=
- [elpa] externals/hyperbole aba412a 32/53: HyControl changes: now a global minor mode; added @ window grid creation command; inverted selected mode-line for emphasis, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole bab59c8 25/53: V6.0.2d - Improved README and added git#=branch:file implicit button syntax., Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 7503a3d 37/53: Action Mouse Key drag to modeline splits destination window before displaying the target item/buffer; added css to format Hyperbole HTML manual, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 1aec56c 27/53: Added drags between frames and outside Emacs, new mode-line drags, dired item drags,, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 2be4dd0 48/53: Fixed a bunch of small issues and released Hyperbole 7., Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 9792af9 36/53: Added global {C-c @} binding. Fixed some mouse handling bugs. Mostly finalized DEMO and manual., Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 671408e 38/53: Prep and bug fixes for next major release; fixed Smart Mouse Key point location issue; renamed to kotl/kotl-autoloads.el, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 705d254 43/53: Many bug fixes; added HyRolo DEMO section; many Hyperbole Manual updates including images, Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole 6e80e7a 30/53: V6.0.2e: Rewrote HyControl for improved generality, event handling and to support key bindings., Robert Weiner, 2017/11/15
- [elpa] externals/hyperbole caf91d4 50/53: Merge branch 'master' of http://git.savannah.gnu.org/r/hyperbole into externals/hyperbole, Robert Weiner, 2017/11/15