2005-07-10

html-fold.el alpha1 |HTML|Emacs|

Ralf Angeli 氏の tex-fold.el を改良して、 html-fold.el を作ってみた。何ができるかというと、 HTML テキストの要素 ( <a>とか <script> とかの所謂タグね) の折り畳み表示。左が html-fold 使用前で、右が html-fold 使用後。

html-fold off html-fold on

折り畳んだ文字の中にカーソルを持っていくと、自動的に展開される。そして、展開部からカーソルを出すと再び (自動的に) 折り畳まれる。

html-fold は minor-mode なので、 GNU Emacs に標準で付いてきている HTML モードはもちろん、 YaHTMLnxml-modepsgml なんかとも一緒に動く。きっと、 HTML が書かれていればどこでも動くんじゃないかしら。

HTML のソースを手打ちしてる人に喜こんでもらえるんじゃないかと思ってる。特に、 BloggerMovable 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-bC-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