2019-03-11 gorilla.vim #2 thinca
:help text-properties
- 8.1 で追加される新機能
- まだ実装中
- 未実装の機能あり
- テキストの範囲にプロパティを付与する
- ハイライトを指定したりマーカーとして利用
function hoge(arg)
~~~~
endfunction
- 1 行目の 10 桁目から 4 文字分
function hoge(arg)
^
endfunction
- 1 行目の 10 桁目から 0 文字分
- 幅 0 も可能
function hoge(arg)
<~~~~~~~~~~~~~~~~~
endfunction
~~~~~~~~~~>
- 複数行にまたがることもできる
- が、まだ未実装
- テキストの編集とともに移動する
- 手前に行を足せばプロパティの位置も下へ
- プロパティ内に文字を挿入すれば範囲が広がる
- 今までは行+桁で記憶するしかなかった
- 編集すると位置がずれてしまう
- エラー箇所をハイライト
- プラグインが自由に使える mark の代替品
- スニペットプラグインの place holder の管理
- その他アイディア次第!
(help より引用)
- テキストを挿入するときの桁/長さの調整
- 複数の行にまたがるテキストプロパティ
- prop_find()
- テキストプロパティが古くなったときのコールバック
- プロパティタイプを定義する
- バッファにテキストプロパティを設定する
- 必要なら情報を取得する
- プロパティの性質。名前で識別する
- "highlight" ハイライトグループ名
- "priority" 重なった場合は大きい方を優先
- "bufnr" 指定するとバッファローカルにできる
- "start_incl" / "end_incl" 未実装
call prop_type_add('my_error',
\ { 'highlight': 'ErrorMsg',
\ 'priority': 10 }
\ )
my_error
という名前のプロパティタイプを定義- 対象を
ErrorMsg
でハイライト - 優先度は 10
- prop_type_add({name}, {props})
- prop_type_change({name}, {props})
- prop_type_delete({name} [, {props}])
- prop_type_get([{name} [, {props}])
- prop_type_list([{props}])
- 開始位置とタイプを指定
- "length" 長さ(1行の場合のみ)
- "end_lnum" / "end_col" 終了位置
- "bufnr" 指定したバッファに設定する
- "id" 識別番号。必要ない場合は省略可(=0)
call prop_add(
\ 10, 5,
\ { 'type': 'my_error',
\ 'length': 8 }
\ )
- 10 行目の 5 桁目から 8 バイト分に
my_error
のテキストプロパティを設定する
- prop_add({lnum}, {col}, {props})
- prop_clear({lnum} [, {lnum-end} [, {bufnr}]])
- prop_find({props} [, {direction}])
- prop_list({lnum} [, {props})
- prop_remove({props} [, {lnum} [, {lnum-end}]])
call prop_type_add('my_error', \ { 'highlight': 'ErrorMsg', \ 'bufnr': bufnr('%') }) call prop_add(6, 35, \ { 'type': 'my_error', \ 'length': 10, \ 'bufnr': bufnr('%') })
- バグを見つけた
prop_remove()
の第2引数が省略できない
- デバッグが難しい
- 設定されているテキストプロパティを全部取る機能がない
- テキストにプロパティを設定できる
- まだまだ開発中の機能
- (最近は更新がない…みんなの反応を待ってるのかも?)
- 要望を出すなら今のうち!