diff options
-rw-r--r-- | elisp/geiser-guile.el | 13 | ||||
-rw-r--r-- | scheme/guile/geiser/evaluation.scm | 15 |
2 files changed, 19 insertions, 9 deletions
diff --git a/elisp/geiser-guile.el b/elisp/geiser-guile.el index d512185..994ea6b 100644 --- a/elisp/geiser-guile.el +++ b/elisp/geiser-guile.el @@ -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))) diff --git a/scheme/guile/geiser/evaluation.scm b/scheme/guile/geiser/evaluation.scm index 5562382..21f8772 100644 --- a/scheme/guile/geiser/evaluation.scm +++ b/scheme/guile/geiser/evaluation.scm @@ -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 @@ -108,8 +108,15 @@ (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)))) |