HmMarkdownSimpleServer の主な特徴
実行方法
プレビューしたいMarkdownファイル(通常は.md)を秀丸で開いて、
HmMarkdownSimpleServer.macを実行
秀丸上でファイル名が付いている時だけ機能する
現在のところ「なんらかのファイル名が付いていること」を必須としています。
すなわち、秀丸上で「無題」だと機能しません。
これは、
- (無題)になったら「HmMarkdownSimpleServer の機能を停止する」というシグナルとしているため
- ドキュメントのルート相当が無いと、「相対リンク」がどこを起点に記述しているつもりなのか不明であり、 機能しないため
Github Flavored Markdown 方言にある程度対応
Github自体に依存するものを除き、Github独自のマークダウンの主だったものには対応しています。
(Markdigが対応している範囲)
テキストが50000文字以下なら リアルタイムプレビューモード
テキストが50000文字以下なら、リアルタイムプレビューモードになります。
このモードでは、秀丸上のテキストを編集すると、右のブラウザ枠のテキストも自動的に更新されます。
この程度の文字数であれば、現代的なPC(2018年以降に買った標準的な価格のPC)であれば、
問題なくリアルタイムプレビューが出来るでしょう。
テキストが50000文字を超えると ライブプレビューモードに切り替わる
テキストが50000文字を超えると、自動的にライブプレビューモードに切り替わります。
このモードでは、「ファイルを保存」した時だけ、右のブラウザ枠のテキストが更新されます。
これはリアルタイムプレビューモードでは重くなりすぎ、ブラウザ枠や秀丸本体が不安定になることを回避するためです。
編集ペインのカーソルの位置に合わせて、ブラウザ枠が追従してスクロール
編集ペインのカーソル位置に合わせて、ブラウザ枠がスクロールします。
しかし、この機能については逆にうっとうしいと思う人も居るかもしれないので、
HmMarkdownSimpleServer.mac の先頭付近を以下のように
#CURSOR_FOLLOW_MODE = 0
とすることで、追従する機能を「OFF」にすることが出来ます。
SET_REALTIME_MODE_TEXT_LENGTH_MAX: #REALTIME_MODE_TEXT_LENGTH_MAX = 50000; // 50000文字まではリアルタイムでブラウザ枠追従モードを維持する。それを超えるとファイル保存時のみの更新。 #CURSOR_FOLLOW_MODE = 0; // カーソルの位置に合わせてブラウザ枠も追従する
OFFにした場合でも、編集ペインのカーソルが上部3行と下部3行に限り、ブラウザが追従する
- カーソルの位置が「上端3行」の時は、ブラウザ枠がトップへとスクロール。
- カーソルの位置が「下端3行」の時は、ブラウザ枠もボトムへとスクロール。
(※下端については空の改行だけの行はカウントしない)
します。
上下の端に関しては、ほとんどの全ての人が編集時に追従することを求める機能であるためです。
テキストが20万文字を超えると、追従がしんどくなってくる
「マシンスペック」や「内容が縦長に描画されやすい内容かなのか?」 などにも左右されますが、
テキストが20万文字を超えると、編集ペインの位置に合わせたブラウザ枠の追従が怪しくなってきます。
一般的にはマークダウンの1つのファイルで、20万文字編集することは稀ですので、
今のところは仕様とします。
ライトテーマとダークテーマ
秀丸エディタがライトテーマなら、HmMarkdownSimpleServerもライトテーマのCSSで、
秀丸エディタがダークテーマなら、HmMarkdownSimpleServerもダークテーマのCSSでレンダリングします。
Mermaidに対応
コードブロック内にmermaidを書くと、Mermaidの図描画します。
ファイル名を変更させても自動で追従する
秀丸エディタ上で、ファイル名を変更させた場合、
右のプレビューもファイル名を変更させつつ追従します。
テキストが200万文字を超えると、編集自体がしんどくなってくる
「マシンスペック」や「内容が縦長に描画されやすい内容かなのか?」 などに大きく左右されますが、
ブラウザペインでプレビューするテキストとして分量が多すぎます。
原則的には50万文字以下のテキストを扱うためのプレビューコンポーネントだと認識してください。
秀丸エディタ上でタブを閉じるか、もしくはファイル名が無題になると終了
要するに「ファイルを閉じる」と該当プロセスのみHmMarkdownSimpleServerの機能が終了します。
(それぞれのプロセス[=タブ]にて個々に管理されています。)