From: Christopher Lemmer Webber <cwebber@dustycloud.org>
Cc: guix-devel@gnu.org, Maxim Cournoyer <maxim.cournoyer@gmail.com>
Subject: Re: [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals
Date: Wed, 04 Nov 2020 23:00:22 -0500 [thread overview]
Message-ID: <87wnz05u7d.fsf@dustycloud.org> (raw)
In-Reply-To: <87zh3w5ytp.fsf@dustycloud.org>
Also, I hope this email isn't interpreted as being dismissive or negative
about what looks like it's probably a real usability improvement for
hacking on Guix! I just thought my experience indicated maybe there are
additional considerations to address.
Christopher Lemmer Webber writes:
> 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...
next prev parent reply other threads:[~2020-11-05 4:01 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-25 18:08 [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals Maxim Cournoyer
2020-10-25 18:13 ` Pierre Neidhardt
2020-10-25 18:42 ` [PATCH] .dir-locals.el: Automatically set the GEISER-GUILE-LOAD-PATH variable Maxim Cournoyer
2020-10-25 18:52 ` Pierre Neidhardt
2020-10-25 21:37 ` Maxim Cournoyer
2020-10-25 21:01 ` Miguel Ángel Arruga Vivas
2020-10-26 5:47 ` Maxim Cournoyer
2020-10-26 5:53 ` [PATCH v2] " Maxim Cournoyer
2020-10-26 7:56 ` Pierre Neidhardt
2020-10-26 11:38 ` Miguel Ángel Arruga Vivas
2020-10-27 16:53 ` Maxim Cournoyer
2020-10-27 18:58 ` Miguel Ángel Arruga Vivas
2020-10-27 17:44 ` [PATCH v3] " Maxim Cournoyer
2020-10-31 4:19 ` Maxim Cournoyer
2020-11-01 1:02 ` Miguel Ángel Arruga Vivas
2020-10-26 13:43 ` [PATCH] Automatically set `geiser-guile-load-path' from .dir-locals zimoun
2020-10-26 15:03 ` Pierre Neidhardt
2020-11-05 2:20 ` Christopher Lemmer Webber
2020-11-05 4:00 ` Christopher Lemmer Webber [this message]
2020-11-05 9:25 ` Miguel Ángel Arruga Vivas
2020-11-05 17:26 ` Christopher Lemmer Webber
2020-11-14 19:57 ` Christopher Lemmer Webber
2020-11-16 4:18 ` Maxim Cournoyer
2020-11-16 14:54 ` Miguel Ángel Arruga Vivas
2020-11-16 17:41 ` Christopher Lemmer Webber
2020-11-16 18:07 ` Christopher Lemmer Webber
2020-11-16 20:57 ` Miguel Ángel Arruga Vivas
2020-11-16 23:09 ` Christopher Lemmer Webber
2020-11-17 15:36 ` Maxim Cournoyer
2020-11-18 10:12 ` Miguel Ángel Arruga Vivas
2020-11-05 14:21 ` Maxim Cournoyer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wnz05u7d.fsf@dustycloud.org \
--to=cwebber@dustycloud.org \
--cc=guix-devel@gnu.org \
--cc=maxim.cournoyer@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).