diff options
| author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-12-28 04:11:46 +0100 | 
|---|---|---|
| committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-12-28 04:11:46 +0100 | 
| commit | 87af9354491a6faf7cec13d45f303e1eca7e50f0 (patch) | |
| tree | df631fc5d0d71a755a1d6c5d12a0b2d7185630c1 | |
| parent | 19d70712975f093a13f19d9fb5b6eb30ebcb0076 (diff) | |
| download | geiser-87af9354491a6faf7cec13d45f303e1eca7e50f0.tar.gz geiser-87af9354491a6faf7cec13d45f303e1eca7e50f0.tar.bz2 | |
Finer grained maintenance of autodoc's cache
| -rw-r--r-- | elisp/geiser-autodoc.el | 11 | ||||
| -rw-r--r-- | elisp/geiser-compile.el | 2 | ||||
| -rw-r--r-- | elisp/geiser-debug.el | 7 | ||||
| -rw-r--r-- | elisp/geiser-syntax.el | 3 | 
4 files changed, 17 insertions, 6 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))) diff --git a/elisp/geiser-compile.el b/elisp/geiser-compile.el index bc9aace..f59f9e5 100644 --- a/elisp/geiser-compile.el +++ b/elisp/geiser-compile.el @@ -39,7 +39,7 @@           (path (cdr b/p))           (msg (format "%s %s ..." msg path)))      (message msg) -    (geiser-autodoc--clean-cache) +    (geiser-autodoc--clean-cache t)      (geiser-compile--display-result       msg (geiser-eval--send/wait            `(,(if compile-p :comp-file :load-file) ,path))))) diff --git a/elisp/geiser-debug.el b/elisp/geiser-debug.el index 76865f3..02b463e 100644 --- a/elisp/geiser-debug.el +++ b/elisp/geiser-debug.el @@ -145,9 +145,12 @@ buffer.")           (ret (geiser-eval--send/wait code))           (res (geiser-eval--retort-result-str ret))           (err (geiser-eval--retort-error ret))) -    (geiser-autodoc--clean-cache)      (when and-go (funcall and-go)) -    (when (not err) (message "%s" res)) +    (when (not err) +      (save-excursion +        (goto-char (/ (+ end start) 2)) +        (geiser-autodoc--clean-cache)) +      (message "%s" res))      (geiser-debug--display-retort (geiser-syntax--scheme-str str) ret res)))  (defun geiser-debug--expand-region (start end all wrap) diff --git a/elisp/geiser-syntax.el b/elisp/geiser-syntax.el index eff1e41..8428f49 100644 --- a/elisp/geiser-syntax.el +++ b/elisp/geiser-syntax.el @@ -320,7 +320,8 @@ implementation-specific entries for font-lock-keywords.")                       (prev (and (geiser-syntax--keywordp prev)                                  (list prev))))                  (push `(,(car form) ,pos ,@prev) path))))))) -    (mapcar (lambda (e) (cons (format "%s" (car e)) (cdr e))) +    (mapcar (lambda (e) +              (cons (substring-no-properties (format "%s" (car e))) (cdr e)))              (nreverse path))))  (defsubst geiser-syntax--binding-form-p (bfs sbfs f) | 
