$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)