el-getを使用して最後のcedetをインストールしているときに、Windows上でexpand-file-name関数の奇妙な動作が発生しました。この問題は、自動ロードの生成に関連しています。最後のemacs上WindowsでのEmacs elispの展開ファイル名の動作
autoload.el 24.1.50には、以下の機能が含まれています。私の場合、生成・自動ロード・ファイルで
(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に:.ソースディレクトリに値が含まれているように、この関数23.3 emacsの上で同時に 半正しい値を返す:
(展開-ファイル - :
"c:/Users/Sean/Downloads/emacs-23.3/".
機能記述ファイル名を展開するためによれ名前NAME &オプションDEFAULT-DIRECTORY)
ファイル名NAMEを絶対値に変換し、正規化します。 2番目のarg DEFAULT-DIRECTORYは、NAMEが相対名の場合に開始するディレクトリです。 (スラッシュまたはチルダで始まらない); DEFAULT-DIRECTORYがnilまたはmissingの場合、 現在のバッファの `default-directory 'の値が使用されます。
Windows上のパスは、決してスラッシュまたはティルダで始まりません。
私の質問: 1. expand-file-name関数の動作はWindowsで正しく行われますか? 2.なぜsource-directoryに開発者パスの値が含まれていますか?
Windows上でファイル名を展開することを検討することはできますか?または、autoload.elで間違って使用されていますか?
ありがとうございます。
最初のパスは 'c:'で始まるはずですか? – phils
@phils こんにちは、いや、それはCで起動しません。しかし、すべてがかなり良い作品: 'C:ホーム\ \ ngulyamov> HOME設定 HOME = C:ホーム\のngulyamov \ C:ホーム\ \ ngulyamov> env | grep HOME HOME =/home/ngulyamov C:\ home \ ngulyamov> ls/home/ngulyamov ...ファイルリスト.... ' –
これは明らかに以前見たことのない種類のWindowsシェルですが、スラッシュを使用する場合は 'ls'をコマンドとして受け取ります。 (Windows 7ですか?) – phils