Homepage: https://github.com/pd/swallow-window.el
Author: Kyle Hargraves
Updated:
Grow the current window into the space occupied by neighboring windows
Ever have your windows arranged in, say, a 2x2 square and go to delete one of them, only to end up with the wrong window split disappearing? It happens to me all the time. When you use `delete-window', the split that will disappear depends on the order in which you created the windows. +-------+-------+ | | | | A | B | | | | +-------+-------+ | | | | C* | D | | | | +-------+-------+ Imagine you are focused in window C, which contains tall content such as a rapidly scrolling log file you're tailing. It'd be nice to eliminate window A so that you could see more at once. Unfortunately, you actually opened these in the order (A C D B), so when you kill A, B takes over all of its space. This library fixes that. Rather than deleting window A, stay focused on C and tell it to consume all the space in the window above it. +-------+-------+ +-------+-------+ | | | | | | | A | B | | | B | | | | | | | +-------+-------+ -> | C* +-------+ | | | | | | | C* | D | | | D | | | | | | | +-------+-------+ +-------+-------+ But what if multiple windows were above it? +-------+-------+ +-------+-------+ +-------+-------+ | A | | | A | | | | | +-------+ B | +-------+ B | | | B | | E | | | | | | | | +-------+-------+ -> | +-------+ -> | C* +-------+ | | | | C* | | | | | | C* | D | | | D | | | D | | | | | | | | | | +-------+-------+ +-------+-------+ +-------+-------+ The same operation would first eliminate E, and running it once more would eliminate A. What about a pair of windows split in the opposite direction as the window you are focused on? +---+---+-------+ +-------+-------+ | | | | | | | | A | E | B | | | B | | | | | | | | +---+---+-------+ -> | C* +-------+ | | | | | | | C* | D | | | D | | | | | | | +-------+-------+ +-------+-------+ Some cases are harder to decide: +-------+-------+ +-------+-------+ +-------+-------+ | A* | | | A* | | A* | +-------| C | -> +---------------| OR +---------------| | B | | | B | C | | B | +-------+-------+ +-------+-------+ +-------+-------+ If I swallow right from A, I generally want to retain C; if I had wanted both A and B to grow, I could have just deleted C. So that is the default behavior. With `prefix-arg', though, swallowing will delete C rather than resize it.