CompleteTag + CompleteCSS
Version 3.1 2009/09/04
- 秀丸エディタ用補完マクロ CompleteX のプラグインです。
- HTML タグおよびスタイルシートのインテリジェントな補完機能を提供します。
- カーソル位置に応じて適切な補完候補を出します。「文法的に書けない候補は出さない」を目指しています。
- DOCTYPE 宣言に応じて使用する辞書を切り替えます。 XHTML の場合は簡略終了タグも正しく入力されます。
HTML タグ
XHTML 1.1, XHTML 1.0 (Strict/Transitional/Frameset), HTML 4.01 (Strict/Transitional/Frameset) に対応しています。
- 要素名
-
祖先要素を解析し、カーソル位置に現れうる子要素と終了タグを候補に出します。
- 属性名
-
その要素が持つ属性名を補完します。
- 属性値
-
択一式の属性値を補完します。
- クラス名
-
外部 CSS ファイルを解析し、要素名に対して可能なクラス名を候補に出します。
- 相対パス
-
ファイル名を書くべき場所ではローカルの相対パスを入力できます。
- ID・アンカー名
-
リンク先 HTML ファイルを解析し、定義されている ID ・アンカー名を補完します。
- 色
-
HTML で定義されている色名と、ファイル内で使われている色番号が候補になります。コモンダイアログから色を選ぶこともできます。
- 画像サイズ
-
Susie と 田楽 DLL がインストールされていれば画像サイズが自動入力されます。
- DOCTYPE 宣言
-
ファイル先頭で実行するとドキュメントタイプ宣言を入力できます。
- 埋め込みスタイル
-
スタイルシートの文脈ではスタイルシートを補完します。
- インラインスタイル
-
- 埋め込みスクリプト
- インラインスクリプト
-
スクリプトの文脈では言語ごとの設定が適用されます。各スクリプト言語用の辞書やプラグインを別途用意すればスクリプトも補完できます。
スタイルシート
- @ルール
-
@charset, @import, @media, @page を補完します。
- 要素名
-
HTML 4.01 Transitional で定義されている要素名が候補になります。
- 擬似要素・擬似クラス
-
- プロパティ名
-
- プロパティ値
-
- 相対パス
-
- フォント名
-
システムにインストールされているフォント名が候補になります。
- 色
-
CSS で定義されている色名と、ファイル内で使われている色番号が候補になります。コモンダイアログから色を選ぶこともできます。
- !important 宣言
-
- 秀丸エディタ ver 7.00 以降と CompleteX v3.04 以降をお使いですね?
- Susie と 田楽 DLL もインストールしておくと便利です。(必須ではありません)
- ダウンロードしたアーカイブを CompleteX のベースフォルダに解凍します。ファイル構成は次のようになります。(■=フォルダ、□=ファイル)
■マクロフォルダ\
│
└─■CompleteX\ …ベースフォルダ
│□CompleteTag.mac …タグ補完プラグイン
│□CompleteCSS.mac …スタイルシート補完プラグイン
│
├■CompleteTag\ … HTML 用辞書フォルダ
│ □html401-frameset.dic
│ :
│
└■CompleteCSS\ … CSS 用辞書フォルダ
□css21.dic
- CompleteX の設定でプラグインとして CompleteTag.mac と CompleteCSS.mac を指定します。
config.txt 記述例
[htmlfile]
plugin=CompleteTag.mac
path.separator=/
tag.img.src.path.filter=*.jpg;*.png;*.gif
[.htm]
@=htmlfile
[.html]
@=htmlfile
[.css]
plugin=CompleteCSS.mac
path.separator=/
- 補完したい位置にカーソルを置いて CompleteX.mac を実行します。カーソル位置に応じて適切な補完が行われます。
- 新しいタグを書くときは地の文でいきなり実行します。先に < などを書いておく必要はありません。
- 地の文を範囲選択してから実行すると、選択範囲をタグで囲むことができます。
- 候補を選んだら次の操作ができます。
- [Space] = 確定&次へ (文脈に応じて = や : を入力してもいいです)
- [Enter] = 確定&完了 (文脈に応じて > や ; を入力してもいいです)
- Ctrl+[Enter] = 確定&終了タグ自動補完
- 最初に範囲選択していた場合、選択範囲が開始タグと終了タグで囲まれます。
- 範囲選択していなかった場合、カーソル位置に終了タグが追加されます。
- [Esc] = キャンセル
設定は CompleteX の設定ファイル config.txt に追記します。〈→CompleteX リファレンス:設定ファイルの書き方〉
CompleteTag
- tag.dic
-
DOCTYPE 宣言がない場合に使う辞書ファイルを指定します。(デフォルト = CompleteTag\html401-transitional.dic)
例
tag.dic=CompleteTag\ie55.dic
辞書ファイルは CompleteTag フォルダに入っています。
- tag.enclose
-
終了タグ自動補完後のカーソル位置を指定します。(デフォルト = inside)
tag.enclose=inside …終了タグ自動補完後、カーソルを開始タグと終了タグの間へ移動します。
実行前に範囲選択していた場合は開始タグと終了タグの間を範囲選択します。
tag.enclose=outside …終了タグ自動補完後、カーソルを終了タグの後へ移動します。
- tag.ignore
-
高速化オプションを指定します。(デフォルト = なし)
tag.ignore=context …文脈解析を省略します。
文脈解析を省略すると次の副作用があります。
- 終了タグが候補に出てきません。
- 常にすべての要素が(その位置には書けないはずの要素も)候補に出てきます。
- 終了タグの自動補完では、その位置にその終了タグが書けるかどうかチェックされません。
- tag.imgsize
-
IMG 要素の src 属性値を確定した後、画像サイズを自動的に挿入/更新するかどうか指定します。(デフォルト = auto)
tag.imgsize=auto …画像サイズを挿入/更新します。
tag.imgsize=ask …画像サイズを挿入/更新するかどうか問い合わせます。
tag.imgsize=keep …画像サイズを挿入/更新しません。
- tag.script.language
-
スクリプトの文脈で適用する設定セクション名を指定します。 language にはスクリプト言語の MIME タイプか SCRIPT 要素の language 属性値をそのまま書きます。
例
[htmlfile]
tag.script.text/javascript=jsfile
tag.script.text/tcl=tclfile
tag.script.vbscript=vbsfile
[jsfile]
; jsfile の設定
[tclfile]
; tclfile の設定
[vbsfile]
; vbsfile の設定
上のように設定すると、下のような動作になります。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
<TITLE>A document with SCRIPT</TITLE>
<META http-equiv="Content-Script-Type" content="text/javascript">
</HEAD>
<BODY>
<FORM>
<INPUT onblur="// ここでは jsfile の設定に従う">
</FORM>
<SCRIPT type="text/tcl">
# ここでは tclfile の設定に従う
</SCRIPT>
<SCRIPT language="vbscript">
' ここでは vbsfile の設定に従う
</SCRIPT>
</BODY>
</HTML>
- tag.spidir
-
Susie プラグインのあるフォルダを指定します。(デフォルト = Susie のレジストリから取得)
tag.spidir=folderpath
フォルダ名の後に「\」を付けないでください。 Susie がインストールされている場合は Susie のレジストリから取得するので tag.spidir= を指定する必要はありません。指定した場合は tag.spidir= の値が優先されます。
- tag.upcase
-
タグの中で大文字にする部分を指定します。カンマ区切りで複数指定できます。
例
tag.upcase=element,attribute,value …要素名、属性名、属性値をそれぞれ大文字にします。
- tag.要素名.属性名.path.filter
-
ファイル名補完で候補に挙げるファイル名をワイルドカードで指定します。セミコロン区切りで複数指定できます。(デフォルト = *)
例
tag.img.src.path.filter=*.jpg;*.png;*.gif …<IMG src=""> の補完では jpg, png, gif を候補に挙げる
- path.mapping
-
仮想パスを定義します。(デフォルト = なし)
path.mapping=<仮想パス1>実体パス1<仮想パス2>実体パス2...
たとえば path.mapping=<http://www18.big.or.jp/~fujiwara/>C:\My Documents\サイトデータ\
と指定しておくと、 http://www18.big.or.jp/~fujiwara/ と C:\My Documents\サイトデータ\ を同一視して補完できます。マッチングは先頭一致で行われ、最初にマッチしたものが有効です。
CompleteCSS
- css.upcase
-
大文字にする部分を指定します。
css.upcase=element …セレクタの要素名を大文字にします。
- 「文法的に書けない候補は出さない」を目指していますが、完璧ではありません。次のような穴があります。これらの穴を埋めるのは費用対効果が小さいと思われるので、仕様としておきます。
- 属性間の依存関係は考慮されません。たとえば、 INPUT 要素は type 属性の値によって他にとりうる属性名が変わりますが、 CompleteTag はすべての属性名を候補に出します。
- 親要素から属性への依存関係は考慮されません。たとえば、 LI 要素の type 属性は親要素が UL か OL かによってとりうる属性値が変わりますが、 CompleteTag はすべての属性値を候補に出します。
- 要素や属性の出現回数、出現順序は考慮されません。たとえば、 HEAD 要素内に TITLE 要素は1回しか出現できませんが、 CompleteTag は何回でも TITLE 要素を候補に出します。
- 文脈解析は終了タグの省略に対応していますが、完璧ではありません。たとえば、 <DIV> <P> <HR> |←カーソル という文脈では HR 要素の前で暗黙的に P 要素が閉じているので、カーソル位置に現れうる終了タグは </DIV> だけのはずですが、 CompleteTag は </P> も候補に出してしまいます。
- 文脈解析は開始タグのみの省略(終了タグだけが書かれている状況)には対応していません。
- 終了タグの自動補完は文法的に可能な場合のみ行われます。
- たとえば <DIV> [←範囲頭 </DIV><DIV> 範囲末→] </DIV> のように選択範囲が複数の要素にまたがる場合、範囲末に終了タグを書くと要素の入れ子関係がおかしくなるので、終了タグは自動補完されません。
- クラス名 class="" の補完について
- クラス名はピリオドに続く単語をスタイルシートから拾っているだけです。そのため、クラス名以外の単語が候補として出てくる場合があります。
- 属性セレクタによる指定 ELEMENT[class~="〜"] には対応していません。
- スタイルシートのパス <LINK rel="stylesheet" href="〜"> に対しても
path.mapping
の設定が有効です。
- ID 名 id="" の補完について
- ID 名は #[a-zA-Z][a-zA-Z0-9_-]* をスタイルシートから拾っているだけです。そのため、関係ない色番号などが候補として出てくる場合があります。
- スクリプトの補完について
- <SCRIPT type="〜" language="〜"> のように type 属性と language 属性が両方ある場合は type 属性の値が有効です。
- <META http-equiv="Content-Script-Type" content="〜"> が複数ある場合は最後に書かれたのが有効です。
- <A href="javascript:〜"> という書き方には対応していません。
- スクリプトの補完にプラグインを使う場合、そのプラグインは連鎖に対応していなければなりません。スクリプト用のプラグインを作ろうとする人は作者に相談してください。〈→談話室〉
動作環境
- 秀丸エディタ v7.00 以降 + HMJRE.DLL + 田楽 DLL v2.90 以降 + CompleteX v3.04 以降で動作するはずです。
- 秀丸エディタ v8.00β11 + HMJRE.DLL v2.05 + 田楽 DLL v3.01 + CompleteX v3.1 で動作確認しました。
- 田楽 DLL は必須ではありませんが、ないと一部の機能が使えません。
- JRE32.DLL では使えません。
ライセンス
- このマクロはフリーウェアです。自由に利用、改変、再配布することができます。
- 改変したものを公に再配布するときは次のことを明記してください。
- 改変したものである旨(できれば改変内容も)
- 改変元の名称、バージョン、一次配布場所
配布場所
一次配布場所は Wisteria - 秀丸マクロ - CompleteTag + CompleteCSS です。二次配布は次のところで行われています。
謝辞
- 添付の辞書は Another HTML-lint の規則ファイルを加工したものです。作者の k16 さんから無償を条件として転用許可をいただきました。ありがとうございます。
- Version 3.1 (2009/09/04)
-
- 秀丸エディタ v7.00 対応 (秀丸エディタ v6.x 以前では使えなくなりました)
- [Tag][CSS] アンドゥ関係の動作仕様変更
- 確定した場合、アンドゥ 1 回で補完前の状態に戻る
- キャンセルした場合、アンドゥ 0 回で補完前の状態に戻る
- [Tag] 属性名の補完中に [ > ] を押したら属性値の補完に進み、可能なときはタグを閉じる
- Version 3.07 (2009/09/03)
-
- [Tag] 設定項目
tag.要素名.属性名.path.filter=
を追加
- [Tag] ファイル名補完はカーソルより右の部分を上書き
- [Tag] タグが閉じてない状態で補完中に [ > ] を押したらタグを閉じる
- [Tag][CSS] テンポラリ辞書ファイルをシステムの一時フォルダに作る (環境変数 TEMP から取得)
- Version 3.06 (2007/02/07)
-
- [Tag][CSS] CompleteX v3.04 対応(CompleteX v3.03 でも使えますが、関係ないヒントが表示されることがあります)
- [Tag] アンカー名補完の動作をさらに修正
- Version 3.05 (2007/02/04)
-
- [Tag][CSS] CompleteX v3.03 対応(CompleteX v3.02 以前では使えなくなりました)
- [Tag] HMJRE.DLL v1.79 のバグへの対処を解除
- [Tag] アンカー名補完の動作を修正
- Version 3.04 (2006/11/08)
-
- [Tag] ID 名 id="" の補完(今のところ # に続く単語をスタイルシートから拾ってるだけ)
- [Tag][CSS] カラーダイアログで [色の追加] で追加した色を記憶する(Tag, CSS 共通)
- [CSS] セレクタが補完できなくなってたバグ修正(v3.0β1 でエンバグした)
- Version 3.03 (2006/11/02)
-
- [Tag][CSS] カラーダイアログを搭載(色の補完で #(色の選択...) を選ぶとコモンダイアログが表示される。田楽 DLL が必要)
- [Tag] 仮想パス対応(スタイルシートのパスにも有効。
path.mapping=
の設定に依存)〈→CompletePath.mac:設定〉
- [Tag] IMG 要素の src 属性値を補完して [Enter] で確定&完了したときも画像サイズを挿入/更新する
- [Tag] 田楽 DLL は必須でない(ない場合は画像サイズ入力とカラーダイアログが使えない)
- Version 3.02 (2006/10/28)
-
- [Tag] 属性の途中からの補完を高速化
- [Tag] ファイル名の補完後、自動的にアンカー名の補完に移るのは次の場合に限る:
- 一致による自動確定
- [Space] を押して確定したとき
- # を入力して確定したとき
- [Tag] 自ファイルのアンカー名の補完ができなくなってたバグ修正(v3.01 でエンバグした)
- Version 3.01 (2006/10/23)
-
- [Tag] 画像サイズの補完動作を改良
- [Tag] 設定項目
tag.imgsize=
を追加
- [Tag] アンカー名を補完するのは次の要素・属性に限る:
- <a href="">, <area href="">, <iframe src="">, <iframe longdesc="">, <img longdesc="">, <img usemap="">, <input usemap="">, <object usemap="">, <blockquote cite="">, <del cite="">, <ins cite="">, <q cite="">
- [Tag] アンカー名の補完で、アンカー名なしを意味する空の候補を追加(v1.03 まではあったけど v3.0β1 でなくしちゃったのを復活)
- [Tag] アンカー名が正しく収集されないことがある問題(HMJRE.DLL v1.79 のバグ)に対処
- [Tag] <LI type=""> の補完で親要素が UL か OL かによって候補を変える特例動作を廃止(常に両方の候補が出てきます)
- [Tag][CSS] 関係ないパラメータヒントが表示されることがありうるバグ修正
- Version 3.0 (2006/10/01)
-
- 秀丸エディタ v6.00 対応
- macrodll.dll v0.80 対応
- [Tag] 設定項目
tag.spidir=
と tag.enclose=outside
を追加
- Version 3.0 beta 2 (2006/08/05)
-
- [Tag][CSS] ファイル名補完時 disabledraw が解除されてなかったバグ修正
- [Tag] ファイル名補完時「DLL がロードされてないのに dllfunc 関数が使われました」というエラーが出るバグ修正
- Version 3.0 beta 1 (2006/06/21)
-
- Version 3.0 beta 1 (2006/06/18)
-
- CompleteX v3 対応(v2 では使えなくなりました)
- [Tag] 終了タグの自動補完の発動条件を変更(開始タグを入力して 確定3(CompleteX のデフォルトでは Ctrl+[Enter])を押す)
- Version 1.03 (2006/02/03)
-
- Version 1.02 (2006/01/14)
-
- [Tag] CSS ファイルの @import の無限ループを回避
- Version 1.01 (2005/12/03)
-
- [Tag] 終了タグの自動補完で
tag.Ignore=context
が指定されてたら妥当性をチェックしない
- Version 1.0 (2005/11/28)
-
- 正式版
- [Tag] 終了タグの自動補完(範囲選択状態で実行し、開始タグを入力して確定&完了すると、選択範囲が開始タグと終了タグで囲まれる)
- [Tag] STYLE 要素で定義されたクラス名も class 属性値の補完候補にする
- [Tag] スタイルシートのパス <LINK rel="stylesheet" href="〜"> は編集バッファから取得する(未保存でも OK)
- [CSS] @charset "〜"; の値を補完(http://www.iana.org/assignments/character-sets に準拠)
- Version 1.0 beta 17 (2005/11/27)
-
- [Tag] スクリプト対応可能化(スクリプトの文脈では他のファイルタイプの設定を適用できるようにする)
- [CSS] 候補確定後の挙動を見直し
- [ ; ] を押したら止まる(自動的に次のセレクタの補完に移るのをやめる)
- @ルールの補完の継続条件を厳密にする
- [CSS] 要素名を大文字にするには
css.Upcase=element
と指定する(ドキュメントが間違ってた)
- Version 1.0 beta 16 (2005/11/03)
-
- [Tag] ターゲットフレーム名に対応(_blank, _parent, _self, _top のみ)
- [Tag] アンカー名の補完で候補が1つでも自動確定されないようにする
- [Tag] DLL を解放してなかったバグ修正
- Version 1.0 beta 15 (2005/08/29)
-
- [Tag] 画像サイズ補完時はすでに入力されてる数字を上書きする
- Version 1.0 beta 14 (2005/08/10)
-
- [Tag] <LI type=""> と <OL type=""> に対応
- [Tag] 候補確定後の挙動を見直し
- 属性値の補完中に [Esc] を押したとき ="" を削除しない
- 要素名の補完中に [ > ] を押したら > を書き込む
- Version 1.0 beta 13 (2005/07/14)
-
- [Tag] 秀丸 v5.00β14 以前で使えなくなってた問題修正(秀丸 v5.00β32〜33 のバグに対処するために検索文字列の強調をいじってたのをやめた)
- Version 1.0 beta 12 (2005/07/14)
-
- [CSS] @charset の補完で無限ループに陥るバグ修正
- Version 1.0 beta 11 (2005/07/10)
-
- [Tag] 色の補完を見直し(色名と、ファイル内で使われてる色番号を候補にする)
- Version 1.0 beta 10 (2005/07/10)
-
- [Tag] 候補確定後の挙動を見直し([ > ]を打って確定する使い方を考慮する)
- Version 1.0 beta 9 (2005/07/10)
-
- [Tag][CSS] 埋め込みスタイルシート(<STYLE>〜</STYLE>)対応
- [Tag][CSS] インラインスタイルシート(style="〜")対応
- [Tag] 色名の補完で # を候補に出さない
- [Tag] XHTML では
tag.Upcase=element,attribute
の指定を無視する
- [Tag] XHTML で空要素タグが正しく入力されないバグ修正
- [Tag] 終了タグ入力時、属性名を補完してしまうバグ修正
- [Tag] トップレベルで要素名が書きかけのとき正しく補完できないバグ修正
- Version 1.0 beta 8 (2005/01/14)
-
- [Tag] クラス名補完で
url()
を使わない @import "hoge.css"
という書き方に対応
- Version 1.0 beta 7 (2004/12/09)
-
- [Tag] DOCTYPE 宣言の候補選択はリストボックスじゃなくてメニューにする
- Version 1.0 beta 6 (2004/10/03)
-
- [Tag] タグが閉じてない状態で確定するとカーソルが次のタグへ飛んでいくバグ修正
- [Tag] DOCTYPE 宣言だけ書いた状態で起動すると属性名補完になるバグ修正
- Version 1.0 beta 5 (2004/09/26)
-
- [Tag] 書けるはずの要素名が出てこないバグ修正(かなり致命的だった〜)
- Version 1.0 beta 4 (2004/09/19)
-
- [CSS] フォント名補完時の挙動を改善
- [Tag] 高速化オプション(文脈解析省略)
- [Tag] 内部処理見直し・高速化
- Version 1.0 beta 3 (2004/09/18)
-
- [CSS] CompleteCSS.mac をスクラッチから書き直した
- [Tag] 微バグ修正
- Version 1.0 beta 2 (2004/03/31)
-
- [Tag] DOCTYPE 宣言対応強化・バグ修正
- [Tag] Susie プラグインのパスが空白を含むとき対策
- Version 1.0 beta 1 (2004/03/08)
-
- [Tag] htmltag.mac をスクラッチから書き直して CompleteTag.mac とした
- 終了タグも候補に
- 文脈解析(親要素に合わせて子要素の候補を変える)
- DOCTYPE 宣言入力(カーソル以前にタグも DOCTYPE 宣言もないとき)
ご意見、ご感想、バグ報告、ツッコミなどは 談話室 へどうぞ。