The old display-buffer-alist thing did not work like I expected it to,
so we removed it.
Instead of trying to update display-buffer-alist
when the screen resizes via a hook, we just create our own display function that
can be used in display-buffer-alist directly. The function takes a
"which-side" property in the alist, the property holds a function that returns
which side the new buffer will snap to when invoked. The display
function then creates a new alist with the side property and any other
properties were passed in, and calls display-buffer-in-side-window
with the new alist.
This allows us to use this function as if it were
display-buffer-in-side-window, but with an extra property to decide
which side the window snaps to each time the function is invoked. This
is useful if you want side windows to snap to different parts of the
screen based on the current size of the frame, or anything else.
We changed the filter groups labels to start with a capital to keep
the style consistent with the Default group. We also added a new Man
filter group and a condition in the "Misc" group to exclude man pages.
Before we had a function that updated display-buffer-alist whenever
the frame's size was changed, so that info windows like flymake or
flycheck open would snap to either the bottom or right hand side of the
frame depending on whether the window manager had the frame squeezed
vertically (like when you have two windows side by side split
vertically).
Now instead of having that function run every time the frame resizes,
we just make the 'side property a function that should get evaluated
each time the property is read. The function returns either 'bottom or
'right depending on the frame's current size in pixels.
I have disabled site-gentoo being loaded automatically on start by
editing site-start. Now I explicitly require it when it's available in
this config, but it can be omitted or toggled in other configs (a
minimal config for example).
We will now put non-config related functions (any elisp libraries or
snippets that I write) into a new ".emacs.d/lisp" directory and separate them from
the config code in the ".emacs.d/config" directory.
During the transition I decided to move and rewrite the logic that
adds all of the libraries to load-path. Now this logic is in two top
level files (load-config.el load-local-lisp.el). I needed to remove
the config-programming-languages module because it conflicted with the
new load-path logic (it was mostly useless anyways).
The man advice functions are deleted in this commit but they will be
added into the new ".emacs.d/lisp" directory soon.