はてなのsuper-pre記法のかっこの挿入を楽にするelisp

http://d.hatena.ne.jp/syou6162/20080710/1215642057を見て、どうせなら言語の名前を補完できた方がおもしろいと思ったのでここを参考に作ってみました。*1

(defvar simple-hatena-last-lang "") ;;最後に挿入した言語の名前

(defun simple-hatena-insert-lang (beg end) (interactive "r")
  (let ((lang (completing-read "lang: " hatena-highlightable-language-alist nil nil simple-hatena-last-lang)))
    (setq simple-hatena-last-lang lang)
    (save-excursion
      (goto-char end)
      (insert "||<\n")
      (goto-char beg)
      (insert (concat ">|" lang "|\n")))))


(setq hatena-highlightable-language-alist '("a2ps" "a65" "aap" "abap" "abaqus" "abc" "abel" "acedb" "ada" "aflex" "ahdl" "alsaconf" "amiga" "aml" "ampl" "ant" "antlr" "apache" "apachestyle" "arch" "art" "asm" "asm68k" "asmh8300" "asn" "aspperl" "aspvbs" "asterisk" "asteriskvm" "atlas" "automake" "ave" "awk" "ayacc" "b" "baan" "basic" "bc" "bdf" "bib" "bindzone" "blank" "bst" "btm" "c" "calendar" "catalog" "cdl" "cf" "cfg" "ch" "change" "changelog" "chaskell" "cheetah" "chill" "chordpro" "cl" "clean" "clipper" "cmake" "cobol" "colortest" "conf" "config" "context" "cpp" "crm" "crontab" "cs" "csc" "csh" "csp" "css" "cterm" "ctrlh" "cupl" "cuplsim" "cvs" "cvsrc" "cweb" "cynlib" "cynpp" "d" "dcd" "dcl" "debchangelog" "debcontrol" "debsources" "def" "desc" "desktop" "dictconf" "dictdconf" "diff" "dircolors" "diva" "django" "dns" "docbk" "docbksgml" "docbkxml" "dosbatch" "dosini" "dot" "doxygen" "dracula" "dsl" "dtd" "dtml" "dylan" "dylanintr" "dylanlid" "ecd" "edif" "eiffel" "elf" "elinks" "elmfilt" "erlang" "eruby" "esmtprc" "esqlc" "esterel" "eterm" "eviews" "exim" "expect" "exports" "fasm" "fdcc" "fetchmail" "fgl" "flexwiki" "focexec" "form" "forth" "fortran" "foxpro" "fstab" "fvwm" "fvwm2m4" "gdb" "gdmo" "gedcom" "gkrellmrc" "gnuplot" "gp" "gpg" "grads" "gretl" "groff" "groovy" "group" "grub" "gsp" "gtkrc" "haskell" "hb" "help" "hercules" "hex" "hitest" "hog" "html" "htmlcheetah" "htmldjango" "htmlm4" "htmlos" "ia64" "icemenu" "icon" "idl" "idlang" "indent" "inform" "initex" "inittab" "ipfilter" "ishd" "iss" "ist" "jal" "jam" "jargon" "java" "javacc" "javascript" "jess" "jgraph" "jproperties" "jsp" "kconfig" "kix" "kscript" "kwt" "lace" "latte" "ld" "ldif" "lex" "lftp" "lhaskell" "libao" "lifelines" "lilo" "limits" "lisp" "lite" "loginaccess" "logindefs" "logtalk" "lotos" "lout" "lpc" "lprolog" "lscript" "lss" "lua" "lynx" "m4" "mail" "mailaliases" "mailcap" "make" "man" "manconf" "manual" "maple" "masm" "mason" "master" "matlab" "maxima" "mel" "mf" "mgl" "mgp" "mib" "mma" "mmix" "modconf" "model" "modsim3" "modula2" "modula3" "monk" "moo" "mp" "mplayerconf" "mrxvtrc" "msidl" "msql" "mupad" "mush" "muttrc" "mysql" "named" "nanorc" "nasm" "nastran" "natural" "ncf" "netrc" "netrw" "nosyntax" "nqc" "nroff" "nsis" "objc" "objcpp" "ocaml" "occam" "omnimark" "openroad" "opl" "ora" "pamconf" "papp" "pascal" "passwd" "pcap" "pccts" "perl" "pf" "pfmain" "php" "phtml" "pic" "pike" "pilrc" "pine" "pinfo" "plaintex" "plm" "plp" "plsql" "po" "pod" "postscr" "pov" "povini" "ppd" "ppwiz" "prescribe" "procmail" "progress" "prolog" "protocols" "psf" "ptcap" "purifylog" "pyrex" "python" "qf" "quake" "r" "racc" "radiance" "ratpoison" "rc" "rcs" "rcslog" "readline" "rebol" "registry" "remind" "resolv" "rexx" "rhelp" "rib" "rnc" "rnoweb" "robots" "rpcgen" "rpl" "rst" "rtf" "ruby" "samba" "sas" "sather" "scheme" "scilab" "screen" "sdl" "sed" "sendpr" "sensors" "services" "setserial" "sgml" "sgmldecl" "sgmllnx" "sh" "sicad" "sieve" "simula" "sinda" "sindacmp" "sindaout" "sisu" "skill" "sl" "slang" "slice" "slpconf" "slpreg" "slpspi" "slrnrc" "slrnsc" "sm" "smarty" "smcl" "smil" "smith" "sml" "snnsnet" "snnspat" "snnsres" "snobol4" "spec" "specman" "spice" "splint" "spup" "spyce" "sql" "sqlanywhere" "sqlforms" "sqlinformix" "sqlj" "sqloracle" "sqr" "squid" "sshconfig" "sshdconfig" "st" "stata" "stp" "strace" "sudoers" "svn" "syncolor" "synload" "syntax" "sysctl" "tads" "tags" "tak" "takcmp" "takout" "tar" "tasm" "tcl" "tcsh" "terminfo" "tex" "texinfo" "texmf" "tf" "tidy" "tilde" "tli" "tpp" "trasys" "trustees" "tsalt" "tsscl" "tssgm" "tssop" "uc" "udevconf" "udevperm" "udevrules" "uil" "updatedb" "valgrind" "vb" "vera" "verilog" "verilogams" "vgrindefs" "vhdl" "vim" "viminfo" "virata" "vmasm" "vrml" "vsejcl" "wdiff" "web" "webmacro" "wget" "whitespace" "winbatch" "wml" "wsh" "wsml" "wvdial" "xdefaults" "xf86conf" "xhtml" "xinetd" "xkb" "xmath" "xml" "xmodmap" "xpm" "xpm2" "xquery" "xs" "xsd" "xslt" "xxd" "yacc" "yaml" "z8a" "zsh"))

*1:実際に使うときは、自分の使う言語だけにした方が良いとおもいます><