我在我的2台Mac上使用Git,每台Mac都有不同的可执行路径(一个是自制程序,一个是make / install'd)。我也通过Tramp模式使用Git。
基本上我想要这个,用伪代码:
if home mac:
(setq magit-git-executable "~/Projects/homebrew/bin/git")
else if work mac:
(setq magit-git-executable "/usr/local/git/bin/git")
else [if in tramp mode]:
(setq magit-git-executable "git") ;; Linux can work this out so don't need a full path
如果Emacs尊重我的setenv("PATH")
配置,那么这一切都可以作为最后一个句子正常工作,但似乎没有。
有没有一种很好的方法可以在Elisp中解决这个问题,这样我的emacs.d
可以在机器之间保持便携?如果失败了,是否可以在我通过tramp编辑文件时设置变量?
答案 0 :(得分:5)
如果你坚持magit-git-executable
如果你在一个Tramp缓冲区中取一个值而另一个值(如果不是),那将会很棘手。将magit-git-executable
保留为默认值"git"
会更容易,并根据您所在的计算机调整exec-path
。
您如何区分您的机器?按名字?如果是这样,那么可能是这样的:
(require 'cl)
(loop for (name . dir) in '(("home.local" . "~/Projects/homebrew/bin")
("work.local" . "/usr/local/git/bin"))
if (string= (system-name) name)
do (push dir exec-path))