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)))) | 
