Well, you could easily use VIM as an external text filter. Let's say you encounter:
[code=ff0000 lang=fortran]
... text ...
[/code]
You gather up the text and pass it off to VIM along with the language name. VIM would markup the text with the appropriate style-code and return it to you. You could feed the text to VIM via stdin, and receive the altered text via stdout (like a CGI app), or you could just save it the text to a temp file and pass the filename to VIM.
I've not had the occasion to use ASP before, but if it requires external code to reside in a COM component, we could easily write one that exported a single conversion function and took care of invoking VIM...
string markupText( in string text, in string language )
Of course, spawning external processes to do work is not as fast as memory resident server extensions, but that wouldn't really be an issue here. This would only need to be done once with each new post.
Once this was in place, Programmer's Heaven would be able to automatically syntax highlighting for over 300 filetypes!
abaqus, abc, abel, acedb, ada, aflex, ahdl, amiga, aml, antlr, apache, apachestyle, asm, asm68k, asmh8300, asn, aspperl, aspvbs, atlas, automake, ave, awk, ayacc, b, basic, bc, bdf, bib, bindzone, blank, btm, c, catalog, cf, cfg, ch, change, changelog, cl, clean, clipper, cobol, colortest, conf, config, cpp, crontab, csc, csh, csp, css, cterm, ctrlh, cupl, cuplsim, cvs, cweb, cynlib, cynpp, dcl, debchangelog, debcontrol, def, diff, diva, dns, docbk, dosbatch, dosini, dot, dracula, dsl, dtd, dtml, dylan, dylanintr, dylanlid, ecd, eiffel, elf, elmfilt, erlang, esqlc, eterm, expect, exports, fgl, focexec, form, forth, fortran, foxpro, fvwm, gdb, gdmo, gedcom, gnuplot, gp, groff, gsp, gtkrc, haskell, hb, help, hercules, hitest, hog, html, htmlm4, htmlos, ia64, icon, idl, idlang, indent, inform, inittab, ishd, iss, ist, jam, jargon, java, javacc, javascript, jess, jgraph, jproperties, jsp, kix, kscript, kwt, lace, latte, lex, lftp, lhaskell, lilo, lisp, lite, lotos, lout, lprolog, lss, lua, lynx, m4, mail, make, man, manual, maple, masm, mason, master, matlab, mel, mf, mgp, mib, mma, model, modsim3, modula2, modula3, mp, msql, mush, muttrc, named, nasm, nastran, natural, ncf, nosyntax, nqc, nroff, objc, ocaml, omnimark, openroad, opl, ora, papp, pascal, pcap, pccts, perl, pfmain, php, phtml, pic, pike, pilrc, pine, plm, plsql, po, pod, postscr, pov, povini, ppwiz, procmail, progress, prolog, psf, ptcap, purifylog, python, qf, r, radiance, ratpoison, rc, rcslog, readline, rebol, registry, remind, rexx, robots, rpcgen, rtf, ruby, samba, sas, sather, scheme, screen, sdl, sed, sgml, sgmldecl, sgmllnx, sh, sicad, simula, sinda, sindacmp, sindaout, skill, sl, slang, slrnrc, slrnsc, sm, smil, smith, sml, snnsnet, snnspat, snnsres, snobol4, spec, specman, spice, spup, sql, sqlforms, sqr, squid, st, stp, strace, syncolor, synload, syntax, tads, tags, tak, takcmp, takout, tasm, tcl, terminfo, tex, texinfo, texmf, tf, tidy, tli, trasys, tsalt, tsscl, tssgm, tssop, types, uc, uil, vb, verilog, vgrindefs, vhdl, vim, viminfo, virata, vrml, vsejcl, wdiff, web, webmacro, wget, whitespace, winbatch, wml, wsh, xdefaults, xkb, xmath, xml, xpm, xpm2, xs, xxd, yacc, z8a, zsh
Personally, it doesn't make a difference to me. My editor already does this for me. But if you want to add this for everyone elses benefit, I could help you out with the VIM part of it, supplying the conversion script and the appropriate command-line. If you think it would be feasible (you know more about your website setup than I do), I could even write the COM component for you.
Cheers,
Eric