动态“magit”Git可执行文件取决于Emacs lisp中的环境

时间:2010-11-08 18:38:12

标签: linux macos emacs elisp

我在我的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编辑文件时设置变量?

1 个答案:

答案 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))