朝顔日記2010/2月 -
続続マクアプ用 lisp
知らない人は損してる?コーディングが3倍速くなるZen-Codingを導入してみた - EC studio デザインブログ とかを読んで、最近 Zen-Coding とかいうものが流行っているらしいことを知りました。私は html や xml のマークアップの際は xyzzy というエディタと、続マクアプ用 lisp で紹介した lisp を使っているのですが、これをちょこっといじって、Zen-Coding とまでは行きませんが、div.hoge を div class="hoge" にしたり、div#fuga を div id="fuga" となるようにしてみました。
;;カーソル行をタグで括る
(defun quote-line-by-tag (&optional (quotetag ""))
(interactive "*sTag: ") ; s => 文字入力を指示する。
; 入力された文字列は quotetag に割り当てられる。
(setq tmp1tag (string-trim "<>" quotetag))
(setq tmp2tag (substitute-string tmp1tag "\\.\\([^ ]+\\)" " class=\"\\1\""))
(setq starttag (substitute-string tmp2tag "\\#\\([^ ]+\\)" " id=\"\\1\""))
(setq endtag (substitute-string starttag " .*" ""))
(save-excursion
(goto-eol)
(insert "</" endtag ">")
(goto-bol)
(skip-white-forward)
(insert "<" starttag ">")))
;(define-key ed::*html+-mode-map* '(#\M-b) 'quote-line-by-tag)
(global-set-key '(#\M-t) 'quote-line-by-tag)
;;リージョン・セレクションををタグで囲む
(defun quote-region-by-tag (&optional (quotetag ""))
(interactive "*sTag: ") ; s => 文字入力を指示する。
; 入力された文字列は quotetag に割り当てられる。
(setq tmp1tag (string-trim "<>" quotetag))
(setq tmp2tag (substitute-string tmp1tag "\\.\\([^ ]+\\)" " class=\"\\1\""))
(setq starttag (substitute-string tmp2tag "\\#\\([^ ]+\\)" " id=\"\\1\""))
(setq endtag (substitute-string starttag " .*" ""))
(case (get-selection-type)
((1 2)
(exchange-region-and-selection)))
(let ((begin (mark))
(end (point)))
(when (> begin end)
(let ((tmp begin))
(setq begin end
end tmp)))
(save-excursion
(goto-char end)
(insert "</" endtag ">")
(goto-char begin)
(insert "<" starttag ">"))))
;(define-key ed::*html+-mode-map* '(#\C-t) 'quote-region-by-tag)
(global-set-key '(#\C-t) 'quote-region-by-tag)
私としてはこの程度で十分かな。
この記事へのツッコミ
- 1: mitsugu oyama (2010-02-27T17:31:46+09:00)
- xyzzyはEmacs用のスクリプトとかは流用できないんでしょうか(ライセンスに問題なければ)。
- 2: のり (2010-02-27T19:16:04+09:00)
- xyzzy は基本的に common lisp ですので、emacs lisp とはちょっと違っていたりするようです。共通で動くものもあるかもしれませんが、普通は移植したりする必要があるようですね。
この記事のリンク元
- http://d.hatena.ne.jp/nyama/
- http://b.hatena.ne.jp/entrylist
- http://ht.ly/1W6ib
- http://b.hatena.ne.jp/t/xyzzy
- http://d.hatena.ne.jp/efcl/20100227/1267273541
- http://labs.ceek.jp/hbnews/list.cgi
- http://b.hatena.ne.jp/entry/designblog.ecstudio.jp/htmlcss/zen-coding-aptana.html
- http://xxsionxx.blog17.fc2.com/
- http://b.hatena.ne.jp/t/emacs
- http://b.hatena.ne.jp/tricorock/xyzzy/
- http://cliqset.com/user/icenine/Eko7flBJlCJROwee
- http://d.hatena.ne.jp/ha34-13/20100227/1267278437
- http://b.hatena.ne.jp/hotentry
- http://www.hatena.ne.jp/nagoya313/antenna
- http://www.feedly.com/home
- この記事の永続的 URI ならびに トラックバック ping URI
- http://diary.noasobi.net/2010/02/diary_100227a.html


