久しぶりにelisp

はてダでソースコードのハイライト表示をするためのタグを入れやすくするEmacs Lispを書いた。

;;; はてなのコードタグを入力

(defun ht-code (beg end)
  (interactive "r")
  (let* ((lang-alist
	  '(("ruby") ("c") ("lisp")))
	(lang
	 (completing-read "language? : " lang-alist nil t)))
    (if mark-active
	(progn
	  (narrow-to-region beg end)
	  (goto-char (point-min))
	  (insert ">|" lang "|\n")
	  (goto-char (point-max))
	  (insert "||<\n")
	  (widen))
      (progn
	(insert ">|" lang "|\n\n||<\n")
	(previous-line 2)))))

;;; はてなのリンクを入力

(defun ht-link (url str)
  (interactive "sURL: \ns文字列: ")
  (insert "[" url
	  (if (string= str "")
	      "]"
	    (concat ":title=" str "]"))))

リストを囲んで「M-x ht-code」とかやると、lang-alistにある言語名を適当に補完して、それをもとに「>|ruby| foo hoge ||<」という風にリージョンを囲む。リージョン指定がないときには、「>|ruby| ||<」とか。