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

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

[nongnu] elpa/geiser c5f6a8a: geiser-doc: new keybindings s/h mocking he


From: ELPA Syncer
Subject: [nongnu] elpa/geiser c5f6a8a: geiser-doc: new keybindings s/h mocking help buffer's
Date: Sun, 19 Dec 2021 21:57:54 -0500 (EST)

branch: elpa/geiser
commit c5f6a8ac9ebdce93d4b551342accd2c85c4f7030
Author: jao <jao@gnu.org>
Commit: jao <jao@gnu.org>

    geiser-doc: new keybindings s/h mocking help buffer's
---
 elisp/geiser-doc.el | 36 +++++++++++++++++++++++-------------
 1 file changed, 23 insertions(+), 13 deletions(-)

diff --git a/elisp/geiser-doc.el b/elisp/geiser-doc.el
index 44a06ba..b160bd8 100644
--- a/elisp/geiser-doc.el
+++ b/elisp/geiser-doc.el
@@ -163,20 +163,28 @@ help (e.g. browse an HTML page) implementing this 
method.")
                         'geiser-link link
                         'help-echo help)))
 
+(defun geiser-doc-goto-source ()
+  "Go to the definition of this item."
+  (interactive)
+  (when-let (link geiser-doc--buffer-link)
+    (with--geiser-implementation (geiser-doc--link-impl link)
+      (if-let (target (geiser-doc--link-target link))
+          (geiser-edit-symbol target nil (point-marker))
+        (geiser-edit-module (geiser-doc--link-module link))))))
+
+(defun geiser-doc-goto-manual ()
+  "Go to the manual for this item."
+  (interactive)
+  (when-let (link geiser-doc--buffer-link)
+    (let ((tm (geiser-doc--link-target link))
+          (mod (geiser-doc--link-module link))
+          (impl (geiser-doc--link-impl link)))
+      (geiser-doc--external-help impl (or tm mod) mod))))
+
 (defun geiser-doc--xbutton-action (button)
-  (when geiser-doc--buffer-link
-    (let ((kind (or (button-get button 'x-kind) 'source))
-          (target (geiser-doc--link-target geiser-doc--buffer-link))
-          (module (geiser-doc--link-module geiser-doc--buffer-link))
-          (impl (geiser-doc--link-impl geiser-doc--buffer-link)))
-      (with--geiser-implementation impl
-        (cond ((eq kind 'source)
-               (if target (geiser-edit-symbol target nil (point-marker))
-                 (geiser-edit-module module)))
-              ((eq kind 'manual)
-               (geiser-doc--external-help impl
-                                          (or target module)
-                                          module)))))))
+  (let ((k (button-get button 'x-kind)))
+    (cond ((eq 'source k) (geiser-doc-goto-source))
+          ((eq 'manual k) (geiser-doc-goto-manual)))))
 
 (define-button-type 'geiser-doc--xbutton
   'action 'geiser-doc--xbutton-action
@@ -305,6 +313,8 @@ help (e.g. browse an HTML page) implementing this method.")
   --
   ("Edit symbol" ("." "\M-.") geiser-doc-edit-symbol-at-point
    :enable (geiser--symbol-at-point))
+  ("View source" ("s") geiser-doc-goto-source)
+  ("View manual" ("m" "h") geiser-doc-goto-manual)
   --
   ("Kill item" "k" geiser-doc-kill-page "Kill this page")
   ("Clear history" "c" geiser-doc-clean-history)



reply via email to

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