guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: .dir-locals.el: Prevent errors if .dir-locals.el


From: guix-commits
Subject: branch master updated: .dir-locals.el: Prevent errors if .dir-locals.el isn't found.
Date: Mon, 16 Nov 2020 13:05:24 -0500

This is an automated email from the git hooks/post-receive script.

cwebber pushed a commit to branch master
in repository guix.

The following commit(s) were added to refs/heads/master by this push:
     new 1d6e773  .dir-locals.el: Prevent errors if .dir-locals.el isn't found.
1d6e773 is described below

commit 1d6e7732b163c9e945c9e5b32c726fe3b5f09c3a
Author: Christopher Lemmer Webber <cwebber@dustycloud.org>
AuthorDate: Mon Nov 16 13:04:38 2020 -0500

    .dir-locals.el: Prevent errors if .dir-locals.el isn't found.
    
    While this repo should presumably always have a .dir-locals.el
    by the nature of this file itself, it seems that this behavior "leaks".
    See added comment for more details on the fix to this strange bug,
    which is likely an upstream emacs or vc-mode issue.
    
    Thanks to Miguel Ángel Arruga Vivas and Maxim Cournoyer for helping
    investigate this problem.
    
    * .dir-locals.el: Don't error out if .dir-locals.el isn't found.
---
 .dir-locals.el | 32 +++++++++++++++++++++-----------
 1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/.dir-locals.el b/.dir-locals.el
index 8e5d390..545c1c3 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -17,17 +17,27 @@
      ;; 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)
-               (require 'cl-lib)
-               (cl-pushnew root-dir* geiser-guile-load-path
-                           :test #'string-equal)))))
+     (eval . (let ((root-dir-unexpanded (locate-dominating-file
+                                         default-directory ".dir-locals.el")))
+               ;; While Guix should in theory always have a .dir-locals.el
+               ;; (we are reading this file, after all) there seems to be a
+               ;; strange problem where this code "escapes" to some other 
buffers,
+               ;; at least vc-mode.  See:
+               ;;   
https://lists.gnu.org/archive/html/guix-devel/2020-11/msg00296.html
+               ;; (TODO: add/replace with upstream emacs bug link when 
reported)
+               ;; Hence the following "when", which might otherwise be 
unnecessary;
+               ;; it prevents causing an error when root-dir-unexpanded is nil.
+               (when root-dir-unexpanded
+                 (let* ((root-dir (expand-file-name root-dir-unexpanded))
+                        ;; 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)
+                   (require 'cl-lib)
+                   (cl-pushnew root-dir* geiser-guile-load-path
+                               :test #'string-equal)))))))
 
  (c-mode          . ((c-file-style . "gnu")))
  (scheme-mode



reply via email to

[Prev in Thread] Current Thread [Next in Thread]