sjw@cartman:~$ citescrape.sh http://citeseer.nj.nec.com/mclean94security.html Downloading page ,,, done. Extracting BiBTeX ,,, done. Extracting destination filename ... done. Extracting filename ... done. Downloading file to /home/sjw/phd/papers/unsorted/mclean94security.pdf ... done.
You probably want to change the DESTDIR variable.
sjw@cartman:~$ define cpo complete partial ordering(cpo) A partial ordering of a set under a relation, where all directed subsets have a least upper bound. A cpo is usually defined to include a least element, bottom (David Schmidt calls this a pointed cpo). A cpo which is algebraic and boundedly complete is a (Scott) domain. (1994-11-30) sjw@cartman:~$
This program was the result of a competition for the most obfuscated implementation of the anagram program. Obviously this program isn't the smallest implementation, but I think it is probably the hardest to understand. This unobfuscated implementation may help, but I doubt it.
The basic algorithm behind this program is to find some canonical form of each word, insert it into the hold space, and then find all matches for the canonical form at the end. This is done by converting each letter into a sequence of 'S's, and sorting based on length.
An alternative is something like rsync, but sometimes I forget where the latest edit was, and sometimes I edit the same file twice, in different places; this looks like a job for CVS.
To use auto-vc, simply create a CVS repository containing whatever you want auto-vc'd. Then put something like the following in your .emacs:
(require 'auto-vc)
(setq auto-vc-file-regexp-list
'(("/home/sjw/emacs/cust/.*\\.el" . nil)
("/home/sjw/emacs/site-lisp/.*\\.el" . t)))
This instructs auto-vc to look after files in emacs/cust and emacs/site-lisp. The second element of each entry denotes whether to check in lazily (t) or on every save (nil); if you are editing a file from a repository on another machine over dialup, you don't want to wait 10 seconds every time you save!
It is still pretty hacky, but useful (moreso than xmark IMHO).
If you want to use it, open cse-mark-mode.el in emacs, do M-x eval-buffer and then M-x cse-mark-mode in the buffer to be marked.
See the bottom of the file for keybindings. Basically you can insert, edit, and delete comments (C-c c, C-c c (yes, the same as insert), and C-c d respectively), change automarked tests ( C-c p to pass, and C-c f to fail), also updating the automark, change tutor marks (C-c m on the mark line), and see all comments you have made in a given file (C-c C-v).
When you have finished marking an assignment and you kill the buffer, you will be told the total amount of time that you spent marking that assignment (well, the total time that assignment was open). This is also placed in the *marking-times* buffer.
You can also have standard comments. Using C-c S you can add a standard comment (defaults to comment under the cursor, if any), and you can use C-c s to insert a standard comment. Whenever you add a standard comment, you will be asked to give it a tag; this is a short phrase (usually just a word) which uniquely identifies that comment. When you want to insert a standard comment, you use this phrase to identify the comment; you can also tab-complete when doing the insertion.
Finally, whenever you add a comment, the *standard-comments* buffer is updated with code required to enter the comment next time you start emacs. Just cut any comments you wich to keep and place them in a file which you can evaluate next time you mark.
Patches welcome :)