Last Updated at $Date: 2005/12/04 03:18:00 $.
私は,HTML 形式のファイルを編集するために yahtml-mode を利用しています.ここでは,その yahtml-mode の設定と Tips について解説します.
yahtml-mode は,『野鳥 (YaTeX)』に附属している HTML ファイルの編集を支援するメジャーモードです. yatex-mode を使いなれている人が使うと共通点が多いので快適に使えます.
『野鳥』については, 「野鳥ワールド」のページが, 大変参考になります.このページでは,インストール方法などについても解説されています.
改行キーで自動的にインデントしてほしい場合,変数
indent-line-function を設定し,改行キーのキーバインドを変更します.
以下のコードを ~/.emacs
に追加してください.
(add-hook 'yahtml-mode-hook (lambda () (setq indent-line-function 'yahtml-indent-line) (define-key yahtml-mode-map "\C-m" 'reindent-then-newline-and-indent)))
ただし,この設定を行うと,単なる改行のみを行うキーがなくなってしまいますので, デフォルトの状態では関数 newline-and-indent にバインドされていた Ctrl-J を関数 newline にバインドしておくことをお勧めします. 具体的には,「改行キーでオートインデントさせる」 を見てください.
長めの文章を書く場合,しばしば文の見通しが悪くなって不便です.が, outline-minor-mode を使うと,編集している部分以外の枝葉を取り去っ て表示させたりすることができ,全体の構造が把握しやすくなります.それで, fj.editor.mule に投稿された記事を参考に, outline-minor-mode が使えるようにしてみました.
(add-hook 'yahtml-mode-hook (lambda () (make-local-variable 'outline-minor-mode-prefix) (setq outline-minor-mode-prefix "\C-c") (make-local-variable 'outline-regexp) (setq outline-regexp "<h[1-6]>") (outline-minor-mode t)))
新規ファイルを開いた時,<html>…</html>
などの定型のタグを毎回入力するのは面倒ですから,
別に用意した定型文を自動的に読み込んでくれると便利です.
そのためにはいくつかの方法があります.
定型文を別のファイル(~/html/default.html
)に用意しておいて,
~/.emacs
に次のように書きます.(ただし,
yahtml-template-file がサポートされたのは,1.65
になってからですので,最新の YaTeX
に更新する必要があります.)
(setq yahtml-template-file (expand-file-name "~/html/default.html"))
私は,次のような内容の定型文ファイルを使っています.
<!doctype html public \"-//W3C//DTD HTML 4.01 Transitional//EN\"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-2022-JP"> <title></title> </head> <body fgcolor="black" bgcolor="#EEEEEE"> </body> </html>
この方法は単純ですが,その代わり定型ファイルの挿入しかできません. 入力に応じてさまざまなことを行なわせたい場合は,autoinsert を使いましょう.
YaTeX のバージョンが古くて,yahtml-template-file
がサポートされていない場合,次のようなコードを
~/.emacs
に加えて下さい.
(add-hook 'yahtml-mode-hook (lambda () (if (zerop (buffer-size)) (insert-file-contents (expand-file-name "~/html/default.html")))))
autoinsert を使うと,対話的な骨組みを使った定型文が使えます.
19.34 以前の Emacs/Mule の場合,autoinsert のバージョンが古いので, 対話的な骨組みを持った定型文は使えず,単純な定型ファイルの挿入しか出来ません. その場合の設定例は,こせきさんの I love GNU & Mule のページに書かれています. Emacs/Mule のバージョンは,C-h v emacs-version とすれば確認できます.
次のようなコードを ~/.emacs
に加えて下さい.
(require 'autoinsert) (auto-insert-mode 1) (setq auto-insert-alist (cons '(yahtml-mode "Input title: " "\ <!doctype html public \"-//W3C//DTD HTML 4.01 Transitional//EN\"> <html lang=\"ja\"> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-2022-JP\"> <title>" str "</title> </head> <body fgcolor=\"black\" bgcolor=\"#EEEEEE\"> <h1>" str "</h1> " _ " </body> </html> ") auto-insert-alist))
この指定では,新規ファイルを開く時に表題を入力すると,自動的に <title>表題</title> を挿入します.
日本語を含んだ HTML ファイルを書く場合,漢字コードとして Shift JIS や EUC を使うと,コード判定に失敗する可能性が高くなるのでよくありません. JIS コードを使い,明示的にコードを指示しておくようにしましょう.
<meta http-equiv="Content-Type" content="text/html; charset=ISO-2022-JP">
~/.emacs
には,以下の指定を加えておく.
(setq yahtml-kanji-code 2) ;; 1=Shift JIS, 2=JIS, 3=EUC
HTML ファイルが長くなってくると,先頭に索引を入れて,見通しを良くしよう とすることがあります.例えば,こんな風に.
<ul> <li><a href="#chapter-1">第1章</a> <li><a href="#chapter-2">第2章</a> </ul> <h2><a name="chapter-1">第1章</a></h2> <h2><a name="chapter-2">第2章</a></h2>
ところが,このタグをきちんと書くのが結構うっとうしいんですよね….
という訳で,カレントバッファに含まれている
<h?><a name="foo">bar</a></h?>
形式のタグを調べて,上記のような索引を生成してくれるコマンドを書いてみました.
このファイルを適当な場所にコピーしてから,
以下の設定を ~/.emacs
に追加して下さい.
(autoload 'yahtml-insert-index "yahtml-insert-index" nil t) (autoload 'yahtml-delete-index "yahtml-insert-index" nil t) (autoload 'yahtml-update-index "yahtml-insert-index" nil t) (add-hook 'yahtml-mode-hook (lambda () (define-key yahtml-mode-map "\C-ci" 'yahtml-update-index)))
このページの索引は,このコマンドを利用して生成しました.
[Top] / [Emacs Lisp Tips] / [HTML 形式のファイルを編集するための設定]