●階層付きテキストをアウトラインエディタ風に扱うためのマクロ集●
バージョン :Ver.1.02
作成日 :2015/05/01
動作環境 :たぶん秀丸エディタ V8.00 以降
動作確認 :秀丸エディタ V8.90 (64bit)
作成者 :ごぉ
Web :http://blank-note.sakura.ne.jp/
【概要】
この秀丸用マクロ集には、以下の8つのマクロが含まれています。
1. hmOutline_autoRangeEdit.mac
- ファイルを開いた際に部分編集モードに切り替える(事前に秀丸側の設定が必要です)
2. hmOutline_createNode.mac
- 兄弟ノードや子ノードの新規作成
- テンプレートを使用した兄弟ノードや子ノードの新規作成
- 外部のプレーンテキストや階層付きテキストを、兄弟ノードや子ノードとして取り込む
3. hmOutline_copyNode.mac
- 子ノードを含めた複製
- ノード単体の複製
4. hmOutline_changeNodeLevel.mac
- 子ノードを含むレベルの上げ下げ
- ノード単体のレベルの上げ下げ
5. hmOutline_splitNode.mac
- カーソル位置でノードを分割
6. hmOutline_exportNode.mac
- ノードをエクスポート
- プレーンテキストや章立て形式に変換してエクスポート
7. hmOutline_exportHTML.mac
- HTML5に変換してエクスポート
8. hmOutline_convertOPML.mac
- OPMLと階層付きテキストを相互に変換
- hmOutline_createNode.mac, hmOutline_copyNode.mac, hmOutline_changeNodeLevel.mac, hmOutline_exportNode.mac は、
実行時に押下中のCtrl,Shiftキーによって挙動が変化しますので、必要に応じてカスタマイズしてください。
詳細は hmOutline_readme.txt をご確認ください。
- hmOutline_exportNode.mac, hmOutline_exportHTML.mac, hmOutline_convertOPML.mac では、
1MB を超えるようなファイルを扱う場合には変数用メモリが足りなくなることがあります。
エラーが出る場合は、秀丸側の設定で変数用メモリの上限を上げるか、
各マクロ冒頭の #copyBuffer でバッファの上限を下げてください(0で無制限)。
- 変数用メモリの上限は [その他]→[動作環境]→[環境] から変更できます。
- 1行の長さにもよりますが変数用メモリ 1MB に対して #copyBuffer=10000~15000 くらいが無難かと思います。
- バッファを小さくしすぎると極端に遅くなります。
【対応する階層付きテキスト形式】
このマクロが対応している階層付きテキストは、
──────────────
.投票げぇむ
..コンセプト
らぶこめ
..キャラクター
...しゅうすけくん
主人公
...わかばさん
ヒロイン
..プロット
...第一話
....
...第二話
....
──────────────
のように、
1行目が「階層区切り文字(".")+見出し」、2行目以降が「本文」で構成され、
階層区切り文字(".")の数で階層の深さを示したテキストファイル(WzMemo形式)です。
この Readme も階層付きテキストになっています。
- 各マクロ冒頭の $mark="." を書き換えれば "." 以外の形式にも対応できるかもしれません。
- $mark="#"; #markdown=true にすることでMarkdown形式の#で始まる見出しと2行の見出し(level1:=== level2:---)に対応します。
【各マクロの使い方】
(1) hmOutline_autoRangeEdit.mac
このマクロを自動起動マクロの『ファイルを開いた直後』に登録すると、
特定の拡張子(*.mem)のファイルを開いた時に部分編集モードに切り替わり、アウトラインエディタ風の表示になります。
他の拡張子で利用したい場合は、マクロ中の .mem の部分を書き換えてください。
※事前に適切な「アウトライン解析のツリー定義」を行い、「アウトライン解析の枠」を表示するように設定しておく必要があります。
→ツリー定義は「ファイルタイプ別の設定-アウトライン-解析-リセット>>-"."の数で階層を表す用」で設定可能です。
→更に、強調表示を設定することでよりアウトラインエディタライクになります。
(例) 見出し行(『^\.』など)を『行の強調』で目立たせ、階層を示す文字列(『^\.*[\.x]』など)を『特に強調』で目立たせなくする。
※「ファイルタイプ別の設定-アウトライン-部分編集」で『ローカル編集モード』に設定しておくことをお勧めします。
※秀丸の仕様により、0~1ノードの状態で部分編集モードに切り替えることはできません。
(2) hmOutline_createNode.mac
現在カーソルがあるノード(階層)の下に新たに兄弟ノードを作成します。
ノードが存在しなければ、現在の内容をルートノードにします。
・Ctrlキーを押しながら実行
→子ノードを作成します。
・Shiftキーを押しながら実行
→外部テキストを取り込みます。
外部テキストが通常のテキストであればノードの本文として取り込み、
階層付きテキストであれば見出し、階層、本文を取り込みます。
→マクロ冒頭部分で $file="C:\\doc\\template.mem" 等と指定することで、
常に特定の外部ファイルを読み込んでテンプレート的に扱うことができます。
※それぞれ、マクロ冒頭部分を false → true にすることで挙動が反転します。
(例) #child=iskeydown(0x11)^true (通常は子ノード作成。ctrlで兄弟ノード作成)
(例) #insert=iskeydown(0x10)^true (通常はインサート。Shiftで空ノード作成)
※マクロ呼び出しに Ctrl,Shift キーを用いている場合など、
別個のマクロとして利用したい場合は、マクロファイルを複製して冒頭部分を書き換えてください。
(例) #insert=true (常に外部ファイルからインサート)
※ファイル冒頭がルートノードから始まらない階層付きテキストを取り込んだ場合、
以下の階層構造が変化する場合がありますのでご注意ください。
(3) hmOutline_copyNode.mac
現在カーソルがあるノードとその配下ノードを複製し、直下に追加します。
・Shiftキーを押しながら実行
→現在ノードのみ複製。
※マクロ冒頭部分を false → true にすることで挙動が反転します。
(例) #child=iskeydown(0x10)^false (現在ノードのみ複製。Shiftで配下を含む)
※マクロ呼び出しに Shift キーを用いている場合など、
別個のマクロとして利用したい場合は、マクロファイルを複製して冒頭部分を書き換えてください。
(例) #child=false (常に現在ノードのみを複製)
※1MB を超えるようなノードをコピーすると変数用メモリが足りなくなることがあります。
エラーが出る場合は、秀丸側の設定で変数用メモリの上限を上げてください。
変数用メモリの上限は [その他]→[動作環境]→[環境] から変更できます。
(4) hmOutline_changeNodeLevel.mac
現在カーソルがあるノードとその配下ノードのレベルを1つ上げます。
・Ctrlキーを押しながら実行
→レベルを1つ下げる。
・Shiftキーを押しながら実行
→現在ノードのみレベル変更。
※それぞれ、マクロ冒頭部分を false → true にすることで挙動が反転します。
(例) #down=iskeydown(0x11)^true (レベル下げ。ctrlでレベル上げ)
(例) #child=iskeydown(0x10)^false (現在ノードのみレベル変更。Shiftで配下を含む)
※マクロ呼び出しに Ctrl,Shift キーを用いている場合など、
別個のマクロとして利用したい場合は、マクロファイルを複製して冒頭部分を書き換えてください。
(例) #down=true (常にレベル下げ)
(5) hmOutline_splitNode.mac
カーソル位置でノードを分割します。
(6) hmOutline_exportNode.mac
現在カーソルがあるノードをルートとして、配下のノードと共にエクスポートします。
階層を示す文字を別の記号や章立て表示に置き換えて出力することもできます。
・Shiftキーを押しながら実行
→ファイル全体を出力
・$dir,$file で保存先フォルダ及びファイル名を指定できます。
(例) $dir="C:\\doc\\"
・#convertLevel=false とすることで、
ルートノードに変換せず現在の階層のまま出力します。
一般的な階層付きテキストとは異なる形式になりますのでご注意ください。
・$convertMark を変更することで、通常のテキストや章立て表示に変換できます。
→$convertMark="第1階層,第2階層,,第4階層,..." のように指定してください。
指定のない階層は階層文字を取り去ります。
→iという文字を用いると章立てに対応した数字で置き換えます。
→tという文字を用いると、tを見出しと見なして見出し行そのものを置き換えます。
(例) $convertMark="false" で階層付きテキストとして出力(デフォルト)。
(例) $convertMark="" で全ての階層文字を取り去ってプレーンテキストとして出力。
(例) $convertMark="【t】,(i) ,《i:t》, Scenei:" で階層文字をそれぞれの文字に置き換えて出力。
この例の場合、
──────────────
【投票げぇむ】
(1) コンセプト
らぶこめ
(2) キャラクター
《1:しゅうすけくん》
主人公
《2:わかばさん》
ヒロイン
(3) プロット
・第一話
Scene1:
・第二話
Scene1:
──────────────
のように変換されます。
※マクロ冒頭部分を false → true にすることで挙動が反転します。
(例) #outputAll=iskeydown(0x10)^true (ファイル全体を出力。Shiftで現在ノード以下のみ)
※マクロ呼び出しに Shift キーを用いている場合など、
別個のマクロとして利用したい場合は、マクロファイルを複製して冒頭部分を書き換えてください。
(例) #outputAll=true(常にファイル全体を出力)
(7) hmOutline_exportHTML.mac
階層付きテキストをHTML5としてエクスポートします。
・$dir,$file で保存先フォルダ及びファイル名を指定できます。
(例) $dir="C:\\doc\\"
・どのノードを開いた状態にするかを $closeMark で指定できます。
(例) $closeMark="x" :見出しが"x"で始まるノードを閉じた状態で出力
(例) $closeMark="" :最初のノードのみを開いた状態で出力
(例) $closeMark="all" :全てのノードを開いた状態で出力
(例) $closeMark="false" :全てのノードを閉じた状態で出力
・#outputAll=false とすることで、現在カーソルがあるノード以下を出力します。
(8) hmOutline_convertOPML.mac
OPMLと階層付きテキストの相互変換を行います。
1行目にXML宣言があればOPMLと見なし、なければ階層付きテキストと見なします。
・$dir,$file で保存先フォルダ及びファイル名を指定できます。
(例) $dir="C:\\doc\\"
・OPMLに変換する場合、どのノードを開いた状態にするかを $closeMark で指定できます。
(例) $closeMark="x" :見出しが"x"で始まるノードを閉じた状態で出力
(例) $closeMark="" :最初のノードのみを開いた状態で出力
(例) $closeMark="all" :全てのノードを開いた状態で出力
(例) $closeMark="false" :全てのノードを閉じた状態で出力
・#outputAll=false とすることで、現在カーソルがあるノード以下を出力します。
(TEXT->OPML変換時のみ)
※全てのOPMLに対応しているわけではありません。
OPMLを階層付きテキストに変換する際には、見出し・本文・階層構造以外の付加情報は容赦なく破棄します。
OPMLはアプリにより対応状況が異なり上手く変換できない場合がありますので、運用の際には十分ご注意ください。
→例えば、改行のみの本文を自動で削除するアプリがあるようです。
→outline 要素の type="note" 属性に対応していないアプリで作成したOPMLファイルを
階層付きテキストに変換した場合、本文の各行が個別のノードとして認識されてしまいます。
この現象を回避する必要がある場合は、マクロ冒頭で #convertNote=true としてください。
type="note" 属性が出現しないOMPLファイルに対して、
《子ノードを持たないノードを強制的に直前のノードの本文として変換》しようとします。
が同時に、本来の階層構造が変化することにもなりますのでご注意ください。
【その他】
・秀丸標準の機能として、以下のことができます。
- アウトライン解析の枠でノードを選択し上下ドラッグあるいはAlt+上下左右でノードを移動
- 次の見出し/前の見出し機能でノード間のカーソル移動
・このマクロでは、
- ルートノードを複数持つ場合
- ルートノードが第1階層から始まらない場合
も扱えますが、
他のソフトやマクロと連携する際には、それぞれが対応していることをご確認ください。
・本マクロの使用によって生じたいかなる損害についても作成者は一切の責任を負いません
【更新履歴】
* 2016/12/01 Ver.1.03
- hmOutline_exportHTML.mac:HTMLタグをエスケープせず出力することもできるように
- hmOutline_exportHTML.mac:空のノードを選択した時は自動的に次のノードが選択されるように
- hmOutline_exportHTML.mac:『~.html#node2』のようにURLからノードを指定して表示できるように
* 2015/05/01 Ver.1.02
- hmOutline_exportHTML.mac:Firefoxでの動作を改善
* 2014/11/25 Ver.1.01
- hmOutline_exportHTML.mac:カラーテーマの切り替え機能を追加
- hmOutline_exportHTML.mac:iOS/Androidでの表示を改善
- hmOutline_exportHTML.mac:javascript無効時の表示を改善
- hmOutline_exportHTML.mac:javascript有効時の読み込み速度を改善
* 2014/11/07 Ver.1.00
- マクロを公開
【連絡先】
バグのご報告・ご要望は、
http://blank-note.sakura.ne.jp/support.html
からお願いいたします。
お返事できない場合がありましたらご容赦ください。