2012-09-20 45 views
1

我成功地從便攜式驅動器(USB棒)運行Emacs,但是當我嘗試使用差異函數時遇到了麻煩。 我已經安裝了cygwin,並且在將diff.exe的路徑添加到Windows環境變量PATH中時,它可以與Emacs一起使用。問題是,用這種方法我必須編輯我想要使用的每臺計算機上的環境變量。不好。如何從便攜式驅動器運行Emacs和Cygwin

然後我試圖將它添加到我的site-start.el中的路徑變量。當我從Emacs內部檢查變量時添加路徑,但仍然Emacs找不到diff工具。

有沒有人有任何想法如何解決這個問題?

在此先感謝

- 馬丁

編輯: 我的網站,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) 
+0

你能告訴使用'EXEC-path'的實際值代碼運行之後? – phils

回答

0

我最終將diff.exe移動到Emacs bin文件夾中。我沒有發現任何其他工作。現在我唯一的問題是血腥nodosfilewarning變量停止的cygwin我的MS-DOS路徑抱怨......

乾杯

0

嘗試:
(SETENV 「PATH」(CONCAT 「d:/路徑/爲/ bin;」(getenv的 「路徑」)))
注意路徑分隔符應該的;而不是:在windows下

1

你設置了哪個「路徑變量」? IIUC你想設置exec-path Lisp變量(你可能也想設置PATH環境變量,但是那個不會影響Emacs搜索可執行文件,它只能傳遞給子進程)。

+0

我編輯了我的問題,現在包括我的站點lisp文件的一部分。 當在窗口中編輯'PATH'環境變量時,diff工具被找到,但是當我在site-lisp文件中執行時,沒有找到它。 – Tech

0

您可以嘗試通過將變量'diff-command'設置爲完整路徑來明確指向diff命令。

(setq diff-command "full/path/to/diff.exe") 
+0

不幸的是,不幸的是,也沒有工作:( – Tech