I've been working on a vue.js project this summer. During the school year I really can't dive into code so it's been fun.

I've already showed you most of the Emacs tools I use for development. Projectile, Ace-Window, IBuffer, Swiper / Ivy and all. One thing I couldn't easily do was arrange windows the way I wanted.

I've been setting up Emacs with one large window and a couple of smaller ones:

I can easily switch the buffer in the window and I can easily switch windows but what I wanted to do was swap the buffer in the large window with one of the smaller buffers and leave focus in the larger buffer:

I started looking at perspective mode and persp mode but neither work with the latest Emacs. After poking around at other packages I realized that ace-window does most of what I wanted. Ace-window has a function that swaps the buffers in two windows named ace-swap-window . The only problem is that it leaves the focus on the window you swap to not the one you started in. Ace-window also has aw-flip-window which then returns the cursor to the previous window.

With a little elisp, we get the behavior I was looking for which I then bound to C-1 z :

(defun z/swap-windowsn () "" (interactive) (ace-swap-window) (aw-flip-window) ) ( define-key z-map (kbd "w" ) 'z/swap-windows )

The video goes into more details but it shows that if you're not afraid to explore a bit you can pretty much get Emacs to do whatever you want.