|
紛らわしい発言をしてきたのでまとめておきます。ただし poppaste に興味のな
い方はこの発言を読まない事をお勧めします、余計に「紛らわしく」なってきま
す。
ヘルプには、「貼り付け+履歴戻し」にこの様な説明があります。
> 貼り付けを実行してからクリップボード履歴をひとつ前に戻します。このコマ
>ンドは,「コピー」または「切り抜き」コマンドを連続して実行することとセッ
>トで利用することを想定しています。
> 例えば,あるファイルの中から必要とする各部分だけを別のファイルに移動さ
>せたい場合に,まず「切り抜き」コマンドを連続実行して最初に全部切り抜いて
>しまい,あとで「貼り付け+履歴戻し」コマンドを連続実行すればまとめて移動
>することができます。
なるほど便利な操作です。VZ の頃はスタック的な考えだった記憶があります。
これをマクロで可能にするのが、poppaste みたいです。マクロの考え(世界)で
はクリップボードの履歴は 0 から n-1 個あります。 0 からなんです、通常に
「クリップボードの履歴」を見ると 1 から n 個あります。
copy, cut, setclipboard 等はクリップボードにデータを入れると同時に、クリ
ップボードの履歴 0 にもデータを入れます。クリップボード履歴のプッシュ
(push) も行ないます。つまりこれらの処理では、クリップボードと履歴 0 は同
期が取れていることになります。
poppaste を実行すると、「貼り付けと履歴戻し」の操作が行われますが、履歴
戻しは履歴 0 からクリップボードに対しても行われます。cut 等を数回繰り返
した後の poppaste 実行後は、クリップボードと履歴 0 は同期が取れていない
ことになります。
明示的に getcliphist 0; で同期を取ることも可能です。同じデータを、その後
は paste しないこと(目的)が前提です。マクロの作者の思惑でコードする事に
なります。
今回、あちきの勘違いは、pop とは以前のデータを取り戻すと思い込んだことで
す。poppaste の機能後は、その paste のデータを保持すべきでしょう。当たり
前の仕様です。ですから pop clip hist (n) & paste のような動きとなります。
次の(操作) poppaste または paste を考慮して、同期が一つずれるんです。
あちきは、こんな仕様だと理解しています ...
|
|