From: Peter G. <pe...@ar...> - 2004-03-27 20:20:21
|
On Fri, 26 Mar 2004 at 12:17:16 -0800, Zed A. Shaw wrote: > This is just a slight annoyance, but it has caused me two files worth of > lost code. I love J and think it's probably one of the best editors > out there, but whenever either my computer or J crashes (don't ask, > I'm quite abusive to my computer) I find that the file I was working on > becomes complete junk, and even the backups are roasted. I've actually > stopped using J and went back to XEmacs because of this one thing. I > figured I'd better drop the mailing list a line and see if I can beg > one simple feature: emacs style filename~ backups when I open a file. > Basically, just copy the file over when I open it and leave it alone. > Don't update. Don't load it into memory. If anyone has some pointers > for how I can implement this in ABCL then I'll do it. Maybe an open > file hook? If I had this one simple feature I would be very happy and > switch back. Hmmm... I haven't seen this sort of file corruption myself, but I'm willing to take your word that it happens. When j or your computer crashes, j's autosave feature should kick in, and when you restart j (possibly after restarting your computer), you should be prompted like so: Recover <name of file> from autosave file? (At which point, if you want to be extra careful, you can background j and rename the original file, just in case...) And then, when you say "Yes", the file should be recovered from its autosave file, which should have faithfully captured the buffer's state a few seconds prior to the crash, provided the filesystem had time to sync itself before things went south. Does this not work for you? Assuming it doesn't (I won't ask why), you could, as mentioned, use an open file hook and copy foo to foo~ when the file is first opened, but I don't think that approach is likely to work very well in practice. For one thing, you don't really want to do this in an open file hook, but rather in a "when the file is first modified" hook, which currently doesn't exist. And for a robust solution, you'd have to write code to detect and handle a bunch of odd situations that might come up: remote files, writable files in directories where you don't have write permission, etc. It sounds like what you really need is a backup option that would backup foo to foo~, and do it just once per editing session, at the time of first modification to the buffer. This is not a bad idea, but currently this feature doesn't exist. My best suggestion is that you might be able to use the patchmode feature, which does exist (Alt X, "help patchmode") and which is very similar to what you want (specify patchmode = "~"), with the difference that the backup is only done once (i.e. foo won't be copied to foo~ at all if foo~ already exists). Because of this difference, you'd probably want to have some mechanism to delete the ~ files automatically when you were confident that things were in a good state (maybe it would even make sense to do that in an open file hook). -Peter |