On Feb 18, 2011, at 11:31 48AM, Fernando Olivero wrote:
On Fri, Feb 18, 2011 at 10:40 AM, Henrik Johansen <henrik.s.johansen@veloxit.no> 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. Cheers, Henry