On Fri 12 Apr 2019 at 18:04:45 (+0200), Pétùr wrote: > I use neomutt with emacs. > > I would like to quickly save and kill a buffer in emacs. This is to > avoid typing C-x C-s and, then, C-x C-c when sending an email. I want > one shortcut to save and kill the buffer and be back quickly in mutt to > send the email. > > I tried the following inside my .emacs (binded to C-q). It works but > kill also the window when inside a terminal. I am not going back to mutt > after writing inside emacs (-nw) and C-q. How can I fix that?
I just put (global-set-key [?\C-q] "\C-x\C-s\C-x\C-c") into my ~/.emacs file and it works just as one would expect, both when emacs is running in a separate window (which disappears) or when emacs is running with -nw in an xterm (the xterm is unaffected). I will finish composing this email (in emacs -nw) by typing ^q and expect to be left in mutt, whereupon I shall press y to send it. Is that what you wnat? Here goes … > ;; Kill the current buffer immediatly, saving it if needed. > (defvar kill-save-buffer-delete-windows t > "*Delete windows when `kill-save-buffer' is used. > If this is non-nil, then `kill-save-buffer' will also delete the corresponding > windows. This is inverted by `kill-save-buffer' when called with a prefix.") > (defun kill-save-buffer (arg) > "Save the current buffer (if needed) and then kill it. > Also, delete its windows according to `kill-save-buffer-delete-windows'. > A prefix argument ARG reverses this behavior." > (interactive "P") > (let ((del kill-save-buffer-delete-windows)) > (when arg (setq del (not del))) > (when (and (buffer-file-name) (not (file-directory-p (buffer-file-name)))) > (save-buffer)) > (let ((buf (current-buffer))) > (when del (delete-windows-on buf)) > (kill-buffer buf)))) > > (global-set-key (kbd "C-q") 'kill-save-buffer) > Cheers, David.