[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals
From: |
Christopher Lemmer Webber |
Subject: |
Re: [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals |
Date: |
Wed, 04 Nov 2020 21:20:34 -0500 |
User-agent: |
mu4e 1.4.13; emacs 27.1 |
Maxim Cournoyer writes:
> Hello Guix!
>
> I've been experimenting with the following modification to the
> .dir-locals file shipped with Guix, that allows setting per-buffer
> variables within Emacs when visiting a file in the same directory (or in
> one of its sub-directories).
>
> This makes life a bit easier, by ensuring that a Geiser REPL started
> with C-c C-a in a file of either the main 'guix' checkout, a
> 'guix-core-updates' worktree or a 'guix-staging' worktree will set up
> the GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH correctly (via the
> `geiser-guile-load-path' Elisp variable).
>
> The only requirement for it to work reliably is that any Guix checkout
> or worktree name should start with "guix".
>
> It doesn't require Geiser to be installed (it will just set the above
> variable uselessly if it isn't used -- not a big deal).
>
> What do you think? Is it useful? Should we include this as part of the
> default .dir-locals of Guix?
>
> Patch to follow!
>
> Thanks,
>
> Maxim
I'm a bit unsure what the implications fully are with this change, but
here was my user experience:
- Did a pull using magit to guix
- Suddenly every file I open in Guix is prompting me if I want to
enable these dir-locals, I notice some have "eval" and I don't know
what it's doing so I say no
- But it's asking me every file
- And oh no, it's asking me about ten times for every magit operation!
(Presumably due to the reload operation.) Fine okay fine, YES, okay
cool it's quiet now... I hope that was safe.
Later...
- I'm hacking on another file in another repo
- C-x v = (check to see a diff of the work-in-progress changes of the
file I'm working on)
- Error in the minibuffer! "Wrong type argument: stringp, nil"
- wtf, okay M-x toggle-debug-on-error
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
expand-file-name(nil)
(let* ((root-dir (expand-file-name (locate-dominating-file default-directory
".dir-locals.el"))) (root-dir* (directory-file-name root-dir))) (unless (boundp
'geiser-guile-load-path) (defvar geiser-guile-load-path 'nil))
(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 (expand-file-name (locate-dominating-file
default-directory ".dir-locals.el"))) (root-dir* (directory-file-name
root-dir))) (unless (boundp 'geiser-guile-load-path) (defvar
geiser-guile-load-path 'nil)) (make-local-variable 'geiser-guile-load-path)
(require 'cl-lib) (cl-pushnew root-dir* geiser-guile-load-path :test
#'string-equal)))
hack-one-local-variable(eval (let* ((root-dir (expand-file-name
(locate-dominating-file default-directory ".dir-locals.el"))) (root-dir*
(directory-file-name root-dir))) (unless (boundp 'geiser-guile-load-path)
(defvar geiser-guile-load-path 'nil)) (make-local-variable
'geiser-guile-load-path) (require 'cl-lib) (cl-pushnew root-dir*
geiser-guile-load-path :test #'string-equal)))
hack-local-variables-apply()
hack-dir-local-variables-non-file-buffer()
diff-mode()
vc-diff-internal(t (Git
("/home/cwebber/devel/scribble/scribble-lib/scribble...")) nil nil t)
vc-diff(nil t)
funcall-interactively(vc-diff nil t)
call-interactively(vc-diff nil nil)
command-execute(vc-diff)
- Oh... it's whatever thing I enabled earlier in the guix repo. Well
now my vc-diff is broken outside of there... :\
I'm presuming that if I understood whatever this is doing, it's probably
something that gives me a better user experience if I accept it while
working on Guix. But a) for whatever reason Emacs' dir-locals stuff is
written in such a way that it antagonizes me for not accepting it and I
didn't know what it eval was (maybe this is a lack of understanding in
how to "say no and get it to listen to me"... I didn't resist for too
long) and b) it seems like this change isn't scoped to Guix's checkout
itself somehow...
- Re: [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals,
Christopher Lemmer Webber <=
- Re: [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals, Christopher Lemmer Webber, 2020/11/04
- Re: [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals, Miguel Ángel Arruga Vivas, 2020/11/05
- Re: [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals, Christopher Lemmer Webber, 2020/11/05
- Re: [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals, Christopher Lemmer Webber, 2020/11/14
- Re: [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals, Maxim Cournoyer, 2020/11/15
- Re: [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals, Miguel Ángel Arruga Vivas, 2020/11/16
- Re: [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals, Christopher Lemmer Webber, 2020/11/16
- Re: [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals, Christopher Lemmer Webber, 2020/11/16
- Re: [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals, Miguel Ángel Arruga Vivas, 2020/11/16
- Re: [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals, Christopher Lemmer Webber, 2020/11/16