Teika Kazura <[email protected]> writes: > Currently, each module independently puts their functions on hooks. > So, it is quite obscure both for users and developers what is > processed, e.g., when a window is mapped.
I seem to recall you mentioning this issue before, and problems that it caused, but I don't remember the message. Could you refresh our memory? Because I'm not certain what problem you're trying to solve. > So, if "big one hook" like (add-hook 'before-add-window-hook > system-before-add-window) replaces all system hooked functions in > before-add-window-hook, and `system-add-window' is coded somewhere > with comments like "before changing focus, prepare xxx", then birds > eye view is there. Those who want a hack can tell what should be > done. When you want to put something on a hook, you can easily choose > whether it goes at the head or the tail of the hook. If you need to, you can see what's being done in a hook by evaluating the hook in sawfish-client or something. And order isn't supposed to matter in a hook; if we get in the habit of letting our code depend on a particular order my worry is that it would become more fragile. If there's some reason that order does matter in a particular case it may be that we need to separate a particular hook into two (or more?) hooks: one a before-x-hook and one an after-x-hook. > There's nicety in Sawfish initialization; some open/require can break > Sawfish, and it's difficult to tell when it happens. This project may > be challenging, but I think it's possible, at least for some hooks. Can you give an example of this? Some of this may indicate bugs that should be fixed. > What do you think? Personally, I like hooks. Hooks make the code much more extensible by the end user, and ideally more modular as well. I can add to a hook in the module that needs that hook, so if the module isn't loaded that code never gets run. Or I could add a hook in my .sawfishrc file if it's just a quick hack. On your method it sounds like that wouldn't be possible. -- Jeremy Hankins <[email protected]>
