在使用el-get安裝最後一個cedet期間,我在窗口上遇到了展開文件名函數的奇怪行爲。這個問題與自動加載的產生有關。Windows上的Emacs elisp展開文件名行爲
去年的emacs的autoload.el 50年1月24日包含以下功能:
(defun autoload-generated-file()
(expand-file-name generated-autoload-file
;; File-local settings of generated-autoload-file should
;; be interpreted relative to the file's location,
;; of course.
(if (not (local-variable-p 'generated-autoload-file))
(expand-file-name "lisp" source-directory))))
在我的情況下產生的,自動加載的文件是:
"/home/ngulyamov/.emacs.d/el-get/cedet/lisp/cedet/srecode/loaddefs.el"
,因爲我有$ HOME $環境指向C:/ home/ngulyamov的變量。在這種情況下,上面的函數返回:
"d:/home/ngulyamov/.emacs.d/el-get/cedet/lisp/cedet/srecode/loaddefs.el"
由於源目錄包含:
"d:/devel/emacs/emacs-bzr/trunk_jenkins/".
正如你可以看到它的變化盤符從C:到d :. 同時對emacs的23.3這個函數返回半正確的值作爲源目錄中包含的值:
"c:/Users/Sean/Downloads/emacs-23.3/".
據擴展文件名功能描述:
(擴大 - 文件 - 名稱name &可選默認目錄)
轉換的文件名NAME絕對和規範化它。 第二ARG DEFAULT-目錄是目錄開始與如果名稱是相 (不與斜線或波浪線啓動);如果DEFAULT-DIRECTORY爲零或缺失,則使用 當前緩衝區的'default-directory'值。
Windows上的路徑永遠不會從斜線或波浪線開始。
現在我的問題:1。 不擴大文件名稱在Windows功能的行爲是否正確? 2.爲什麼source-directory包含開發者路徑的值?
我們可以考慮擴展文件名稱作爲在Windows上的越野車嗎?或者它只是在autoload.el中被錯誤地使用?
預先感謝您。
第一個路徑應該以'c:'開頭嗎? – phils
@phils 嗨,不,它並不以C開始:但一切工作相當不錯: 'C:\家\ ngulyamov>設爲首頁 HOME = C:\家\ ngulyamov C:\家\ ngulyamov> env | grep的HOME HOME = /家庭/ ngulyamov C:\家\ ngulyamov> LS /家庭/ ngulyamov ...文件列表....' –
這顯然是某種Windows外殼程序的我從來沒有見過的,如果它使用正斜槓,並接受'ls'作爲命令。 (是Windows 7嗎?) – phils