vim-jp / vimdoc-ja / textprop

textprop - Vim日本語ドキュメント

メインヘルプファイルに戻る English | 日本語 | 編集
textprop.txt  For Vim バージョン 8.1.  Last change: 2019 May 06


                VIMリファレンスマニュアル    by Bram Moolenaar


プロパティが付加されたテキストを表示します。    textprop text-properties

THIS IS UNDER DEVELOPMENT - ANYTHING MAY STILL CHANGE  E967
{これは開発中です - 何かがまだ変更されるかもしれません}

まだ動作していないもの:
- テキストを挿入するときの桁/長さの調整
- 複数の行にまたがるテキストプロパティ
- prop_find()
- テキストプロパティが古くなったときのコールバック


1. 前書き                       text-prop-intro
2. 関数                         text-prop-functions
3. テキストが変更された場合     text-prop-changes


{Vimが +textprop 機能無効でコンパイルされたときはテキストプロパティを使用で
きません}

==============================================================================
1. 前書き                                               text-prop-intro

テキストプロパティは、バッファ内のテキストに付加することができます。それらはテ
キストとともに移動します: 行が削除または挿入された場合、プロパティはそれらが付
加されているテキストと共に移動します。テキストプロパティの前の行にテキストを挿
入/削除する場合も同様です。また、テキストプロパティ内にテキストを挿入/削除する
と、サイズが増減します。

テキストプロパティの主な用途は、テキストを強調表示することです。これは、構文ハ
イライトの置き換えと見ることができます。テキストと一致するようにパターンを定義
する代わりに、スクリプトによって、おそらく外部パーサーの出力を使用して強調表示
が設定されます。これは、画面を再描画するたびにではなく、一度だけおこなえば良い
ため、テキストプロパティを付加する最初のコスト以降ははるかに高速になります。

テキストプロパティは、テキストを識別するための他の目的にも使用できます。たとえ
ば、関数名にテキストプロパティを追加すると、検索を定義して次/前の関数にジャン
プすることができます。

テキストプロパティは、特定の行と桁に付加され、指定された長さを持ちます。プロパ
ティは複数の行にまたがることができます。

テキストプロパティには、次のフィールドがあります:
        "id"            必要に応じて使われる番号
        "type"          プロパティタイプ名


プロパティタイプ
                                                        E971
テキストプロパティは、通常、テキストをハイライトする方法を定義するプロパティタ
イプ名を持ちます。プロパティタイプには、次のエントリを含めることができます:
        "highlight"     使用するハイライトグループ名
        "combine"       TRUEの場合はテキストプロパティのハイライトが構文ハイラ
                        イトと組み合わされ、省略されるかFALSEの場合はテキスト
                        プロパティのハイライトが構文ハイライトに置き換わりま
                        す。
        "priority"      プロパティが重なるする場合は、優先度の高いものが使用さ
                        れます。
        "start_incl"    TRUEの場合、開始位置の挿入はテキストプロパティに含まれ
                        ます。
        "end_incl"      TRUEの場合、終了位置の挿入はテキストプロパティに含まれ
                        ます。




バッファの11行目にこのテキスト(インデントを除く)があるとします:

        The number 123 is smaller than 4567.

このテキスト内の数字をハイライトするには:
        call prop_type_add('number', {'highlight': 'Constant'})
        call prop_add(11, 12, {'length': 3, 'type': 'number'})
        call prop_add(11, 32, {'length': 4, 'type': 'number'})

テキストの上の行を挿入または削除してみると、テキストのプロパティがテキストに固
定されていることが分かります。したがって、行番号は必要に応じて調整されます。

"start_incl" と "end_incl" を設定すると、空白がテキストを囲む場合に便利です。
例えば、関数名のために。falseを使用すると、文字列を囲む引用符などの特定の文字
で開始または終了する場合に便利です。

        func FuncName(arg)
             ^^^^^^^^        start_incl と end_incl が設定されたプロパティ

        var = "text";
              ^^^^^^         start_incl と end_incl が設定されていないプロパ
                             ティ

しかしながら、テキストが挿入または削除されると、テキストを解析してテキストプロ
パティを更新する必要があります。しかし、これは非同期で行うことができます。

==============================================================================
2. 関数                                                 text-prop-functions

テキストプロパティタイプの操作:

prop_type_add({name}{props})          新しいプロパティタイプを定義
prop_type_change({name}{props})       既存のプロパティタイプを変更
prop_type_delete({name} [, {props}])    プロパティタイプを削除
prop_type_get([{name} [, {props}])      プロパティタイプの値を取得
prop_type_list([{props}])               プロパティタイプ一覧を取得


テキストプロパティの操作:

prop_add({lnum}{col}{props})        テキストプロパティを追加
prop_clear({lnum} [, {lnum-end} [, {bufnr}]])
                                        全てのテキストプロパティを削除
prop_find({props} [, {direction}])      テキストプロパティを検索
prop_list({lnum} [, {props})            行番号{lnum}のテキストプロパティを取得
prop_remove({props} [, {lnum} [, {lnum-end}]])
                                        テキストプロパティを削除

==============================================================================
3. テキストが変更された場合                     text-prop-changes

Vimはテキストプロパティをそれが付加されたテキストの上に置くように最善を尽くし
ます。 テキストを挿入または削除するときは、変更後のプロパティもそれに従って移
動します。

テキストが削除され、テキストプロパティにテキストが含まれなくなった場合は削除さ
れます。 ただし、行全体が削除されない限り、幅ゼロとして定義されたテキストプロ
パティは残ります。

置換モードを使用すると、文字自体が変更しても、テキストプロパティは同じ文字位置
に留まります。


テキストプロパティの桁が更新されません:

setline() または Lua, Tcl または Python などのインターフェイスを介して行を
  設定した場合。Vimはどのテキストが挿入または削除されたのかを知りません。


 vim:tw=78:ts=8:noet:ft=help:norl: