https://forum.world.st/Menu-creation-and-invocation-tp3311552p3312413.html
> On Fri, Feb 18, 2011 at 10:40 AM, Henrik Johansen
> <
[hidden email]> wrote:
>> On Feb 17, 2011, at 9:51 47PM, Alain Plantec wrote:
>>
>>> he he he.
>>> thanks Fernando.
>>> and really really happy that you find it useful.
>>>
>>> but is see maybe an issue here. It concerns the pragma keyword.
>>> It is currently a global keyword.
>>> Maybe one should also allow a way to specify where the pragma are to be collected.
>>> maybe something like:
>>>
>>> MyMorph>>menuBuilder
>>> ^ (PragmaMenuBuilder localPragmaKeyword: 'tileMenu' model: self )
>>>
>>> notice the #localPragmaKeyword:model selector instead of #pragmaKeyword:model.
>>> it would constraint the builder to only search pragma locally.
>>> does it make sense to you ?
>>>
>>> Cheers
>>> Alain
>>
>> Yes, searching the class only would be a good idea, I'd almost consider making it the default and rename #pragmaKeyword: to #globalPragmaKeyword:.
>> It's faster, and in most cases it does what you need, also in the case where you want extensibility (through extension methods, only risk is clashing names)
>>
>> Cheers,
>> Henry
>>
>
> Hi, since i'm new to pragmas could you please explain me the
> diference between global and local searches.
> I dont understand to whom the local and global context applies to,
> when using #localPragmaKeyword:model: as oposed to
> #pragmaKeyword:model:.
>
> Fernando
>
If I understood him correctly, essentially, you limit the scope of a menu symbol.
When using globalPragmaKeyword: (pragmaKeyword: today) it will search for methods containing the pragma in the entire system, which means you can have multiple classes defining menu entries in the same (global) menu.
When using pragmaKeyword: (or what Alain calls localPragmaKeyword: ), only the hierarchy of the class in in which the method defining the PragmaMenuBuilder would be searched.
Thus, you could have two different morph classes both defining <menu: #rightClickMenu> entries, and have their menu builders only pick up those defined for that class.