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

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

[elpa] externals/hyperbole ab16a35 06/20: * Changes: Renamed this file f


From: Robert Weiner
Subject: [elpa] externals/hyperbole ab16a35 06/20: * Changes: Renamed this file from ChangeLog since Elpa release builds
Date: Tue, 9 Aug 2016 19:17:07 +0000 (UTC)

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

    * Changes: Renamed this file from ChangeLog since Elpa release builds
        overwrite any file named ChangeLog with git log information which
        has less history than Hyperbole's Changes.
    
    * hui-mini.el (hui-search-web): Added so can invoke the Hyperbole
        Find/Web search menu directly.
      hyperbole.el (hkey-initialize): Bound above command to {C-c /}.
    
    * hsettings.el (hyperbole-web-search-browser-function):
                   (hyperbole-web-search-alist):
                   (hyperbole-web-search):  Added.
      hui-mini.el (hui:menu-web-search): Added and called within hui:menus.
      hui-menu.el (hui-menu-web-search): Added and called in 
infodock-hyperbole-menu.
    
    * hinit.el (hyperb:init-menubar): Fixed so sets after-init-hook only
        if not after-init-time.  Also forced a return value of nil.
      hui-menu.el (hyperbole-menubar-menu): Changed so this always updates
        the menubar with the latest version of the Hyperbole menu; previously
        it only added the menu if it was not there.
---
 ChangeLog => Changes |   26 ++-
 hinit.el             |   16 +-
 hsettings.el         |   54 +++++
 hui-menu.el          |   88 ++++----
 hui-mini.el          |  613 ++++++++++++++++++++++++++------------------------
 hui-mouse.el         |   13 +-
 hyperbole.el         |    3 +
 7 files changed, 465 insertions(+), 348 deletions(-)

diff --git a/ChangeLog b/Changes
similarity index 99%
rename from ChangeLog
rename to Changes
index ec57656..fdfbf54 100644
--- a/ChangeLog
+++ b/Changes
@@ -1,15 +1,37 @@
 -- Almost all changes listed herein are new as of 2016. --
 
+2016-07-31  Bob Weiner  <address@hidden>
+
+* Changes: Renamed this file from ChangeLog since Elpa release builds
+    overwrite any file named ChangeLog with git log information which
+    has less history than Hyperbole's Changes.
+
+* hui-mini.el (hui-search-web): Added so can invoke the Hyperbole
+    Find/Web search menu directly.
+  hyperbole.el (hkey-initialize): Bound above command to {C-c /}.
+
+* hsettings.el (hyperbole-web-search-browser-function):
+               (hyperbole-web-search-alist):
+               (hyperbole-web-search):  Added.
+  hui-mini.el (hui:menu-web-search): Added and called within hui:menus.
+  hui-menu.el (hui-menu-web-search): Added and called in 
infodock-hyperbole-menu.
+
+* hinit.el (hyperb:init-menubar): Fixed so sets after-init-hook only
+    if not after-init-time.  Also forced a return value of nil.
+  hui-menu.el (hyperbole-menubar-menu): Changed so this always updates
+    the menubar with the latest version of the Hyperbole menu; previously
+    it only added the menu if it was not there.
+
 2016-07-29  Bob Weiner  <address@hidden>
 
+* README.md: Added menu images and screenshots for easy access.
+
 * hui-mouse.el (action-key-eol-function, assist-key-eol-function): Added these 
2
     options to control what the Action and Assist Keys do at the end of a line.
     Default behaviors remain as before but now one can set these to `complete'
     for example to mimic standard Emacs behavior at end of lines, rather than
     scrolling, if desired.
 
-* README.md: Added menu images and screenshots for easy access.
-
 2016-07-28  Bob Weiner  <address@hidden>
 
 * hyperbole.el: Updated the header fields to better match GNU standards for use
diff --git a/hinit.el b/hinit.el
index 2483485..dd3acd2 100644
--- a/hinit.el
+++ b/hinit.el
@@ -39,15 +39,17 @@
 
 ;;;###autoload
 (defun hyperb:init-menubar ()
-  "Add a pulldown menu for Hyperbole, if appropriate."
+  "Add a pulldown menu for Hyperbole after Emacs is initialized."
   (interactive)
   (unless (featurep 'infodock)
-    ;; Initialize now for when this is loaded after startup.
-    (and (or hyperb:emacs-p (and (boundp 'current-menubar) current-menubar))
-        after-init-time
-        (hyperbole-menubar-menu))
-    ;; Initialize at startup.  This really is needed.
-    (add-hook 'after-init-hook #'hyperbole-menubar-menu)))
+    ;; Initialize now since Emacs startup has finished.
+    (if (and (or hyperb:emacs-p (and (boundp 'current-menubar) 
current-menubar))
+            after-init-time)
+       (hyperbole-menubar-menu)
+      ;; Defer initialization until after Emacs startup.  This really is 
needed.
+      (add-hook 'after-init-hook #'hyperbole-menubar-menu))
+    ;; Avoid returning the large Hyperbole menu.
+    nil))
 
 ;;; ************************************************************************
 ;;; Menu Support Functions
diff --git a/hsettings.el b/hsettings.el
index 994cfaa..719ed54 100644
--- a/hsettings.el
+++ b/hsettings.el
@@ -99,6 +99,60 @@ down a windowful."
 ;;
 ;; and Hyperbole should be loaded after this setting is made.
 
+;; Web search setttings for Hyperbole Find/Web menu.
+(require 'browse-url)
+
+(defcustom hyperbole-web-search-browser-function browse-url-browser-function
+  "*Function of one url argument called by any Hyperbole Find/Web search."
+  :type 'boolean
+  :group 'hyperbole-commands)
+
+(defcustom hyperbole-web-search-alist
+  '(("Amazon" . "http://www.amazon.com/s/field-keywords=%s";)
+    ("Bing" . "http://www.bing.com/search?q=%s";)
+    ;; Wikipedia Dictionary
+    ("Dictionary" . "https://en.wiktionary.org/wiki/%s";)
+    ("Elisp" . "http://www.google.com/search?q=%s+filetype:el";)
+    ;; Facebook Hashtags
+    ("Facebook" . "https://www.facebook.com/hashtag/%s";)
+    ;; To search for a Facebook user, use "https://www.facebook.com/%s";.
+    ("Google" . "http://www.google.com/search?q=%s";)
+    ("Hub(git)" . "https://github.com/search?ref=simplesearch&q=%s";)
+    ("Images" . "http://www.google.com/images?hl=en&q=%s";)
+    ("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.
+The first character of each web-service-name must be unique.
+This is used in the Hyperbole Find/Web menu where the %s parameter is
+replaced with an interactively obtained search string."
+  :type '(alist :key-type string :value-type string)
+  :group 'hyperbole-commands)
+
+(defun hyperbole-web-search (&optional service-name search-term)
+  "Search web SERVICE-NAME for SEARCH-TERM.
+Both arguments are optional and are prompted for when not given or when null.
+Uses `hyperbole-web-search-alist' to match each service to its search url.
+Uses `hyperbole-web-search-browser-function' and the `browse-url'
+package to display search results."
+  (interactive (list nil nil))
+  (while (or (not (stringp service-name)) (equal service-name ""))
+    (setq service-name (completing-read "Search service: " 
hyperbole-web-search-alist
+                                       nil t)))
+  (while (or (not (stringp search-term)) (equal search-term ""))
+    (setq search-term (read-string (format "Search %s for: " service-name))))
+  (if (assoc service-name hyperbole-web-search-alist)
+      (let ((browse-url-browser-function
+            hyperbole-web-search-browser-function))
+       (browse-url
+        (format (cdr (assoc service-name hyperbole-web-search-alist))
+                search-term)))
+    (user-error "(Hyperbole): Invalid web search service `%s' or search term 
`%s'"
+               service-name search-term)))
+
 ;;; ************************************************************************
 ;;; GNU EMACS AND XEMACS CONFIGURATION
 ;;; ************************************************************************
diff --git a/hui-menu.el b/hui-menu.el
index c5b73b8..259c960 100644
--- a/hui-menu.el
+++ b/hui-menu.el
@@ -24,30 +24,26 @@
 
 ;; Add Hyperbole menu to menubar.
 (defun hyperbole-menubar-menu ()
-  "Add the Hyperbole menu to the global menubar."
-  (cond ((and (boundp 'menubar-configuration)
-             (not (memq 'Hyperbole menubar-configuration)))
-        ;; Hyperbole may be included as part of the menubar but
-        ;; may be invisible due to a menubar configuration
-        ;; setting.  Make it visible here.
-        (if (fboundp 'customize-set-variable)
-            (customize-set-variable 'menubar-configuration
-                                    (cons 'Hyperbole menubar-configuration))
-          (setq menubar-configuration
-                (cons 'Hyperbole menubar-configuration)))
+  "Add to or update the Hyperbole menu on the global menubar."
+  (cond ((boundp 'menubar-configuration)
+        (unless (memq 'Hyperbole menubar-configuration)
+          ;; Hyperbole may be included as part of the menubar but
+          ;; may be invisible due to a menubar configuration
+          ;; setting.  Make it visible here.
+          (if (fboundp 'customize-set-variable)
+              (customize-set-variable 'menubar-configuration
+                                      (cons 'Hyperbole menubar-configuration))
+            (setq menubar-configuration
+                  (cons 'Hyperbole menubar-configuration))))
         (set-menubar-dirty-flag))
-       ((not (if hyperb:emacs-p
-                 (global-key-binding [menu-bar Hyperbole])
-               (and (boundp 'current-menubar)
-                    (car (find-menu-item current-menubar '("Hyperbole"))))))
-        (let ((add-before (cond ((and (boundp 'infodock-menubar-type)
-                                      (eq infodock-menubar-type 
'menubar-infodock))
-                                 "Key")
-                                ((global-key-binding [menu-bar Koutline])
-                                 "Koutline")
-                                ((global-key-binding [menu-bar OO-Browser])
-                                 "OO-Browser"))))
-          (add-submenu nil (infodock-hyperbole-menu) add-before))))
+       (t (let ((add-before (cond ((and (boundp 'infodock-menubar-type)
+                                        (eq infodock-menubar-type 
'menubar-infodock))
+                                   "Key")
+                                  ((global-key-binding [menu-bar Koutline])
+                                   "Koutline")
+                                  ((global-key-binding [menu-bar OO-Browser])
+                                   "OO-Browser"))))
+            (add-submenu nil (infodock-hyperbole-menu) add-before))))
   ;; Force a menu-bar update.
   (force-mode-line-update))
 
@@ -300,22 +296,26 @@
                     ["Types"
                       (hui:htype-help-current-window 'actypes) t]
                     )
-                  '("Find"
-                    ["Manual"   (id-info-item "menu, Find") t]
-                    "----"
-                    ;; Show numbered line matches in all specified files.
-                    ["Grep-Files"           hypb:rgrep t]
-                    ;; Show numbered line matches for regexp in all file-based 
buffers.
-                    ["Locate-Files"         locate t]
-                    ;; Show numbered line matches for regexp in all file-based 
buffers.
-                    ["Match-File-Buffers"   moccur t]
-                    ;; Show numbered line matches for regexp from this buffer.
-                    ["Occur-Here"           occur  t]
-                    ;; Following point, remove all lines that match regexp.
-                    ["Remove-Lines-Here"    hypb:remove-lines t]
-                    ;; Following point, keep only lines that match regexp.
-                    ["Save-Lines-Here"      hypb:save-lines t]
-                    )
+                  (nconc
+                   '("Find"
+                     ["Manual"   (id-info-item "menu, Find") t]
+                     "----"
+                     ;; Show numbered line matches in all specified files.
+                     ["Grep-Files"           hypb:rgrep t]
+                     ;; Show numbered line matches for regexp in all 
file-based buffers.
+                     ["Locate-Files"         locate t]
+                     ;; Show numbered line matches for regexp in all 
file-based buffers.
+                     ["Match-File-Buffers"   moccur t]
+                     ;; Show numbered line matches for regexp from this buffer.
+                     ["Occur-Here"           occur  t]
+                     ;; Following point, remove all lines that match regexp.
+                     ["Remove-Lines-Here"    hypb:remove-lines t]
+                     ;; Following point, keep only lines that match regexp.
+                     ["Save-Lines-Here"      hypb:save-lines t]
+                     "----"
+                     "Search-with:")
+                   (hui-menu-web-search)
+                     )
                   '("Global-Button"
                     :filter hui-menu-global-buttons
                     ["Create" hui:gbut-create t]
@@ -461,6 +461,16 @@ Return t if cutoff, else nil."
    (hui-menu-of-frames)
    (hui-menu-of-windows)))
 
+(defun hui-menu-web-search ()
+  ;; Pulldown menu
+  (let ((web-pulldown-menu
+        (mapcar (lambda (service)
+                  (vector service
+                          (list #'hyperbole-web-search service nil)
+                          t))
+                (mapcar 'car hyperbole-web-search-alist))))
+    web-pulldown-menu))
+
 ;;; ************************************************************************
 ;;; Private variables
 ;;; ************************************************************************
diff --git a/hui-mini.el b/hui-mini.el
index 1d0d550..898632c 100644
--- a/hui-mini.el
+++ b/hui-mini.el
@@ -37,301 +37,6 @@
 
 (defvar hui:menus nil
   "Hyperbole minibuffer command menus.")
-(setq
- hui:menus
- (delq nil
- (list (cons
-       'hyperbole
-       (append
-        (let ((version (if (= (aref hyperb:version 0) ?0)
-                           (substring hyperb:version 1)
-                         hyperb:version)))
-          (list (list (concat "Hy" version ">"))))
-        (delq nil
-              (list
-               '("Act"         hui:hbut-act
-                 "Activates button at point or prompts for explicit button.")
-               '("Butfile/"    (menu . butfile)
-                 "Quick access button files menus.")
-               '("Cust/"       (menu . cust)
-                 "Customizes Hyperbole by setting major options.")
-               '("Doc/"        (menu . doc)
-                 "Quick access to Hyperbole documentation.")
-               '("Ebut/"       (menu . ebut)
-                 "Explicit button commands.")
-               '("Find/"       (menu . find)
-                 "Find matching line commands.")
-               '("Gbut/"       (menu . gbut)
-                 "Global button commands.")
-               '("Hist"        (hhist:remove current-prefix-arg)
-                 "Jumps back to location prior to last Hyperbole button 
follow.")
-               '("Ibut/"       (menu . ibut)
-                 "Implicit button and button type commands.")
-               (if hyperb:kotl-p
-                   '("Kotl/"   (menu . otl)
-                     "Autonumbered outlining and hyperlink capabilities."))
-               '("Msg/"        (menu . msg)
-                 "Mail and News messaging capabilities.")
-               '("Rolo/"       (menu . hyrolo)
-                 "Hierarchical, multi-file rolo lookup and edit commands.")
-               '("Screen/"     (menu . screen)
-                 "Screen display management commands.")
-               '("Win/"        (menu . win)
-                 "Window configuration management commands.")
-               ))))
-       '(butfile .
-        (("Butfile>")
-         ("DirFile"      (find-file hbmap:filename)
-          "Edits directory-specific button file.")
-         ("Info"
-          (id-info "(hyperbole)Button Files")
-          "Displays manual section on button files.") 
-         ("PersonalFile" (find-file
-                           (expand-file-name hbmap:filename hbmap:dir-user))
-          "Edits user-specific button file.")
-         ))
-       '(cust .
-         (("Cust>")
-         ("All-Options" (customize-browse 'hyperbole)
-          "Display tree of Hyperbole customizable options by group.")
-         ("Debug-Toggle" hkey-toggle-debug
-          "Toggle display of Smart Key context after each press, for 
debugging.")
-         ("Find-File-URLs" hpath:find-file-urls-mode
-          "Toggle find-file support for ftp and www URLs.")
-         ("Isearch-Invisible" hypb:toggle-isearch-invisible
-          "Toggle whether isearch searches invisible text or not.")
-         ("KeyBindings/" (menu . cust-keys) "Rebinds global Hyperbole keys.")
-         ("Msg-Toggle-Ebuts" hyperbole-toggle-messaging
-          "Toggle Hyperbole support for explicit buttons in mail and news 
buffers.")
-         ("Override-Local-Keys" hkey-toggle-override-local-bindings
-          "Toggle whether conflicting local key bindings are overridden by 
Hyperbole.")
-         ("Referents/" (menu . cust-referents)
-          "Sets where Hyperbole button referents are displayed.")
-         ("Smart-Key-at-Eol/" (menu . cust-eol)
-          "Sets how scrolling via end of line presses works.")
-         ("Toggle-Rolo-Dates" hyrolo-toggle-datestamps
-          "Toggle whether date stamps are updated when rolo entries are 
edited.")
-         ("URL-Display/" (menu . cust-urls) "Sets where URLs are displayed.")))
-       '(cust-eol .
-         (("Smart Key press at eol scrolls>")
-         ("Proportionally" (setq smart-scroll-proportional t))
-         ("Windowful"      (setq smart-scroll-proportional nil))))
-       '(cust-keys .
-         (("Change Keys>")
-         ("ActionKey"   (hui:bind-key #'hkey-either))            ;; {M-RET}
-         ("ButRename"   (hui:bind-key #'hui:ebut-rename))        ;; {C-c C-r}
-         ("DragKey"     (hui:bind-key #'hkey-operate))           ;; {M-o}
-         ("HypbMenu"    (hui:bind-key #'hyperbole))              ;; {C-h h}
-         ("MarkThing"   (hui:bind-key #'hui-select-thing))       ;; {C-c RET}
-         ("SmartHelp"   (hui:bind-key #'hkey-help))              ;; {C-h A}
-         ("WinControl"  (hui:bind-key #'hycontrol-windows))      ;; {C-c \}
-         )) 
-       '(cust-referents .
-         (("Ref display>")
-         ("Any-Frame" (setq hpath:display-where 'other-frame))
-         ("Current-Win" (setq hpath:display-where 'this-window))
-         ("Diff-Frame-One-Win"
-          (setq hpath:display-where 'other-frame-one-window))
-         ("New-Frame" (setq hpath:display-where 'new-frame))
-         ("Other-Win" (setq hpath:display-where 'other-window))
-         ("Single-Win" (setq hpath:display-where 'one-window))))
-       '(cust-urls .
-         (("URL display>")
-         ("Chrome" (setq browse-url-browser-function #'browse-url-chrome))
-         ("Default" (setq browse-url-browser-function
-                          (if (and (boundp 'browse-url-generic-program) 
(stringp browse-url-generic-program))
-                              #'browse-url-generic
-                            #'browse-url-default-browser)))
-         ("EWW" (setq browse-url-browser-function #'eww-browse-url))
-         ("Firefox" (setq browse-url-browser-function #'browse-url-firefox))
-         ("KDE" (setq browse-url-browser-function #'browse-url-kde))
-         ("XTerm" (setq browse-url-browser-function #'browse-url-text-xterm))
-         ))
-       '(doc .
-        (("Doc>")
-         ("About"        (hypb:display-file-with-logo
-                          (expand-file-name "HY-ABOUT" hyperb:dir))
-          "Overview of Hyperbole.")
-         ("Demo"         (hypb:display-file-with-logo
-                           (expand-file-name "DEMO" hyperb:dir))
-          "Demonstrates Hyperbole features.")
-         ("Files"        (find-file-read-only
-                           (expand-file-name "MANIFEST" hyperb:dir))
-          "Summarizes Hyperbole system files.  Click on an entry to view it.")
-         ("Glossary"
-          (id-info "(hyperbole)Glossary")
-          "Glossary of Hyperbole terms.")
-         ("Info"         (id-info "(hyperbole)Top")
-          "Online Info version of Hyperbole manual.")
-         ("New"          (hypb:display-file-with-logo
-                          (expand-file-name "HY-NEWS" hyperb:dir))
-          "Recent changes to Hyperbole.")
-         ("SmartKeys"    (find-file-read-only (hypb:hkey-help-file))
-          "Summarizes Smart Key mouse or keyboard handling.")
-         ("Types/"       (menu . types)
-          "Provides documentation on Hyperbole types.")
-        ))
-       '(ebut .
-        (("EButton>")
-         ("Act"    hui:hbut-act
-           "Activates button at point or prompts for explicit button.")
-         ("Create" hui:ebut-create)
-         ("Delete" hui:ebut-delete)
-         ("Edit"   hui:ebut-modify "Modifies any desired button attributes.")
-         ("Help/"  (menu . ebut-help) "Summarizes button attributes.")
-         ("Info"
-          (id-info "(hyperbole)Explicit Buttons")
-          "Displays manual section on explicit buttons.")
-         ("Modify" hui:ebut-modify "Modifies any desired button attributes.")
-         ("Rename" hui:ebut-rename "Relabels an explicit button.")
-         ("Search" hui:ebut-search
-          "Locates and displays personally created buttons in context.")
-         ("Types"  (hui:htype-help-current-window 'actypes)
-          "Displays documentation for one or all action types used by explicit 
buttons.")
-         ))
-       '(ebut-help .
-        (("Help on>")
-         ("BufferButs"   (hui:hbut-report -1)
-          "Summarizes all explicit buttons in buffer.")
-         ("CurrentBut"   (hui:hbut-report)
-          "Summarizes only current button in buffer.")
-         ("OrderedButs"  (hui:hbut-report 1)
-          "Summarizes explicit buttons in lexicographically order.")
-         ))
-       '(find .
-         (("Find>")
-         ("GrepFiles"           hypb:rgrep  "Show numbered line matches in all 
specified files.")
-         ("LocateFiles"         hypb:locate "Locate matching file names 
anywhere across a system.")
-         ("MatchFileBuffers"    moccur      "Show numbered line matches for 
regexp in all file-based buffers.")
-         ("OccurHere"           occur       "Show numbered line matches for 
regexp from this buffer.")
-         ("RemoveLines"         hypb:remove-lines "Following point, remove all 
lines that match regexp.")
-         ("SaveLines"           hypb:save-lines  "Following point, keep only 
lines that match regexp.")
-         ))
-       '(gbut .
-        (("GButton>")
-         ("Act"    gbut:act        "Activates global button by name.") 
-         ("Create" hui:gbut-create "Adds a global button to gbut:file.")
-         ("Edit"   hui:gbut-modify "Modifies global button attributes.")
-         ("Help"   gbut:help       "Reports on a global button by name.") 
-         ("Info"   (id-info "(hyperbole)Global Buttons")
-          "Displays manual section on global buttons.")
-         ("Modify" hui:gbut-modify "Modifies global button attributes.")
-         ))
-       '(ibut .
-        (("IButton>")
-         ("Act"    hui:hbut-current-act  "Activates implicit button at 
point.") 
-         ("DeleteIButType"   (hui:htype-delete 'ibtypes)
-          "Deletes specified button type.")
-         ("Help"   hui:hbut-help   "Reports on button's attributes.")
-         ("Info"   (id-info "(hyperbole)Implicit Buttons")
-          "Displays manual section on implicit buttons.")
-         ("Types"  (hui:htype-help 'ibtypes 'no-sort)
-          "Displays documentation for one or all implicit button types.")
-         ))
-       '(msg .
-        (("Msg>")
-         ("Compose-Hypb-Mail"
-          (hmail:compose "address@hidden" '(hact 'hyp-config))
-          "Send a message to the Hyperbole discussion list.")
-         ("Join-Hypb-List"
-          (hmail:compose "address@hidden" nil
-                         "Just send the message; subject and body are 
ignored.")
-          "Subscribe to the Hyperbole discussion list.")
-         ("Leave-Hypb-List"
-          (hmail:compose "address@hidden" nil
-                         "Just send the message; subject and body are 
ignored.")
-          "Unsubscribe from the Hyperbole discussion list.")
-         ("Report-Hypb-Bug"
-          (hmail:compose "address@hidden" '(hact 'hyp-config))
-          "Send a message to the Hyperbole bug reporting list.")
-         ("Subscribe-Hypb-Bug"
-          (hmail:compose "address@hidden" nil
-                         "Just send the message; subject and body are 
ignored.")
-          "Subscribe to the Hyperbole bug reporting list.")
-         ("Unsub-Hypb-Bug"
-          (hmail:compose "address@hidden" nil
-                         "Just send the message; subject and body are 
ignored.")
-          "Unsubscribe from the Hyperbole bug reporting list.")
-         ))
-       (if hyperb:kotl-p
-          '(otl
-            . (("Kotl>")
-               ("All"       kotl-mode:show-all "Expand all collapsed cells.") 
-               ("Blanks"    kvspec:toggle-blank-lines
-                "Toggle blank lines between cells on or off.")
-               ("Create"    kfile:find   "Create or edit an outline file.")
-               ("Downto"    kotl-mode:hide-sublevels
-                "Hide all cells in outline deeper than a particular level.")
-               ("Examp"     kotl-mode:example
-                "Display a self-descriptive example outline file.")
-               ("Hide"      (progn (kotl-mode:is-p)
-                                   (kotl-mode:hide-tree (kcell-view:label)))
-                "Collapse tree rooted at point.")
-               ("Info"
-                (id-info "(hyperbole)Koutliner")
-                "Display manual section on Hyperbole Koutliner.")
-               ("Kill"      kotl-mode:kill-tree
-                "Kill ARG following trees starting from point.")
-               ("Link"      klink:create
-                "Create and insert an implicit link at point.")
-               ("Overvw"  kotl-mode:overview
-                "Show first line of each cell.")
-               ("Show"      (progn (kotl-mode:is-p)
-                                   (kotl-mode:show-tree (kcell-view:label)))
-                "Expand tree rooted at point.")
-               ("Top"       kotl-mode:top-cells
-                "Hide all but top-level cells.") 
-               ("Vspec"     kvspec:activate
-                "Prompt for and activate a view specifiction.")
-               )))
-       '(hyrolo .
-        (("Rolo>")
-         ("Add"              hyrolo-add          "Add a new rolo entry.")
-         ("Display"          hyrolo-display-matches
-          "Display last found rolo matches again.")
-         ("Edit"             hyrolo-edit   "Edit an existing rolo entry.")
-         ("Info"             (id-info "(hyperbole)HyRolo")
-          "Displays manual section on Hyperbole rolo.")
-         ("Kill"             hyrolo-kill   "Kill an existing rolo entry.")
-         ("Mail"             hyrolo-mail-to "Mail to address following point.")
-         ("Order"            hyrolo-sort   "Order rolo entries in a file.")
-         ("RegexFind"        hyrolo-grep   "Find entries containing a regexp.")
-         ("StringFind"       hyrolo-fgrep  "Find entries containing a string.")
-         ("WordFind"         hyrolo-word   "Find entries containing words.")
-         ("Yank"             hyrolo-yank
-          "Find an entry containing a string and insert it at point.")
-         ))
-       '(screen .
-        (("Screen>")
-         ("FramesControl"    hycontrol-frames
-          "Interactively delete, jump to, move, replicate, and resize frames.")
-         ("WindowsControl"   hycontrol-windows
-          "Interactively delete, jump to, rebalance, resize, and split 
windows.")))
-       '(types .
-        (("Types>")
-         ("ActionTypes"      (hui:htype-help-current-window 'actypes)
-          "Displays documentation for one or all action types.")
-         ("IButTypes"        (hui:htype-help-current-window 'ibtypes 'no-sort)
-          "Displays documentation for one or all implicit button types.")
-         ))
-       '(win .
-        (("WinConfig>")
-         ("AddName"        hywconfig-add-by-name
-          "Name current window configuration.")
-         ("DeleteName"     hywconfig-delete-by-name
-          "Delete named window configuration.")
-         ("RestoreName"    hywconfig-restore-by-name
-          "Restore frame to window configuration given by name.")
-         ("PopRing"        (progn (hywconfig-delete-pop)
-                                  (hyperbole 'win))
-          "Restores window configuration from ring and removes it from ring.")
-         ("SaveRing"       (hywconfig-ring-save)
-          "Saves current window configuration to ring.")
-         ("YankRing"       (progn (call-interactively 'hywconfig-yank-pop)
-                                  (hyperbole 'win))
-          "Restores next window configuration from ring.")
-         ))
-       )))
 
 ;;; ************************************************************************
 ;;; Public functions
@@ -635,6 +340,22 @@ constructs.  If not given, the top-level Hyperbole menu is 
used."
        (concat menu-prompt (mapconcat 'car (cdr menu-alist) " "))
       menu-line)))
 
+(defun hui:menu-web-search ()
+  (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))))))
+    web-mini-menu))
+
+(defun hui-search-web ()
+  "Prompt for a web search engine and search term and then perform the search."
+  (interactive)
+  (hyperbole 'web))
+
 ;;; ************************************************************************
 ;;; Private variables
 ;;; ************************************************************************
@@ -667,6 +388,308 @@ constructs.  If not given, the top-level Hyperbole menu 
is used."
       (define-key hui:menu-mode-map (char-to-string i) 'hui:menu-enter)
       (setq i (1+ i)))))
 
+;;; ************************************************************************
+;;; Hyperbole Minibuffer Menus
+;;; ************************************************************************
+
+(setq
+ hui:menus
+ (delq nil
+ (list (cons
+       'hyperbole
+       (append
+        (let ((version (if (= (aref hyperb:version 0) ?0)
+                           (substring hyperb:version 1)
+                         hyperb:version)))
+          (list (list (concat "Hy" version ">"))))
+        (delq nil
+              (list
+               '("Act"         hui:hbut-act
+                 "Activates button at point or prompts for explicit button.")
+               '("Butfile/"    (menu . butfile)
+                 "Quick access button files menus.")
+               '("Cust/"       (menu . cust)
+                 "Customizes Hyperbole by setting major options.")
+               '("Doc/"        (menu . doc)
+                 "Quick access to Hyperbole documentation.")
+               '("Ebut/"       (menu . ebut)
+                 "Explicit button commands.")
+               '("Find/"       (menu . find)
+                 "Find matching line commands.")
+               '("Gbut/"       (menu . gbut)
+                 "Global button commands.")
+               '("Hist"        (hhist:remove current-prefix-arg)
+                 "Jumps back to location prior to last Hyperbole button 
follow.")
+               '("Ibut/"       (menu . ibut)
+                 "Implicit button and button type commands.")
+               (if hyperb:kotl-p
+                   '("Kotl/"   (menu . otl)
+                     "Autonumbered outlining and hyperlink capabilities."))
+               '("Msg/"        (menu . msg)
+                 "Mail and News messaging capabilities.")
+               '("Rolo/"       (menu . hyrolo)
+                 "Hierarchical, multi-file rolo lookup and edit commands.")
+               '("Screen/"     (menu . screen)
+                 "Screen display management commands.")
+               '("Win/"        (menu . win)
+                 "Window configuration management commands.")
+               ))))
+       '(butfile .
+        (("Butfile>")
+         ("DirFile"      (find-file hbmap:filename)
+          "Edits directory-specific button file.")
+         ("Info"
+          (id-info "(hyperbole)Button Files")
+          "Displays manual section on button files.") 
+         ("PersonalFile" (find-file
+                           (expand-file-name hbmap:filename hbmap:dir-user))
+          "Edits user-specific button file.")
+         ))
+       '(cust .
+         (("Cust>")
+         ("All-Options" (customize-browse 'hyperbole)
+          "Display tree of Hyperbole customizable options by group.")
+         ("Debug-Toggle" hkey-toggle-debug
+          "Toggle display of Smart Key context after each press, for 
debugging.")
+         ("Find-File-URLs" hpath:find-file-urls-mode
+          "Toggle find-file support for ftp and www URLs.")
+         ("Isearch-Invisible" hypb:toggle-isearch-invisible
+          "Toggle whether isearch searches invisible text or not.")
+         ("KeyBindings/" (menu . cust-keys) "Rebinds global Hyperbole keys.")
+         ("Msg-Toggle-Ebuts" hyperbole-toggle-messaging
+          "Toggle Hyperbole support for explicit buttons in mail and news 
buffers.")
+         ("Override-Local-Keys" hkey-toggle-override-local-bindings
+          "Toggle whether conflicting local key bindings are overridden by 
Hyperbole.")
+         ("Referents/" (menu . cust-referents)
+          "Sets where Hyperbole button referents are displayed.")
+         ("Smart-Key-at-Eol/" (menu . cust-eol)
+          "Sets how scrolling via end of line presses works.")
+         ("Toggle-Rolo-Dates" hyrolo-toggle-datestamps
+          "Toggle whether date stamps are updated when rolo entries are 
edited.")
+         ("URL-Display/" (menu . cust-urls) "Sets where URLs are displayed.")))
+       '(cust-eol .
+         (("Smart Key press at eol scrolls>")
+         ("Proportionally" (setq smart-scroll-proportional t))
+         ("Windowful"      (setq smart-scroll-proportional nil))))
+       '(cust-keys .
+         (("Change Keys>")
+         ("ActionKey"   (hui:bind-key #'hkey-either))            ;; {M-RET}
+         ("ButRename"   (hui:bind-key #'hui:ebut-rename))        ;; {C-c C-r}
+         ("DragKey"     (hui:bind-key #'hkey-operate))           ;; {M-o}
+         ("HypbMenu"    (hui:bind-key #'hyperbole))              ;; {C-h h}
+         ("MarkThing"   (hui:bind-key #'hui-select-thing))       ;; {C-c RET}
+         ("SmartHelp"   (hui:bind-key #'hkey-help))              ;; {C-h A}
+         ("WinControl"  (hui:bind-key #'hycontrol-windows))      ;; {C-c \}
+         )) 
+       '(cust-referents .
+         (("Ref display>")
+         ("Any-Frame" (setq hpath:display-where 'other-frame))
+         ("Current-Win" (setq hpath:display-where 'this-window))
+         ("Diff-Frame-One-Win"
+          (setq hpath:display-where 'other-frame-one-window))
+         ("New-Frame" (setq hpath:display-where 'new-frame))
+         ("Other-Win" (setq hpath:display-where 'other-window))
+         ("Single-Win" (setq hpath:display-where 'one-window))))
+       '(cust-urls .
+         (("URL display>")
+         ("Chrome" (setq browse-url-browser-function #'browse-url-chrome))
+         ("Default" (setq browse-url-browser-function
+                          (if (and (boundp 'browse-url-generic-program) 
(stringp browse-url-generic-program))
+                              #'browse-url-generic
+                            #'browse-url-default-browser)))
+         ("EWW" (setq browse-url-browser-function #'eww-browse-url))
+         ("Firefox" (setq browse-url-browser-function #'browse-url-firefox))
+         ("KDE" (setq browse-url-browser-function #'browse-url-kde))
+         ("XTerm" (setq browse-url-browser-function #'browse-url-text-xterm))
+         ))
+       '(doc .
+        (("Doc>")
+         ("About"        (hypb:display-file-with-logo
+                          (expand-file-name "HY-ABOUT" hyperb:dir))
+          "Overview of Hyperbole.")
+         ("Demo"         (hypb:display-file-with-logo
+                           (expand-file-name "DEMO" hyperb:dir))
+          "Demonstrates Hyperbole features.")
+         ("Files"        (find-file-read-only
+                           (expand-file-name "MANIFEST" hyperb:dir))
+          "Summarizes Hyperbole system files.  Click on an entry to view it.")
+         ("Glossary"
+          (id-info "(hyperbole)Glossary")
+          "Glossary of Hyperbole terms.")
+         ("Info"         (id-info "(hyperbole)Top")
+          "Online Info version of Hyperbole manual.")
+         ("New"          (hypb:display-file-with-logo
+                          (expand-file-name "HY-NEWS" hyperb:dir))
+          "Recent changes to Hyperbole.")
+         ("SmartKeys"    (find-file-read-only (hypb:hkey-help-file))
+          "Summarizes Smart Key mouse or keyboard handling.")
+         ("Types/"       (menu . types)
+          "Provides documentation on Hyperbole types.")
+        ))
+       '(ebut .
+        (("EButton>")
+         ("Act"    hui:hbut-act
+           "Activates button at point or prompts for explicit button.")
+         ("Create" hui:ebut-create)
+         ("Delete" hui:ebut-delete)
+         ("Edit"   hui:ebut-modify "Modifies any desired button attributes.")
+         ("Help/"  (menu . ebut-help) "Summarizes button attributes.")
+         ("Info"
+          (id-info "(hyperbole)Explicit Buttons")
+          "Displays manual section on explicit buttons.")
+         ("Modify" hui:ebut-modify "Modifies any desired button attributes.")
+         ("Rename" hui:ebut-rename "Relabels an explicit button.")
+         ("Search" hui:ebut-search
+          "Locates and displays personally created buttons in context.")
+         ("Types"  (hui:htype-help-current-window 'actypes)
+          "Displays documentation for one or all action types used by explicit 
buttons.")
+         ))
+       '(ebut-help .
+        (("Help on>")
+         ("BufferButs"   (hui:hbut-report -1)
+          "Summarizes all explicit buttons in buffer.")
+         ("CurrentBut"   (hui:hbut-report)
+          "Summarizes only current button in buffer.")
+         ("OrderedButs"  (hui:hbut-report 1)
+          "Summarizes explicit buttons in lexicographically order.")
+         ))
+       '(find .
+         (("Find>")
+         ("GrepFiles"           hypb:rgrep  "Show numbered line matches in all 
specified files.")
+         ("LocateFiles"         hypb:locate "Locate matching file names 
anywhere across a system.")
+         ("MatchFileBuffers"    moccur      "Show numbered line matches for 
regexp in all file-based buffers.")
+         ("OccurHere"           occur       "Show numbered line matches for 
regexp from this buffer.")
+         ("RemoveLines"         hypb:remove-lines "Following point, remove all 
lines that match regexp.")
+         ("SaveLines"           hypb:save-lines  "Following point, keep only 
lines that match regexp.")
+         ("Web/" (menu . web) "Searches major web sites.")
+         ))
+       '(gbut .
+        (("GButton>")
+         ("Act"    gbut:act        "Activates global button by name.") 
+         ("Create" hui:gbut-create "Adds a global button to gbut:file.")
+         ("Edit"   hui:gbut-modify "Modifies global button attributes.")
+         ("Help"   gbut:help       "Reports on a global button by name.") 
+         ("Info"   (id-info "(hyperbole)Global Buttons")
+          "Displays manual section on global buttons.")
+         ("Modify" hui:gbut-modify "Modifies global button attributes.")
+         ))
+       '(ibut .
+        (("IButton>")
+         ("Act"    hui:hbut-current-act  "Activates implicit button at 
point.") 
+         ("DeleteIButType"   (hui:htype-delete 'ibtypes)
+          "Deletes specified button type.")
+         ("Help"   hui:hbut-help   "Reports on button's attributes.")
+         ("Info"   (id-info "(hyperbole)Implicit Buttons")
+          "Displays manual section on implicit buttons.")
+         ("Types"  (hui:htype-help 'ibtypes 'no-sort)
+          "Displays documentation for one or all implicit button types.")
+         ))
+       '(msg .
+        (("Msg>")
+         ("Compose-Hypb-Mail"
+          (hmail:compose "address@hidden" '(hact 'hyp-config))
+          "Send a message to the Hyperbole discussion list.")
+         ("Join-Hypb-List"
+          (hmail:compose "address@hidden" nil
+                         "Just send the message; subject and body are 
ignored.")
+          "Subscribe to the Hyperbole discussion list.")
+         ("Leave-Hypb-List"
+          (hmail:compose "address@hidden" nil
+                         "Just send the message; subject and body are 
ignored.")
+          "Unsubscribe from the Hyperbole discussion list.")
+         ("Report-Hypb-Bug"
+          (hmail:compose "address@hidden" '(hact 'hyp-config))
+          "Send a message to the Hyperbole bug reporting list.")
+         ("Subscribe-Hypb-Bug"
+          (hmail:compose "address@hidden" nil
+                         "Just send the message; subject and body are 
ignored.")
+          "Subscribe to the Hyperbole bug reporting list.")
+         ("Unsub-Hypb-Bug"
+          (hmail:compose "address@hidden" nil
+                         "Just send the message; subject and body are 
ignored.")
+          "Unsubscribe from the Hyperbole bug reporting list.")
+         ))
+       (if hyperb:kotl-p
+          '(otl
+            . (("Kotl>")
+               ("All"       kotl-mode:show-all "Expand all collapsed cells.") 
+               ("Blanks"    kvspec:toggle-blank-lines
+                "Toggle blank lines between cells on or off.")
+               ("Create"    kfile:find   "Create or edit an outline file.")
+               ("Downto"    kotl-mode:hide-sublevels
+                "Hide all cells in outline deeper than a particular level.")
+               ("Examp"     kotl-mode:example
+                "Display a self-descriptive example outline file.")
+               ("Hide"      (progn (kotl-mode:is-p)
+                                   (kotl-mode:hide-tree (kcell-view:label)))
+                "Collapse tree rooted at point.")
+               ("Info"
+                (id-info "(hyperbole)Koutliner")
+                "Display manual section on Hyperbole Koutliner.")
+               ("Kill"      kotl-mode:kill-tree
+                "Kill ARG following trees starting from point.")
+               ("Link"      klink:create
+                "Create and insert an implicit link at point.")
+               ("Overvw"  kotl-mode:overview
+                "Show first line of each cell.")
+               ("Show"      (progn (kotl-mode:is-p)
+                                   (kotl-mode:show-tree (kcell-view:label)))
+                "Expand tree rooted at point.")
+               ("Top"       kotl-mode:top-cells
+                "Hide all but top-level cells.") 
+               ("Vspec"     kvspec:activate
+                "Prompt for and activate a view specifiction.")
+               )))
+       '(hyrolo .
+        (("Rolo>")
+         ("Add"              hyrolo-add          "Add a new rolo entry.")
+         ("Display"          hyrolo-display-matches
+          "Display last found rolo matches again.")
+         ("Edit"             hyrolo-edit   "Edit an existing rolo entry.")
+         ("Info"             (id-info "(hyperbole)HyRolo")
+          "Displays manual section on Hyperbole rolo.")
+         ("Kill"             hyrolo-kill   "Kill an existing rolo entry.")
+         ("Mail"             hyrolo-mail-to "Mail to address following point.")
+         ("Order"            hyrolo-sort   "Order rolo entries in a file.")
+         ("RegexFind"        hyrolo-grep   "Find entries containing a regexp.")
+         ("StringFind"       hyrolo-fgrep  "Find entries containing a string.")
+         ("WordFind"         hyrolo-word   "Find entries containing words.")
+         ("Yank"             hyrolo-yank
+          "Find an entry containing a string and insert it at point.")
+         ))
+       '(screen .
+        (("Screen>")
+         ("FramesControl"    hycontrol-frames
+          "Interactively delete, jump to, move, replicate, and resize frames.")
+         ("WindowsControl"   hycontrol-windows
+          "Interactively delete, jump to, rebalance, resize, and split 
windows.")))
+       '(types .
+        (("Types>")
+         ("ActionTypes"      (hui:htype-help-current-window 'actypes)
+          "Displays documentation for one or all action types.")
+         ("IButTypes"        (hui:htype-help-current-window 'ibtypes 'no-sort)
+          "Displays documentation for one or all implicit button types.")
+         ))
+       '(win .
+        (("WinConfig>")
+         ("AddName"        hywconfig-add-by-name
+          "Name current window configuration.")
+         ("DeleteName"     hywconfig-delete-by-name
+          "Delete named window configuration.")
+         ("RestoreName"    hywconfig-restore-by-name
+          "Restore frame to window configuration given by name.")
+         ("PopRing"        (progn (hywconfig-delete-pop)
+                                  (hyperbole 'win))
+          "Restores window configuration from ring and removes it from ring.")
+         ("SaveRing"       (hywconfig-ring-save)
+          "Saves current window configuration to ring.")
+         ("YankRing"       (progn (call-interactively 'hywconfig-yank-pop)
+                                  (hyperbole 'win))
+          "Restores next window configuration from ring.")
+         ))
+       (hui:menu-web-search)
+       )))
+
 (provide 'hui-mini)
 
 ;;; hui-mini.el ends here
diff --git a/hui-mouse.el b/hui-mouse.el
index 2876eab..9c1286f 100644
--- a/hui-mouse.el
+++ b/hui-mouse.el
@@ -154,9 +154,11 @@ Set it to #'complete if you want behavior similar to that 
of standard Emacs."
            (t (scroll-up))) .
            (scroll-down)))
     ;;
-    ;; Within an OO-Browser OOBR-FTR buffer, an *Implementors* listing
-    ;; buffer, or an Element signatures listing buffer of the
-    ;; OO-Browser.
+    ;; Support the OO-Browser when available.  It is a separate Emacs
+    ;; package not included with Hyperbole.  Within an OO-Browser
+    ;; OOBR-FTR buffer, an *Implementors* listing buffer, or an
+    ;; Element signatures listing buffer of the OO-Browser, display
+    ;; the associated element.
     ((or (string-equal (buffer-name) "*Implementors*")
         (string-match "-Elements\\'" (buffer-name))
         (and (boundp 'br-feature-tags-file)
@@ -309,8 +311,9 @@ Set it to #'complete if you want behavior similar to that 
of standard Emacs."
     ((eq major-mode 'gomoku-mode) . 
      ((gomoku-human-plays) . (gomoku-human-takes-back)))
     ;;
-    ;; Support the OO-Browser, a part of InfoDock and XEmacs, and an add on
-    ;; to Emacs.  It is not included with Hyperbole.
+    ;; Support the OO-Browser when available.  It is a separate Emacs
+    ;; package not included with Hyperbole.  Hyperbole supplies a stub
+    ;; `br-in-browser' test for use here.
     ((or (br-in-browser) (eq major-mode 'br-mode)) .
      ((smart-br-dispatch) . (smart-br-assist-dispatch)))
     ;;
diff --git a/hyperbole.el b/hyperbole.el
index ef45e86..a3d4fab 100644
--- a/hyperbole.el
+++ b/hyperbole.el
@@ -247,6 +247,9 @@ Entry format is: (key-description key-sequence 
key-binding)."
     ;; Binds {C-c \} to interactively manage windows and frames.
     (hkey-maybe-global-set-key "\C-c\\" 'hycontrol-windows)
     ;;
+    ;; Binds {C-c /} to display the Hyperbole Find/Web search menu.
+    (hkey-maybe-global-set-key "\C-c/" 'hui-search-web)
+    ;;
     ;; Binds {C-c .} to jump between the start and end of an delimited thing.
     ;; Don't override local bindings of this key.
     (hkey-maybe-global-set-key "\C-c." 'hui-select-goto-matching-delimiter t)



reply via email to

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