summaryrefslogtreecommitdiff
path: root/lisp/man.el
diff options
context:
space:
mode:
authorPhilip Kaludercic <philipk@posteo.net>2021-12-31 12:37:50 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2022-01-14 09:46:56 +0100
commitdf44b2d956d1a658c51c558857cdc6d0b2e30572 (patch)
tree10bc198adbd3f50e94141a4704e612b2457b06eb /lisp/man.el
parent10cf00648ba323e9d928e4b0430b075c33c196c1 (diff)
downloademacs-df44b2d956d1a658c51c558857cdc6d0b2e30572.tar.gz
emacs-df44b2d956d1a658c51c558857cdc6d0b2e30572.tar.bz2
emacs-df44b2d956d1a658c51c558857cdc6d0b2e30572.zip
Implement context-menu-mode support for man pages
* man.el (Man-at-mouse): Add new command (Man-context-menu): Add new function
Diffstat (limited to 'lisp/man.el')
-rw-r--r--lisp/man.el23
1 files changed, 23 insertions, 0 deletions
diff --git a/lisp/man.el b/lisp/man.el
index adf244a11ad..d94cbf20153 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -1976,6 +1976,29 @@ Uses `Man-name-local-regexp'."
(bookmark-default-handler
`("" (buffer . ,buf) . ,(bookmark-get-bookmark-record bookmark)))))
+;;; Mouse support
+(defun Man-at-mouse (e)
+ "Open man manual at point."
+ (interactive "e")
+ (save-excursion
+ (mouse-set-point e)
+ (man (Man-default-man-entry))))
+
+(defun Man-context-menu (menu click)
+ "Populate MENU with commands that open a man page at point."
+ (save-excursion
+ (mouse-set-point click)
+ (when (save-excursion
+ (skip-syntax-backward "^ ")
+ (and (looking-at
+ "[[:space:]]*\\([[:alnum:]_-]+([[:alnum:]]+)\\)")
+ (match-string 1)))
+ (define-key-after menu [man-separator] menu-bar-separator)
+ (define-key-after menu [man-at-mouse]
+ '(menu-item "Open man page" man-at-mouse
+ :help "Open man page around mouse click"))))
+ menu)
+
;; Init the man package variables, if not already done.
(Man-init-defvars)