3

UnrealScriptの emacs メジャー モードの改善に取り組んでいます。(多くの) 癖の 1 つは、Unreal エディタでツールチップを指定するために次のような構文を使用できることです。

var() int MyEditorVar <Foo=Bar|Tooltip=My tooltip text isn't quoted>;

変数宣言の後の山かっこは、Key=Value メタデータ ペアのパイプ区切りリストを示します。メタデータは引用されませんが、引用符を含めることができます。パイプ ( |) または右山かっこ ( >) は末尾を示します。

このコンテキスト依存の構文を有用な方法で認識するために、emacs 構文テーブルを取得する方法はありますか? これらの変数メタデータ宣言内でパイプと直角括弧を除くすべてを何らかの方法で強調表示したいのですが、それ以外の場合は通常の強調表示を保持します。

現在、一重引用符文字は引用符区切り文字 (構文指定子") として設定されているため、font-lock-mode はそのような引用符を引用符で囲まれた文字列の開始として解釈しますが、これはこの非常に具体的な例にはありません。一致すると思われる別の一重引用符が見つかります。

4

1 に答える 1

2

syntax-propertize-functionコンテキストに応じて、バッファー内のさまざまな文字にさまざまな構文指定子を適用できるようにするをセットアップする必要があります。

syntax-propertize-functionEmacs の lisp ディレクトリでgrep for を実行して、さまざまな例 (単純なものから非常に複雑なものまで) を確認します。

おそらく、「Foo」の後と「Tooltip」の後の「=」文字を「一般的な文字列区切り文字」としてマークし、対応する終了文字「|」で同じことを行う必要があります。と>"。別の方法として、">" の前の文字を (閉じる) ジェネリック文字列区切り記号としてマークし、"<" と ">" を open&close 括弧としてマークすることもできます。

于 2013-01-22T19:56:10.610 に答える