ブログ(ぶろぐ) 〜blog〜

rustic-modeのrun-cargoで標準入力とやりとりする

2020-04-12 18:12

EmacsのRust編集用モードrusticで、cargo runをしたときに標準入力をうけつけてくれなかった。 cargo runの出力bufferをcomintモードにして1、プロセスの終了で元のbufferに戻る関数を書いた。 プロセスのイベントハンドラをset-process-sentinel2で設定している。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
(defun my-cargo-run ()
  "Run 'cargo run' for the current project with stdin."
  (interactive)
  (rustic-cargo-run)
  (lexical-let* ((orig-win (selected-window))
				 (run-buf (get-buffer "*rustic-compilation*"))
				 (run-proc (get-buffer-process run-buf))
				 (run-win (display-buffer run-buf nil 'visible)))
    (set-process-sentinel run-proc
						  (lambda (p e)
							(select-window orig-win)))
    (select-window run-win)
    (comint-mode)
    (read-only-mode 0)))

  1. Cargo-process does not accept user input ↩︎

  2. Sentinels: Detecting Process Status Changes ↩︎