On Jan 14, 2008 7:50 AM, Nick Treleaven nick.treleaven@btinternet.com wrote:
On Sun, 13 Jan 2008 22:30:51 -0600 "Jeff Pohlmeyer" yetanothergeek@gmail.com wrote:
If that symbol is NOT found, or if it evaluates to FALSE, then continue on loading the plugin as always. But if the symbol exists and is true, then close the module and re-open it *without* the G_MODULE_BIND_LOCAL flag.
We needed to add it in r1734: "Use G_MODULE_BIND_LOCAL for plugins to prevent symbol shadowing by other modules, and to help detect unresolved symbols at loading time."
IIRC without it calling info() from within a plugin when > 1 plugins were loaded without G_MODULE_BIND_LOCAL one of the plugins would get the wrong plugin name.
Yes, I remember that conversation, but I thought we decided there wasn't any real-world reason why a plugin would need to call its own info() function.
I don't think we should allow any loading without it, because things can silently go wrong.
I really wish you would reconsider it, the current situation leaves me with the temptation of trying to cram more and more functionality into the plugin to compensate for its lack of dynamic module support, and it leaves script writers in the position of being stuck with whatever feature set I think they need.
( Not to mention explaining to users why SciTE is able to load Lua modules, but Geany is not. :-)
If we can support dynamic Lua modules, the whole universe opens up -- ready-made support for expat, pcre, libtidy, networking, etc...
- Jeff