diff options
| -rw-r--r-- | elisp/geiser-doc.el | 36 | 
1 files 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) | 
