これは、EmacsLispよりもbashスクリプトを好む人のためのソリューションです。私の.emacsでは、すべてのバッファーを保存し、プロジェクトをコンパイルするbashスクリプトを実行するコマンドを定義しています。
(defun save-all-and-compile () (interactive)
(save-some-buffers 1)
(shell-command "make-and-run.sh &"))
(add-hook 'c-mode-common-hook (lambda ()
(local-set-key (kbd "<f5>") 'save-all-and-compile)))
小さなプロジェクトの場合、スクリプトは次のように単純にすることができます
#!/bin/bash
make -j && ./<main>
ここで、「main」は実行可能ファイルの名前です。大規模なプロジェクトの場合、最初にルートディレクトリを見つける必要があります。同様に、プログラムをビルドして実行するために、さまざまなスクリプト(さまざまなキーにバインド)を使用できます。次に、プロジェクトのさまざまな部分をテストするためのスクリプトをいくつか追加します。しかし、これらは自分で理解できる詳細にすぎません。
スクリプトが「&」を使用して非同期で実行されていることを確認してください。このようにして、非同期シェルコマンドバッファがmakeとプロジェクトからの出力で開き、開いたままになります。
編集
以下の議論に基づいて、私は最初にそれを考え抜いたようであり、解決策は非常に単純です。通常の「make」または「make-k」をcompile-commandに渡す代わりに、最初にプロジェクトのルートディレクトリとビルドに移動するシェルスクリプトを使用できます。
(setq compile-command "script.sh")