Maresfield イギリスの飯、別にマズくないよ

Vim + YouCompleteMe + Maya

環境

macOS 10.12.6 / Python 2.7.10

インストール

YCMをプラグインマネージャでインストール

Plug 'Valloric/YouCompleteMe'

YCMのインストールディレクトリ /Users/USER/.vim/plugged/YouCompleteMe へ行きインストールコマンドを実行

./install.py --clang-completer --system-libclang

公式の説明には

We STRONGLY recommend AGAINST use of the system libclang instead of the upstream compiled binaries. Random things may break. Save yourself the hassle and use the upstream pre-built libclang.

と書いてあるが、自分の環境では問題なく動いた。

インストールが成功すれば YouCompleteMe/third_party/ycmd ディレクトリに ycm_core.so というファイルができている。

この時点でPythonの標準ライブラリの補完は問題なくサクサク動く。

MayaPythonコマンドの補完

YCMの裏で動いているjediは自動でPYTHONPATHに入っているモジュールを引っ張ってきて補完してくれる。しかしそれだけの為に環境変数を汚したくないのでvimrcでvimのPYTHONPATHだけど変更する

let $PYTHONPATH = $PYTHONPATH . ':/Applications/Autodesk/maya2017/devkit/devkit/other/pymel/extras/completion/py'

これでMayaPythonも無事補完される。MayaのCompletionフォルダにはPySide2の補完用ダミーファイルも置かれているのでPySide2の補完もできるようになる。

他にも補完させたいモジュールがあれば同じ方法でできる。

Maya C++APIの補完

YouCompleteMe/third_party/ycmd ディレクトリに .ycm_extra_conf.py というドットファイルがある。

このファイルの大体60行目くらいからコンパイラフラッグのリストが始まる。 このリストの最後にMayaのincludeディレクトを追加する

..
...
....
'-isystem',
'cpp/ycm/tests/gmock',
'-isystem',
'cpp/ycm/tests/gmock/include',
'-isystem',
'cpp/ycm/benchmarks/benchmark/include',
'-I',
'/Applications/Autodesk/maya2017/devkit/include',
]

という具合に。ちなみにYCMのインストールディレクトリに同名のファイルがそっちではない。 これでMayaのヘッダファイルとメンバ関数を補完できる。