Skip to content

Commit 85cf538

Browse files
committed
Update eval.{txt,jax}
1 parent dcb674d commit 85cf538

File tree

3 files changed

+327
-54
lines changed

3 files changed

+327
-54
lines changed

dict.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ Unicode:
119119
プログラマ:
120120
- プログラマー
121121

122+
プロバイダ:
123+
- プロバイダー
124+
122125
プロパティ:
123126
- プロパティー
124127

doc/eval.jax

Lines changed: 136 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ Note: 式の評価はコンパイル時に無効化できる。無効化され
3636
12. サンドボックス |eval-sandbox|
3737
13. テキストロック |textlock|
3838
14. Vim script ライブラリ |vim-script-library|
39+
15. クリップボードプロバイダ |clipboard-providers|
3940

4041
テストのサポートは |testing.txt| を参照。
4142
プロファイリングは |profiling| に記録されている。
@@ -1829,7 +1830,7 @@ Vim script の式(|expr1| を参照)を含めることができる。任意の
18291830
&l:option ローカルオプション変数
18301831

18311832
例: >
1832-
echo "タブストップは " .. &tabstop .. " です"
1833+
echo "タブストップは " .. &tabstop
18331834
if &insertmode
18341835
18351836
ここにはあらゆるオプション名を使うことができる。|options|を参照。ローカル変数
@@ -2184,11 +2185,16 @@ v:clipmethod 現在使用されているクリップボードへのアクセス
21842185
wayland Wayland プロトコルが使用されている。
21852186
x11 X11 セレクションが使用されている。
21862187
gui GUI固有のメソッドが使用されている。
2187-
other 他のメソッドが使用されています
2188+
other 他のメソッドが使用されている
21882189
none クリップボード機能が無効または使用でき
21892190
ない。
21902191
詳細は 'clipmethod' を参照。
21912192

2193+
*v:clipproviders*
2194+
v:clipproviders
2195+
クリップボードプロバイダを含む辞書。詳細については
2196+
|clipboard-providers| を参照。
2197+
21922198
*v:cmdarg* *cmdarg-variable*
21932199
v:cmdarg 2つの目的のために使われる:
21942200
1. ファイルの読み書きコマンドに与えられる余分な引数。現在のと
@@ -2215,7 +2221,7 @@ v:collate 現在のロケール設定での実行環境の照合順序。これ
22152221
を使う。
22162222
|multi-lang| を参照。
22172223
*v:colornames*
2218-
v:colornames カラー名を16進数カラー文字列に対応付ける辞書。これらのカラー名
2224+
v:colornames カラー名を16進数カラー文字列に対応付ける辞書。これらのカラー名
22192225
は、|highlight-guifg|, |highlight-guibg|, |highlight-guisp|
22202226
パラメーターで使用できる。
22212227

@@ -5107,5 +5113,132 @@ NOTE: <args> のエスケープはユーザーに任される
51075113
:call dist#vim9#Launch(<args>)
51085114
:Launch <app> <args>.
51095115
<
5116+
==============================================================================
5117+
15. クリップボードプロバイダ *clipboard-providers*
5118+
5119+
Vim が |+clipboard_provider| 機能 (|+eval| 機能を必要とする) 付きでコンパイル
5120+
されている場合、カスタムクリップボードの作成が可能になる。これらのプロバイダは
5121+
"+" および "*" レジスタを処理する。Note |+wayland_clipboard| または
5122+
|+xterm_clipboard| 機能がコンパイルされていない場合は、"+" レジスタは使用でき
5123+
ないことに注意。
5124+
5125+
プロバイダを追加するには、次の形式で |v:clipproviders| 辞書に新しいエントリを
5126+
追加する: >
5127+
let v:clipproviders["name"] = {
5128+
\ "available": function("Available"),
5129+
\ "paste": {
5130+
\ '+': function("Paste"), " For the + register
5131+
\ '*': function("Paste"), " For the * register
5132+
\ },
5133+
\ "copy": {
5134+
\ '+': function("Copy"), " Same thing as above
5135+
\ '*': function("Copy"),
5136+
\ },
5137+
\ }
5138+
5139+
キーは 'clipmethod' で使用するプロバイダ名である。例えば次の例では、これを使用
5140+
するために "name" を 'clipmethod' に追加する。 >
5141+
set clipmethod=name,wayland,x11,gui
5142+
5143+
各コールバックは、文字列内の関数名、|Funcref|、または |lambda| 式のいずれかに
5144+
なる。
5145+
5146+
note これらの辞書エントリはオプションであることに注意。例えば、"copy" 機能が必
5147+
要ない場合は、単に除外することができる。Vim が何かをヤンク/コピーする場合、何
5148+
も行われない。
5149+
5150+
*clipboard-provider-available*
5151+
"available" コールバックは、使用可能なクリップボードレジスタを含む文字列を返す
5152+
必要がある。例えば、"+" レジスタのみが使用可能な場合は関数は "+" を返し、"+"
5153+
と "*" の両方が使用可能な場合は "+*" を返す。
5154+
5155+
*clipboard-provider-paste*
5156+
"paste" コールバックは、最初の引数としてペーストするレジスタ (文字列) を、2 番
5157+
目の引数としてアクセスの種類 (文字列) を受け取る。タプル/リスト、または文字列
5158+
のいずれかを返す。タプル/リストを返す場合は、以下の 2 つの要素を持つ必要がある:
5159+
- |setreg()| に準拠したレジスタのタイプ。
5160+
- 文字列のリスト
5161+
レジスタのタイプが空文字列の場合、型は自動的に選択される。|setreg()| を参照。
5162+
文字列が返される場合は、"clear" または "previous" のいずれかになる。"clear" は
5163+
レジスタをクリアし、"previous" はレジスタの前の (または現在の) 内容を使用する
5164+
(表示方法によって異なる)。
5165+
5166+
2 番目の引数であるアクセスタイプは、"explicit" または "implicit" のいずれかに
5167+
なる。"explicit" とは、テキストを挿入したり、|getreg()| を呼び出したりなど、
5168+
ユーザーがクリップボードに直接アクセスしていることを意味する。"implicit" と
5169+
は、|:registers| が呼び出されたときや、無関係な操作によって Vim がクリップボー
5170+
ドにアクセスしたときなど、クリップボードが間接的にアクセスされていることを意味
5171+
する。
51105172

5173+
Vim の一部の操作は暗黙的にクリップボードに間接的にアクセスするため、これは便利
5174+
である。例えば、OSC52 コマンド (エスケープコードを介してクリップボードにアクセ
5175+
スする) のプロバイダを作成する場合などである。多くの端末では、Vim がクリップ
5176+
ボードにアクセスするかどうか確認メッセージが表示される。これは、バックグラウン
5177+
ドでクリップボードにアクセスする操作を行うたびに端末が許可を求めるため、非常に
5178+
煩わしい場合がある。暗黙的なアクセスを処理する良い方法は、レジスタの内容を変更
5179+
せずに "previous" を返すことである。
5180+
5181+
*clipboard-provider-copy*
5182+
"copy" コールバックは何も返さず、指定された引数を順番に受け取る:
5183+
- 操作対象のレジスタ
5184+
- |getregtype()| に準拠したレジスタの型。
5185+
- コピーする文字列のリスト
5186+
5187+
プロバイダは与えられた情報を使って自由に操作できる。この関数は、クリップボード
5188+
レジスタ(群)を変更するリクエストごとに呼び出される。
5189+
5190+
*clipboard-provider-textlock*
5191+
"paste" および "copy" コールバックの両方で、バッファのテキストを変更することは
5192+
できない。|textlock| を参照。
5193+
5194+
*clipboard-provider-example*
5195+
以下は、OSC52 コマンドを通じてクリップボードプロバイダ機能を使用するスクリプト
5196+
の例: >vim
5197+
5198+
func Available()
5199+
return "*"
5200+
endfunc
5201+
5202+
func Paste(reg, type)
5203+
" 暗黙的なアクセスの場合は何もしない
5204+
if a:type == "implicit"
5205+
return "previous"
5206+
endif
5207+
5208+
augroup OSC
5209+
autocmd!
5210+
autocmd TermResponseAll osc ++once call feedkeys("\<F30>", '!')
5211+
augroup END
5212+
5213+
" コマンドを送信
5214+
call echoraw("\<Esc>]52;;?\<Esc>\\")
5215+
5216+
" 自動コマンドがトリガーされるまで待つ
5217+
while getchar(-1) != "\<F30>"
5218+
endwhile
5219+
5220+
autocmd! OSC
5221+
5222+
" base64 データを取り出す
5223+
let l:stuff = matchstr(v:termosc, '52;.\+;\zs[A-Za-z0-9+/=]\+')
5224+
5225+
return ("", blob2str(base64_decode(l:stuff)))
5226+
endfunc
5227+
5228+
func Copy(reg, type, lines)
5229+
call echoraw("\<Esc>]52;c;" ..
5230+
\ base64_encode(str2blob(a:lines)) .. "\<Esc>\\")
5231+
endfunc
5232+
let v:clipproviders["myosc"] = {
5233+
\ "available": function("Available"),
5234+
\ "paste": {
5235+
\ '*': function("Paste")
5236+
\ },
5237+
\ "copy": {
5238+
\ '*': function("Copy")
5239+
\ },
5240+
\ }
5241+
set clipmethod=myosc
5242+
5243+
<
51115244
vim:tw=78:ts=8:noet:ft=help:norl:

0 commit comments

Comments
 (0)