summary refs log tree commit diff
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2020-10-25 14:10:15 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2020-10-31 00:12:30 -0400
commit0e1b0958bde5ccc34a4fed9a09cf949d5f9c9519 (patch)
tree201c924c8beaacc035e4a0877007345e2e63ccd6
parentcf8b2f0f110900c00edd9057df79071111e3d565 (diff)
downloadguix-0e1b0958bde5ccc34a4fed9a09cf949d5f9c9519.tar.gz
.dir-locals.el: Automatically set the GEISER-GUILE-LOAD-PATH variable.
Thanks to Miguel Ángel Arruga Vivas and Pierre Neidhardt for their suggestions
and improvements.

* .dir-locals.el: Set the GUIX-DIRECTORY and GEISER-GUILE-LOAD-PATH Emacs
variables based on the location of the .dir-locals file.
-rw-r--r--.dir-locals.el21
1 files changed, 20 insertions, 1 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
index 19f15b3e1a..0496e41ca2 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -8,7 +8,26 @@
      ;; For use with 'bug-reference-prog-mode'.
      (bug-reference-url-format . "http://bugs.gnu.org/%s")
      (bug-reference-bug-regexp
-      . "<https?://\\(debbugs\\|bugs\\)\\.gnu\\.org/\\([0-9]+\\)>")))
+      . "<https?://\\(debbugs\\|bugs\\)\\.gnu\\.org/\\([0-9]+\\)>")
+
+     ;; Emacs-Guix
+     (eval . (setq guix-directory
+                   (locate-dominating-file default-directory ".dir-locals.el")))
+
+     ;; Geiser
+     ;; This allows automatically setting the `geiser-guile-load-path'
+     ;; variable when using various Guix checkouts (e.g., via git worktrees).
+     (eval . (let* ((root-dir (expand-file-name
+                               (locate-dominating-file
+                                default-directory ".dir-locals.el")))
+                    ;; Workaround for bug https://issues.guix.gnu.org/43818.
+                    (root-dir* (directory-file-name root-dir)))
+               (unless (boundp 'geiser-guile-load-path)
+                 (defvar geiser-guile-load-path '()))
+               (make-local-variable 'geiser-guile-load-path)
+               (cl-pushnew root-dir* geiser-guile-load-path
+                           :test #'string-equal)))))
+
  (c-mode          . ((c-file-style . "gnu")))
  (scheme-mode
   .