スーパーpre記法支援(?)elisp

スーパーpre記法は色が付いたりして便利なんだけど、割りとtypoをする。というわけでregionで囲んだ範囲をスーパーpre記法にするelisp。

(defun simple-hatena-insert-lang ()
  (interactive)
  (let ((lang (read-string "Lang: ")))
    (if mark-active
	(let ((beg (region-beginning))
	      (end (region-end)))
	  (save-excursion
	    (goto-char end)
	    (insert "\n||<")
	    (goto-char (if (> (point) beg)
			   ;;逆からmarkされた時がおかしくなる時の対策
			   beg
			 (point)
			 ))
	    (insert (concat ">|" lang "|\n")))))))