guix-devel
[Top][All Lists]
Advanced

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

Re: A new wip-emacs branch


From: Carlo Zancanaro
Subject: Re: A new wip-emacs branch
Date: Fri, 09 Apr 2021 00:05:58 +1000
User-agent: mu4e 1.4.15; emacs 27.2

Hi Leo!

On Thu, Apr 08 2021, Leo Prikler wrote:
guix-emacs should still be loaded by site-start.el, which also initially loads your autoloads.

Now that I've had more of a chance to play with it, you're right about this. I'm not sure what I did earlier, but it loaded properly just now.

What changes for "Guix in Emacs modifying Emacs", is that you'll probably have to reload the subdirs.el file before autoloading the packages.

Ah, okay. I just played around with this, and it seems like the sequence I now need is:

 $ guix install emacs-magit # shell command
 ...
 $ load subdirs # emacs command
 t
 $ guix-emacs-autoload-packages # emacs command
 (... list of autoload files ...)

It also sees like I'm able to require the packages in Emacs after the "load subdirs" step, as well, so in practice it's still only two commands to make new Emacs packages loadable, it's just that the second command has changed. 👍

Obviously, there are exceptions to this, that we can argue on a case by case basis, but to summarize, I don't think hardcoding paths throughout Emacs is a good idea.

I think there are two different cases which are more clear-cut, with a significant middle ground that's fuzzy, and using PATH just ignores this distinction entirely. There are program uses that are an implementation detail (e.g. the fact that dired uses ls), and there are programs that a user is directly interacting with (e.g. anything that I run in a shell). My thinking is that ideally the former should use hard-coded paths, and the latter should come from PATH.

The tricky ones are things like geiser, or magit, where the Emacs package is a wrapper around a program's functionality. These feel like it's reasonable to go either way, but they are also the types of packages that provide ways to easily change which program they run (i.e. geiser-guile-binary and magit-git-executable for these specific examples), so they could default to a hard-coded store path because a user can easily change them if they want to use a different version.

Although, as you mentioned in a previous email, TRAMP may make even those "clear-cut" cases a bit trickier. I'll admit I haven't considered TRAMP much in my thinking.

As a more general comment, I feel like Guix's wrappers are often treated as "cheaper" than they are. It makes me sad that using awesome as a window manager means that I have to have LD_LIBRARY_PATH= GI_TYPELIB_PATH= before calls to external programs to stop things from crashing (and working out that I needed that was a pain in itself). I'll admit that this case with Emacs and PATH seems less dangerous than the awesome wrapper, but I'm wary of the unexpected problems that it might cause.

Carlo



reply via email to

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