No such directory found via CDPATH environment variable
この現象は、ターミナル側の cd を捕捉して、Emacs 側でも cd を動かそうとして発生しますので、.emacs や init.el で、
;; term側 cd 捕捉によるEmacs側の cd を抑制(term.elで定義されている関数) (fset 'term-command-hook '(lambda (x)))
として、ターミナル側の入力をキャッチしている関数を無効化すると、とりあえずは現象を回避できます。
この根本原因は、cygwin-mount.el によって変換される cygwin マウントポイント となるディレクトリを直接指定する場合に、末尾に / つきパスでないと変換してくれない、という仕様によるもののようです。
このようなマウントポイントの場合、
(shell-command "df -h") ファイルシス サイズ 使用 残り 使用% マウント位置 C:/gnupack_devel-12.02/app/cygwin/cygwin/bin 230G 153G 77G 67% /usr/bin C:/gnupack_devel-12.02/app/cygwin/cygwin/lib 230G 153G 77G 67% /usr/lib C:/gnupack_devel-12.02/app/cygwin/cygwin 230G 153G 77G 67% / C:/gnupack_devel-12.02/app/cygwin/local 230G 153G 77G 67% /usr/local C:/gnupack_devel-12.02/home 230G 153G 77G 67% /home
これは上手くいきますが、
(cd "/home/") "c:/gnupack_devel-12.02/home/"
これはエラーになります。
(cd "/home") Debugger entered--Lisp error: (error "No such directory found via CDPATH environment variable") signal(error ("No such directory found via CDPATH environment variable")) error("No such directory found via CDPATH environment variable") ad-Orig-cd("/home") cd("/home") eval((cd "/home") nil) eval-last-sexp-1(t) eval-last-sexp(t) eval-print-last-sexp() call-interactively(eval-print-last-sexp nil nil)
このあたりをいじるとよくなるかもしれないですが、どんな影響があるかわからないので、今回の対策としました。
cygwin-mount-activate is an interactive Lisp function in `cygwin-mount.el'. (cygwin-mount-activate) Activate cygwin-mount- and cygwin-style-handling.
file-name-handler-alist (("\\(?:\\.dz\\|\\.xz\\|\\.lzma\\|\\.lz\\|\\.g?z\\|\\.\\(?:tgz\\|svgz\\|sifz\\)\\|\\.tbz2?\\|\\.bz2\\|\\.Z\\)\\(?:~\\|\\.~[-[:alnum:]:#@^._]+\\(?:~[[:digit:]]+\\)?~\\)?\\'" . jka-compr-handler) ("\\.gpg\\(~\\|\\.~[0-9]+~\\)?\\'" . epa-file-handler) ("\\`/[^/]\\{2,\\}\\'" . tramp-completion-file-name-handler) ("\\`/\\([^[/|:]\\{2,\\}\\|[^/|]\\{2,\\}]\\):" . tramp-file-name-handler) ("\\.lnk\\'" . w32-symlinks-file-name-handler) ("^/cygdrive/[A-Za-z]/" . cygwin-mount-map-drive-hook-function) ("^//[A-Za-z]/" . cygwin-mount-map-drive-hook-function) ("^/[^:@]*$\\|^/|/[^/:]+\\(\\'\\|/\\)" . cygwin-mount-name-hook-function) ("\\`/:" . file-name-non-special))
0 件のコメント:
コメントを投稿