コンパイルモードの現在のディレクトリを自動的に変更しますか?


16

現在、私のコンパイルコマンドは次のとおりです。

cd ~/somedir && ./somescript.sh

これにより、emacsはエラーが発生したファイルを見つける(および開く)ことができなくなります。

もちろん、M-x cd手動で実行できますが、現在のディレクトリをプログラムで変更するようにバッファに指示する方法はありますか?


1
これも私がやろうとしていることです。理想的には、ベースディレクトリの.dir-locals.elに入れることができるものがあります(デフォルトディレクトリを設定するために見たハックは望ましくない副作用を引き起こし、コンパイルモードのみに設定することはしません動作していないようです)。
ジュリアンスクワイアズ14年

回答:


7

最後に、現在のディレクトリが邪魔になりすぎたため、現在のディレクトリに依存することをやめました。

代わりに、追加したビルドディレクトリを使用して compilation-search-path

(add-to-list 'compilation-search-path "/path/to/build")

この質問で見つかりました:Emacsのcompile-goto-errorがコンパイルバッファーから取得するパスを調整する方法は?

この質問は、特定の文字列が発行された場合にディレクトリマッチャーがディレクトリを自動的に変更できることも説明しています。

Entering directory `...'
... 
Leaving directory `...'

これも明らかにカスタマイズ可能です。


これは堅牢なソリューションのようです。それがあなたのために働くならば、それを受け入れてください。
マラバルバ

ビルドシステムがでいくつかのファイルを見つける必要がある場合、これは機能しない可能性があることに注意してください/path/to/build
アンドレ・ホルツナー

5

アンカーとして機能するために、コンパイルコマンドを呼び出したいディレクトリのDiredバッファーを作成するだけです。コンパイルする場合は、Diredバッファーに切り替えてコンパイルコマンドを実行します。compileDiredバッファーのこのディレクトリでコマンドを実行します。この利点はM-x cd、コンパイルするときにディレクトリを移動したり、ディレクトリを移動したりする必要がないことです。

を使用するとprojectile、という名前のコマンドprojectile-compileがあります。このコマンドは、によって認識されるプロジェクトルートでコンパイルコマンドを自動的に実行しますprojectile


4

この代替コマンドはトリックを実行する必要があります。

(defun compile-in-dir (dir command)
  (interactive "DCompile in directory: \nsCommand: ")
  (let ((default-directory dir))
    (compile command)))

または、通常のcompileコマンドを使用してコンパイルを実行した後(setq default-directory "~/somedir")*compilation*バッファーで評価できます。これでエラーナビゲーションが機能するはずですが、停止recompileして友人が正しいことをすることはできません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.