構文強調表示定義ファイル

NyanFi

構文強調表示定義ファイル

テキストビュアーでの構文強調表示などを、ファイルによってユーザ定義できます。
定義ファイルは、NyanFi 実行ディレクトリに "Highlight.INI" という名前で作成してください。
NyanFi がデフォルトで対応している拡張子についても、ファイルで定義し直すと、それが優先的に適用されます。
一旦読み込まれた定義ファイルは、内容を保持して再利用します。タイムスタンプが変化していたら読み込み直します。

設定メニュー - [デフォルトの構文強調表示定義をコピー] を用いると、特定の拡張子に対するデフォルトの構文強調表示定義をクリップボードにコピーできます(例外的な処理もあるため、実際の動作と一致しない場合もあり)。取得した内容を変更して定義ファイルに設定すれば、デフォルトの定義を拡張できます。

定義ファイルの書式は一般的なINIファイルと同様です。
ファイルの種類ごとにセクションを作り、その中に定義を記述してください。
セクション名は、定義したいファイルの拡張子とします。拡張子は . (ピリオド)で区切って複数指定できます。
. のみを指定すると、拡張子なしのファイル(ドットファイルを含む)にマッチします。
なお xd2txlib.dll でバイナリ文書をテキスト表示している場合も、その拡張子に対して定義可能です。

[.f03.f08.f90.f95]

セクション名を CLIPBOARD にすると、TextViewer_CB コマンドでクリップボードを閲覧している場合の構文強調表示を定義できます。

[CLIPBOARD]

セクション名を TASKLOG にすると、タスクログの構文強調表示を定義できます。
.txt に対する別のセクションにログファイルがマッチする可能性がある場合は、それより前に記述してください。先にマッチしたものが優先されます。

[TASKLOG]

セクション名を HTML2TEXT にすると、HTML→テキスト変換表示中の構文強調表示を定義できます。

[HTML2TEXT]


セクション内では、以下のキーを利用できます。必要に応じて設定してください。


TargetPath
特定のパスでのみ定義を適用したい場合に指定します。
無指定の場合は、すべてのパスが対象となります。
パスは ; (セミコロン)で区切って複数指定できます。ドライブ名から始まるフルパスで指定しますが、前方一致でマッチするので、完全なパスの形式になっていなかったり、ファイル名部分まで及んだりしてもかまいません。また環境変数や定義済み変数%ExePath% も使えます。
TargetPath=D:\Projects\Source;E:\Backup\Source
ExcludePath
定義を適用したくないパスを指定します。
パスは、; (セミコロン)で区切って複数指定できます。ドライブ名から始まるフルパスで指定しますが、前方一致でマッチするので、完全なパスの形式になっていなかったり、ファイル名部分まで及んだりしてもかまいません。また環境変数や定義済み変数%ExePath% も使えます。
TargetPath=D:\Prog\NyanFi\tasklog
TargetName
特定のファイル名主部を持つファイルに対してのみ定義を適用したい場合に指定します。
完全一致ですが、大小文字は区別されません。
名前は ; (セミコロン)で区切って複数指定できます。
[.] セクションで指定すると、特定のドットファイルなどに適用できます。
NyanFi では、先頭のドット以降部分は拡張子ではなくファイル名主部とみなしています。

同一拡張子に対して異なる条件で別の定義を適用したい場合は、拡張子の末尾に : (コロン)で区切って任意の文字列を付加し、セクション名が一意的になるようにしてください。

[.txt:D1]
TargetPath=D:\hoge\data1
…

[.txt:D2]
TargetPath=D:\hoge\data2
…

[.:bash]
TargetName=.bash_history
…

[.:etc]
TargetName=hogehoge
…

セクション名が CLIPBOARDTASKLOG の場合、TargetPathExcludePath は無効です。



FontName
通常とは異なる等幅フォントで表示したい場合、その名前を設定してください。
誤ってプロポーショナルフォントを設定すると表示が崩れますので注意してください。
FontSize
通常とは異なるフォントサイズで表示したい場合に設定してください。
FontName="Source Code Pro Medium"
FontSize=14

Comment1〜
行コメントの開始文字列です。
キー名の末尾に連番を振ることで複数指定できます。
この設定は、テキストプレビューや一覧ダイアログにも適用されます。
CommentEnd1=@REM
CommentEnd2=REM
CommentEnd3=::
CommentBgn1〜
CommentEnd1〜
ブロックコメントの開始/終了文字列です。
キー名の末尾に連番を振ることで複数指定できます。必ず開始/終了を組にして指定してください。
この設定は、テキストプレビューや一覧ダイアログにも適用されますが、開始/終了文字列が同じだと対応できない場合があります。
CommentBgn1={
CommentEnd1=}
CommentBgn2=(*
CommentEnd2=*)
先頭と末尾が同じ引用符になる場合は、全体を " または ' で囲んでください。
CommentBgn1='"""'
CommentEnd1='"""'
CommentBgn2="'''"
CommentEnd2="'''"

ReservedPtn
予約語の正規表現パターンです。
多数になる場合でも、一行で記述してください。
ReservedPtn=\b(if|begin|else|end|function)\b
ReservedCase
予約語に対する大小文字区別の有無です。
区別する場合は 1 (デフォルト)を、区別しない場合は 0 を指定してください。
ReservedCase=0

NumericPtn
数値の正規表現パターンです。
NumericPtn=\b[0-9]+\b

Symbol
シンボルとみなす文字を列挙します。
Symbol={}()[]+-*/%&|^!~=<>,:;?

Strings
文字列表示のための引用符を列挙します。
Strings="'
UseEsc
Strings で指定した引用符内でのエスケープシーケンスの有無です。
\ によるエスケープシーケンスがある場合は 1 (デフォルト)を、ない場合は 0 を指定してください。
UseEsc=1

HeadlinePtn
見出し行の正規表現パターンです。マッチした行が、「見出しの文字色」で表示されます。
無指定の場合、デフォルトのパターンがあればそれが用いられます。
これが指定されていて FunctionPtn が無指定の場合、FunctionList コマンドを実行すると「見出し一覧」が表示されます。
またこの設定は、一覧ダイアログでの見出し表示にも適用されます。
HeadlinePtn=^[●○◎]\.+

ColorIniFile
指定したカラー設定ファイル(.INI)によって、テキストビュアーの配色を一時的に変更します。
設定ファイルには、テキストビュアーの配色ダイアログ(SetColor)や オプション設定 - フォント・配色 でエクスポートしたもの、あるいは NyanFi のINIファイルを利用できます。ドライブ名がない場合、NyanFi ディレクトリからの相対指定とみなされます。
ColorIniFile=DarkColor.INI
CommentCol、ReservedCol、NumericCol、SymbolCol、StringsCol、HeadlineCol
コメント、予約語、数値、シンボル、文字列、見出しを、通常と異なる文字色で表示したい場合に設定してください。
色は、2桁の16進数によるRRGGBB形式で指定します。
なおテキストプレビューや一覧ダイアログに CommentCol は適用されません。また一覧ダイアログに HeadlineCol は適用されません。
CommentCol=FFFF66
ReservedCol=66FFFF

KeywordPtn、KeywordPtn2
予約語以外のキーワードの正規表現パターンです。キーワードは2種類まで指定できます。
KeywordPtn=\b(hoge|fuga|piyo)\b
KeywordPtn2=[子丑寅卯辰巳午未申酉戌亥]
KeywordCase、KeywordCase2
KeywordPtn、KeywordPtn2 で指定したキーワードに対する大小文字区別の有無です。
区別する場合は 1 (デフォルト)を、区別しない場合は 0 を指定してください。
KeywordCase=0
KeywordCase2=0
KeywordCol、KeywordCol2
KeywordPtn、KeywordPtn2 で指定したキーワードの表示色です。
2桁の16進数によるRRGGBB形式で指定してください。
KeywordCol=FFFF66
KeywordCol2=66FFFF

FunctionPtn
関数一覧で表示する関数の正規表現パターンです。
FunctionPtn=^function\s+[_a-zA-Z]\w*\(
FuncNamePtn
関数一覧で、 名前 をチェックしている場合に、関数の名前部分を取得するための正規表現パターンです。
マッチした名前の末尾に括弧がある場合、それを除いて表示します。
FuncNamePtn=\b[_a-zA-Z]\w*\(

AltBackSlash
オプション設定 - テキストビュアー の「"\" を "∖"(U+2216)で表示」の設定内容を変更できます。
有効にする場合は 1 を、無効にする場合は 0 を指定してください。このキーがない場合は、オプション設定に従います。

PairBeginPtn1〜、PairEndPtn1〜
SearchPair コマンドの検索で用いられる、開始行/終了行の正規表現パターンです。
キー名の末尾に連番を振ることで複数指定できます。必ず開始/終了を組にして指定してください。
PairBeginPtn1=^#BEGIN$
PairEndPtn1=^#END$
PairBeginPtn2=^#HEAD$
PairEndPtn2=^#FOOT$

不正な正規表現パターンが指定されていると無効になります。うまく機能しない場合は設定を確認してください。
起動時や再読み込み時、構文強調表示定義ファイルに誤りがあったら、その内容がログに出力されます。



Highlight.INI の例
[.h51.mac]
Comment1=;
ReservedPtn=\b(BIT|CREF|DATA|DB|DW|END|ENDM|EQU|INCLUDE|MACRO|ORG|PAGE)\b
ReservedCase=0
NumericPtn=\b([0-9A-F]{1,5}H)|([01]{1,8}B)\b
Symbol=,&+-%#
Strings="'

[.hoge]
TargetPath=D:\foo
ExcludePath=%ExePath%
Comment1=;
CommentBgn1=/*
CommentEnd1=*/
CommentCol=66FF66
ReservedPtn=\b(cat|dog|if|begin|else|end|function)\b|^#\w+\b
ReservedCase=1
NumericPtn=\b[0-9]+\b
Symbol=+-*/=<>
Strings="
UseEsc=0
KeywordPtn=\b(foo|bar|baz|qux)\b
KeywordCase=0
KeywordCol=FFFF66
KeywordPtn2=\b(spam|ham|eggs)\b
KeywordCase2=0
KeywordCol2=FF66FF
FunctionPtn=^function\s+[_a-zA-Z]\w*\(
FuncNamePtn=\b[_a-zA-Z]\w*\(