emacs-diffs
[Top][All Lists]
Advanced

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

master 3eb80b7: Add occur-related context-menu operations (bug#50552)


From: Juri Linkov
Subject: master 3eb80b7: Add occur-related context-menu operations (bug#50552)
Date: Wed, 15 Sep 2021 03:14:23 -0400 (EDT)

branch: master
commit 3eb80b78473b425cdbc251e48aec7cfd9afea2cc
Author: Philip Kaludercic <philipk@posteo.net>
Commit: Juri Linkov <juri@linkov.net>

    Add occur-related context-menu operations (bug#50552)
    
    * replace.el (occur-word-at-mouse): Add new command.
    (occur-symbol-at-mouse): Add new command.
    (occur-context-menu): Add new function.
---
 lisp/replace.el | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/lisp/replace.el b/lisp/replace.el
index 69bdfe1..63b3e21 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -2367,6 +2367,33 @@ See also `multi-occur'."
      ;; And the second element is the list of context after-lines.
      (if (> nlines 0) after-lines))))
 
+(defun occur-word-at-mouse (event)
+  "Display an occur buffer for the word at EVENT."
+  (interactive "e")
+  (let ((word (thing-at-mouse event 'word t)))
+    (occur (concat "\\<" (regexp-quote word) "\\>"))))
+
+(defun occur-symbol-at-mouse (event)
+  "Display an occur buffer for the symbol at EVENT."
+  (interactive "e")
+  (let ((symbol (thing-at-mouse event 'symbol t)))
+    (occur (concat "\\_<" (regexp-quote symbol) "\\_>"))))
+
+(defun occur-context-menu (menu click)
+  "Populate MENU with occur commands for CLICK.
+To be added to `context-menu-functions'."
+  (let ((word (thing-at-mouse click 'word))
+        (sym (thing-at-mouse click 'symbol)))
+    (when (or word sym)
+      (define-key-after menu [occur-separator] menu-bar-separator)
+      (when word
+        (define-key-after menu [occur-word-at-mouse]
+          '(menu-item "Occur Word" occur-word-at-mouse)))
+      (when sym
+        (define-key-after menu [occur-symbol-at-mouse]
+          '(menu-item "Occur Symbol" occur-symbol-at-mouse)))))
+  menu)
+
 
 ;; It would be nice to use \\[...], but there is no reasonable way
 ;; to make that display both SPC and Y.



reply via email to

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