From 8d673e75da96a8bcc1895af23748042f90f9f86c Mon Sep 17 00:00:00 2001 From: h-east Date: Fri, 13 Oct 2023 10:29:31 +0900 Subject: [PATCH] Update undo.{txt,jax} --- doc/undo.jax | 28 ++++++++++++++++++++++++---- en/undo.txt | 28 +++++++++++++++++++++++----- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/doc/undo.jax b/doc/undo.jax index 4e1e8c136..e13fc1748 100644 --- a/doc/undo.jax +++ b/doc/undo.jax @@ -111,9 +111,20 @@ CTRL-G u を使います。挿入コマンドを部分ごと (例えば文単位 にしたい場合に便利です。 |i_CTRL-G_u| 'undolevels' の値を設定したときも undo のブロックが閉じられます。新しい値と古 -い値が同じでもそうなります。|Vim9| script では: > +い値が同じでもそうなります。`g:undolevels` を使用して、'undolevels' のグローバ +ル値のみを明示的に読み書きします。|Vim9| script では: > + &g:undolevels = &g:undolevels &undolevels = &undolevels 旧来のスクリプトでは: > + let &g:undolevels = &g:undolevels + +Note 同様に見える割り当て `let &undolevels=&undolevels` は、ローカルオプション +が別の値に設定されている場合、グローバルオプションの 'undolevels' 値を保持しな +いことに注意してください。例えば: > + " 'undolevels' に異なるグローバル値とローカル値を使用して開始する。 + let &g:undolevels = 1000 + let &l:undolevels = 2000 + " この代入により、グローバルオプションが 2000 に変更される。 let &undolevels = &undolevels ============================================================================== @@ -370,12 +381,21 @@ Vi 互換方式の動作になります。マイナスの値に設定すると u 'undolevels' を -1 に設定しても、undo 情報はすぐにはクリアされません。次の変更 が加えられたときにクリアされます。強制的に undo 情報をクリアしたいときは次のコ マンドを使ってください: > - :let old_undolevels = &undolevels - :set undolevels=-1 + :let old_undolevels = &l:undolevels + :setlocal undolevels=-1 :exe "normal a \\" - :let &undolevels = old_undolevels + :let &l:undolevels = old_undolevels :unlet old_undolevels +Note `&l:undolevels` を使用して 'undolevels' のローカル値を明示的に読み取り、 +`:setlocal` を使用してローカルオプションのみを変更します (対応するグローバルオ +プション値より優先されます)。`&undolevels` を使用してオプション値を保存するこ +とは予測できません。ローカル値 (設定されている場合) またはグローバル値 (ローカ +ル値が設定されていない場合) のいずれかを読み取ります。また、ローカル値が設定さ +れている場合、`:set undolevels` でオプションを変更すると、グローバル値とローカ +ル値の両方が変更され、両方の値を保存および復元するための追加の作業が必要になり +ます。 + バッファのマーク ('a から 'z) はテキストと同様に記録、復元されます。 すべての変更を undo したとき、バッファは変更ありとはみなされません。その状態か diff --git a/en/undo.txt b/en/undo.txt index cc3348247..dc2274c14 100644 --- a/en/undo.txt +++ b/en/undo.txt @@ -111,9 +111,19 @@ use CTRL-G u. This is useful if you want an insert command to be undoable in parts. E.g., for each sentence. |i_CTRL-G_u| Setting the value of 'undolevels' also closes the undo block. Even when the -new value is equal to the old value. In |Vim9| script: > - &undolevels = &undolevels +new value is equal to the old value. Use `g:undolevels` to explicitly read +and write only the global value of 'undolevels'. In |Vim9| script: > + &g:undolevels = &g:undolevels In legacy script: > + let &g:undolevels = &g:undolevels + +Note that the similar-looking assignment `let &undolevels=&undolevels` does not +preserve the global option value of 'undolevels' in the event that the local +option has been set to a different value. For example: > + " Start with different global and local values for 'undolevels'. + let &g:undolevels = 1000 + let &l:undolevels = 2000 + " This assignment changes the global option to 2000: let &undolevels = &undolevels ============================================================================== @@ -366,12 +376,20 @@ undo is possible. Use this if you are running out of memory. When you set 'undolevels' to -1 the undo information is not immediately cleared, this happens at the next change. To force clearing the undo information you can use these commands: > - :let old_undolevels = &undolevels - :set undolevels=-1 + :let old_undolevels = &l:undolevels + :setlocal undolevels=-1 :exe "normal a \\" - :let &undolevels = old_undolevels + :let &l:undolevels = old_undolevels :unlet old_undolevels +Note use of `&l:undolevels` to explicitly read the local value of 'undolevels' +and the use of `:setlocal` to change only the local option (which takes +precedence over the corresponding global option value). Saving the option value +via the use of `&undolevels` is unpredictable; it reads either the local value +(if one has been set) or the global value (otherwise). Also, if a local value +has been set, changing the option via `:set undolevels` will change both the +global and local values, requiring extra work to save and restore both values. + Marks for the buffer ('a to 'z) are also saved and restored, together with the text.