branch: externals/hyperbole commit 5cd01a05f7d4813911f5238bff17a6c6946dd742 Author: Bob Weiner <r...@gnu.org> Commit: Bob Weiner <r...@gnu.org>
Add Jump (webjump library) to Find/Web menu; autosize selected items window grid --- ChangeLog | 19 ++++++++++++ FAST-DEMO | 4 +++ HY-ANNOUNCE | 73 ++++++++++++++++++++++++++++++++++---------- HY-NEWS | 10 ++++++ hsettings.el | 5 +-- hui-menu.el | 21 +++++++++---- hui-mini.el | 27 +++++++++++------ hycontrol.el | 87 +++++++++++++++++++++++++++++++++-------------------- man/hyperbole.html | 18 ++++++----- man/hyperbole.info | Bin 582049 -> 582132 bytes man/hyperbole.pdf | Bin 1333450 -> 1334426 bytes man/hyperbole.texi | 18 ++++++----- 12 files changed, 200 insertions(+), 82 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1ea457fc39..9a688ececb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2022-02-27 Bob Weiner <r...@gnu.org> + +* FAST-DEMO: + hycontrol.el (hycontrol-windows-grid-marked-items): Add. + (hycontrol-make-windows-grid): Use above function so can automatically + size grid when items are marked within a listing buffer. + +2022-02-26 Bob Weiner <r...@gnu.org> + +* hycontrol.el (hycontrol-windows-grid-by-buffer-list): + (hycontrol-windows-grid-by-file-list): + (hycontrol-windows-grid-minimum-size): Add this function and use in above functions. + +* man/hyperbole.texi (Menus): + hui-menu.el (hui-menu-web-search): + hui-mini.el (hui:menu-web-search): + hsettings.el (hyperbole-web-search-alist): Add support for Emacs "webjump.el" under + Jump menu item. Jumps to URLs rather than searching. + 2022-02-20 Bob Weiner <r...@gnu.org> * hypb.el (hypb:rgrep): Exclude .git and CVS directories. diff --git a/FAST-DEMO b/FAST-DEMO index 430bcc5728..d562e559af 100644 --- a/FAST-DEMO +++ b/FAST-DEMO @@ -126,6 +126,10 @@ Dired the Hyperbole home directory based on its variable. + Within this dired buffer, mark a few files with {m} and then press {@} to display + a window grid of those files only. That works in Buffer Menu and IBuffer modes + as well. + {C-x C-b C-x C-q M-x keep-lines RET .py$ RET C-x C-q} Display a buffer list of Python file buffers only diff --git a/HY-ANNOUNCE b/HY-ANNOUNCE index cb34d91989..762d7cdb5c 100644 --- a/HY-ANNOUNCE +++ b/HY-ANNOUNCE @@ -1,15 +1,48 @@ From: Bob Weiner <r...@gnu.org> -To: emacs-de...@gnu.org, gnu-emacs-sour...@gnu.org, emacs-tange...@gnu.org, hyperbole-us...@gnu.org, hyperbole-annou...@gnu.org -Subject: GNU Hyperbole Version 8: The Connect Everything Release +To: gnu-emacs-sour...@gnu.org, emacs-tange...@gnu.org, hyperbole-us...@gnu.org, hyperbole-annou...@gnu.org +Subject: GNU Hyperbole Version 8: The Epiphany Release --text follows this line-- -GNU Hyperbole 8.0.0, The Connect Everything Release, is now available on GNU ELPA. +======================================================================== +* Overview +======================================================================== + +GNU Hyperbole 8.0.0, The Epiphany Release, is now available on GNU ELPA. +Hyperbole is a unique hypertextual information management Emacs package +that works across all Emacs modes, letting the computer do the hard work +while you benefit from its sophisticated context-sensitive linking and +navigation capabilities. Hyperbole has always been one of the best +documented Emacs packages. With Version 8 comes excellent test coverage: +over 200 automated tests to ensure quality. We hope you'll give it a try. What's new in this release is described here: - www.gnu.org/s/hyperbole/HY-NEWS.html + www.gnu.org/s/hyperbole/HY-NEWS.html + + Everything back until release 7.1.3 is new since the last major + release announcement (over a year ago), so updates are extensive. + +If you prefer video introductions, visit the videos linked to below; otherwise, +skip to the next section. + + |-----------------------------------------------------+------------------------------| + | GNU Hyperbole Videos | Web Link | + |-----------------------------------------------------+------------------------------| + |-----------------------------------------------------+------------------------------| + | Overview and Demo | https://youtu.be/WKwZHSbHmPg | + | Covers all of Hyperbole | | + | Hyperlink timestamps to watch each short section | | + |-----------------------------------------------------+------------------------------| + | Quick Introduction | https://youtu.be/K1MNUctggwI | + |-----------------------------------------------------+------------------------------| + | Introduction to Buttons | https://youtu.be/zoEht66N2PI | + |-----------------------------------------------------+------------------------------| + | HyRolo, the fast contact/hierarchical record viewer | https://youtu.be/xdJGFdgKPFY | + |-----------------------------------------------------+------------------------------| + | HyControl, the fast Emacs frame and window manager | https://youtu.be/M3-aMh1ccJk | + |-----------------------------------------------------+------------------------------| + | Find/Web Search | https://youtu.be/8lMlJed0-OM | + |-----------------------------------------------------+------------------------------| - Everything back until release 7.1.3 is new since the last major - release announcement (over a year ago), so updates are extensive. ======================================================================== * Introduction @@ -43,30 +76,38 @@ everyday information management. It reduces cognitive load by using a single Action Key, {M-RET}, across many different contexts which automatically chooses the best action -Then as you grow with it across -time, it helps you build new capabilities that continue to speed your -work. +Then as you grow with it across time, it helps you build new capabilities +that continue to speed your work. ======================================================================== * Using Hyperbole ======================================================================== -To install: +To install within GNU Emacs, use: - {M-x package-install RET hyperbole RET} to install it. + {M-x package-install RET hyperbole RET} - It installs in about a minute and can be uninstalled even faster if - ever need be. Give it a try. + Hyperbole installs in less than a minute and can be uninstalled even + faster if ever need be. Give it a try. -Then to invoke its menu: +Then to invoke its minibuffer menu, use: {C-h h} or {M-x hyperbole RET} -The best way to get a feel for many of its capabilities is to -invoke the interactive DEMO and explore sections of interest: +The best way to get a feel for many of its capabilities is to invoke the +all new, interactive DEMO and explore sections of interest: {C-h h d d} +To permanantly activate Hyperbole in your Emacs initialization file, add +the line: + + (hyperbole-mode 1) + +Hyperbole is a minor mode that may be disabled at any time with: + + {C-u 0 hyperbole-mode RET} + The Hyperbole home page with screen shots is here: www.gnu.org/s/hyperbole diff --git a/HY-NEWS b/HY-NEWS index c2224efcaf..fc0fce009b 100644 --- a/HY-NEWS +++ b/HY-NEWS @@ -251,6 +251,11 @@ completely and exits from the menu. {C-h h} re-enables the global minor mode and display the top-level Hyperbole menu. + *** Minibuffer and Pulldown Menu Changes: + + - Find/Web/Jump: Use the Emacs webjump library to select a URL by name + and jump to it. + - Koutliner Formatting Menus: Full set of commands to import text and outline files to Koutlines and to export Koutlines to HTML for web viewing. See "(hyperbole)Inserting and Importing" @@ -259,6 +264,7 @@ - Button Modify Commands Removed: Use the Edit commands instead. This applies to the pull-down menu as well. + ** SMART (ACTION AND ASSIST) KEYS (See "(hyperbole)Smart Keys"). *** Explicit buttons may be created in any kind of temporary buffer @@ -635,6 +641,10 @@ pattern, finds all the matching files and then displays them in an auto-sized windows grid based on the number of files. + - Autosize Windows Grid of Marked Items: When in a Dired, Buffer Menu or IBuffer + buffer and items are marked, {@} will display them in an auto-sized window grid + rather than prompting for a size. + - Buffer/Window Swapping: Improved {~} so current buffer remains the same but the selected window changes. Also made frame buffer swapping work anytime there are two or more frames regardless of how many windows in each. See diff --git a/hsettings.el b/hsettings.el index 86d87b8f4e..6aec0e694b 100644 --- a/hsettings.el +++ b/hsettings.el @@ -3,7 +3,7 @@ ;; Author: Bob Weiner ;; ;; Orig-Date: 15-Apr-91 at 00:48:49 -;; Last-Mod: 12-Feb-22 at 10:42:19 by Mats Lidell +;; Last-Mod: 26-Feb-22 at 16:29:33 by Bob Weiner ;; ;; Copyright (C) 1991-2021 Free Software Foundation, Inc. ;; See the "HY-COPY" file for license information. @@ -235,13 +235,14 @@ Hyperbole, and then restart Emacs." ("Google" . "http://www.google.com/search?q=%s") ("gitHub" . "https://github.com/search?ref=simplesearch&q=%s") ("Images" . "http://www.google.com/images?hl=en&q=%s") + ("Jump" . webjump) ("Maps" . "http://maps.google.com/maps?q=%s") ("RFCs" . "https://tools.ietf.org/html/rfc%s") ("StackOverflow" . "https://stackoverflow.com/search?q=%s") ("Twitter" . "https://twitter.com/search?q=%s") ("Wikipedia" . "https://en.wikipedia.org/wiki/%s") ("Youtube" . "https://www.youtube.com/results?search_query=%s")) - "*Alist of (web-service-name . url-with-%s-parameter) elements. + "*Alist of (web-service-name . url-with-%s-parameter-or-cmd) elements. The first capitalized character of each web-service-name must be unique. This custom option is used in the Hyperbole Find/Web menu where the %s in the url-with-%s-parameter is replaced with an interactively diff --git a/hui-menu.el b/hui-menu.el index 87f280f773..6dde1c4302 100644 --- a/hui-menu.el +++ b/hui-menu.el @@ -3,7 +3,7 @@ ;; Author: Bob Weiner ;; ;; Orig-Date: 28-Oct-94 at 10:59:44 -;; Last-Mod: 20-Feb-22 at 21:52:10 by Bob Weiner +;; Last-Mod: 26-Feb-22 at 17:03:44 by Bob Weiner ;; ;; Copyright (C) 1994-2021 Free Software Foundation, Inc. ;; See the "HY-COPY" file for license information. @@ -156,11 +156,20 @@ Return t if cutoff, else nil." (defun hui-menu-web-search () ;; Pulldown menu - (mapcar (lambda (service) - (vector service - (list #'hyperbole-web-search service nil) - t)) - (mapcar #'car hyperbole-web-search-alist))) + (let* (service + action) + (mapcar (lambda (service-and-action) + (setq service (car service-and-action) + action (cdr service-and-action)) + (if (stringp action) + (vector service + (list #'hyperbole-web-search service nil) + t) + (vector service + ;; a command symbol + action + t))) + hyperbole-web-search-alist))) ;;; ************************************************************************ ;;; Public variables diff --git a/hui-mini.el b/hui-mini.el index c473432578..cf9b480e5c 100644 --- a/hui-mini.el +++ b/hui-mini.el @@ -3,7 +3,7 @@ ;; Author: Bob Weiner ;; ;; Orig-Date: 15-Oct-91 at 20:13:17 -;; Last-Mod: 20-Feb-22 at 21:52:10 by Bob Weiner +;; Last-Mod: 26-Feb-22 at 16:51:07 by Bob Weiner ;; ;; Copyright (C) 1991-2022 Free Software Foundation, Inc. ;; See the "HY-COPY" file for license information. @@ -438,14 +438,23 @@ constructs. If not given, the top level Hyperbole menu is used." (defun hui:menu-web-search () "Hyperbole minibuffer menu of web search engines." - (let ((web-mini-menu - (cons 'web - (cons '("Web>") - (mapcar (lambda (service) - (list service - (list #'hyperbole-web-search service) - (format "Search %s" service))) - (mapcar #'car hyperbole-web-search-alist)))))) + (let* (service + action + (web-mini-menu + (cons 'web + (cons '("Web>") + (mapcar (lambda (service-and-action) + (setq service (car service-and-action) + action (cdr service-and-action)) + (if (stringp action) + (list service + (list #'hyperbole-web-search service) + (format "Search %s" service)) + (list service + ;; a command symbol + action + "Prompt for webjump URL"))) + hyperbole-web-search-alist))))) web-mini-menu)) (defun hui-search-web () diff --git a/hycontrol.el b/hycontrol.el index 7a1443771f..aa6ee26915 100644 --- a/hycontrol.el +++ b/hycontrol.el @@ -3,7 +3,7 @@ ;; Author: Bob Weiner ;; ;; Orig-Date: 1-Jun-16 at 15:35:36 -;; Last-Mod: 20-Feb-22 at 22:45:47 by Bob Weiner +;; Last-Mod: 27-Feb-22 at 01:11:05 by Bob Weiner ;; ;; Copyright (C) 2016-2021 Free Software Foundation, Inc. ;; See the "HY-COPY" file for license information. @@ -1470,27 +1470,33 @@ Heights are given in screen percentages by the list (set-face-background 'mode-line fg)) (force-mode-line-update t))) +(defun hycontrol-windows-grid-marked-items () + "Return any marked items in Dired, Buffer Menu or IBuffer mode." + ;; Get the list of marked items if in an item list buffer and + ;; convert items to buffers. + (let ((items (cond ((and (derived-mode-p 'dired-mode) + (mapcar #'find-file-noselect (dired-get-marked-files)))) + ((and (eq major-mode 'Buffer-menu-mode) + (Buffer-menu-marked-buffers))) + ((and (eq major-mode 'ibuffer-mode) + (ibuffer-get-marked-buffers)))))) + ;; Ignore buffer list predicate filters when items exist so the + ;; items are not filtered out. + (setq hycontrol--invert-display-buffer-predicates + (when items 'ignore)) + ;; Return either non-nil items or frame's full buffer list. + items)) + (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. + "Return either any marked items in Dired, Buffer Menu or IBuffer mode or the existing frame's buffer list. +If selecting buffers by major-mode, then ignore any marked items." (if (and (boundp 'mode) (symbolp mode)) (buffer-list (selected-frame)) ;; Get the list of marked items if in an item list buffer and ;; convert items to buffers. - (let ((items (cond ((and (derived-mode-p 'dired-mode) - (mapcar #'find-file-noselect (dired-get-marked-files)))) - ((and (eq major-mode 'Buffer-menu-mode) - (Buffer-menu-marked-buffers))) - ((and (eq major-mode 'ibuffer-mode) - (ibuffer-get-marked-buffers)))))) - ;; Ignore buffer list predicate filters when items exist so the - ;; items are not filtered out. - (setq hycontrol--invert-display-buffer-predicates - (when items 'ignore)) - ;; Return either non-nil items or frame's full buffer list. - (or items (buffer-list (selected-frame)))))) + ;; Return either non-nil items or frame's full buffer list. + (or (hycontrol-windows-grid-marked-items) + (buffer-list (selected-frame))))) ;;; Split selected frame into a grid of windows given by row and ;;; column count, displaying different buffers in each window. @@ -1499,10 +1505,10 @@ Menu or IBuffer mode." "Display a grid of windows in the selected frame, sized according to prefix ARG. Left digit of ARG is the number of grid rows and the right digit is the number of grid columns. Use {C-h h h} to restore the prior frame -configuration. +configuration after a grid is displayed. If ARG is 0, prompt for a major mode whose buffers should be -displayed first in the grid windows, then prompt for the grid size. +displayed in the grid windows, then prompt for the grid size. If ARG is < 0, prompt for a glob-type file pattern and display files that match the pattern in an auto-sized windows grid. @@ -1512,13 +1518,12 @@ Otherwise, prompt for the grid size if ARG is an invalid size 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 (unless ARG is 0). +are displayed in the grid (unless ARG is 0). -Then the most recently used buffers are displayed in each window, +By default, 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. @@ -1556,24 +1561,31 @@ argument." (call-interactively #'hycontrol-windows-grid-by-major-mode))) (hhist:add hist-elt)))))) ;; Save prior frame configuration for easy return +(defun hycontrol-windows-grid-minimum-size (num-buffers) + "Return the minimum integer window grid size to display NUM-BUFFERS. Minimize number of rows rather than columns. +Size is a 2 digit whole number with the first digit number of rows and +the second, number of columns of windows." + (let* ((num-cols (ceiling (sqrt num-buffers))) + (num-rows (1- num-cols)) + (grid-size (+ (* num-rows 10) num-cols))) + (when (< (* num-rows num-cols) num-buffers) + (setq grid-size (+ 10 grid-size))) + grid-size)) + (defun hycontrol-windows-grid-by-buffer-list (buffers) "Display an automatically sized window grid showing list of BUFFERS." - (let* ((num-buffers (length buffers)) - (grid-digit (ceiling (sqrt num-buffers))) - (grid-size (+ (* grid-digit 10) grid-digit))) (if (null buffers) (error "(hycontrol-windows-grid-by-buffer-list): No matching buffers") - (mapc #'switch-to-buffer (reverse buffers)) - (hycontrol-make-windows-grid grid-size buffers)))) + (let ((grid-size (hycontrol-windows-grid-minimum-size (length buffers)))) + (mapc #'switch-to-buffer (reverse buffers)) + (hycontrol-make-windows-grid grid-size buffers)))) (defun hycontrol-windows-grid-by-file-list (files) "Display an automatically sized window grid showing list of FILES." (if (null files) (error "(hycontrol-windows-grid-by-file-list): No matching files") - (let* ((num-files (length files)) - (grid-digit (ceiling (sqrt num-files))) - (grid-size (+ (* grid-digit 10) grid-digit)) - (buffers (nreverse (mapcar #'find-file (reverse files))))) + (let ((grid-size (hycontrol-windows-grid-minimum-size (length files))) + (buffers (nreverse (mapcar #'find-file (reverse files))))) (hycontrol-make-windows-grid grid-size buffers)))) ;;;###autoload @@ -1596,7 +1608,7 @@ See documentation of `hycontrol-windows-grid' for further details." (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-windows-grid-buffer-list)))))) + (hycontrol-windows-grid-buffer-list)))))) (intern-soft (completing-read "(HyControl Grid Windows): Major mode of buffers to display: " mode-strings nil t nil nil (symbol-name major-mode)))))) (let ((hycontrol-display-buffer-predicate-list `((eq major-mode ',mode)))) @@ -1626,11 +1638,20 @@ See documentation of `hycontrol-windows-grid' for further details." (defun hycontrol-make-windows-grid (arg &optional buffer-list) "Display a grid of windows in the selected frame, sized according to prefix ARG. Left digit of ARG is the number of grid rows and the right digit is -the number of grid columns. +the number of grid columns. If ARG is invalid, prompt for grid size. + +If optional BUFFER-LIST is provided, use its length to determine +minimum grid size, ignoring ARG. See documentation of `hycontrol-windows-grid' for further details." (interactive "p") + (unless buffer-list + (setq buffer-list (hycontrol-windows-grid-marked-items))) + + (when buffer-list + (setq arg (hycontrol-windows-grid-minimum-size (length buffer-list)))) + ;; 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)) diff --git a/man/hyperbole.html b/man/hyperbole.html index 16498ff668..153ca848f7 100644 --- a/man/hyperbole.html +++ b/man/hyperbole.html @@ -370,7 +370,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P> <PRE> Edition 8.0.0pre -Printed February 20, 2022. +Printed February 27, 2022. Published by the Free Software Foundation, Inc. Author: Bob Weiner @@ -4523,21 +4523,23 @@ access to popular web search engines. <span id="index-C_002dc-_002f"></span> <span id="index-hyperbole_002dweb_002dsearch_002dbrowser_002dfunction"></span> -</li><li> Web/ - Select a search engine and term and search with them. - Hyperbole binds the key <kbd>{C-c /}</kbd> for quick +</li><li> Web/ - Select a search engine and term and search with them or + use Jump to go to a named URL (using webjump library). + +<p>Hyperbole binds the key <kbd>{C-c /}</kbd> for quick access to this menu, if it is not already bound - prior to Hyperbole’s initialization. The Cust/Web-Search + prior to Hyperbole’s initialization. The Cust/Web-Search-Search menu sets the option, <code>hyperbole-web-search-browser-function</code>, which determines whether web search results are displayed within Emacs or with an external web browser. A short video introduction to the Find/Web menu may be found at <a href="https://youtu.be/8lMlJed0-OM">https://youtu.be/8lMlJed0-OM</a>. - +</p> <p>The Find/Web menu looks like this: </p> <div class="example"> -<pre class="example">Web> Amazon Bing Dictionary Elisp Facebook Google gitHub - Images Maps RFCs StackOverflow Twitter Wikipedia Youtube +<pre class="example">Web> Amazon Bing Dictionary Elisp Facebook Google gitHub Images + Jump Maps RFCs StackOverflow Twitter Wikipedia Youtube </pre></div> </li></ul> @@ -4731,7 +4733,7 @@ displayed. </p> <p>With a prefix argument < 0, the user is prompted for a shell glob-type file pattern; matching files are read into buffers and displayed in an auto-sized -square windows grid. +windows grid. </p> <p>Otherwise, when the prefix argument is an invalid size, the windows grid command prompts for the grid size. diff --git a/man/hyperbole.info b/man/hyperbole.info index 40997ef12f..00a2c49cd8 100644 Binary files a/man/hyperbole.info and b/man/hyperbole.info differ diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf index fb07179c6a..a51702e611 100644 Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ diff --git a/man/hyperbole.texi b/man/hyperbole.texi index 2f53f945b7..32b1951312 100644 --- a/man/hyperbole.texi +++ b/man/hyperbole.texi @@ -7,7 +7,7 @@ @c Author: Bob Weiner @c @c Orig-Date: 6-Nov-91 at 11:18:03 -@c Last-Mod: 20-Feb-22 at 22:50:22 by Bob Weiner +@c Last-Mod: 27-Feb-22 at 01:28:50 by Bob Weiner @c %**start of header (This is for running Texinfo on a region.) @setfilename hyperbole.info @@ -156,7 +156,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P> <PRE> Edition 8.0.0pre -Printed February 20, 2022. +Printed February 27, 2022. Published by the Free Software Foundation, Inc. Author: Bob Weiner @@ -198,7 +198,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @example Edition 8.0.0pre -February 20, 2022 +February 27, 2022 Published by the Free Software Foundation, Inc. Author: Bob Weiner @@ -3781,10 +3781,12 @@ SaveLines - Following point, keep only lines that match regexp. @vindex hyperbole-web-search-browser-function @item -Web/ - Select a search engine and term and search with them. +Web/ - Select a search engine and term and search with them or + use Jump to go to a named URL (using webjump library). + Hyperbole binds the key @bkbd{C-c /} for quick access to this menu, if it is not already bound - prior to Hyperbole's initialization. The Cust/Web-Search + prior to Hyperbole's initialization. The Cust/Web-Search-Search menu sets the option, @code{hyperbole-web-search-browser-function}, which determines whether web search results are displayed within Emacs or with an external web browser. A short @@ -3795,8 +3797,8 @@ Web/ - Select a search engine and term and search with them. @smallexample @noindent -Web> Amazon Bing Dictionary Elisp Facebook Google gitHub - Images Maps RFCs StackOverflow Twitter Wikipedia Youtube +Web> Amazon Bing Dictionary Elisp Facebook Google gitHub Images + Jump Maps RFCs StackOverflow Twitter Wikipedia Youtube @end smallexample @end itemize @@ -3967,7 +3969,7 @@ displayed. With a prefix argument < 0, the user is prompted for a shell glob-type file pattern; matching files are read into buffers and displayed in an auto-sized -square windows grid. +windows grid. Otherwise, when the prefix argument is an invalid size, the windows grid command prompts for the grid size.