+custom code to toggle any given buffer

When called, function will:

- Close buffer hosting window if buffer displayed
- Open new window displaying buffer

This can be useful for utils like eshell which don't provide this
functionality.
This commit is contained in:
2020-08-14 23:55:14 +01:00
parent 8034383cc6
commit 5460412d96

View File

@@ -129,6 +129,21 @@ The logic is pretty simple:
(goto-char (+ old 1))
(evil-normal-state))))
#+END_SRC
** Toggle buffer
For some buffer with name =buf-name= with a creation function
=buf-create=, toggle it via this function.
#+BEGIN_SRC emacs-lisp
(defun +dx/toggle-buffer (buf-name buf-create)
(interactive)
(let* ((buffer (or (get-buffer buf-name) (funcall buf-create)))
(displayed (get-buffer-window buffer))) ; Get window when displayed, nil otherwise
(cond (displayed ; already displayed thus delete
(select-window displayed)
(delete-window))
(t ; not displayed thus show and select
(display-buffer buffer)
(select-window (get-buffer-window buffer))))))
#+END_SRC
* General
Setup general, a good package for defining keys. In this case, I
generate a new definer for the "LEADER" keys. Leader is bound to SPC