
On Wed, Oct 10, 2007 at 04:04:36PM +0000, Joachim Breitner wrote:
Hi,
Am Mittwoch, den 10.10.2007, 11:56 -0400 schrieb David Roundy:
On Wed, Oct 10, 2007 at 10:48:52AM -0500, Spencer Janssen wrote:
I think this would be very useful for contrib modules, put perhaps less easy to use for regular users. I'm going to delay discussion until after the 0.4 (which should come later this week) release, to make sure we have time to find a nice design.
Also, note that these proposals could all be implemented in a contrib module as a function such as:
combineHooks :: [... -> ... -> ...] -> ... -> ...
so it's hard to see why we'd want to put this in the core (unless the core wants it).
We still would need the record definition in the core, as that is where hooks are called and where new hooks are added. And I think requiring the user to write
No, the core would remain unchanged, since the core API is unchanged, and the record would be defined in Contrib. Why would you need to define a record for your hook type in the core?
import XMonadContrib.CombineHooks
xmonadHook = combineHooks [ .. ]
instead of just
xmonadHooks = [ .. ]
whenever they want to use more than one extension, just to safe half a line of code in all the places where hooks are called does not seem to be worth it.
I'm not convinced that there will be such a proliferation of hooks that many users will ever do this. I suppose that's largely because I don't yet use any myself, and haven't seen any reason to define any. I'd rather see the core API only complicated when there's a feature that can't be added without the complication (as happened with layouts) or when it makes things much simpler (or is needed for a reasonable core functionality, as with LayoutSelection). I'd say that one line and a dozen characters added to the Config file is well worth the ability to experiment freely, and allowing us to see and try out code. -- David Roundy Department of Physics Oregon State University