summaryrefslogtreecommitdiff
path: root/elisp/geiser-autodoc.el
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2010-12-28 04:11:46 +0100
committerJose Antonio Ortega Ruiz <jao@gnu.org>2010-12-28 04:11:46 +0100
commitfe8de4b31e916c1f1883826cade2c8dc310afe48 (patch)
treef60c754d0c7df724d3c63e0422037cf734d0c11b /elisp/geiser-autodoc.el
parent2a582ee40aa77ff4d05baef3e2ea4449615cd93f (diff)
downloadgeiser-guile-fe8de4b31e916c1f1883826cade2c8dc310afe48.tar.gz
geiser-guile-fe8de4b31e916c1f1883826cade2c8dc310afe48.tar.bz2
Finer grained maintenance of autodoc's cache
Diffstat (limited to 'elisp/geiser-autodoc.el')
-rw-r--r--elisp/geiser-autodoc.el11
1 files changed, 9 insertions, 2 deletions
diff --git a/elisp/geiser-autodoc.el b/elisp/geiser-autodoc.el
index 1befb74..04f450e 100644
--- a/elisp/geiser-autodoc.el
+++ b/elisp/geiser-autodoc.el
@@ -54,8 +54,15 @@ when `geiser-autodoc-display-module-p' is on."
(make-variable-buffer-local
(defvar geiser-autodoc--cached-signatures nil))
-(defsubst geiser-autodoc--clean-cache ()
- (setq geiser-autodoc--cached-signatures nil))
+(defun geiser-autodoc--clean-cache (&optional whole)
+ (if whole
+ (setq geiser-autodoc--cached-signatures nil)
+ (let ((s (car (last (geiser-syntax--locals-around-point nil nil))))
+ (cache))
+ (when s
+ (dolist (item geiser-autodoc--cached-signatures)
+ (unless (string-equal s (car item)) (push item cache)))
+ (setq geiser-autodoc--cached-signatures (nreverse cache))))))
(defun geiser-autodoc--save-signatures (ret)
(let ((res (geiser-eval--retort-result ret)))