hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

emacsclientだけ終了してバッファは開いたままにする

$EDITORをemacsclientにしていて,ターミナルからアプリケーションのEmacsを呼び出してる.
コードを読みたいときとかにemacsclientからファイルを開くと,バッファを閉じるまでターミナルでemacsclientが終了しなくて不便だった.
たとえば,なにか別のアプリケーションが$EDITORを使ってファイルを開いてくれるときに,たとえばメッセージを書いてくださいと言って開いてたら,メッセージを書いて保存してバッファを閉じるけど,読んでくださいって言って開かれたときには,あとで読みますっていいながら,バッファは開いたままemacsclientを終了して,アプリケーションの続きを実行してほしい,ということがあると思う.
serve-buffer-doneの引数にtを渡すと,emacsclientだけ終了して,バッファは閉じない,というのができた.Command+zで呼べるようにした.

(defun my-server-detach-buffer ()
  (interactive)
  (server-buffer-done (current-buffer) t)
  (message "Detached")
  )
(global-set-key [(super z)] 'my-server-detach-buffer)