emacs-diffs
[Top][All Lists]
Advanced

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

master 3f36d08362 3/4: Add command to invoke a search engine


From: Lars Ingebrigtsen
Subject: master 3f36d08362 3/4: Add command to invoke a search engine
Date: Fri, 14 Jan 2022 03:53:03 -0500 (EST)

branch: master
commit 3f36d0836274a01d3cfc73f53ddbc76afc1d8a5e
Author: Philip Kaludercic <philipk@posteo.net>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Add command to invoke a search engine
    
    * mouse.el (context-menu-online-search): Add new function
    (eww-search-prefix): Declare variable from eww.el
    (mouse-online-search-at-point): Add new command
---
 lisp/mouse.el | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/lisp/mouse.el b/lisp/mouse.el
index 1a76b9a0b6..cfe212c3e9 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -531,6 +531,16 @@ Some context functions add menu items below the separator."
                     :help "Find file or URL from text around mouse click"))))
   menu)
 
+(defun context-menu-online-search (menu click)
+  "Populate MENU with command to search online."
+  (save-excursion
+    (mouse-set-point click)
+    (define-key-after menu [online-search-separator] menu-bar-separator)
+    (define-key-after menu [online-search-at-mouse]
+      '(menu-item "Online search" mouse-online-search-at-point
+                  :help "Search for region or word online")))
+  menu)
+
 (defvar context-menu-entry
   `(menu-item ,(purecopy "Context Menu") ,(make-sparse-keymap)
               :filter ,(lambda (_) (context-menu-map)))
@@ -3217,6 +3227,26 @@ is copied instead of being cut."
         (with-current-buffer (window-buffer window)
           (setq cursor-type (nth 3 state)))))))
 
+(defvar eww-search-prefix)
+(defun mouse-online-search-at-point (event)
+  "Query an online search engine at EVENT.
+If a region is active, the entire region will be sent, otherwise
+the symbol at point will be used.  This command uses EWW's
+default search engine, as configured by `eww-search-prefix'."
+  (interactive "e")
+  (require 'eww)
+  (let ((query (if (use-region-p)
+                   (buffer-substring (region-beginning)
+                                     (region-end))
+                 (save-excursion
+                   (mouse-set-point event)
+                   (thing-at-point 'symbol)))))
+    (unless query
+      (user-error "Nothing to search for"))
+    (browse-url (concat
+                 eww-search-prefix
+                 (mapconcat #'url-hexify-string (split-string query) "+")))))
+
 
 ;;; Bindings for mouse commands.
 



reply via email to

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