ディスクに書き込まずにemacsバッファの内容をgccに送信する方法は?

ディスクに書き込まずにemacsバッファの内容をgccに送信する方法は?

ディスクに保存することに特に興味のないワンタイムコードを実行するのが一般的であるため、システム上のどのファイルにも添付されていないemacsのバッファで作業することがよくあります。

いつ説明した(この用語の使用は少し消えます。)Python、Scheme、Luaなどの言語、すべてのメインモード(共通モード)は、エディタ内でREPL /インタープリタを実行し、バッファの内容を直接実行する方法を提供します。 (通常send-bufferという関数があります。)

しかし、C言語を試してみると、同様の機能が見つかりません。gccファイル名を引数として指定するには、ファイルをディスクに保存する必要がありました。

ファイルをディスクに書き込むことなくemacsバッファの内容をgccに送信する方法はありますか?

ベストアンサー1

C-x hmark-whole-buffer)、'M-|()を使用してshell-command-on-regionから、上記の@Kotte提案を使用して実行してください。gcc -x c -o tmp_prog - && tmp_prog

またはこれを実行する elisp 関数があります。

(defun compile-and-run-buffer()
  "Compiles the code in the buffer using gcc, run the exe and remove it."
  (interactive)
  (shell-command-on-region
   (point-min)
   (point-max)
   "gcc -x c -o emacs_tmp - && ./emacs_tmp && rm emacs_tmp"))

おすすめ記事