On 2013-03-08, Sanel Zukan <[email protected]> wrote:
> Hi all,
>
> I'm just curious how do you guys handle this case? I often have screen
> split with a couple of buffers and when I delete one of them, split
> got messed up.
>
> Vim have one cool trick for this: ':bp|bd #' and evil will only execute
> ':bp' part. Is it hard to add similar feature (this looks to me like
> piping the commands) or Emacs has something better under the belt?

The simplest approach is probably

    (evil-ex-define-cmd "bd[elete]" 'kill-buffer)

i.e. the same C-x k. A little bit more sophisticated is

    (evil-define-command evil-delete-buffer-keep-windows
      (buffer &optional bang)
      (interactive "<b><!>")
      (with-current-buffer (or buffer (current-buffer))
        (when bang
          (set-buffer-modified-p nil)
          (dolist (process (process-list))
            (when (eq (process-buffer process)
                      (current-buffer))
              (set-process-query-on-exit-flag process nil))))
        (if (and (fboundp 'server-edit)
                 (boundp 'server-buffer-clients)
                 server-buffer-clients)
            (server-edit)
                  (kill-buffer nil))))
    (evil-ex-define-cmd "bd[elete]" 'evil-delete-buffer-keep-windows)

This function is exactly the same as `evil-delete-buffer` with
the code that closes the windows deleted.

Maybe we could add another parameter that determines whether the
windows should be closed and defaults to some customization
option.

Frank


_______________________________________________
implementations-list mailing list
[email protected]
https://lists.ourproject.org/cgi-bin/mailman/listinfo/implementations-list

Reply via email to