Динамический исполняемый файл Git в зависимости от окружения в Emacs lisp - PullRequest
1 голос
/ 08 ноября 2010

Я использую Git на своих двух компьютерах Mac, каждый из которых имеет свой путь к исполняемому файлу (один - homebrew, другой - make / install'd).Я также использую Git в режиме Tramp.

Так что, в основном, я хочу это в псевдокоде:

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 Ответ

5 голосов
/ 08 ноября 2010

Будет сложно, если вы настаиваете на 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))
...