Guile: augmenting %load-compiled-path too
authorJose Antonio Ortega Ruiz <jao@gnu.org>
Fri, 13 Sep 2013 18:36:56 +0000 (13 20:36 +0200)
committerJose Antonio Ortega Ruiz <jao@gnu.org>
Fri, 13 Sep 2013 18:36:56 +0000 (13 20:36 +0200)
We add the paths in geiser-guile-load-path also to %load-compiled-path,
and new directories added to the load path via geiser-add-to-load-path
are added to both %load-path and %load-compiled-path.

Here's hope Ludovic will like all these additions!

elisp/geiser-guile.el
scheme/guile/geiser/evaluation.scm

index d512185..994ea6b 100644 (file)
@@ -305,7 +305,7 @@ it spawn a server thread."
   (interactive)
   (geiser-connect 'guile))
 
-(defun geiser-guile--set-load-path ()
+(defun geiser-guile--set-geiser-load-path ()
   (let* ((path (expand-file-name "guile/" geiser-scheme-dir))
          (witness "geiser/emacs.scm")
          (code `(begin (if (not (%search-load-path ,witness))
@@ -318,12 +318,15 @@ it spawn a server thread."
        `((,geiser-guile--path-rx geiser-guile--resolve-file-x)
          ("^  +\\([0-9]+\\):\\([0-9]+\\)" nil 1 2)))
   (compilation-setup t)
-  (font-lock-add-keywords nil
-                          `((,geiser-guile--path-rx 1
-                                                    compilation-error-face)))
+  (font-lock-add-keywords nil `((,geiser-guile--path-rx
+                                 1 compilation-error-face)))
   (let ((geiser-log-verbose-p t))
-    (when remote (geiser-guile--set-load-path))
+    (when remote (geiser-guile--set-geiser-load-path))
     (geiser-eval--send/wait ",use (geiser emacs)\n'done")
+    (mapcar (lambda (dir)
+              (let ((dir (expand-file-name dir)))
+                (geiser-eval--send/wait `(:eval (:ge add-to-load-path ,dir)))))
+            geiser-guile-load-path)
     (geiser-guile-update-warning-level)))
 
 \f
index 5562382..21f8772 100644 (file)
@@ -1,6 +1,6 @@
 ;;; evaluation.scm -- evaluation, compilation and macro-expansion
 
-;; Copyright (C) 2009, 2010, 2011 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2009, 2010, 2011, 2013 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
       (lambda ()
         (pretty-print (tree-il->scheme (macroexpand form)))))))
 
+(define (add-to-list lst dir)
+  (and (not (member dir lst))))
+
 (define (ge:add-to-load-path dir)
   (and (file-is-directory? dir)
-       (not (member dir %load-path))
-       (begin (set! %load-path (cons dir %load-path))
-              #t)))
+       (let ((in-lp (member dir %load-path))
+             (in-clp (member dir %load-compiled-path)))
+         (when (not in-lp)
+           (set! %load-path (cons dir %load-path)))
+         (when (not in-clp)
+           (set! %load-compiled-path (cons dir %load-compiled-path)))
+         (or in-lp in-clp))))