proglog

主にプログラミングに関する断片的メモ

mode-compile.elの設定ではまった

シェルにbashを使い、perlはactiveperlでcperl-modeから[http://www.emacswiki.org/emacs/ModeCompile:title= Mode Compile [EmacsWiki]]で"\C-cc"がしたかった。
でも、それは無理っぽい。
c:\perl\bin\perl.exeがc:perbinper.exeになってしまう。
つまり、エスケープされちゃう。

それでシェルをcmd.exeにすると、渡されるスクリプトのパスがd:/devel/perl/test.plという形式なのでcmd.exeに理解できない。
shellはshじゃないとダメっぽい。

じゃあ、cygwinperlでいこう。
すると、c:\cygwin\bin\perl.exeとなって、これがc:cygwinbinperl.exeとなって、結局同じ。

調べるとどうやらmode-compileは、exec-pathから実行ファイルを探してる。
そこにはwindows形式のパスが入ってる。
だから、

(setq exec-path (append (list
			 "/bin"
			 )
                        exec-path))

というように、cygwin上でのパスを先頭にくっつけた。

すると、/bin\perl.exeとなった。

そこで、.emacs

(setq mode-compile-dir-separator-char "/")

を追加。
これでめでたく、/bin/perl.exeで実行できた。

しかしこの解決法だと、windows上の処理系を使いたいケースに対応できない。
meadowから普通のwindows形式のパス区切り文字でファイルが渡るように出来ないのかな?

それにしても、こんな風になるというのは、どこかおかしな設定をしてるんだろうな。