Re: emacs save and kill buffer for (neo)mutt
- Date: Fri, 12 Apr 2019 13:00:06 -0500
- From: David Wright <deblis@xxxxxxxxxxxxxxxxx>
- Subject: Re: emacs save and kill buffer for (neo)mutt
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))))
> (let ((buf (current-buffer)))
> (when del (delete-windows-on buf))
> (kill-buffer buf))))
> (global-set-key (kbd "C-q") 'kill-save-buffer)