環境は Windows。
そろそろ Python2 とはお別れして Python3 とだけ仲良くしたいので、Python2 のない生活を送っていたところ、Vim から gist を編集できる便利プラグインの vim-gistaでエラーが出てしまった。
function gista#autocmd#call[14]..<SNR>159_on_BufWriteCmd[13]..gista#command#patch#call[14]..gista#resource#remote#patch[17]..gista#resource#remote#get[19]..159[9]..157[34]..<SNR>137_request[33]..166 の処理中にエラーが検出されました:
行 94:
E887: このコマンドは無効です,ごめんなさい. Python の site モジュールをロードできませんでした.
gista#autocmd#call[14]
は gista#autocmd#call の 14 行目を読めばいいのじゃろ? くらいはわかるのだけれど末尾とか追うの辛すぎる……と思っていた。
Vimmer の集う Meguro.vimで質問したところ thinca さんに一瞬で便利情報をいただけた。
エラーメッセージの 157[34]
から :verbose function {157}
を実行すると、対象の関数がわかる。
function 157(...) abort dict
最後にセットしたスクリプト: ~\_vim\dein\repos\github.com\lambdalisue\vim-gista\autoload\vital\__vim_gista__\Web\API\GitHub.vim
1 if a:0 == 3
2 let settings = a:3$
3 let settings.method = get(settings, 'method', a:1)$
4 let settings.url = get(settings, 'url', a:2)$
5 elseif a:0 == 2$
6 if type(a:2) == type({})$
7 let settings = a:2$
8 let settings.method = get(settings, 'method', 'GET')$
9 let settings.url = get(settings, 'url', a:1)$
10 else$
11 let settings = {}$
12 let settings.method = get(settings, 'method', a:1)$
13 let settings.url = get(settings, 'url', a:2)$
14 endif$
15 else$
16 let settings = a:1$
17 endif$
18 let settings.url = settings.url =~# '^https\?://' ? settings.url : self.get_absolute_url(settings.url)$
21 let settings.headers = extend( s:_get_header(self.get_token()), get(settings, 'headers', {}),)$
25 " Most of API request is json$
26 let settings.headers = extend({ 'Content-Type': 'application/json',}, settings.headers)$
30 " neovim currently does not support 'bindeval'$
31 if has('nvim')$
32 let settings.client = ['curl', 'wget']$
33 endif$
34 return s:HTTP.request(settings)$
endfunction
ファイル名だけなら :filter 157 scriptnames
で。
157: ~\_vim\dein\repos\github.com\lambdalisue\vim-gista\autoload\gista\util.vim
便利。
んで、結局 VimからPython 3.xを使うと落ちることがある · Issue #610 · vim-jp/issuesと同じ原因で Pythoon2 との付き合いが続くということかな?