vim-jp / issues

有志で既知のバグや要望を検討・管理し、オフィシャルへの還元をしていきます。
https://vim-jp.org/
341 stars 11 forks source link

set wrap ほかいくつかの条件の組み合わせでカーソル位置がおかしくなる #1408

Closed iranoan closed 1 year ago

iranoan commented 1 year ago

不具合の内容

概要

set wrap

ほかいくつかの設定の組み合わせで次の現象が起きます

再現画像

/if で検索した時

search

G でファイル終端に移動した時

EOF

編集動画

wrap

再現手順

下で示す設定以外の条件としては次が必要なようです

サンプル・ファイル

sample.txt

\~/.vim/vimrx

scriptversion 4
set linebreak
set list
set listchars+=tab:>-<  " 指定 xyz は x, xy のみでも、他の記号の組み合わせでも再現
set wrap
set number foldcolumn=1 " どちらか一方でも再現
" 以下問題を見やすくする設定
set ruler
set hlsearch
set cursorline
set background=dark
colorscheme habamax

~/.vim/gvimrc

set columns=78 lines=24

期待動作

タブの代わりにスペースがあったときのように、右端に来る適当な文字で折り返されて表示される

Vimのバージョン

$ vim --version VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Feb 5 2023 01:13:52) 適用済パッチ: 1-1278 Compiled by xxx@xxx Huge 版 with GTK3 GUI. 機能の一覧 有効(+)/無効(-)

条件がわからず報告していませんでしたが、Ver.8.x の頃にも起きていました

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

$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.10 Release: 22.10 Codename: kinetic $ uname -a Linux xxx 5.19.0-29-generic #30-Ubuntu SMP PREEMPT_DYNAMIC Wed Jan 4 12:14:09 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

iranoan commented 1 year ago

set listchars+=tab:>-< " 指定 xyz は x, xy のみでも、他の記号の組み合わせでも再現

のコメントに間違いがありました 正しくは

" 指定 xyz は xy のみでも、他の記号の組み合わせでも再現

h-east commented 1 year ago

再現しました。 調査中です。 表示系なので行き着く先は win_line() になります。 が、この関数自体 3000行あって、1文字ごとの処理をする forループが 2300行あるので、gdbでstep実行していると途中で眠ってしまい、また最初から...を繰り返しています(苦笑) 少し時間ください。

#0  win_line (wp=0x19b9590, lnum=1, startrow=0, endrow=23, nochange=1, number_only=0) at drawline.c:2845
#1  0x000000000045e33f in win_update (wp=0x19b9590) at drawscreen.c:2484
#2  0x000000000045948d in update_screen (type_arg=0) at drawscreen.c:324
#3  0x0000000000704f2b in main_loop (cmdwin=0, noexmode=0) at main.c:1423
#4  0x00000000007044a0 in vim_main2 () at main.c:887
#5  0x0000000000703bb7 in main (argc=4, argv=0x7ffca43695b8) at main.c:433
iranoan commented 1 year ago

この関数自体 3000行あって、1文字ごとの処理をする forループが 2300行

…言葉が出ないですね

少し時間ください

こちらこそ調べて頂きありがとうございます 他の環境でも再現することが分かっただけでもありがたいです

h-east commented 1 year ago

PRed. https://github.com/vim/vim/pull/12065

h-east commented 1 year ago

Fixed by 9.0.1373.

iranoan commented 1 year ago

取り込まれるのを確認してからcloseするつもりでしたが、ありがとうございます 私の環境でも問題が解消されていることを確認しました