From 5d713118a24a8766ea788288c1b47c96cf9bf5a6 Mon Sep 17 00:00:00 2001
From: Jose Antonio Ortega Ruiz <jao@gnu.org>
Date: Wed, 3 Feb 2010 01:03:20 +0100
Subject: PLT: Better help lookups.

---
 elisp/geiser-plt.el | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

(limited to 'elisp')

diff --git a/elisp/geiser-plt.el b/elisp/geiser-plt.el
index 9fcd3f5..d9b3ca9 100644
--- a/elisp/geiser-plt.el
+++ b/elisp/geiser-plt.el
@@ -1,6 +1,6 @@
 ;; geiser-plt.el -- geiser support for PLT scheme
 
-;; Copyright (C) 2009 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2009, 2010 Jose Antonio Ortega Ruiz
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the Modified BSD License. You should
@@ -112,10 +112,15 @@ This function uses `geiser-plt-init-file' if it exists."
 
 ;;; External help
 
-(defun geiser-plt--external-help (symbol module)
-  (message "Requesting help for '%s'..." symbol)
+(defsubst geiser-plt--get-help (symbol module)
   (geiser-eval--send/wait
-   `(:eval (get-help ',symbol (:module ,module)) geiser/autodoc))
+   `(:eval (get-help ',symbol (:module ,module)) geiser/autodoc)))
+
+(defun geiser-plt--external-help (id module)
+  (message "Requesting help for '%s'..." id)
+  (let ((out (geiser-eval--retort-output (geiser-plt--get-help id module))))
+    (when (and out (string-match " but provided by:\n +\\(.+\\)\n" out))
+      (geiser-plt--get-help symbol (match-string 1 out))))
   (minibuffer-message "%s done" (current-message))
   t)
 
-- 
cgit v1.2.3