`geany.conf and session.conf are basically hard coded (macro defines). This doesn't address splitting config/session in project files. `keyfile.c` and `project.c` are currently parallel keyfile management implementations. The session split doesn't do anything to unify them, and potentially makes unifying them more difficult. (Especially if there's resistance to changing code that's already been merged.)
A minor change that would make unifying geany and project sessions easier is to change the location and filename of `session.conf`. Instead of hard coding it, it could be stored in `~/.cache/geany/sessions` with filename `[basename]-[md5-of-path-of-original-conf].session.conf`. (This is somewhat based on how image thumbnails are cached.)
``` /home/user/.config/geany/geany.conf /home/user/.cache/geany/sessions/geany-e71b0fe665f2c7b4749ddd8bf10243ee.session.conf
/home/user/projects/example.geany /home/user/.cache/geany/sessions/example-6b433b8dd3405c5100ec3000f8e80d48.session.conf ```