Ralf Angeli 氏の tex-fold.el を改良して、 html-fold.el を作ってみた。何ができるかというと、 HTML テキストの要素 ( <a>とか <script> とかの所謂タグね) の折り畳み表示。左が html-fold 使用前で、右が html-fold 使用後。
折り畳んだ文字の中にカーソルを持っていくと、自動的に展開される。そして、展開部からカーソルを出すと再び (自動的に) 折り畳まれる。
html-fold は minor-mode なので、 GNU Emacs に標準で付いてきている HTML モードはもちろん、 YaHTML、 nxml-mode、 psgml なんかとも一緒に動く。きっと、 HTML が書かれていればどこでも動くんじゃないかしら。
HTML のソースを手打ちしてる人に喜こんでもらえるんじゃないかと思ってる。特に、 Blogger や Movable Type といった Blog ののテンプレートを書く人に使ってもらえると嬉しいな。
ダウンロード
インストール
html-fold.el を load-path 下に置いて、以下のコードを .emacs に追加。
(autoload 'html-fold-mode "html-fold" "Minor mode for hiding and revealing elements." t)
利用方法
まず html-fold を使用するバッファーで初期化 ( M-x html-fold-mode) をする。とりあえず使ってみるなら、 C-c C-o C-b (M-x html-fold-buffer)。HTML の要素が fold される (折り畳まれる)。
用意したコマンドは以下の通り。
- C-c C-o C-b ( C-c C-o b)
- バッファー全体の folding (unfolding)
- C-c C-o C-r ( C-c C-o r)
- リージョン内の folding (unfolding)
- C-c C-o C-p ( C-c C-o p)
- パラグラフの folding (unfolding)
- C-c C-o C-o
- 文脈に応じた folding/unfolding
- C-c C-o C-e
- Block 要素の folding
- C-c C-o C-m
- Inline 要素の folding
html-fold は font-lock のように自動で動かないので、新しい要素を入力したら手で再描画の必要あり。逆勧めは、何も考えずに C-c C-o C-b か C-c C-o C-o。
カスタマイズ
html-fold には、現在、2 つの fold type がある。一つはブロック要素を対象にしたもの。もう一つは、インライン要素を対象にしたもの。
html-fold-block-list
この変数に列挙した要素 (とその中身) は、 [要素名] という形で折り畳まれる。設定例は次の通り。
(setq html-fold-block-list '("script" "style" "table"))
html-fold-inline-list
この変数は、 ((リスト) (リスト) (リスト)) という形になっていて、 (リスト)の書式は、次の通り。
("置き換え文字" ("要素1" "要素2"))
例えば、a 要素は [a: という形に、abbr 要素と acronym 要素は [ab: という形に折り畳む場合、次のように設定する。
(setq html-fold-inline-list '(("[a:" ("a")) ("[ab:" ("abbr" "acronym"))))
今の所、インライン要素を C-c C-o C-o ( M-x html-fold-dwim) で unfold しようとすると終了タグが unfold できない。困ったもんだ。
Tips
M-x html-fold-mode を打つのが面倒なら、hook を .emacs で設定するのも吉。下の例は、html-mode に入った時に、自動的に html-fold-mode を実行する設定。
(add-hook 'html-mode-hook 'html-fold-mode)
tex-fold について
tex-fold は、Ralf Angeli 氏が開発した Elisp で、 AUCTeX と一緒に配布されている。 AUCTeX のページに スクリーンショットがあるので興味があればどうぞ。tex-fold に関する日本語のドキュメントは、ほとんどないみたい。よければ、 私の書いた説明もお読み下さい (大した事、書いてないけど...)。
No comments:
Post a Comment