(X)HTML文書の作成補助 (ihtml)

ihtml は、「ISO-HTML又はXHTML 1.1の文書を作るのにちょっと便利な小物」を目指して製作してゐる、xyzzyで動くLISPです。

プログラム本体置場

β版です。恐らくファイルを破壊することは無いと思ひますが、自己責任で。無限ループに陥ったらC-g (Ctrl + g)quitしてください。

適用ライセンス

書庫に含まれる全てのファイルに於いて、私、空拇が作った部分は、著作権抛棄とします。自由に変更・転載してください。(CC0です)

License: CC0 (Please feel free to reproduce or edit, except quotation.)

説明書

導入方法

xyzzy を導入し、 site-lisp/ihtml.l (.lc)html+-mode-u.l (.lc) を置いた後、次のどちらかのコードを .xyzzy 又は siteinit.l に追記してください。

ihtmlを単体で導入する場合
(pushnew '("\\.s?html?$" . ihtml-mode) *auto-mode-alist* :test 'equal)
html+-modeと共存する場合
(in-package "editor")
(export 'ed::html+-mode "ed")
;(autoload 'html+-mode "html+-mode" t)
(autoload 'html+-mode "html+-mode-u" t)
(pushnew '("\\.s?html?$" . html+-mode) *auto-mode-alist* :test 'equal)
(in-package "user")

siteinit.lに追記した場合は、siteinit.lをバイトコンパイルし直して、xyzzyのダンプファイルを再生成(Ctrl+Shiftを押しながら起動)してください。

オプションとして、ISO-HTMLではなくXHTML 1.1のマークアップをする場合は、更に次のコードも追加してください。

(setq *ihtml-xhtml11* t)

また、ポップアップ(右クリック)メニューを追加するには、.xyzzy次のコードを追記してください。(siteinit.l への追記はエラーになるので不可です)

(require "ihtml-menu")

使用方法

インライン要素: 文字列を範囲選択してから、キー操作又は右クリック操作でマークアップします。<img>などの空要素は、範囲選択は不要で、そのままカーソル位置に挿入できます。

ブロック・リスト要素: マークアップ操作を行ふと、カーソルが行末に無くても、その行全体がマークアップされ、次の行に移ります。

次に、ihtml特有の機能について述べます。

(1) マークアップに関すること

(2) その他

注記

更新履歴

2006年5月27日 Ver.0.1.0.20070526
公開初版。
2007年9月14日 Ver.0.2.0.20070914
とにかく大幅に更新。
ドキュメントの整備し直し。
2011年10月8日 Ver.0.2.1.20111008
ライセンスとしてCC0を明記。
ほぼ全部の函数・変数にdocstringを追加。
*ihtml-imgs**ihtml-img-extensions*に改名。(中身は同じ)
*ihtml-xhtml11*tnilを切り替へる函数ihtml-toggle-xhtml11を追加。
ihtml-markup-line: *ihtml-line-break*nilの時は、改行しないで次の行に移る様にした。(HTML化する前のテキストを、行ごとにマークアップする時に便利)
*ihtml-line-break*tnilを切り替へる函数ihtml-toggle-line-breakを追加。
ihtml-comment: 選択範囲内に「<!--」「-->」がある場合は全部削除し、一つもない場合は選択範囲をコメント化する様に挙動を変更。(選択範囲が無い場合は今までと同じ挙動)
ihtml-completing-markup: *ihtml-xhtml11*tの時は、XHTML 1.1の要素を補完する様にした。
2011年10月13日 Ver.0.2.2.20111013
*ihtml-tags*: <fieldset>が抜けてゐたので追加。
ihtml-markupihtml-markup-empty: 属性リストattrの属性リスト値にnilが与へられた時は、HTML属性値を省略する様にした。例: (ihtml-markup-empty "input" '("type" "checkbox" "checked" nil)) => <input type="checkbox" checked>
ihtml-set-attribute: 補完入力も可能な様に改造。ihtml-attr-bdoで使用。
ihtml-escapeihtml-unescape: nilを受け取ると、エラーではなくnilを返す様に変更。(ihtml-markup(mapcar #'ihtml-auto-escape attr)で、attrの属性リスト値がnilでもエラーにならない様に)
その他、ソース内コメント・ドキュメントの微修正。
2011年11月1日 Ver.0.2.3.20111101
ポップアップメニューを別ファイルに分離。これにより本体をsiteinit.lに記述できる様になった。(メニュー関係は.xyzzyにしか記述できない)
2012年5月24日 Ver.0.2.4.20120524 (未公開)
ihtml-defun-markup-selectionなど: docstringを入力できる様に改良。
ihtml-a: 挙動をihtml-a-globalからihtml-a-local相当に修正。
ihtml-brihtml-hr: ブロック要素と同じ挙動に変更。
ihtml-markup-line: 引数tagを受け付ける様に変更。
ihtml-a-fragment: 追加。文書内のid属性値を抽出して<a href="#...">を生成。
2014年10月30日 Ver.0.2.5.20141030
マクロで生成してゐたマークアップ函数など、これまでdocstringが無かった函数にもできるだけdocstringを追加。
ポップアップメニュー(ihtml-menu.l)のファイルのバージョン表記を本体(ihtml.l)に合せた。
ポップアップメニューのihtml-aihtml-a-localihtml-a-globalに分離。
ihtml-a: 挙動をihtml-a-localからihtml-a-global相当に戻し、デフォルトの挙動を切り替へる変数*ihtml-a-local*を追加。
ihtml-string-to-uri: si::www-url-encodeを適用するかを選択する変数*ihtml-string-to-uri-escape*を追加。
ihtml-meta: 新しく追加。http-equivの属性値を*ihtml-meta-http-equiv*に従って補完入力可能(*ihtml-meta-name*も同様)。ポップアップメニューのOthersにも<link><meta>を追加。
ihtml-defun-markup-lineihtml-implied-attr: 新しく追加。コードを短く書くためのマクロ。
ISO-HTMLに含まれる全てのフォーム要素を追加。ポップアップメニューにも追加。
ihtml-object: 誤って空要素扱ひにしてゐて、終了タグが挿入されなかったバグを修正。
ihtml-set-attribute: XHTML 1.1モードの時、<hr />などの空要素に使用すると「/」と「>」の間に属性が挿入されるバグを修正。
2021年9月11日 Ver.0.2.6.20210908
HTMLを読み込んだ時だけキーマップを適用する様に修正。
html+-modeと共存できるようにhtml+-mode-u.lを同梱し、導入方法を変更。