現在、私のコンパイルコマンドは次のとおりです。
cd ~/somedir && ./somescript.sh
これにより、emacsはエラーが発生したファイルを見つける(および開く)ことができなくなります。
もちろん、M-x cd
手動で実行できますが、現在のディレクトリをプログラムで変更するようにバッファに指示する方法はありますか?
現在、私のコンパイルコマンドは次のとおりです。
cd ~/somedir && ./somescript.sh
これにより、emacsはエラーが発生したファイルを見つける(および開く)ことができなくなります。
もちろん、M-x cd
手動で実行できますが、現在のディレクトリをプログラムで変更するようにバッファに指示する方法はありますか?
回答:
最後に、現在のディレクトリが邪魔になりすぎたため、現在のディレクトリに依存することをやめました。
代わりに、追加したビルドディレクトリを使用して compilation-search-path
(add-to-list 'compilation-search-path "/path/to/build")
この質問で見つかりました:Emacsのcompile-goto-errorがコンパイルバッファーから取得するパスを調整する方法は?
この質問は、特定の文字列が発行された場合にディレクトリマッチャーがディレクトリを自動的に変更できることも説明しています。
Entering directory `...'
...
Leaving directory `...'
これも明らかにカスタマイズ可能です。
/path/to/build
。
アンカーとして機能するために、コンパイルコマンドを呼び出したいディレクトリのDiredバッファーを作成するだけです。コンパイルする場合は、Diredバッファーに切り替えてコンパイルコマンドを実行します。compile
Diredバッファーのこのディレクトリでコマンドを実行します。この利点はM-x cd、コンパイルするときにディレクトリを移動したり、ディレクトリを移動したりする必要がないことです。
を使用するとprojectile
、という名前のコマンドprojectile-compile
があります。このコマンドは、によって認識されるプロジェクトルートでコンパイルコマンドを自動的に実行しますprojectile
。
この代替コマンドはトリックを実行する必要があります。
(defun compile-in-dir (dir command)
(interactive "DCompile in directory: \nsCommand: ")
(let ((default-directory dir))
(compile command)))
または、通常のcompile
コマンドを使用してコンパイルを実行した後(setq default-directory "~/somedir")
、*compilation*
バッファーで評価できます。これでエラーナビゲーションが機能するはずですが、停止recompile
して友人が正しいことをすることはできません。