w32-shell-* 変数がわかりません。たぶん、あなたが何を意味するかを説明するためにいくつかのコードを示すことができます.
SUAもわかりません。私は Windows で GNU emacs v22 を使用しており、powershell を下位シェルとして実行しています。最初はあなたと同じようにいくつかの問題がありましたが、シェルの起動方法をよりよく理解して解決しました。多分これはあなたを助けるでしょう。
私はこれらの変数を使用します:
(setq explicit-shell-file-name
"c:\\windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe")
(setq explicit-powershell.exe-args
'("-Command" "-" )) ;; interactive, but no command prompt
次の 2 つのことに気付くまでは苦労しました。
シェルプロセスのコマンドライン引数を指定しない場合、emacs は黙ってデフォルトで using を使用し-i
ます。powershell の場合、その引数はサポートされていなかったか、または私が望んでいたものとは異なる動作をしたかのどちらかでした (忘れました)。そのため、シェルを呼び出すために引数を明示的に設定する必要がありました。
シェルに引数を指定するための変数の名前は、シェルの起動に使用されるプログラムの名前によって異なります。私が知る限り、これは文書化されていません (ソース コードが文書化されていると考えない限り!)。Linux で sh を実行している場合、変数はexplicit-sh-args
. bsh の場合、explicit-bsh-args
. Windows を使用している場合は、.exe サフィックスを含む、exe の適切な名前を使用する必要があります。奇妙に見える変数名になりますが、機能します。
powershell を下位の emacs シェルとして起動する完全なコードは次のようになります。
;; get a name for the buffer
(setq buffer (get-buffer-create "*PowerShell*"))
(let ((tmp-shellfile explicit-shell-file-name))
(setq explicit-shell-file-name
"c:\\windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe")
(setq explicit-powershell.exe-args
'("-Command" "-" )) ; interactive, but no command prompt
;; launch the shell
(shell buffer)
; restore the original shell
(if tmp-shellfile
(setq explicit-shell-file-name tmp-shellfile)))
たぶん、そのようなものがあなたのために働くでしょう。