Как запустить Emacs и Cygwin с переносного диска

Я успешно запускаю Emacs с переносного диска (USB-накопителя), но когда я пытаюсь использовать функции сравнения, у меня возникают проблемы. Я установил cygwin, и он работает с Emacs, когда я добавляю путь к diff.exe в переменную окружения PATH в Windows. Проблема в том, что при таком подходе мне приходится редактировать переменные окружения на каждом компьютере, который я хочу использовать. Не хорошо.

Затем я попытался добавить его в переменную пути из моего сайта-start.el. Путь добавляется, когда я просматриваю переменную из Emacs, но Emacs все еще не может найти инструмент сравнения.

У кого-нибудь есть идеи, как это решить?

заранее спасибо

-- Мартин

Редактировать: Мой site-lisp.el выглядит сейчас так, и до сих пор ничего не работало (кроме добавления пути вручную в переменную окружения PATH):

;
; Get drive letter
;
(defvar usb-drive-letter (substring data-directory 0 2)) 

;
; Add cygwin-folder to path and exec-path
;
(defvar cygwin-folder (concat usb-drive-letter "/PortableApps/CygwinPortable/App/Cygwin/bin/"))
(setenv "PATH" (concat (getenv "PATH") ";" cygwin-folder))
(setq exec-path (append exec-path cygwin-folder))

Мои папки следующие:

[root of usb stick]
\PortableApps\Emacs\bin  (including runemacs.exe)
\PortableApps\CygwinPortable\App\Cygwin\bin   (including diff.exe)

person Tech    schedule 20.09.2012    source источник
comment
Можете ли вы показать использование фактического значения exec-path после запуска вашего кода?   -  person phils    schedule 25.09.2012


Ответы (4)


Какую «переменную пути» вы устанавливаете? IIUC вы хотите установить переменную exec-path Lisp (возможно, вы также захотите установить переменную среды PATH, но она не повлияет на поиск исполняемых файлов Emacs, она передается только подпроцессам).

person Stefan    schedule 20.09.2012
comment
Я отредактировал свой вопрос, теперь включая части моего файла site-lisp. При редактировании переменной среды PATH в Windows инструменты сравнения обнаруживаются, но не когда я делаю это в файле site-lisp. - person Tech; 24.09.2012

try:
(setenv "PATH" (concat "d:/path/to/bin;" (getenv "PATH")))
обратите внимание, что разделителем пути должен быть ; вместо : под окнами

person Whistler    schedule 20.09.2012

Вы можете попробовать явно указать на команду diff, задав для переменной 'diff-command' полный путь.

(setq diff-command "full/path/to/diff.exe")
person Chris McMahan    schedule 20.09.2012

Вместо этого я переместил diff.exe в папку bin Emacs. Ничто другое, что я нашел, не работает. Теперь моя единственная проблема - это кровавая переменная nodosfilewarning, чтобы остановить жалобы cygwin на мои пути ms-dos...

Ваше здоровье

person Tech    schedule 03.10.2012