11044


complete-itemsのinfoキーの値に改行を含まない折り返し4行以上の長い文字列を書き込むと、  
preview windowに表示された時に先頭から3行分の文字列しか表示されません。  
set previewheigthを実行すると12と表示されました。  
preview windowに長い文字列だったとしても表示させる方法を教えてください。

[code]

    " vimrc最小内容
    fun! CompleteSample(findstart, base)
        if a:findstart
            let line = getline('.')
            let start = col('.') - 1
            while start > 0 && line[start - 1] =~ '\a'
                let start -= 1
            endwhile
            return start
        else
            let res = []
            " 当方の環境は15インチディスプレイを使っておりターミナルを最大化していないので、先頭の「あ」から最後の「い」まで折り返して4行分になります。
            call add(res, {"word": "test", "info": "ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああいあああああああああああああああああああああああうあああああああああああああああえああああああおいああああああああああああああああああああああああい"})
            call add(res, {"word": "dummy", "info": "dummy"})
            return res
        endif
    endfun
    set completefunc=CompleteSample
    
[/code]


CC BY-SA 3.0
2015-06-06T06:26:29.843
11035
2015-10-23T14:15:24.990
10022
question
vim
preview windowに全ての文字列が表示されない


ヘルプを見る限り補完時に開かれるプレビューウィンドウの高さは最大3行というのは仕様のようです。  
`:h 'completefunc'`の文中から`:h complete-
functions`へ飛んで80行(jaの場合は73行)ほど読み進めると以下の記述があります。

[code]

    プレビューウィンドウの大きさは 3 行だが、'previewheight' が 1 か 2 のときはその高さで表示される。
    
[/code]

じゃぁ、'previewheight'の12はいつ使われるかですが `:h 'previewheight'`を見ると`:ptag`関連(:pedit,
:psearch, :ptj, :ptselect)で新規にプレビューウィンドウが開かれる時に使われるとの記述があります。

それで、今回の解決策ですが「補完操作を行う前にあらかじめプレビューウィンドウを開いておく」とかでしょうか。もしかしたらautocmdを使って何とか出来るかもしれませんがそこは他の方にお任せしたいと思います。


CC BY-SA 3.0
2015-06-06T09:57:21.060
11043
2015-10-23T14:15:24.990
2015-10-23T14:15:24.990
2687
2687
11035
answer


これでどうでしょうか。

[code]

    autocmd WinEnter * if &previewwindow | execute 'resize' &previewheight | endif
    
[/code]


CC BY-SA 3.0
2015-06-06T11:19:45.473
11044
2015-06-06T11:19:45.473
9575
11035
answer