- Subject: Re: hooks and modes
- From: "G. Milde" <milde@xxxxxxxxxxxxxxxxxxxxx>
- Date: Mon, 17 Nov 2008 08:35:16 +0100
On 14.11.08, John E. Davis wrote:
> Michele Dondi <blazar@xxxxxxxxxxxxxxxxxx> wrote:
> > I would regard relying on a name convention as KISS enough, but...
> > err well, perhaps even TOO simple, to the point of being error prone.
I do not think so.
> > How does it work? Is there a sybol table or so that gets scanned for
> > functions having.
It utilises the fact that SLang is an interpreted language. Hence
looking for a function given its name as a string value is
straightforward.
> If the name of the mode is "foo_mode", then the foo_mode function will
> make the function call:
> run_mode_hooks ("foo_mode_hook");
> The run_mode_hooks function is defined in site.sl. It first calls a
> function call `global_mode_hook' with the name of the mode hook
> ("foo_mode_hook" in this case), then if `foo_mode-hook' exists, it
> will call it.
> > names ending in "_hook"? Wouldn't it be more reliable to have, say, a
> > register_hook_for_mode() function instead, at the expense of some more
> > verbosity. Please feel free to laugh at me if all this is too naive...
I do not think that it is more reliable. However, it might be more
easy in case there is already a function that you want to run as
"foo_mode_hook" but it is named "bar_fly". In this case, instead of
define foo_mode_hook() { bar_fly(); }
it might be simpler to register it as
mode_set_mode_info("foo", "mode_hook", "bar_fly");
or
mode_set_mode_info("foo", "mode_hook", &bar_fly);
> You can create such a mechanism by defining your own
> global_mode_hook:
This could be made a bit simpler using mode_info:
define global_mode_hook (mode_hook_name)
{
call_function(mode_get_mode_info("mode_hook"));
}
mode_set_mode_info("foo", "mode_hook", &bar_fly);
Maybe this could even go into the (currently empty) default definition
of global_mode_hook() in site.sl?
Günter
--------------------------
To unsubscribe send email to <jed-users-request@xxxxxxxxxxx> with
the word "unsubscribe" in the message body.
Need help? Email <jed-users-owner@xxxxxxxxxxx>.
[2008 date index]
[2008 thread index]
[Thread Prev] [Thread Next]
[Date Prev] [Date Next]