# キーワードファイルの作成方法

拡張子ごとのキーワードは、MKWファイルに記述されています。 このファイルの作成方法を以下に解説します。

## 基本仕様

作成位置
  <MAXY.EXEのあるディレクトリ>/types
ファイル名
  <設定名>.mkw
  同じタイトルのMSDファイルが存在している必要があります。
文字コード
  UTF-16LE（BOMなし）
改行コード
  CR+LF

## 記述方法

### 書式

MKWファイルでは、以下の書式を必要な数だけ繰り返して記述します。

    [<キーワード種類> <文字色> <背景色>]
    <キーワード1>
    <キーワード2>
    ...

次に、それぞれの詳細を説明します。

キーワード種類
  Maxyで扱えるキーワードとしては、以下のものがあります。 全て大文字・小文字を区別します。

  キーワード名 | 意味 | 説明
  --- | --- | ---
  NORMAL | 通常キーワード | ここに指定されたキーワードを、指定の文字色・背景色で表示します。
  LINE | 行キーワード | このキーワードから行末までを、指定の文字色・背景色で表示します。 行末までの間に別のキーワードが含まれていても無視されます。
  QUOTE | 引用キーワード | このキーワードが行頭にある場合のみ、行全体を指定の文字色・背景色で表示します。 行末までの間に別のキーワードが含まれていても無視されます。

  これ以外の形式のキーワードは、現在のところサポートしていません。 将来的には、以下のものもサポートする予定です。

  - 大文字・小文字を区別しないキーワード
  - 正規表現を用いたキーワード
  - ブロックキーワード（C言語のブロックコメントのようなもの）
  - タグ内キーワード（HTMLの要素のように、特定の文字で囲まれている場合のみ強調するキーワード）
  - 入れ子のキーワード（HTML内のJavaScriptのように、特定の条件でのみ有効になるキーワード）
文字色・背景色
  キーワードの文字色および背景色を、この順番で指定します。 色は6桁の16進数（RRGGBB）で表します。
キーワード1,2,...
  以下、キーワードを羅列していきます。
  - 行頭から行末までを単一のキーワードとみなします。途中にスペースが入っていても、スペースの前までで区切ることはしません。
  - 空行（改行のみの行）は無視されます。

この書式により、関連性の高いキーワードをグループ化して扱うことができ、キーワードの色を変更する時も関連するキーワードを一度に変更できます。

## 注意

- 1行の長さは、改行を含めて必ず256文字（512バイト）以内にしてください。
- "[<キーワード種類> <文字色> <背景色>]"という文字列（以降、グループ指定子と呼びます）は、必ず行頭に記述してください。
- 最初にグループ指定子が出てくるまで、何を書いても無視されます。
- グループ指定子から行末までは、何を書いても無視されます。これを利用して、そのグループの説明をコメントとして残すことができます。
- 同じタイトルのMSDファイルが存在しない場合、そのMKWファイルは読み込まれません。
- 設定ファイルを直接編集するのではなく、GUIから編集する機能はまだ作成していません。

## 記述例

MKWファイルの記述例として、C++言語の設定を以下に示します。

    [LINE 008000 ffffff]                 ; 行コメント
    //

    [LINE 800080 ffffff]                 ; プリプロセッサ
    #

    [NORMAL ff0000 ffffff]               ; 基本型
    signed
    unsigned
    void
    char
    short
    int
    long
    float
    double

    [NORMAL ff0000 ffffff]               ; 記憶クラス
    auto
    register
    static

    [NORMAL ff0000 ffffff]               ; 修飾子
    const
    volatile

    [NORMAL ff0000 ffffff]               ; 制御
    if
    else
    for
    continue
    do
    while
    switch
    case
    default
    break
    goto
    return

    [NORMAL ff0000 ffffff]               ; 列挙型・構造体・共用体
    enum
    struct
    union

    [NORMAL ff0000 ffffff]               ; その他
    sizeof
    typedef

    [NORMAL ff0000 ffffff]               ; C++
    asm
    inline
    template
    typename
    operator
    namespace
    using
    new
    delete
    bool
    true
    false

    [NORMAL ff0000 ffffff]               ; クラス
    class
    public
    private
    protected
    friend
    this
    virtual
    explicit
    mutable

    [NORMAL ff0000 ffffff]               ; 例外処理
    try
    catch
    throw

    [NORMAL ff0000 ffffff]               ; キャスト
    const_cast
    static_cast
    dynamic_cast
    reinterpret_cast

Copyright© 2003-2009 しまたろ