Shougo / neocomplcache.vim

Ultimate auto-completion system for Vim.
http://www.vim.org/scripts/script.php?script_id=2620
1.72k stars 135 forks source link

バッファの保存時にちらつきが発生する問題 #405

Closed osyo-manga closed 11 years ago

osyo-manga commented 11 years ago

lingr で言っていた件ですが再現方法が分かったのでまとめ。


動作環境


vimrc の最小構成

scriptencoding utf-8

set nocompatible
filetype off

set rtp+=$VIM/dotfiles/neobundle.vim/

if has('vim_starting')
    call neobundle#rc(expand($VIM."/.vim/neobundle"))
endif

NeoBundle "Shougo/neocomplcache"

let g:neocomplcache_enable_at_startup=1

filetype plugin indent on


再現手順

そちらでも試してもらえると助かります。

メモ

Shougo commented 11 years ago

原因が分かりました。バッファ保存時にfoldinfoをもとに戻しているからです。 もとに戻さないオプションを用意してもいいですが、どうしようかな……。

バグではないし、neocomplete.vimだけに追加しても良い気がする。 foldmethodにexprもしくはsyntaxを使っているのが原因なので、markerを使うようにすれば問題はないはずです。

osyo-manga commented 11 years ago

set foldmethod=marker を設定して試してみましたがちらつきが再現しますね。 for 文内のsettabwinvarの処理をコメントアウトして試してみましたがちらつきが再現するので原因は別にもあると思います。 (一番あやしいのは filter(range(1, tabpagewinnr(tabnr, '$')), "!empty(gettabwinvar(tabnr, v:val, 'neocomplcache_foldinfo'))") 辺り。

Shougo commented 11 years ago

あ、思い出しました。gettabwinvar()は毎回ウインドウを移動するのです。 これ使わないように修正しようかな。

osyo-manga commented 11 years ago

うげ、そんな副作用が…。

Shougo commented 11 years ago

とりあえず、ver.8.1ブランチで修正しました。問題がないか確認してください。 問題なければ、masterにもマージします。

osyo-manga commented 11 years ago

了解です。試してみます。

osyo-manga commented 11 years ago

こちらでも動作することを確認しました。

Shougo commented 11 years ago

了解。masterにもマージします。

osyo-manga commented 11 years ago

ありがとうございました。

Shougo commented 11 years ago

masterにマージ完了しました。