Window configs drift through use. Windows get resized; different buffers get
selected; point and mark change, and so on. When you switch from one workgroup
to another, then back to the first, you want it to be in the same state that you
left it in so you don't lose your place. At the same time, it can be tedious
getting the window configuration just the way you like it, and it sucks when it
gets mangled, so it'd be nice to be able to revert it back to a known-good state
For this reason, every workgroup actually consists of two wconfigs: a base
config and a working config . The base config is the pristine original
wconfig, set exactly the way you like it. And the working config is whatever
the frame happens to look like while you're using it . The base config only
gets altered explicitly, and you can revert back to it at any time. Use
`<prefix> r` (`wg-revert-workgroup`) to revert the working config to the base
config. The opposite of reverting is updating. `<prefix> u`
(`wg-update-workgroup`) updates the base config with the current working config.
So the two commands are mirror images of each other: the former sets the working
config to the base config (reverting the working config), and the latter sets
the base config to the working config (updating the base config). You can
revert all workgroups' working configs to their base configs with `<prefix> R`
(`wg-revert-all-workgroups`), and you can update all workgroups' base configs to
their working configs with `<prefix> U` (`wg-update-all-workgroups`). Update
all your workgroups with `<prefix> U` now.
It's important to understand that you never actually *use* the base config --
only the working config. The base config sits in the background, and can only
be modified with explicit updates.
 That's not entirely true: working configs are actually properties of frames,
so every frame has its own working config for each workgroup. This is because
when working with multiple frames, one expects the working config to remain the
same in that frame. If you move to another frame and modify a workgroup's
working config, then switch back to the first frame, it doesn't feel right when
the working config has changed while you were gone. This may seem complicated,
but in practice it's very natural. There's only one base config per workgroup,
though -- they're the same across all frames.
 Workgroups updates working configs lazily: it doesn't update the working
config every time changes are made to the frame -- only when the working config
is requested by a function. This produces the same behavior as more tedious
perpetual updates, but much simpler code.