Независимый от платформы путь (в LaTex и Elisp)?

70
4

Я запускаю Emacs на Win7 и Ubuntu и пытаюсь поделиться большей частью своей конфигурации с помощью dropbox.com. Я все еще не мог понять, как писать путь к загрузке файлов или изображений (например) независимым от платформы способом.


Я отразил структуру каталогов на обеих машинах, чтобы в домашнем каталоге относительный путь работал. Есть ли способ достичь этого с помощью единого пути без if-clauses (если система... еще...) повсюду?


Я пробовал ~/, и он работал иногда, иногда нет.


'home' установлен на Win7, но его следует рассматривать как% home% на Win7 и $HOME на ubuntu (справа?).


Мне нужно решение для:


    код elisp
    латексные файлы (адресные изображения, списки)

спросил(а) 2011-03-09T19:59:00+03:00 9 лет, 7 месяцев назад
1
Решение
71

У меня есть параметр в верхней части моего .emacs, который проверяет ОС и устанавливает CONST, указывая соответственно на корневую директорию пути. Затем, в рамках конфигураций, я просто ссылаюсь на переменную в своих инструкциях пути. Просто протестирован на OS X и Windows 7.


Вот несколько примеров:

(defconst HOME_DIR 
(if (eq system-type 'darwin)
(concat "/Users/" (getenv "USER"))
(concat "c:/cygwin/home/" (getenv "USER")))
"Home directory. I could rely on the HOME environment variable,
but I'm being retentive.")

(defconst EMACS_PKGS (concat HOME_DIR "/emacs-pkgs")
"Directory for the emacs pkgs and configuration files.
Default uses `HOME_DIR' as a prefix")

;; isolate customize settings
(setq custom-file (concat EMACS_PKGS "/emacs-custom.el"))

ответил(а) 2011-03-09T20:56:00+03:00 9 лет, 7 месяцев назад
82

В Windows, ~ разрешает любую переменную среды HOME. Мне было очень полезно установить HOME на C:\Users\username (в Win 7). Это означает, что я могу поместить там свой файл .emacs, а также, что ~ будет ссылаться на файлы в нем, когда я открываю файлы.

Как только вы это сделаете, ваш elisp может ссылаться на ~ в качестве домашнего каталога на Windows или Linux.

ответил(а) 2012-08-17T00:47:00+04:00 8 лет, 2 месяца назад
41
ответил(а) 2011-03-09T20:33:00+03:00 9 лет, 7 месяцев назад
41

Мой опыт работы с Emacs в Windows заключается в том, что ~ не находится в C:\Users\yourusername. Для меня это в C:\Users\rafe\AppData\Roaming. Итак, для случая с Emacs, если вы отбрасываете файлы, например,% HOME%\AppData\Roaming (или, в Windows Emacs, ~), у вас будет доступ к этим файлам. То, что мои .emacs были по умолчанию, по крайней мере. Путь может отличаться в вашей системе, поэтому см., Где Emacs берет вас, когда вы пытаетесь найти файл, и введите ~/.


Этот параметр может быть настраиваемым, но я никогда не заботился об этом, чтобы его изменить.


Что касается LaTeX, к сожалению, я не могу помочь.

ответил(а) 2011-03-09T20:06:00+03:00 9 лет, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема