The trigger isn't "discovering magma in a newly revealed area" - the trigger is discovering the appropriate map feature, specifically either a volcano, a magma pool, or a magma sea. If you're particularly tricky, you might be able to grab a suitably ordinary map block, set its global feature index to that of the magma sea (there might actually be more than one), then set the "is global feature" flag on a particular tile and dig to it to trigger the "You have discovered the magma sea" message and enable the magma workshops.
OOH. that has my attention. Can those flags be found and manipulated with tiletypes? I will absolutely try it if anybody proposes a method (I'm getting sick of using hacked reactions to generate charcoal, although it does keep my haulers busy), and report back.
I actually looked a bit closer at the code for populating the Build menus and it seems that there's a list that presumably contains all of the features in your current embark, so it might be necessary to choose a specific feature ID in order for it to work (since if it's not native to your embark, it might not be in that list and thus wouldn't be able to enable magma workshops).
The probe command has shown me the feature ID. for my magma sea, for example, the global feature ID on my current embark is 980 (followed by an 8 in brackets; not sure what that means but I'm pretty sure it's not part of the ID). So that part works out fine. I can also successfully find feature IDs for other major features like caverns and rivers. But now I'm not sure how to apply this ID to tiles. tiletypes doesn't seem to have this functionality. Is there a tool that can manipulate this data?
Also, another question: what exactly do fixdiplomats, fixmerchants and fixveins do to my raw files? I've got some modifications, including a human liaison (fixing that problem already) so are there any specifics? I don't want to mess up any of my changes by using a function I don't need too badly right now.