Skip to content

set hidden 時に diff 状態が window を閉じても解除されない #1054

@lambdalisue

Description

@lambdalisue

質問・報告の内容

set hidden によりバッファを隠す設定の場合ウィンドウを閉じても diffthis 状態が解除されないため diff の結果がおかしくなります。

https://asciinema.org/a/2mdgrmk21zim4ixty4iehlc9b

また、この状態では以下のコマンドでは隠れたバッファの diff 状態が解除できませんでした。

:diffoff!
:windo diffoff!
:bufdo diffoff!

そのため動画最後に c.txt に対して diffthis しているように、全く異なるファイルに対して diffthis を行った際にワケガワカラナイヨ

Vimのバージョン

  • Vim 8.0.596(Vim 7.4 時代からずっと存在している問題だと思います)

( :version で確認できます)

OSの種類/ディストリ/バージョン

  • macOS Sierra (この issue 記載時に確認を取った OS です)
  • Ubuntu 16.04 (記載時に確認を取ったわけではなく、ずっと前から問題を認識していたって感じです)

再現手順

前準備

echo "Hello\nWorld" > a.txt
echo "Hello\nworld" > b.txt
echo "foobar" > c.txt

実行 (vim -u NONE)

:set hidden  " これが原因
:e a.txt
:vnew
:e b.txt
:diffthis
:wincmd w
:diffthis
:q

期待動作

比較対象が居なくなるため、ハイライトが消える(set nohidden 時の挙動)

実際の動作

隠れたバッファと比較し続けるため、ハイライトが消えない。

さらに、副次的な以下のような問題もあります

:e c.txt
:diffthis

期待動作

比較対象が居ないため、何も起こらない

実際の動作

隠れたバッファ a.txt および b.txt との比較をするため、ハイライトが酷いことになる(動画の最後参照)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions