cafegale(LeafCage備忘録)

LeafCage備忘録(はてなダイアリー)と統一しました。

ctrlp.vimの拡張を作るときにVim7.3.1170以前ではスクリプトローカル関数をFuncrefで渡すことが出来ない

こういうのは無理。
スクリプトローカル関数のFuncrefはそのスクリプト内でのみしか有効でないから。

let s:ctrlp_ext_var
let s:ctrlp_ext_var.accept = function('s:accept')

グローバル関数や、オートロード関数を使おう。

もしかしたらこういうことをしたら可能かもしれない。

function! s:SID()
  return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$')
endfun
let s:FSID = '<SNR>'. s:SID(). '_'

let s:ctrlp_ext_var
let s:ctrlp_ext_var.accept = function(s:FSID. 'accept')

参考:Vim 7.3 の p1170 で追加された便利なアレについて - C++でゲームプログラミング