You may want to configure the AutoSave plugin to save your work to a backup file (for example every 3 minutes). This does not bring back the work you lost today, but it will help in the future.
Before doing anything else, you should check whether the file is really empty. It may be that you only messed up with encodings. In this case, your source would still be there, the file just appears empty.
This is a dim hope, but still...
Bringing back an overwritten file the text in the empty file may be possible, but it is impossible to predict how hard it will be.
Above all else, you should avoid doing anything that writes to the hard disk in any way as the first thing.
Saving files normally works by writing to a temporary file, then doing a ternary rename, and finally unlinking the original file. Thus, any standard file recovery program should (with some luck) be able to recover the original file. However, do note that the operating system may reuse the "free" clusters for something else if you save anything to your hard disk.
Of course it is not possible to tell what exactly happens when an application freezes/crashes, so in theory it could as well be that the file was just truncated to zero length for some reason (I can't imagine why, but why not...)
In this case, a standard unerase tool would probably not find anything. However your data will still be on the disk (at least as much as fits into one cluster). It is a lot more work to get to that data than running a standard unerase program, but depending on how tough it is to restart from scratch, it may still be worth it. Booting from a Linux rescue cdrom and scanning the disk for some known string should get you near it.