Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

unite.vimでUnknown function

$
0
0

macでは普通に動いていたuniteが、何故かcentosで以下のようなエラーをはいた

エラー内容
Error detected while processing function <SNR>28_call_unite_empty..unite#start..unite#start#standard..unite#view#_init_cursor..unite#view#_set_cursor_line..unite#view#_match_line:
line    2:
E117: Unknown function: matchaddpos
E15: Invalid expression: has('patch7.4.340') ? matchaddpos(a:highlight, [a:line], 10, a:id) : matchadd(a:highlight, '^\%'.a:line.'l.*', 10, a:id)

vimのバージョンは7.2

vimバージョン
[vagrant@vagrant-centos65 ~]$ vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Apr  5 2012 10:17:30)

該当箇所のソースはエラーメッセージに有る通り。

該当箇所
function! unite#view#_match_line(highlight, line, id) "{{{
  return has('patch7.4.340') ?
        \ matchaddpos(a:highlight, [a:line], 10, a:id) :
        \ matchadd(a:highlight, '^\%'.a:line.'l.*', 10, a:id)
endfunction"}}}

何故かは分からないが、has('patch7.4.340')がtrueになっているらしい。
それでmatchaddposを使おうとしたけど見つからなくてエラーという感じだろうか。

helpを見た所、patchチェックはバージョンチェックも一緒にやったほうがいいらしい。

Help
3.  Included patches.  First check |v:version| for the version of Vim.
    Then the "patch123" feature means that patch 123 has been included for
    this version.  Example (checking version 6.2.148 or later): >
        :if v:version > 602 || v:version == 602 && has("patch148")

というわけで、以下の用に書き直したらエラーが消えました。

該当箇所
function! unite#view#_match_line(highlight, line, id) "{{{
  return (v:version >= 704 &&  has('patch7.4.340')) ?
        \ matchaddpos(a:highlight, [a:line], 10, a:id) :
        \ matchadd(a:highlight, '^\%'.a:line.'l.*', 10, a:id)
endfunction"}}}

パッチを当てて動作確認してないので、これで正しいかは分かりませんが、とりあえず動いたので満足です。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>