月別アーカイブ: 2015年1月

[HTML]リージョン内の各行をリストタグで囲む

べた書きテキストの各行をHTMLのリストタグ<li></li>で囲みたい、というシチュエーションがよくあるんですがいまいちこれといった方法がわからず、
結局いつも改行を「</li><li>」に置換するという泥臭い手法をとっていたのですが
いい加減面倒になってきたので関数作ってみました。

html-modeかweb-modeあたりを探せば似たような機能がありそうな気はするんだけど見つけられなかったので…

(defun li (beg end)
  "リージョン内の各行を<li></li>で囲む"
  (interactive "r")
  (save-excursion
    (goto-char beg)
    (let* ((num-lines (count-lines (point) end))
           (line-num 0))
      (while (< line-num num-lines)
        (back-to-indentation) ;; お好みで(beginning-of-line)でも
        (insert "<li>")
        (end-of-line)
        (insert "</li>")
        (setq line-num (1+ line-num))
        (next-line)
        ))))

タグ名を入力させるようにしたらより汎用的かも。でも今のところli以外で囲むことってあまりないからとりあえずこれでいいや。